{"version":3,"sources":["webpack:///dh-kultur-spesial-hnio-v1-f8930e9167b06a9a2790.js","webpack:///webpack/bootstrap ed545092369425d82067","webpack:///./node_modules/date-fns/parse/index.js","webpack:///./node_modules/preact/dist/preact.esm.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/lib/preact-pure-component.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/index.js","webpack:///./node_modules/date-fns/get_iso_year/index.js","webpack:///./node_modules/date-fns/start_of_iso_week/index.js","webpack:///./node_modules/date-fns/start_of_day/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/index.js","webpack:///./node_modules/date-fns/add_days/index.js","webpack:///./node_modules/date-fns/add_milliseconds/index.js","webpack:///./node_modules/date-fns/start_of_iso_year/index.js","webpack:///./node_modules/date-fns/compare_asc/index.js","webpack:///./node_modules/@nrk/serum-imagecrop-utils/lib/index.js","webpack:///./node_modules/date-fns/start_of_week/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_days/index.js","webpack:///./node_modules/date-fns/add_months/index.js","webpack:///./node_modules/date-fns/difference_in_milliseconds/index.js","webpack:///./src/v1/components/Article/index.css","webpack:///./src/lib/preact-pure-component.js","webpack:///./node_modules/date-fns/is_date/index.js","webpack:///./node_modules/date-fns/get_days_in_month/index.js","webpack:///./node_modules/date-fns/add_weeks/index.js","webpack:///./node_modules/date-fns/compare_desc/index.js","webpack:///./node_modules/date-fns/difference_in_months/index.js","webpack:///./node_modules/date-fns/difference_in_seconds/index.js","webpack:///./node_modules/date-fns/locale/en/index.js","webpack:///./node_modules/date-fns/end_of_day/index.js","webpack:///./node_modules/date-fns/get_iso_week/index.js","webpack:///./node_modules/date-fns/is_same_week/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Avatar/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/lib/image-url.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/Video/index.js","webpack:///./src/v1/components/VisualStory/index.css","webpack:///./node_modules/date-fns/add_hours/index.js","webpack:///./node_modules/date-fns/add_iso_years/index.js","webpack:///./node_modules/date-fns/set_iso_year/index.js","webpack:///./node_modules/date-fns/add_minutes/index.js","webpack:///./node_modules/date-fns/add_quarters/index.js","webpack:///./node_modules/date-fns/add_seconds/index.js","webpack:///./node_modules/date-fns/add_years/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_iso_years/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_months/index.js","webpack:///./node_modules/date-fns/get_quarter/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_years/index.js","webpack:///./node_modules/date-fns/difference_in_days/index.js","webpack:///./node_modules/date-fns/sub_iso_years/index.js","webpack:///./node_modules/date-fns/distance_in_words/index.js","webpack:///./node_modules/date-fns/end_of_week/index.js","webpack:///./node_modules/date-fns/end_of_month/index.js","webpack:///./node_modules/date-fns/get_day_of_year/index.js","webpack:///./node_modules/date-fns/start_of_year/index.js","webpack:///./node_modules/date-fns/is_valid/index.js","webpack:///./node_modules/date-fns/is_leap_year/index.js","webpack:///./node_modules/date-fns/get_iso_day/index.js","webpack:///./node_modules/date-fns/is_same_hour/index.js","webpack:///./node_modules/date-fns/start_of_hour/index.js","webpack:///./node_modules/date-fns/is_same_iso_week/index.js","webpack:///./node_modules/date-fns/is_same_iso_year/index.js","webpack:///./node_modules/date-fns/is_same_minute/index.js","webpack:///./node_modules/date-fns/start_of_minute/index.js","webpack:///./node_modules/date-fns/is_same_month/index.js","webpack:///./node_modules/date-fns/is_same_quarter/index.js","webpack:///./node_modules/date-fns/start_of_quarter/index.js","webpack:///./node_modules/date-fns/is_same_second/index.js","webpack:///./node_modules/date-fns/start_of_second/index.js","webpack:///./node_modules/date-fns/is_same_year/index.js","webpack:///./node_modules/date-fns/last_day_of_week/index.js","webpack:///./node_modules/date-fns/set_month/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/serum/helpers.js","webpack:///./src/v1/components/Skew/index.js","webpack:///./src/v1/client.polyfill.js","webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///./src/v1/client.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/array.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/bem.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/scroll.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/string.js","webpack:///./node_modules/@nrk/feature-tests/dist/feature-tests.module.js","webpack:///./node_modules/domready/ready.js","webpack:///./src/lib/google-analytics.js","webpack:///./src/v1/client.css","webpack:///./src/v1/components/Article/index.js","webpack:///./node_modules/@nrk/max-viewport-observable/dist/max-viewport-observable.module.js","webpack:///./node_modules/date-fns/index.js","webpack:///./node_modules/date-fns/are_ranges_overlapping/index.js","webpack:///./node_modules/date-fns/closest_index_to/index.js","webpack:///./node_modules/date-fns/closest_to/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_iso_weeks/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_quarters/index.js","webpack:///./node_modules/date-fns/difference_in_calendar_weeks/index.js","webpack:///./node_modules/date-fns/difference_in_hours/index.js","webpack:///./node_modules/date-fns/difference_in_iso_years/index.js","webpack:///./node_modules/date-fns/difference_in_minutes/index.js","webpack:///./node_modules/date-fns/difference_in_quarters/index.js","webpack:///./node_modules/date-fns/difference_in_weeks/index.js","webpack:///./node_modules/date-fns/difference_in_years/index.js","webpack:///./node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js","webpack:///./node_modules/date-fns/locale/en/build_format_locale/index.js","webpack:///./node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js","webpack:///./node_modules/date-fns/distance_in_words_strict/index.js","webpack:///./node_modules/date-fns/distance_in_words_to_now/index.js","webpack:///./node_modules/date-fns/each_day/index.js","webpack:///./node_modules/date-fns/end_of_hour/index.js","webpack:///./node_modules/date-fns/end_of_iso_week/index.js","webpack:///./node_modules/date-fns/end_of_iso_year/index.js","webpack:///./node_modules/date-fns/end_of_minute/index.js","webpack:///./node_modules/date-fns/end_of_quarter/index.js","webpack:///./node_modules/date-fns/end_of_second/index.js","webpack:///./node_modules/date-fns/end_of_today/index.js","webpack:///./node_modules/date-fns/end_of_tomorrow/index.js","webpack:///./node_modules/date-fns/end_of_year/index.js","webpack:///./node_modules/date-fns/end_of_yesterday/index.js","webpack:///./node_modules/date-fns/format/index.js","webpack:///./node_modules/date-fns/get_date/index.js","webpack:///./node_modules/date-fns/get_day/index.js","webpack:///./node_modules/date-fns/get_days_in_year/index.js","webpack:///./node_modules/date-fns/get_hours/index.js","webpack:///./node_modules/date-fns/get_iso_weeks_in_year/index.js","webpack:///./node_modules/date-fns/get_milliseconds/index.js","webpack:///./node_modules/date-fns/get_minutes/index.js","webpack:///./node_modules/date-fns/get_month/index.js","webpack:///./node_modules/date-fns/get_overlapping_days_in_ranges/index.js","webpack:///./node_modules/date-fns/get_seconds/index.js","webpack:///./node_modules/date-fns/get_time/index.js","webpack:///./node_modules/date-fns/get_year/index.js","webpack:///./node_modules/date-fns/is_after/index.js","webpack:///./node_modules/date-fns/is_before/index.js","webpack:///./node_modules/date-fns/is_equal/index.js","webpack:///./node_modules/date-fns/is_first_day_of_month/index.js","webpack:///./node_modules/date-fns/is_friday/index.js","webpack:///./node_modules/date-fns/is_future/index.js","webpack:///./node_modules/date-fns/is_last_day_of_month/index.js","webpack:///./node_modules/date-fns/is_monday/index.js","webpack:///./node_modules/date-fns/is_past/index.js","webpack:///./node_modules/date-fns/is_same_day/index.js","webpack:///./node_modules/date-fns/is_saturday/index.js","webpack:///./node_modules/date-fns/is_sunday/index.js","webpack:///./node_modules/date-fns/is_this_hour/index.js","webpack:///./node_modules/date-fns/is_this_iso_week/index.js","webpack:///./node_modules/date-fns/is_this_iso_year/index.js","webpack:///./node_modules/date-fns/is_this_minute/index.js","webpack:///./node_modules/date-fns/is_this_month/index.js","webpack:///./node_modules/date-fns/is_this_quarter/index.js","webpack:///./node_modules/date-fns/is_this_second/index.js","webpack:///./node_modules/date-fns/is_this_week/index.js","webpack:///./node_modules/date-fns/is_this_year/index.js","webpack:///./node_modules/date-fns/is_thursday/index.js","webpack:///./node_modules/date-fns/is_today/index.js","webpack:///./node_modules/date-fns/is_tomorrow/index.js","webpack:///./node_modules/date-fns/is_tuesday/index.js","webpack:///./node_modules/date-fns/is_wednesday/index.js","webpack:///./node_modules/date-fns/is_weekend/index.js","webpack:///./node_modules/date-fns/is_within_range/index.js","webpack:///./node_modules/date-fns/is_yesterday/index.js","webpack:///./node_modules/date-fns/last_day_of_iso_week/index.js","webpack:///./node_modules/date-fns/last_day_of_iso_year/index.js","webpack:///./node_modules/date-fns/last_day_of_month/index.js","webpack:///./node_modules/date-fns/last_day_of_quarter/index.js","webpack:///./node_modules/date-fns/last_day_of_year/index.js","webpack:///./node_modules/date-fns/max/index.js","webpack:///./node_modules/date-fns/min/index.js","webpack:///./node_modules/date-fns/set_date/index.js","webpack:///./node_modules/date-fns/set_day/index.js","webpack:///./node_modules/date-fns/set_day_of_year/index.js","webpack:///./node_modules/date-fns/set_hours/index.js","webpack:///./node_modules/date-fns/set_iso_day/index.js","webpack:///./node_modules/date-fns/set_iso_week/index.js","webpack:///./node_modules/date-fns/set_milliseconds/index.js","webpack:///./node_modules/date-fns/set_minutes/index.js","webpack:///./node_modules/date-fns/set_quarter/index.js","webpack:///./node_modules/date-fns/set_seconds/index.js","webpack:///./node_modules/date-fns/set_year/index.js","webpack:///./node_modules/date-fns/start_of_month/index.js","webpack:///./node_modules/date-fns/start_of_today/index.js","webpack:///./node_modules/date-fns/start_of_tomorrow/index.js","webpack:///./node_modules/date-fns/start_of_yesterday/index.js","webpack:///./node_modules/date-fns/sub_days/index.js","webpack:///./node_modules/date-fns/sub_hours/index.js","webpack:///./node_modules/date-fns/sub_milliseconds/index.js","webpack:///./node_modules/date-fns/sub_minutes/index.js","webpack:///./node_modules/date-fns/sub_months/index.js","webpack:///./node_modules/date-fns/sub_quarters/index.js","webpack:///./node_modules/date-fns/sub_seconds/index.js","webpack:///./node_modules/date-fns/sub_weeks/index.js","webpack:///./node_modules/date-fns/sub_years/index.js","webpack:///./src/v1/components/Article/Header.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/Byline/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/ImageMessage/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Avatar/AvatarImage/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/TextMessage/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/ImagesMessage/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Date/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/Figure/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/Heading/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/core/Icon/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/List/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/List/ListItem.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/Paragraph/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/PullQuote/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/ResponsiveVideo/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/serum/SerumImage/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/serum/SerumResponsivePicture/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/serum/SerumSmartPicture/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/Slideshow/Slide.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/Slideshow/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/SmartVideo/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/index.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/lib/warn.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/Scrubber.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/TogglePlayButton.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/ToggleMuteButton.js","webpack:///./node_modules/@nrk/dh-feature-components/dist/module/ViewportIntersections/index.js","webpack:///./src/v1/components/Skew/index.css","webpack:///./src/v1/components/Article/Content.js","webpack:///./src/v1/components/Article/Section/index.js","webpack:///./src/v1/components/VisualStory/index.js","webpack:///./src/v1/components/VisualStory/MediaSlide.js","webpack:///./src/v1/components/VisualStory/cards/DefaultCard.js","webpack:///./src/v1/components/Article/VideoPlayer.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","parse","argument","dirtyOptions","isDate","Date","getTime","options","additionalDigits","DEFAULT_ADDITIONAL_DIGITS","Number","dateStrings","splitDateString","parseYearResult","parseYear","date","year","restDateString","parseDate","offset","timestamp","time","parseTime","timezone","parseTimezone","getTimezoneOffset","MILLISECONDS_IN_MINUTE","dateString","timeString","array","split","parseTokenDateTimeDelimeter","parseTokenPlainTime","test","token","parseTokenTimezone","exec","replace","parseTokenYYY","parseTokensYYY","parseTokenYYYYY","parseTokensYYYYY","parseTokenYYYY","yearString","parseInt","slice","length","parseTokenYY","centuryString","month","week","setUTCFullYear","parseTokenMM","parseTokenDDD","dayOfYear","parseTokenMMDD","day","parseTokenWww","dayOfISOYear","parseTokenWwwD","hours","minutes","parseTokenHH","parseFloat","MILLISECONDS_IN_HOUR","parseTokenHHMM","parseTokenHHMMSS","seconds","timezoneString","absoluteOffset","parseTokenTimezoneZ","parseTokenTimezoneHH","parseTokenTimezoneHHMM","isoYear","fourthOfJanuaryDay","getUTCDay","diff","setUTCDate","getUTCDate","VNode","h","nodeName","attributes","lastSimple","child","simple","children","EMPTY_CHILDREN","arguments","stack","push","pop","undefined","String","key","vnode","extend","obj","props","cloneElement","enqueueRender","component","_dirty","items","debounceRendering","defer","rerender","list","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","toLowerCase","getNodeProps","defaultProps","createNode","isSvg","document","createElementNS","createElement","removeNode","parentNode","removeChild","setAccessor","old","value","style","cssText","_typeof","IS_NON_DIMENSIONAL","innerHTML","__html","useCapture","substring","addEventListener","eventProxy","removeEventListener","_listeners","setProperty","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","className","e","this","type","event","flushMounts","mounts","afterMount","componentDidMount","dom","context","mountAll","parent","componentRoot","diffLevel","isSvgMode","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","buildComponentFromVNode","firstChild","fc","vchildren","a","nextSibling","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","isHydrating","j","f","vchild","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","_child","__key","trim","insertBefore","unmountOnly","unmountComponent","ref","removeChildren","lastChild","next","previousSibling","attrs","collectComponent","constructor","components","createComponent","Ctor","inst","render","Component","doRender","nextBase","splice","state","setComponentProps","opts","_disable","__ref","base","componentWillMount","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","rendered","cbase","previousProps","previousState","prevState","previousContext","isUpdate","initialBase","initialChildComponent","skip","shouldComponentUpdate","componentWillUpdate","getChildContext","toUnmount","childComponent","childProps","_parentComponent","baseParent","componentRef","t","unshift","componentDidUpdate","afterUpdate","_renderCallbacks","originalComponent","oldDom","isDirectOwner","isOwner","beforeUnmount","componentWillUnmount","inner","merge","Symbol","iterator","Promise","resolve","then","bind","setTimeout","setState","callback","forceUpdate","preact","default","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","writable","setPrototypeOf","__proto__","shallowEqual","b","_key","_preact","_createClass","defineProperties","target","descriptor","protoProps","staticProps","PureComponent","_Component","getPrototypeOf","apply","toArray","getScrollTop","getScrollLeft","createUniqueId","bem","_array","_bem","_bem2","_scroll","_string","getISOYear","dirtyDate","getFullYear","fourthOfJanuaryOfNextYear","setFullYear","setHours","startOfNextYear","startOfISOWeek","fourthOfJanuaryOfThisYear","startOfThisYear","startOfWeek","weekStartsOn","startOfDay","_interopRequireDefault","ViewportIntersections","VideoPlayer","Video","SmartVideo","Slideshow","Slide","SerumResponsivePicture","SerumSmartPicture","SerumImage","ResponsiveVideo","PullQuote","Paragraph","ListItem","List","Icon","Heading","Figure","ChatLog","Byline","_Byline","_Byline2","_ChatLog","_ChatLog2","_Figure","_Figure2","_Heading","_Heading2","_Icon","_Icon2","_List","_List2","_ListItem","_ListItem2","_Paragraph","_Paragraph2","_PullQuote","_PullQuote2","_preactPureComponent","_preactPureComponent2","_ResponsiveVideo","_ResponsiveVideo2","_SerumImage","_SerumImage2","_SerumResponsivePicture","_SerumResponsivePicture2","_SerumSmartPicture","_SerumSmartPicture2","_Slide","_Slide2","_Slideshow","_Slideshow2","_SmartVideo","_SmartVideo2","_Video","_Video2","_VideoPlayer","_VideoPlayer2","_ViewportIntersections","_ViewportIntersections2","addDays","dirtyAmount","amount","setDate","getDate","addMilliseconds","startOfISOYear","fourthOfJanuary","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","timeLeft","dateRight","timeRight","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","global","factory","isPolopolyId","id","isPolopolyIdRegex","createUrl","_ref","ratio","width","quality","url","_baseUrl","queryString","createQueryString","_ref2","getClosestNumber","goal","targets","isValidGoal","Error","isValidTargets","toString","reduce","prev","curr","Math","abs","isValid","isValidRatio","supportedRatios","Array","isArray","includes","isValidQuality","supportedQualities","createImageUrl","polopolyId","args","hasOption","ratios","qualities","isNumber","errorMessage","isSupportedWidth","widths","closestWidth","option","number","isInteger","getDay","differenceInCalendarDays","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","round","MILLISECONDS_IN_DAY","addMonths","desiredMonth","getMonth","dateWithDesiredMonth","daysInMonth","getDaysInMonth","setMonth","differenceInMilliseconds","article","article__header","article__leadMediaWrapper","article__leadMedia","article__headerTopSkew","root--noJs","article__headerBottomSkew","article__headerText","article__title","article__intro","article__authors","article__content","section__content","article__paragraph","article__pullQuote","article__videoPlayer","article__publishedAt","section","section--dark","section__title","monthIndex","lastDayOfMonth","addWeeks","compareDesc","differenceInMonths","sign","difference","differenceInCalendarMonths","differenceInSeconds","floor","ceil","buildDistanceInWordsLocale","buildFormatLocale","distanceInWords","format","endOfDay","getISOWeek","MILLISECONDS_IN_WEEK","isSameWeek","dateLeftStartOfWeek","dateRightStartOfWeek","getInitials","initials","map","item","charAt","toUpperCase","join","Avatar","_dhUtils","_AvatarImage","styles","chatLog","avatarImage","avatar","avatar__placeholder","avatar--right","date--isFirst","message","message--left","message--showAvatar","message--right","message--isLastInGroup","message__text","message__text--right","message__text--left","message__image","message__images","message__image--expanded","message__image--clickable","message__image--hover","message__image--left","message__image--right","message__name","message__content","message__content--left","message__content--right","message__content--showName","person","image","displayImage","aria-hidden","side","AvatarImage","alt","title","getImageUrl","_ref$width","_ref$ratio","_serumImagecropUtils","_objectWithoutProperties","keys","indexOf","_extends","assign","source","_PureComponent","_temp","_this","_ret","_len","concat","isPlaying","isResolvingPlay","tracks","handlePlay","onPlay","handlePause","onPause","handleDurationChange","onDurationChange","elm","duration","handleTimeupdate","onTimeupdate","currentTime","_this2","_props","textTracks","playing","onCaptionCueEnter","onCaptionCueExit","forEach","textTrack","track","addTextTrack","language","mode","captions","addCue","window","VTTCue","in","text","_","TextTrackCue","cues","cue","onenter","startTime","endTime","onexit","play","pause","_this3","onError","playPromise","catch","err","_this4","_props2","sources","restProps","eventHandlers","dataProps","visualStory","visualStory__topSkew","visualStory__bottomSkew","visualStory__slideshow","root--js","visualStory__slideshow--isIntersecting","visualStory__slide","visualStory__smartVideo","visualStory__slideText","visualStory__cards","defaultCard","defaultCard__wrapper","defaultCard--right","defaultCard--left","defaultCard__credit","addHours","addISOYears","setISOYear","dirtyISOYear","addMinutes","addQuarters","addSeconds","addYears","differenceInCalendarISOYears","getQuarter","differenceInCalendarYears","differenceInDays","subISOYears","dirtyDateToCompare","comparison","locale","localize","enLocale","localizeOptions","addSuffix","Boolean","months","includeSeconds","MINUTES_IN_DAY","MINUTES_IN_ALMOST_TWO_DAYS","MINUTES_IN_MONTH","MINUTES_IN_TWO_MONTHS","monthsSinceStartOfYear","years","endOfWeek","endOfMonth","getDayOfYear","startOfYear","cleanDate","isNaN","isLeapYear","getISODay","isSameHour","dateLeftStartOfHour","startOfHour","dateRightStartOfHour","setMinutes","isSameISOWeek","isSameISOYear","dateLeftStartOfYear","dateRightStartOfYear","isSameMinute","dateLeftStartOfMinute","startOfMinute","dateRightStartOfMinute","setSeconds","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","startOfQuarter","dateRightStartOfQuarter","currentMonth","isSameSecond","dateLeftStartOfSecond","startOfSecond","dateRightStartOfSecond","setMilliseconds","isSameYear","lastDayOfWeek","dirtyMonth","createResponsiveSrcSet","IMAGE_WIDTHS","Skew","position","_index2","skew","polygon","points","viewBox","stroke","fill","fillRule","_index","IntersectionObserverEntry","entry","rootBounds","boundingClientRect","intersectionRect","getEmptyRect","isIntersecting","targetRect","targetArea","height","intersectionArea","intersectionRatio","IntersectionObserver","opt_options","root","nodeType","_checkForIntersections","throttle","THROTTLE_TIMEOUT","_callback","_observationTargets","_queuedEntries","_rootMarginValues","_parseRootMargin","rootMargin","thresholds","_initThresholds","threshold","margin","unit","now","performance","fn","timeout","timer","addEvent","opt_useCapture","attachEvent","removeEvent","detatchEvent","computeRectIntersection","rect1","rect2","top","max","bottom","left","right","getBoundingClientRect","el","rect","containsDeep","getParentNode","host","registry","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","some","element","_registerInstance","_monitorIntersections","unobserve","filter","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","opt_threshold","sort","opt_rootMargin","marginString","margins","parts","_monitoringIntersections","_monitoringInterval","setInterval","_domObserver","MutationObserver","childList","characterData","subtree","clearInterval","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","newEntry","_hasCrossedThreshold","getComputedStyle","display","atRoot","parentRect","parentComputedStyle","body","documentElement","overflow","html","clientWidth","clientHeight","_expandRectByRootMargin","newRect","oldRatio","newRatio","index","init","findElements","_client2","cutTheMustard","hasSupport","preloadedState","JSON","getAttribute","renderArticle","console","warn","callbackFn","_featureTests","testPositionSticky","handleAnalyticsEvent","analyticsEvent","action","_googleAnalytics","sendEvent","category","label","Article","onAnalyticsEvent","getElementsByClassName","isInitialized","_domready","_domready2","_client","nodeList","_toConsumableArray","arr","arr2","from","toStrings","blockName","modifiers","strings","modifier","objects","objectString","pageXOffset","scrollLeft","pageYOffset","scrollTop","prefix","random","substr","testJs","testJs$1","objectFit","testVideoAutoPlay","videoAutoPlayCache","videoElm","canPlayType","src","load","oncanplay","onplay","testObjectFit","definition","listener","fns","doc","hack","doScroll","loaded","readyState","shift","ga","log","stringify","saksuniversContainer","_maxViewportObservable","_maxViewportObservable2","_dateFns","_Header","_Header2","_Content","_Content2","handleUserToggleMute","muted","viewport","viewport$","viewportSubscription","subscribe","unsubscribe","mediaBaseUrl","_props$data","data","publishedAt","sections","_state","onUserToggleMute","getRect","Element","innerWidth","innerHeight","observer","isDynamicViewport","isTouching","listeners","orientationchange","resize","prevRect","scroll","touchstart","touchend","areRangesOverlapping","closestIndexTo","closestTo","differenceInCalendarISOWeeks","differenceInCalendarQuarters","differenceInCalendarWeeks","differenceInHours","differenceInISOYears","differenceInMinutes","differenceInQuarters","differenceInWeeks","differenceInYears","distanceInWordsStrict","distanceInWordsToNow","eachDay","endOfHour","endOfISOWeek","endOfISOYear","endOfMinute","endOfQuarter","endOfSecond","endOfToday","endOfTomorrow","endOfYear","endOfYesterday","getDaysInYear","getHours","getISOWeeksInYear","getMilliseconds","getMinutes","getOverlappingDaysInRanges","getSeconds","getYear","isAfter","isBefore","isEqual","isFirstDayOfMonth","isFriday","isFuture","isLastDayOfMonth","isMonday","isPast","isSameDay","isSaturday","isSunday","isThisHour","isThisISOWeek","isThisISOYear","isThisMinute","isThisMonth","isThisQuarter","isThisSecond","isThisWeek","isThisYear","isThursday","isToday","isTomorrow","isTuesday","isWednesday","isWeekend","isWithinRange","isYesterday","lastDayOfISOWeek","lastDayOfISOYear","lastDayOfQuarter","lastDayOfYear","setDay","setDayOfYear","setISODay","setISOWeek","setQuarter","setYear","startOfMonth","startOfToday","startOfTomorrow","startOfYesterday","subDays","subHours","subMilliseconds","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","dirtyInitialRangeStartDate","dirtyInitialRangeEndDate","dirtyComparedRangeStartDate","dirtyComparedRangeEndDate","initialStartTime","initialEndTime","comparedStartTime","comparedEndTime","dirtyDatesArray","result","minDistance","dateToCompare","timeToCompare","currentDate","distance","startOfISOWeekLeft","startOfISOWeekRight","startOfWeekLeft","startOfWeekRight","count","distanceInWordsLocale","one","other","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","months3char","monthsFull","weekdays2char","weekdays3char","weekdaysFull","meridiemUppercase","meridiemLowercase","meridiemFull","formatters","MMM","MMMM","dd","ddd","dddd","A","aa","formatterToken","ordinal","formattingTokensRegExp","buildFormattingTokensRegExp","rem100","formatterKeys","formattingTokens","commonFormatterKeys","reverse","RegExp","days","mathPartial","partialMethod","MINUTES_IN_YEAR","dirtyStartDate","dirtyEndDate","dirtyStep","startDate","endDate","step","dates","dirtyFormatStr","formatStr","localeFormatters","buildFormatFn","formatter","match","removeFormattingTokens","output","Function","input","formatTimezone","delimeter","absOffset","addLeadingZeros","targetLength","M","MM","Q","D","DD","DDD","DDDD","E","W","WW","YY","YYYY","GG","GGGG","H","HH","hh","mm","ss","S","SS","SSS","Z","ZZ","X","x","thisYear","nextYear","valueOf","overlapStartDate","overlapEndDate","differenceInMs","dirtyLeftDate","dirtyRightDate","dateLeftStartOfDay","dateRightStartOfDay","tomorrow","yesterday","dirtyDates","latestTimestamp","earliestTimestamp","dirtyDayOfMonth","dayOfMonth","dirtyDay","currentDay","dirtyDayOfYear","dirtyHours","dirtyISOWeek","isoWeek","dirtyMilliseconds","milliseconds","dirtyMinutes","dirtyQuarter","quarter","oldQuarter","dirtySeconds","dirtyYear","Header","authors","intro","leadMedia","_Skew2","_dhFeatureComponents","loop","playsInline","preload","resolution720p","poster","resolution1080p","_Skew","byline","byline__name","author","idx","isLastInGroup","messages","_Message","_Date","Message","_ImageMessage","_TextMessage","content","ImageMessage","ImagesMessage","TextMessage","_imageUrl","showAvatar","showName","imageSrc","nopin","data-pin-nopin","_Avatar","images","isFirst","figure","figure__credit","caption","credit","media","heading","level","htmlProps","icon","symbol","paragraph","pullQuote","pullQuote__content","pullQuote__footer","cite","role","cx","cy","r","responsiveVideo","responsiveVideo__720p","responsiveVideo--1080p","responsiveVideo__1080p","prevIs1080p","seek","isValidViewport","is1080p","_helpers","defaultUrl","horizontalSourceSet","srcSet","horizontal","vertical","verticalSourceSet","slideshow","slideshow__slide","slideshow__slide--stacked","slideshow__slide--visible","slideshow__slide--active","active","stacked","visible","activeIndex","inlineStyle","data-active-index","smartVideo","smartVideo__720p","smartVideo--horizontal","smartVideo--1080p","smartVideo__960p","smartVideo__1080p","prevIsHorizontal","isHorizontal","resolution960p","1080p","_warn","_warn2","_Scrubber","_Scrubber2","_TogglePlayButton","_TogglePlayButton2","_ToggleMuteButton","_ToggleMuteButton2","videoPlayer","videoPlayer__container","videoPlayer__caption","videoPlayer__controls","videoPlayer__togglePlayButton","videoPlayer__toggleMuteButton","handleUserTogglePlay","onUserTogglePlay","handleScrubberPositionUpdate","video","handleCaptionCueEnter","handleCaptionCueExit","onClick","onPositionUpdate","_console","scrubber","scrubber__bgBar","scrubber__bufferedBar","scrubber__playedBar","Scrubber","isScrubbing","handleKeyDown","evt","_this$props","nextTime","handleMouseDown","preventDefault","focus","start","pageX","handleMouseMove","handleMouseUp","move","end","handleResize","bgElm","handleTouchStart","touches","clientX","handleTouchMove","handleTouchEnd","handleElm","positionTimeout","clearTimeout","aria-valuemin","aria-valuemax","aria-valuenow","TogglePlayButton","togglePlayButton","togglePlayButton__pauseIcon","togglePlayButton__playIcon","togglePlayButton--playing","ToggleMuteButton","toggleMuteButton","toggleMuteButton__mutedIcon","toggleMuteButton__volumeIcon","toggleMuteButton--muted","intersections","onChange","onEnter","onLeave","intersectionObserver","entries","prevIntersection","childElm","skew--top","skew--bottom","_Section","_Section2","Content","handleRegisterSectionElement","sectionElm","sectionIndex","sectionElms","handleRegisterTriggerElement","triggerElm","triggerElms","sectionIntersections","triggerIntersections","triggerIndex","onRegisterSectionElement","onRegisterTriggerElement","_VisualStory","_VisualStory2","Section","handleIntersectionEnter","seen","_props$value","dark","color","_MediaSlide","_MediaSlide2","_DefaultCard","_DefaultCard2","VisualStory","handleChange","handleEnter","slides","startVisibilityListener","stopVisibilityListener","halfHeight","visibleRaf","requestAnimationFrame","cancelAnimationFrame","onToggleMute","_state2","cardsInlineStyle","marginTop","paddingBottom","slide","parentVisible","MediaSlide","description","DefaultCard","align","wrapperInlineStyle","itemIdx"],"mappings":"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","file":"dh-kultur-spesial-hnio-v1-f8930e9167b06a9a2790.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"https://dh-static.mesos.nrk.no/dh-kultur-spesial-hnio/static/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 70);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isDate = __webpack_require__(19);\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\n\nvar parseTokenDateTimeDelimeter = /[T ]/;\nvar parseTokenPlainTime = /:/;\n\n// year tokens\nvar parseTokenYY = /^(\\d{2})$/;\nvar parseTokensYYY = [/^([+-]\\d{2})$/, // 0 additional digits\n/^([+-]\\d{3})$/, // 1 additional digit\n/^([+-]\\d{4})$/ // 2 additional digits\n];\n\nvar parseTokenYYYY = /^(\\d{4})/;\nvar parseTokensYYYYY = [/^([+-]\\d{4})/, // 0 additional digits\n/^([+-]\\d{5})/, // 1 additional digit\n/^([+-]\\d{6})/ // 2 additional digits\n];\n\n// date tokens\nvar parseTokenMM = /^-(\\d{2})$/;\nvar parseTokenDDD = /^-?(\\d{3})$/;\nvar parseTokenMMDD = /^-?(\\d{2})-?(\\d{2})$/;\nvar parseTokenWww = /^-?W(\\d{2})$/;\nvar parseTokenWwwD = /^-?W(\\d{2})-?(\\d{1})$/;\n\n// time tokens\nvar parseTokenHH = /^(\\d{2}([.,]\\d*)?)$/;\nvar parseTokenHHMM = /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/;\nvar parseTokenHHMMSS = /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/;\n\n// timezone tokens\nvar parseTokenTimezone = /([Z+-].*)$/;\nvar parseTokenTimezoneZ = /^(Z)$/;\nvar parseTokenTimezoneHH = /^([+-])(\\d{2})$/;\nvar parseTokenTimezoneHHMM = /^([+-])(\\d{2}):?(\\d{2})$/;\n\n/**\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Object} [options] - the object with options\n * @param {0 | 1 | 2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parse('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Parse string '+02014101',\n * // if the additional number of digits in the extended year format is 1:\n * var result = parse('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction parse(argument, dirtyOptions) {\n if (isDate(argument)) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument !== 'string') {\n return new Date(argument);\n }\n\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits;\n if (additionalDigits == null) {\n additionalDigits = DEFAULT_ADDITIONAL_DIGITS;\n } else {\n additionalDigits = Number(additionalDigits);\n }\n\n var dateStrings = splitDateString(argument);\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n\n var date = parseDate(restDateString, year);\n\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = new Date(timestamp + time).getTimezoneOffset();\n offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset();\n }\n\n return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE);\n } else {\n return new Date(argument);\n }\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(parseTokenDateTimeDelimeter);\n var timeString;\n\n if (parseTokenPlainTime.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n }\n\n if (timeString) {\n var token = parseTokenTimezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var parseTokenYYY = parseTokensYYY[additionalDigits];\n var parseTokenYYYYY = parseTokensYYYYY[additionalDigits];\n\n var token;\n\n // YYYY or ±YYYYY\n token = parseTokenYYYY.exec(dateString) || parseTokenYYYYY.exec(dateString);\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n };\n }\n\n // YY or ±YYY\n token = parseTokenYY.exec(dateString) || parseTokenYYY.exec(dateString);\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n };\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null;\n }\n\n var token;\n var date;\n var month;\n var week;\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date;\n }\n\n // YYYY-MM\n token = parseTokenMM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n date.setUTCFullYear(year, month);\n return date;\n }\n\n // YYYY-DDD or YYYYDDD\n token = parseTokenDDD.exec(dateString);\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n date.setUTCFullYear(year, 0, dayOfYear);\n return date;\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = parseTokenMMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n date.setUTCFullYear(year, month, day);\n return date;\n }\n\n // YYYY-Www or YYYYWww\n token = parseTokenWww.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n return dayOfISOYear(year, week);\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = parseTokenWwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n return dayOfISOYear(year, week, dayOfWeek);\n }\n\n // Invalid ISO-formatted date\n return null;\n}\n\nfunction parseTime(timeString) {\n var token;\n var hours;\n var minutes;\n\n // hh\n token = parseTokenHH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n return hours % 24 * MILLISECONDS_IN_HOUR;\n }\n\n // hh:mm or hhmm\n token = parseTokenHHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n }\n\n // hh:mm:ss or hhmmss\n token = parseTokenHHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n return hours % 24 * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n }\n\n // Invalid ISO-formatted time\n return null;\n}\n\nfunction parseTimezone(timezoneString) {\n var token;\n var absoluteOffset;\n\n // Z\n token = parseTokenTimezoneZ.exec(timezoneString);\n if (token) {\n return 0;\n }\n\n // ±hh\n token = parseTokenTimezoneHH.exec(timezoneString);\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60;\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n }\n\n // ±hh:mm or ±hhmm\n token = parseTokenTimezoneHHMM.exec(timezoneString);\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10);\n return token[1] === '+' ? -absoluteOffset : absoluteOffset;\n }\n\n return 0;\n}\n\nfunction dayOfISOYear(isoYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\nmodule.exports = parse;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/** Virtual DOM Node */\nfunction VNode() {}\n\n/** Global options\n *\t@public\n *\t@namespace options {Object}\n */\nvar options = {\n\n\t/** If `true`, `prop` changes trigger synchronous component updates.\n *\t@name syncComponentUpdates\n *\t@type Boolean\n *\t@default true\n */\n\t//syncComponentUpdates: true,\n\n\t/** Processes all created VNodes.\n *\t@param {VNode} vnode\tA newly-created VNode to normalize/process\n */\n\t//vnode(vnode) { }\n\n\t/** Hook invoked after a component is mounted. */\n\t// afterMount(component) { }\n\n\t/** Hook invoked after the DOM is updated with a component's latest render. */\n\t// afterUpdate(component) { }\n\n\t/** Hook invoked immediately before a component is unmounted. */\n\t// beforeUnmount(component) { }\n};\n\nvar stack = [];\n\nvar EMPTY_CHILDREN = [];\n\n/**\n * JSX/hyperscript reviver.\n * @see http://jasonformat.com/wtf-is-jsx\n * Benchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0\n *\n * Note: this is exported as both `h()` and `createElement()` for compatibility reasons.\n *\n * Creates a VNode (virtual DOM element). A tree of VNodes can be used as a lightweight representation\n * of the structure of a DOM tree. This structure can be realized by recursively comparing it against\n * the current _actual_ DOM structure, and applying only the differences.\n *\n * `h()`/`createElement()` accepts an element name, a list of attributes/props,\n * and optionally children to append to the element.\n *\n * @example The following DOM tree\n *\n * `
Hello!
`\n *\n * can be constructed using this function as:\n *\n * `h('div', { id: 'foo', name : 'bar' }, 'Hello!');`\n *\n * @param {string} nodeName\tAn element name. Ex: `div`, `a`, `span`, etc.\n * @param {Object} attributes\tAny attributes/props to set on the created element.\n * @param rest\t\t\tAdditional arguments are taken to be children to append. Can be infinitely nested Arrays.\n *\n * @public\n */\nfunction h(nodeName, attributes) {\n\tvar children = EMPTY_CHILDREN,\n\t lastSimple,\n\t child,\n\t simple,\n\t i;\n\tfor (i = arguments.length; i-- > 2;) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children != null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop !== undefined) {\n\t\t\tfor (i = child.length; i--;) {\n\t\t\t\tstack.push(child[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof child === 'boolean') child = null;\n\n\t\t\tif (simple = typeof nodeName !== 'function') {\n\t\t\t\tif (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length - 1] += child;\n\t\t\t} else if (children === EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t} else {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tvar p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes == null ? undefined : attributes;\n\tp.key = attributes == null ? undefined : attributes.key;\n\n\t// if a \"vnode hook\" is defined, pass every created VNode to it\n\tif (options.vnode !== undefined) options.vnode(p);\n\n\treturn p;\n}\n\n/**\n * Copy all properties from `props` onto `obj`.\n * @param {Object} obj\t\tObject onto which properties should be copied.\n * @param {Object} props\tObject from which to copy properties.\n * @returns obj\n * @private\n */\nfunction extend(obj, props) {\n\tfor (var i in props) {\n\t\tobj[i] = props[i];\n\t}return obj;\n}\n\n/**\n * Call a function asynchronously, as soon as possible. Makes\n * use of HTML Promise to schedule the callback if available,\n * otherwise falling back to `setTimeout` (mainly for IE<11).\n *\n * @param {Function} callback\n */\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {VNode} vnode\t\tThe virutal DOM element to clone\n * @param {Object} props\tAttributes/props to add when cloning\n * @param {VNode} rest\t\tAny additional arguments will be used as replacement children.\n */\nfunction cloneElement(vnode, props) {\n\treturn h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\n\n// DOM properties that should NOT have \"px\" added when numeric\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\n/** Managed queue of dirty components to be re-rendered */\n\nvar items = [];\n\nfunction enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\nfunction rerender() {\n\tvar p,\n\t list = items;\n\titems = [];\n\twhile (p = list.pop()) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n\n/**\n * Check if two nodes are equivalent.\n *\n * @param {Node} node\t\t\tDOM Node to compare\n * @param {VNode} vnode\t\t\tVirtual DOM node to compare\n * @param {boolean} [hyrdating=false]\tIf true, ignores component constructors when comparing.\n * @private\n */\nfunction isSameNodeType(node, vnode, hydrating) {\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\treturn node.splitText !== undefined;\n\t}\n\tif (typeof vnode.nodeName === 'string') {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\treturn hydrating || node._componentConstructor === vnode.nodeName;\n}\n\n/**\n * Check if an Element has a given nodeName, case-insensitively.\n *\n * @param {Element} node\tA DOM Element to inspect the name of.\n * @param {String} nodeName\tUnnormalized name to compare against.\n */\nfunction isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n *\n * @param {VNode} vnode\n * @returns {Object} props\n */\nfunction getNodeProps(vnode) {\n\tvar props = extend({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tvar defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps !== undefined) {\n\t\tfor (var i in defaultProps) {\n\t\t\tif (props[i] === undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n\n/** Create an element with the given nodeName.\n *\t@param {String} nodeName\n *\t@param {Boolean} [isSvg=false]\tIf `true`, creates an element within the SVG namespace.\n *\t@returns {Element} node\n */\nfunction createNode(nodeName, isSvg) {\n\tvar node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\n/** Remove a child node from its parent if attached.\n *\t@param {Element} node\t\tThe node to remove\n */\nfunction removeNode(node) {\n\tvar parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\n/** Set a named attribute on the given Node, with special behavior for some names and event handlers.\n *\tIf `value` is `null`, the attribute/handler will be removed.\n *\t@param {Element} node\tAn element to mutate\n *\t@param {string} name\tThe name/key to set, such as an event or attribute name\n *\t@param {any} old\tThe last value that was set for this name/node pair\n *\t@param {any} value\tAn attribute value, such as a function to be used as an event handler\n *\t@param {Boolean} isSvg\tAre we currently diffing inside an svg?\n *\t@private\n */\nfunction setAccessor(node, name, old, value, isSvg) {\n\tif (name === 'className') name = 'class';\n\n\tif (name === 'key') {\n\t\t// ignore\n\t} else if (name === 'ref') {\n\t\tif (old) old(null);\n\t\tif (value) value(node);\n\t} else if (name === 'class' && !isSvg) {\n\t\tnode.className = value || '';\n\t} else if (name === 'style') {\n\t\tif (!value || typeof value === 'string' || typeof old === 'string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n\t\t\tif (typeof old !== 'string') {\n\t\t\t\tfor (var i in old) {\n\t\t\t\t\tif (!(i in value)) node.style[i] = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i in value) {\n\t\t\t\tnode.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n\t\t\t}\n\t\t}\n\t} else if (name === 'dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t} else if (name[0] == 'o' && name[1] == 'n') {\n\t\tvar useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t} else {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t} else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n\t\tsetProperty(node, name, value == null ? '' : value);\n\t\tif (value == null || value === false) node.removeAttribute(name);\n\t} else {\n\t\tvar ns = isSvg && name !== (name = name.replace(/^xlink\\:?/, ''));\n\t\tif (value == null || value === false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n\t\t} else if (typeof value !== 'function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/** Attempt to set a DOM property to the given value.\n *\tIE & FF throw for certain property-value combinations.\n */\nfunction setProperty(node, name, value) {\n\ttry {\n\t\tnode[name] = value;\n\t} catch (e) {}\n}\n\n/** Proxy an event to hooked event handlers\n *\t@private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n\n/** Queue of components that have been mounted and are awaiting componentDidMount */\nvar mounts = [];\n\n/** Diff recursion count, used to track the end of the diff cycle. */\nvar diffLevel = 0;\n\n/** Global flag indicating if the diff is currently within an SVG */\nvar isSvgMode = false;\n\n/** Global flag indicating if the diff is performing hydration */\nvar hydrating = false;\n\n/** Invoke queued componentDidMount lifecycle methods */\nfunction flushMounts() {\n\tvar c;\n\twhile (c = mounts.pop()) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\n/** Apply differences in a given vnode (and it's deep children) to a real DOM Node.\n *\t@param {Element} [dom=null]\t\tA DOM node to mutate into the shape of the `vnode`\n *\t@param {VNode} vnode\t\t\tA VNode (with descendants forming a tree) representing the desired DOM structure\n *\t@returns {Element} dom\t\t\tThe created/mutated element\n *\t@private\n */\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\t// diffLevel having been 0 here indicates initial entry into the diff (not a subdiff)\n\tif (!diffLevel++) {\n\t\t// when first starting the diff, check if we're diffing an SVG or within an SVG\n\t\tisSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n\t\t// hydration is indicated by the existing element to be diffed not having a prop cache\n\t\thydrating = dom != null && !('__preactattr_' in dom);\n\t}\n\n\tvar ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\t// append the element if its a new parent\n\tif (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n\t// diffLevel being reduced to 0 means we're exiting the diff\n\tif (! --diffLevel) {\n\t\thydrating = false;\n\t\t// invoke queued componentDidMount lifecycle methods\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\n/** Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing. */\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tvar out = dom,\n\t prevSvgMode = isSvgMode;\n\n\t// empty values (null, undefined, booleans) render as empty Text nodes\n\tif (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n\t// Fast case: Strings & Numbers create/update Text nodes.\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\n\t\t// update if it's already a Text node:\n\t\tif (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\t/* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */\n\t\t\tif (dom.nodeValue != vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t} else {\n\t\t\t// it wasn't a Text node: replace it with one and recycle the old Element\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout['__preactattr_'] = true;\n\n\t\treturn out;\n\t}\n\n\t// If the VNode represents a Component, perform a component diff:\n\tvar vnodeName = vnode.nodeName;\n\tif (typeof vnodeName === 'function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n\t// If there's no existing element or it's the wrong type, create a new one:\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\t// move children into the replacement node\n\t\t\twhile (dom.firstChild) {\n\t\t\t\tout.appendChild(dom.firstChild);\n\t\t\t} // if the previous Element was mounted into the DOM, replace it inline\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\t// recycle the old element (skips non-Element node types)\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\tvar fc = out.firstChild,\n\t props = out['__preactattr_'],\n\t vchildren = vnode.children;\n\n\tif (props == null) {\n\t\tprops = out['__preactattr_'] = {};\n\t\tfor (var a = out.attributes, i = a.length; i--;) {\n\t\t\tprops[a[i].name] = a[i].value;\n\t\t}\n\t}\n\n\t// Optimization: fast-path for elements containing a single TextNode:\n\tif (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n\t\tif (fc.nodeValue != vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t}\n\t// otherwise, if there are existing or new children, diff them:\n\telse if (vchildren && vchildren.length || fc != null) {\n\t\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n\t\t}\n\n\t// Apply attributes/props from VNode to the DOM Element:\n\tdiffAttributes(out, vnode.attributes, props);\n\n\t// restore previous SVG mode: (in case we're exiting an SVG namespace)\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\n/** Apply child and attribute changes between a VNode and a DOM Node to the DOM.\n *\t@param {Element} dom\t\t\tElement whose children should be compared & mutated\n *\t@param {Array} vchildren\t\tArray of VNodes to compare to `dom.childNodes`\n *\t@param {Object} context\t\t\tImplicitly descendant context object (from most recent `getChildContext()`)\n *\t@param {Boolean} mountAll\n *\t@param {Boolean} isHydrating\tIf `true`, consumes externally created elements similar to hydration\n */\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tvar originalChildren = dom.childNodes,\n\t children = [],\n\t keyed = {},\n\t keyedLen = 0,\n\t min = 0,\n\t len = originalChildren.length,\n\t childrenLen = 0,\n\t vlen = vchildren ? vchildren.length : 0,\n\t j,\n\t c,\n\t f,\n\t vchild,\n\t child;\n\n\t// Build up a map of keyed children and an Array of unkeyed children:\n\tif (len !== 0) {\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar _child = originalChildren[i],\n\t\t\t props = _child['__preactattr_'],\n\t\t\t key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n\t\t\tif (key != null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = _child;\n\t\t\t} else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = _child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen !== 0) {\n\t\tfor (var i = 0; i < vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\t// attempt to find a node based on key matching\n\t\t\tvar key = vchild.key;\n\t\t\tif (key != null) {\n\t\t\t\tif (keyedLen && keyed[key] !== undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// attempt to pluck a node of the same type from the existing children\n\t\t\telse if (!child && min < childrenLen) {\n\t\t\t\t\tfor (j = min; j < childrenLen; j++) {\n\t\t\t\t\t\tif (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\t\tif (j === childrenLen - 1) childrenLen--;\n\t\t\t\t\t\t\tif (j === min) min++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// morph the matched/found/created DOM child to match vchild (deep)\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child !== dom && child !== f) {\n\t\t\t\tif (f == null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t} else if (child === f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t} else {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// remove unused keyed children:\n\tif (keyedLen) {\n\t\tfor (var i in keyed) {\n\t\t\tif (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n\t\t}\n\t}\n\n\t// remove orphaned unkeyed children:\n\twhile (min <= childrenLen) {\n\t\tif ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n\t}\n}\n\n/** Recursively recycle (or just unmount) a node and its descendants.\n *\t@param {Node} node\t\t\t\t\t\tDOM node to start unmount/removal from\n *\t@param {Boolean} [unmountOnly=false]\tIf `true`, only triggers unmount lifecycle, skips removal\n */\nfunction recollectNodeTree(node, unmountOnly) {\n\tvar component = node._component;\n\tif (component) {\n\t\t// if node is owned by a Component, unmount that component (ends up recursing back here)\n\t\tunmountComponent(component);\n\t} else {\n\t\t// If the node's VNode had a ref function, invoke it with null here.\n\t\t// (this is part of the React spec, and smart for unsetting references)\n\t\tif (node['__preactattr_'] != null && node['__preactattr_'].ref) node['__preactattr_'].ref(null);\n\n\t\tif (unmountOnly === false || node['__preactattr_'] == null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\n/** Recollect/unmount all children.\n *\t- we use .lastChild here because it causes less reflow than .firstChild\n *\t- it's also cheaper than accessing the .childNodes Live NodeList\n */\nfunction removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tvar next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\n/** Apply differences in attributes from a VNode to the given DOM Element.\n *\t@param {Element} dom\t\tElement with attributes to diff `attrs` against\n *\t@param {Object} attrs\t\tThe desired end-state key-value attribute pairs\n *\t@param {Object} old\t\t\tCurrent/previous attributes (from previous VNode or element's prop cache)\n */\nfunction diffAttributes(dom, attrs, old) {\n\tvar name;\n\n\t// remove attributes no longer present on the vnode by setting them to undefined\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name] != null) && old[name] != null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\t// add new & update changed attributes\n\tfor (name in attrs) {\n\t\tif (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n\n/** Retains a pool of Components for re-use, keyed on component name.\n *\tNote: since component names are not unique or even necessarily available, these are primarily a form of sharding.\n *\t@private\n */\nvar components = {};\n\n/** Reclaim a component for later re-use by the recycler. */\nfunction collectComponent(component) {\n\tvar name = component.constructor.name;\n\t(components[name] || (components[name] = [])).push(component);\n}\n\n/** Create a component. Normalizes differences between PFC's and classful Components. */\nfunction createComponent(Ctor, props, context) {\n\tvar list = components[Ctor.name],\n\t inst;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t} else {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\tif (list) {\n\t\tfor (var i = list.length; i--;) {\n\t\t\tif (list[i].constructor === Ctor) {\n\t\t\t\tinst.nextBase = list[i].nextBase;\n\t\t\t\tlist.splice(i, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn inst;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n\n/** Set a component's `props` (generally derived from JSX attributes).\n *\t@param {Object} props\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.renderSync=false]\tIf `true` and {@link options.syncComponentUpdates} is `true`, triggers synchronous rendering.\n *\t@param {boolean} [opts.render=true]\t\t\tIf `false`, no render will be triggered.\n */\nfunction setComponentProps(component, props, opts, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tif (component.__ref = props.ref) delete props.ref;\n\tif (component.__key = props.key) delete props.key;\n\n\tif (!component.base || mountAll) {\n\t\tif (component.componentWillMount) component.componentWillMount();\n\t} else if (component.componentWillReceiveProps) {\n\t\tcomponent.componentWillReceiveProps(props, context);\n\t}\n\n\tif (context && context !== component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (opts !== 0) {\n\t\tif (opts === 1 || options.syncComponentUpdates !== false || !component.base) {\n\t\t\trenderComponent(component, 1, mountAll);\n\t\t} else {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tif (component.__ref) component.__ref(component);\n}\n\n/** Render a Component, triggering necessary lifecycle events and taking High-Order Components into account.\n *\t@param {Component} component\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.build=false]\t\tIf `true`, component will build and store a DOM node if not already associated with one.\n *\t@private\n */\nfunction renderComponent(component, opts, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tvar props = component.props,\n\t state = component.state,\n\t context = component.context,\n\t previousProps = component.prevProps || props,\n\t previousState = component.prevState || state,\n\t previousContext = component.prevContext || context,\n\t isUpdate = component.base,\n\t nextBase = component.nextBase,\n\t initialBase = isUpdate || nextBase,\n\t initialChildComponent = component._component,\n\t skip = false,\n\t rendered,\n\t inst,\n\t cbase;\n\n\t// if updating\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (opts !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t} else if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\t// context to pass to the child, can be updated via (grand-)parent component\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tvar childComponent = rendered && rendered.nodeName,\n\t\t toUnmount,\n\t\t base;\n\n\t\tif (typeof childComponent === 'function') {\n\t\t\t// set up high order component link\n\n\t\t\tvar childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, 1, context, false);\n\t\t\t} else {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, 0, context, false);\n\t\t\t\trenderComponent(inst, 1, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t} else {\n\t\t\tcbase = initialBase;\n\n\t\t\t// destroy high order component link\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || opts === 1) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t\t\tvar baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base !== baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tvar componentRef = component,\n\t\t\t t = component;\n\t\t\twhile (t = t._parentComponent) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.unshift(component);\n\t} else if (!skip) {\n\t\t// Ensure that pending componentDidMount() hooks of child components\n\t\t// are called before the componentDidUpdate() hook in the parent.\n\t\t// Note: disabled as it causes duplicate hooks, see https://github.com/developit/preact/issues/750\n\t\t// flushMounts();\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, previousContext);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\tif (component._renderCallbacks != null) {\n\t\twhile (component._renderCallbacks.length) {\n\t\t\tcomponent._renderCallbacks.pop().call(component);\n\t\t}\n\t}\n\n\tif (!diffLevel && !isChild) flushMounts();\n}\n\n/** Apply the Component referenced by a VNode to the DOM.\n *\t@param {Element} dom\tThe DOM node to mutate\n *\t@param {VNode} vnode\tA Component-referencing VNode\n *\t@returns {Element} dom\tThe created/mutated element\n *\t@private\n */\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tvar c = dom && dom._component,\n\t originalComponent = c,\n\t oldDom = dom,\n\t isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n\t isOwner = isDirectOwner,\n\t props = getNodeProps(vnode);\n\twhile (c && !isOwner && (c = c._parentComponent)) {\n\t\tisOwner = c.constructor === vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, 3, context, mountAll);\n\t\tdom = c.base;\n\t} else {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\t\t\t// passing dom/oldDom as nextBase will recycle it if unused, so bypass recycling on L229:\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, 1, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom !== oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/** Remove a component from the DOM and recycle it.\n *\t@param {Component} component\tThe Component instance to unmount\n *\t@private\n */\nfunction unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tvar base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\t// recursively tear down & recollect high-order component children:\n\tvar inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t} else if (base) {\n\t\tif (base['__preactattr_'] && base['__preactattr_'].ref) base['__preactattr_'].ref(null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\tcollectComponent(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tif (component.__ref) component.__ref(null);\n}\n\n/** Base Component class.\n *\tProvides `setState()` and `forceUpdate()`, which trigger rendering.\n *\t@public\n *\n *\t@example\n *\tclass MyFoo extends Component {\n *\t\trender(props, state) {\n *\t\t\treturn
;\n *\t\t}\n *\t}\n */\nfunction Component(props, context) {\n\tthis._dirty = true;\n\n\t/** @public\n *\t@type {object}\n */\n\tthis.context = context;\n\n\t/** @public\n *\t@type {object}\n */\n\tthis.props = props;\n\n\t/** @public\n *\t@type {object}\n */\n\tthis.state = this.state || {};\n}\n\nextend(Component.prototype, {\n\n\t/** Returns a `boolean` indicating if the component should re-render when receiving the given `props` and `state`.\n *\t@param {object} nextProps\n *\t@param {object} nextState\n *\t@param {object} nextContext\n *\t@returns {Boolean} should the component re-render\n *\t@name shouldComponentUpdate\n *\t@function\n */\n\n\t/** Update component state by copying properties from `state` to `this.state`.\n *\t@param {object} state\t\tA hash of state properties to update with new values\n *\t@param {function} callback\tA function to be called once component state is updated\n */\n\tsetState: function setState(state, callback) {\n\t\tvar s = this.state;\n\t\tif (!this.prevState) this.prevState = extend({}, s);\n\t\textend(s, typeof state === 'function' ? state(s, this.props) : state);\n\t\tif (callback) (this._renderCallbacks = this._renderCallbacks || []).push(callback);\n\t\tenqueueRender(this);\n\t},\n\n\t/** Immediately perform a synchronous re-render of the component.\n *\t@param {function} callback\t\tA function to be called after component is re-rendered.\n *\t@private\n */\n\tforceUpdate: function forceUpdate(callback) {\n\t\tif (callback) (this._renderCallbacks = this._renderCallbacks || []).push(callback);\n\t\trenderComponent(this, 2);\n\t},\n\n\t/** Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n *\tVirtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n *\t@param {object} props\t\tProps (eg: JSX attributes) received from parent element/component\n *\t@param {object} state\t\tThe component's current state\n *\t@param {object} context\t\tContext object (if a parent component has provided context)\n *\t@returns VNode\n */\n\trender: function render() {}\n});\n\n/** Render JSX into a `parent` Element.\n *\t@param {VNode} vnode\t\tA (JSX) VNode to render\n *\t@param {Element} parent\t\tDOM element to render into\n *\t@param {Element} [merge]\tAttempt to re-use an existing DOM tree rooted at `merge`\n *\t@public\n *\n *\t@example\n *\t// render a div into :\n *\trender(
hello!
, document.body);\n *\n *\t@example\n *\t// render a \"Thing\" component into #foo:\n *\tconst Thing = ({ name }) => { name };\n *\trender(, document.querySelector('#foo'));\n */\nfunction render(vnode, parent, merge) {\n\treturn diff(merge, vnode, {}, false, parent, false);\n}\n\nvar preact = {\n\th: h,\n\tcreateElement: h,\n\tcloneElement: cloneElement,\n\tComponent: Component,\n\trender: render,\n\trerender: rerender,\n\toptions: options\n};\n\nexports.h = h;\nexports.createElement = h;\nexports.cloneElement = cloneElement;\nexports.Component = Component;\nexports.render = render;\nexports.rerender = rerender;\nexports.options = options;\nexports.default = preact;\n//# sourceMappingURL=preact.esm.js.map\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nfunction shallowEqual(a, b) {\n for (var key in a) {\n if (a[key] !== b[key]) return false;\n }for (var _key in b) {\n if (!(_key in a)) return false;\n }return true;\n}\n\nvar PureComponent = function (_Component) {\n _inherits(PureComponent, _Component);\n\n function PureComponent() {\n _classCallCheck(this, PureComponent);\n\n return _possibleConstructorReturn(this, (PureComponent.__proto__ || Object.getPrototypeOf(PureComponent)).apply(this, arguments));\n }\n\n _createClass(PureComponent, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(props, state) {\n return !(shallowEqual(props, this.props) && shallowEqual(state, this.state));\n }\n }]);\n\n return PureComponent;\n}(_preact.Component);\n\nexports.default = PureComponent;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toArray = exports.getScrollTop = exports.getScrollLeft = exports.createUniqueId = exports.bem = undefined;\n\nvar _array = __webpack_require__(74);\n\nvar _bem = __webpack_require__(75);\n\nvar _bem2 = _interopRequireDefault(_bem);\n\nvar _scroll = __webpack_require__(76);\n\nvar _string = __webpack_require__(77);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.bem = _bem2.default;\nexports.createUniqueId = _string.createUniqueId;\nexports.getScrollLeft = _scroll.getScrollLeft;\nexports.getScrollTop = _scroll.getScrollTop;\nexports.toArray = _array.toArray;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar startOfISOWeek = __webpack_require__(5);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nfunction getISOYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\nmodule.exports = getISOYear;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfWeek = __webpack_require__(13);\n\n/**\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfISOWeek(dirtyDate) {\n return startOfWeek(dirtyDate, { weekStartsOn: 1 });\n}\n\nmodule.exports = startOfISOWeek;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nfunction startOfDay(dirtyDate) {\n var date = parse(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfDay;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ViewportIntersections = exports.VideoPlayer = exports.Video = exports.SmartVideo = exports.Slideshow = exports.Slide = exports.SerumResponsivePicture = exports.SerumSmartPicture = exports.SerumImage = exports.ResponsiveVideo = exports.PureComponent = exports.PullQuote = exports.Paragraph = exports.ListItem = exports.List = exports.Icon = exports.Heading = exports.Figure = exports.ChatLog = exports.Byline = undefined;\n\nvar _Byline = __webpack_require__(197);\n\nvar _Byline2 = _interopRequireDefault(_Byline);\n\nvar _ChatLog = __webpack_require__(198);\n\nvar _ChatLog2 = _interopRequireDefault(_ChatLog);\n\nvar _Figure = __webpack_require__(205);\n\nvar _Figure2 = _interopRequireDefault(_Figure);\n\nvar _Heading = __webpack_require__(206);\n\nvar _Heading2 = _interopRequireDefault(_Heading);\n\nvar _Icon = __webpack_require__(207);\n\nvar _Icon2 = _interopRequireDefault(_Icon);\n\nvar _List = __webpack_require__(208);\n\nvar _List2 = _interopRequireDefault(_List);\n\nvar _ListItem = __webpack_require__(209);\n\nvar _ListItem2 = _interopRequireDefault(_ListItem);\n\nvar _Paragraph = __webpack_require__(210);\n\nvar _Paragraph2 = _interopRequireDefault(_Paragraph);\n\nvar _PullQuote = __webpack_require__(211);\n\nvar _PullQuote2 = _interopRequireDefault(_PullQuote);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _ResponsiveVideo = __webpack_require__(212);\n\nvar _ResponsiveVideo2 = _interopRequireDefault(_ResponsiveVideo);\n\nvar _SerumImage = __webpack_require__(213);\n\nvar _SerumImage2 = _interopRequireDefault(_SerumImage);\n\nvar _SerumResponsivePicture = __webpack_require__(214);\n\nvar _SerumResponsivePicture2 = _interopRequireDefault(_SerumResponsivePicture);\n\nvar _SerumSmartPicture = __webpack_require__(215);\n\nvar _SerumSmartPicture2 = _interopRequireDefault(_SerumSmartPicture);\n\nvar _Slide = __webpack_require__(216);\n\nvar _Slide2 = _interopRequireDefault(_Slide);\n\nvar _Slideshow = __webpack_require__(217);\n\nvar _Slideshow2 = _interopRequireDefault(_Slideshow);\n\nvar _SmartVideo = __webpack_require__(218);\n\nvar _SmartVideo2 = _interopRequireDefault(_SmartVideo);\n\nvar _Video = __webpack_require__(31);\n\nvar _Video2 = _interopRequireDefault(_Video);\n\nvar _VideoPlayer = __webpack_require__(219);\n\nvar _VideoPlayer2 = _interopRequireDefault(_VideoPlayer);\n\nvar _ViewportIntersections = __webpack_require__(224);\n\nvar _ViewportIntersections2 = _interopRequireDefault(_ViewportIntersections);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Byline = _Byline2.default;\nexports.ChatLog = _ChatLog2.default;\nexports.Figure = _Figure2.default;\nexports.Heading = _Heading2.default;\nexports.Icon = _Icon2.default;\nexports.List = _List2.default;\nexports.ListItem = _ListItem2.default;\nexports.Paragraph = _Paragraph2.default;\nexports.PullQuote = _PullQuote2.default;\nexports.PureComponent = _preactPureComponent2.default;\nexports.ResponsiveVideo = _ResponsiveVideo2.default;\nexports.SerumImage = _SerumImage2.default;\nexports.SerumSmartPicture = _SerumSmartPicture2.default;\nexports.SerumResponsivePicture = _SerumResponsivePicture2.default;\nexports.Slide = _Slide2.default;\nexports.Slideshow = _Slideshow2.default;\nexports.SmartVideo = _SmartVideo2.default;\nexports.Video = _Video2.default;\nexports.VideoPlayer = _VideoPlayer2.default;\nexports.ViewportIntersections = _ViewportIntersections2.default;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @returns {Date} the new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nfunction addDays(dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate);\n var amount = Number(dirtyAmount);\n date.setDate(date.getDate() + amount);\n return date;\n}\n\nmodule.exports = addDays;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n var timestamp = parse(dirtyDate).getTime();\n var amount = Number(dirtyAmount);\n return new Date(timestamp + amount);\n}\n\nmodule.exports = addMilliseconds;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getISOYear = __webpack_require__(4);\nvar startOfISOWeek = __webpack_require__(5);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nfunction startOfISOYear(dirtyDate) {\n var year = getISOYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}\n\nmodule.exports = startOfISOYear;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nfunction compareAsc(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var timeLeft = dateLeft.getTime();\n var dateRight = parse(dirtyDateRight);\n var timeRight = dateRight.getTime();\n\n if (timeLeft < timeRight) {\n return -1;\n } else if (timeLeft > timeRight) {\n return 1;\n } else {\n return 0;\n }\n}\n\nmodule.exports = compareAsc;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n(function (global, factory) {\n ( false ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : factory(global.nrkSerumImagecropUtils = {});\n})(undefined, function (exports) {\n 'use strict';\n\n var isPolopolyIdRegex = /^[1-9]{1,2}\\.\\d+$/;\n\n function isPolopolyId(id) {\n if (!id) {\n return false;\n }\n return isPolopolyIdRegex.test(id);\n }\n\n // prettier-ignore\n var widths = [100, 120, 150, 174, 200, 206, 225, 244, 250, 252, 300, 320, 350, 400, 450, 452, 460, 462, 500, 600, 650, 665, 682, 700, 734, 768, 900, 974, 1200, 1280, 1360, 1450, 1550, 1600, 1700, 1800, 1920, 2000, 2100, 2200, 2300, 2400];\n\n // prettier-ignore\n var ratios = ['1:1', '11', '16:9', '169', '16:3', '163', '3:4', '34'];\n\n // prettier-ignore\n var qualities = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0];\n\n var _baseUrl = 'https://nrk.no/serum/api/imagecrop/';\n\n function createUrl(_ref) {\n var id = _ref.id,\n ratio = _ref.ratio,\n width = _ref.width,\n quality = _ref.quality;\n\n var url = '' + _baseUrl + id;\n var queryString = createQueryString({ ratio: ratio, width: width, quality: quality });\n if (queryString) {\n url += '?' + queryString;\n }\n return url;\n }\n\n function createQueryString(_ref2) {\n var ratio = _ref2.ratio,\n width = _ref2.width,\n quality = _ref2.quality;\n\n if (!ratio && !width) {\n return quality ? 'quality=' + quality : '';\n }\n var ratioPart = ratio ? 'f' + ratio.replace(':', '') : '';\n var widthPart = width ? 'w' + width : '';\n var qualityPart = quality ? '&quality=' + quality : '';\n return 'cropid=' + ratioPart + widthPart + qualityPart;\n }\n\n function getClosestNumber(goal, targets) {\n if (!isValidGoal(goal)) {\n throw new Error('\\n getClosestNumber(goal, targets): passing a goal of ' + goal + '\\n is not supported. Pass a number');\n }\n if (!isValidTargets(targets)) {\n throw new Error('\\n getClosestNumber(goal, targets): targets ' + targets.toString() + ' is invald.\\n Pass an array of numbers');\n }\n if (!targets.length) {\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n return targets.reduce(function (prev, curr) {\n return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\n });\n }\n\n function isValidGoal(goal) {\n return typeof goal === 'number';\n }\n\n function isValidTargets(targets) {\n if (!targets) {\n return false;\n }\n var isValid = true;\n for (var i = 0; i < targets.length; i++) {\n if (typeof targets[i] !== 'number') {\n isValid = false;\n break;\n }\n }\n // return targets.some((target) => {\n // return (typeof target !== 'number')\n // })\n return isValid;\n }\n\n function isValidRatio(ratio, supportedRatios) {\n if (!Array.isArray(supportedRatios)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidRatio(ratio, supportedRatios): supportedRatios '\" + supportedRatios + \"' is not supported. Pass an array of supported ratios\");\n }\n if (!ratio) {\n return false;\n }\n return supportedRatios.includes(ratio);\n }\n\n function isValidQuality(quality, supportedQualities) {\n if (!Array.isArray(supportedQualities)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidQuality(quality, supportedQualities): supportedQualities '\" + supportedQualities + \"' is not supported. Pass an array of supported qualities\");\n }\n if (!quality) {\n return false;\n }\n return supportedQualities.includes(quality);\n }\n\n function createImageUrl(options) {\n var polopolyId = options.id,\n width = options.width,\n ratio = options.ratio,\n quality = options.quality;\n\n if (!isPolopolyId(polopolyId)) {\n throw new Error('createSerumImageUrl(): invalid polopolyId. Got ' + polopolyId);\n }\n\n var args = {\n id: polopolyId,\n ratio: null,\n quality: 0.8,\n width: 0\n\n // If a ratio is provided, ensure that it is valid\n };if (hasOption(ratio)) {\n if (!isValidRatio(ratio, ratios)) {\n throw new Error('\\n createSerumImageUrl(): ratio ' + ratio + ' is not supported.\\n Supported ratios are ' + ratios.toString());\n }\n args.ratio = ratio;\n }\n\n // If a quality is provided, ensure that it is valid\n if (hasOption(quality)) {\n if (!isValidQuality(quality, qualities)) {\n throw new Error('\\n createSerumImageUrl(): quality ' + quality + ' is not supported.\\n Supported qualities are ' + qualities.toString());\n }\n args.quality = quality;\n }\n\n // If a width is provided, ensure that is is a positive integer\n if (hasOption(width)) {\n if (!isNumber(width) || width <= 0) {\n var errorMessage = 'createSerumImageUrl(): width must be a positive integer, got ' + width;\n throw new Error(errorMessage);\n }\n var isSupportedWidth = widths.includes(width);\n var closestWidth = getClosestNumber(width, widths);\n if (typeof closestWidth !== 'undefined' && closestWidth) {\n args.width = isSupportedWidth ? width : closestWidth;\n }\n }\n\n return createUrl(args);\n }\n\n function hasOption(option) {\n return typeof option !== 'undefined' && option;\n }\n\n function isNumber(number) {\n return Number.isInteger(number);\n }\n\n exports.createImageUrl = createImageUrl;\n exports.ratios = ratios;\n exports.widths = widths;\n exports.qualities = qualities;\n exports.isPolopolyId = isPolopolyId;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n});\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfWeek(dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0;\n\n var date = parse(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfWeek;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfDay = __webpack_require__(6);\n\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n */\nfunction differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n\n var timestampLeft = startOfDayLeft.getTime() - startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n var timestampRight = startOfDayRight.getTime() - startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}\n\nmodule.exports = differenceInCalendarDays;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar getDaysInMonth = __webpack_require__(20);\n\n/**\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @returns {Date} the new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nfunction addMonths(dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate);\n var amount = Number(dirtyAmount);\n var desiredMonth = date.getMonth() + amount;\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));\n return date;\n}\n\nmodule.exports = addMonths;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nfunction differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n return dateLeft.getTime() - dateRight.getTime();\n}\n\nmodule.exports = differenceInMilliseconds;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"article\":\"dh-kult-hnio-article\",\"article__header\":\"dh-kult-hnio-article__header\",\"article__leadMediaWrapper\":\"dh-kult-hnio-article__leadMediaWrapper\",\"article__leadMedia\":\"dh-kult-hnio-article__leadMedia\",\"article__headerTopSkew\":\"dh-kult-hnio-article__headerTopSkew\",\"root--noJs\":\"dh-kult-hnio-root--noJs\",\"article__headerBottomSkew\":\"dh-kult-hnio-article__headerBottomSkew\",\"article__headerText\":\"dh-kult-hnio-article__headerText\",\"article__title\":\"dh-kult-hnio-article__title\",\"article__intro\":\"dh-kult-hnio-article__intro\",\"article__authors\":\"dh-kult-hnio-article__authors\",\"article__content\":\"dh-kult-hnio-article__content\",\"section__content\":\"dh-kult-hnio-section__content\",\"article__paragraph\":\"dh-kult-hnio-article__paragraph\",\"article__pullQuote\":\"dh-kult-hnio-article__pullQuote\",\"article__videoPlayer\":\"dh-kult-hnio-article__videoPlayer\",\"article__publishedAt\":\"dh-kult-hnio-article__publishedAt\",\"section\":\"dh-kult-hnio-section\",\"section--dark\":\"dh-kult-hnio-section--dark\",\"section__title\":\"dh-kult-hnio-section__title\"};\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = __webpack_require__(1);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction shallowEqual(a, b) {\n for (var key in a) {\n if (a[key] !== b[key]) return false;\n }for (var _key in b) {\n if (!(_key in a)) return false;\n }return true;\n}\n\nvar PureComponent = function (_Component) {\n _inherits(PureComponent, _Component);\n\n function PureComponent() {\n _classCallCheck(this, PureComponent);\n\n return _possibleConstructorReturn(this, (PureComponent.__proto__ || Object.getPrototypeOf(PureComponent)).apply(this, arguments));\n }\n\n _createClass(PureComponent, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(props, state) {\n return !(shallowEqual(props, this.props) && shallowEqual(state, this.state));\n }\n }]);\n\n return PureComponent;\n}(_preact.Component);\n\nexports.default = PureComponent;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * @category Common Helpers\n * @summary Is the given argument an instance of Date?\n *\n * @description\n * Is the given argument an instance of Date?\n *\n * @param {*} argument - the argument to check\n * @returns {Boolean} the given argument is an instance of Date\n *\n * @example\n * // Is 'mayonnaise' a Date?\n * var result = isDate('mayonnaise')\n * //=> false\n */\nfunction isDate(argument) {\n return argument instanceof Date;\n}\n\nmodule.exports = isDate;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nfunction getDaysInMonth(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\nmodule.exports = getDaysInMonth;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addDays = __webpack_require__(8);\n\n/**\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @returns {Date} the new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nfunction addWeeks(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}\n\nmodule.exports = addWeeks;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nfunction compareDesc(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var timeLeft = dateLeft.getTime();\n var dateRight = parse(dirtyDateRight);\n var timeRight = dateRight.getTime();\n\n if (timeLeft > timeRight) {\n return -1;\n } else if (timeLeft < timeRight) {\n return 1;\n } else {\n return 0;\n }\n}\n\nmodule.exports = compareDesc;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar differenceInCalendarMonths = __webpack_require__(41);\nvar compareAsc = __webpack_require__(11);\n\n/**\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 7\n */\nfunction differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n return sign * (difference - isLastMonthNotFull);\n}\n\nmodule.exports = differenceInMonths;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar differenceInMilliseconds = __webpack_require__(16);\n\n/**\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nfunction differenceInSeconds(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInSeconds;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar buildDistanceInWordsLocale = __webpack_require__(107);\nvar buildFormatLocale = __webpack_require__(108);\n\n/**\n * @category Locales\n * @summary English locale.\n */\nmodule.exports = {\n distanceInWords: buildDistanceInWordsLocale(),\n format: buildFormatLocale()\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nfunction endOfDay(dirtyDate) {\n var date = parse(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfDay;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar startOfISOWeek = __webpack_require__(5);\nvar startOfISOYear = __webpack_require__(10);\n\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nfunction getISOWeek(dirtyDate) {\n var date = parse(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\n\nmodule.exports = getISOWeek;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfWeek = __webpack_require__(13);\n\n/**\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4)\n * )\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4),\n * {weekStartsOn: 1}\n * )\n * //=> false\n */\nfunction isSameWeek(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions);\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions);\n\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}\n\nmodule.exports = isSameWeek;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Avatar = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _AvatarImage = __webpack_require__(201);\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\nvar Avatar = exports.Avatar = function (_Component) {\n _inherits(Avatar, _Component);\n\n function Avatar() {\n _classCallCheck(this, Avatar);\n\n return _possibleConstructorReturn(this, (Avatar.__proto__ || Object.getPrototypeOf(Avatar)).apply(this, arguments));\n }\n\n _createClass(Avatar, [{\n key: 'render',\n value: function render() {\n var person = this.props.person;\n var name = person.name,\n image = person.image;\n\n var displayImage = image && image.type !== 'none';\n return (0, _preact.h)('div', { 'aria-hidden': true, className: (0, _dhUtils.bem)(styles.avatar, person.side) }, displayImage && (0, _preact.h)(_AvatarImage.AvatarImage, { image: image, alt: person.name, title: person.name }), !displayImage && (0, _preact.h)('span', { className: styles.avatar__placeholder, title: name }, getInitials(name)));\n }\n }]);\n\n return Avatar;\n}(_preact.Component);\n\nfunction getInitials() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var initials = name.trim().split(/[ -]/).map(function (item) {\n return item.charAt(0).toUpperCase();\n });\n\n if (initials.length < 2) return initials[0];\n return [initials[0], initials[initials.length - 1]].join('');\n}\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getImageUrl = getImageUrl;\n\nvar _serumImagecropUtils = __webpack_require__(12);\n\nfunction getImageUrl(image, options) {\n var _ref = options || {},\n _ref$width = _ref.width,\n width = _ref$width === undefined ? 120 : _ref$width,\n _ref$ratio = _ref.ratio,\n ratio = _ref$ratio === undefined ? '1:1' : _ref$ratio;\n\n switch (image.type) {\n case 'polopoly-image':\n {\n return (0, _serumImagecropUtils.createImageUrl)({ id: image.id, width: width, ratio: ratio });\n }\n case 'url-image':\n {\n return image.url;\n }\n }\n}\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;target[i] = obj[i];\n }return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\n/* eslint-disable jsx-a11y/media-has-caption */\n\nvar Video = function (_PureComponent) {\n _inherits(Video, _PureComponent);\n\n function Video() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Video);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Video.__proto__ || Object.getPrototypeOf(Video)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n isPlaying: false,\n isResolvingPlay: false,\n time: 0\n }, _this.tracks = [], _this.handlePlay = function () {\n var onPlay = _this.props.onPlay;\n\n _this.setState({ isPlaying: true });\n\n if (onPlay) {\n onPlay();\n }\n }, _this.handlePause = function () {\n var onPause = _this.props.onPause;\n\n _this.setState({ isPlaying: false });\n\n if (onPause) {\n onPause();\n }\n }, _this.handleDurationChange = function () {\n var onDurationChange = _this.props.onDurationChange;\n\n if (onDurationChange) {\n onDurationChange(_this.elm.duration);\n }\n }, _this.handleTimeupdate = function () {\n var onTimeupdate = _this.props.onTimeupdate;\n\n var time = _this.elm.currentTime;\n\n _this.setState({ time: time });\n\n if (onTimeupdate) {\n onTimeupdate(time);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Video, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var _props = this.props,\n textTracks = _props.textTracks,\n playing = _props.playing,\n onCaptionCueEnter = _props.onCaptionCueEnter,\n onCaptionCueExit = _props.onCaptionCueExit;\n\n if (textTracks) {\n textTracks.forEach(function (textTrack) {\n var track = _this2.elm.addTextTrack('subtitles', textTrack.language);\n track.mode = 'hidden';\n\n _this2.tracks.push(track);\n\n try {\n textTrack.captions.forEach(function (a) {\n return track.addCue(new window.VTTCue(Number(a.in), Number(a.out), a.text));\n });\n } catch (_) {\n // ignore error\n\n textTrack.captions.forEach(function (a) {\n return track.addCue(new window.TextTrackCue(Number(a.in), Number(a.out), a.text));\n });\n }\n\n var _loop = function _loop(i) {\n var cue = track.cues[i];\n\n try {\n cue.onenter = function () {\n if (typeof onCaptionCueEnter !== 'undefined') {\n onCaptionCueEnter({\n in: cue.startTime,\n out: cue.endTime,\n text: cue.text\n });\n }\n };\n cue.onexit = function () {\n if (typeof onCaptionCueExit !== 'undefined') {\n onCaptionCueExit();\n }\n };\n } catch (_) {\n // ignore error\n }\n };\n\n for (var i = 0; i < track.cues.length; i++) {\n _loop(i);\n }\n });\n }\n\n if (playing) {\n this.play();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.playing !== this.props.playing) {\n if (this.props.playing) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n }, {\n key: 'play',\n value: function play() {\n var _this3 = this;\n\n var onError = this.props.onError;\n\n var playPromise = this.elm.play();\n\n if (playPromise) {\n this.setState({ isResolvingPlay: true });\n\n playPromise.then(function () {\n _this3.setState({ isResolvingPlay: false });\n }).catch(function (err) {\n if (onError) {\n onError(err.message);\n }\n\n _this3.setState({ isResolvingPlay: false });\n });\n }\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.elm.pause();\n }\n }, {\n key: 'seek',\n value: function seek(time) {\n this.elm.currentTime = time;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props2 = this.props,\n playing = _props2.playing,\n sources = _props2.sources,\n restProps = _objectWithoutProperties(_props2, ['playing', 'sources']);\n\n var isPlaying = this.state.isPlaying;\n\n var eventHandlers = {\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onDurationChange: this.handleDurationChange,\n onTimeupdate: this.handleTimeupdate\n };\n\n var dataProps = {};\n\n if (isPlaying) {\n dataProps['data-playing'] = true;\n }\n\n return (0, _preact.h)('video', _extends({}, restProps, eventHandlers, {\n ref: function ref(elm) {\n return _this4.elm = elm;\n }\n }, dataProps), sources.map(function (source) {\n return (0, _preact.h)('source', _extends({}, source, { key: source.type }));\n }));\n }\n }]);\n\n return Video;\n}(_preactPureComponent2.default);\n\nexports.default = Video;\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"visualStory\":\"dh-kult-hnio-visualStory\",\"visualStory__topSkew\":\"dh-kult-hnio-visualStory__topSkew\",\"section--dark\":\"dh-kult-hnio-section--dark\",\"root--noJs\":\"dh-kult-hnio-root--noJs\",\"visualStory__bottomSkew\":\"dh-kult-hnio-visualStory__bottomSkew\",\"visualStory__slideshow\":\"dh-kult-hnio-visualStory__slideshow\",\"root--js\":\"dh-kult-hnio-root--js\",\"visualStory__slideshow--isIntersecting\":\"dh-kult-hnio-visualStory__slideshow--isIntersecting\",\"visualStory__slide\":\"dh-kult-hnio-visualStory__slide\",\"visualStory__smartVideo\":\"dh-kult-hnio-visualStory__smartVideo\",\"visualStory__slideText\":\"dh-kult-hnio-visualStory__slideText\",\"visualStory__cards\":\"dh-kult-hnio-visualStory__cards\",\"defaultCard\":\"dh-kult-hnio-defaultCard\",\"defaultCard__wrapper\":\"dh-kult-hnio-defaultCard__wrapper\",\"defaultCard--right\":\"dh-kult-hnio-defaultCard--right\",\"defaultCard--left\":\"dh-kult-hnio-defaultCard--left\",\"defaultCard__credit\":\"dh-kult-hnio-defaultCard__credit\"};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addMilliseconds = __webpack_require__(9);\n\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @returns {Date} the new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nfunction addHours(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}\n\nmodule.exports = addHours;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getISOYear = __webpack_require__(4);\nvar setISOYear = __webpack_require__(35);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @returns {Date} the new date with the ISO week-numbering years added\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nfunction addISOYears(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return setISOYear(dirtyDate, getISOYear(dirtyDate) + amount);\n}\n\nmodule.exports = addISOYears;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar startOfISOYear = __webpack_require__(10);\nvar differenceInCalendarDays = __webpack_require__(14);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year setted\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nfunction setISOYear(dirtyDate, dirtyISOYear) {\n var date = parse(dirtyDate);\n var isoYear = Number(dirtyISOYear);\n var diff = differenceInCalendarDays(date, startOfISOYear(date));\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(isoYear, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n date = startOfISOYear(fourthOfJanuary);\n date.setDate(date.getDate() + diff);\n return date;\n}\n\nmodule.exports = setISOYear;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addMilliseconds = __webpack_require__(9);\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @returns {Date} the new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nfunction addMinutes(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}\n\nmodule.exports = addMinutes;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addMonths = __webpack_require__(15);\n\n/**\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @returns {Date} the new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nfunction addQuarters(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n var months = amount * 3;\n return addMonths(dirtyDate, months);\n}\n\nmodule.exports = addQuarters;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addMilliseconds = __webpack_require__(9);\n\n/**\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @returns {Date} the new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nfunction addSeconds(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}\n\nmodule.exports = addSeconds;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addMonths = __webpack_require__(15);\n\n/**\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @returns {Date} the new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nfunction addYears(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}\n\nmodule.exports = addYears;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getISOYear = __webpack_require__(4);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nfunction differenceInCalendarISOYears(dirtyDateLeft, dirtyDateRight) {\n return getISOYear(dirtyDateLeft) - getISOYear(dirtyDateRight);\n}\n\nmodule.exports = differenceInCalendarISOYears;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nfunction differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n\n return yearDiff * 12 + monthDiff;\n}\n\nmodule.exports = differenceInCalendarMonths;\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nfunction getQuarter(dirtyDate) {\n var date = parse(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}\n\nmodule.exports = getQuarter;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nfunction differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}\n\nmodule.exports = differenceInCalendarYears;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar differenceInCalendarDays = __webpack_require__(14);\nvar compareAsc = __webpack_require__(11);\n\n/**\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full days\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n */\nfunction differenceInDays(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = compareAsc(dateLeft, dateRight) === -sign;\n return sign * (difference - isLastDayNotFull);\n}\n\nmodule.exports = differenceInDays;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addISOYears = __webpack_require__(34);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nfunction subISOYears(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addISOYears(dirtyDate, -amount);\n}\n\nmodule.exports = subISOYears;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar compareDesc = __webpack_require__(22);\nvar parse = __webpack_require__(0);\nvar differenceInSeconds = __webpack_require__(24);\nvar differenceInMonths = __webpack_require__(23);\nvar enLocale = __webpack_require__(25);\n\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date|String|Number} date - the other date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = distanceInWords(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 1)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = distanceInWords(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = distanceInWords(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWords(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nfunction distanceInWords(dirtyDateToCompare, dirtyDate, dirtyOptions) {\n var options = dirtyOptions || {};\n\n var comparison = compareDesc(dirtyDateToCompare, dirtyDate);\n\n var locale = options.locale;\n var localize = enLocale.distanceInWords.localize;\n if (locale && locale.distanceInWords && locale.distanceInWords.localize) {\n localize = locale.distanceInWords.localize;\n }\n\n var localizeOptions = {\n addSuffix: Boolean(options.addSuffix),\n comparison: comparison\n };\n\n var dateLeft, dateRight;\n if (comparison > 0) {\n dateLeft = parse(dirtyDateToCompare);\n dateRight = parse(dirtyDate);\n } else {\n dateLeft = parse(dirtyDate);\n dateRight = parse(dirtyDateToCompare);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset();\n var minutes = Math.round(seconds / 60) - offset;\n var months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return localize('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return localize('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return localize('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return localize('halfAMinute', null, localizeOptions);\n } else if (seconds < 60) {\n return localize('lessThanXMinutes', 1, localizeOptions);\n } else {\n return localize('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return localize('lessThanXMinutes', 1, localizeOptions);\n } else {\n return localize('xMinutes', minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return localize('xMinutes', minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return localize('aboutXHours', 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return localize('aboutXHours', hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return localize('xDays', 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return localize('xDays', days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return localize('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft);\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return localize('xMonths', nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return localize('aboutXYears', years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return localize('overXYears', years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return localize('almostXYears', years + 1, localizeOptions);\n }\n }\n}\n\nmodule.exports = distanceInWords;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfWeek(dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0;\n\n var date = parse(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfWeek;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nfunction endOfMonth(dirtyDate) {\n var date = parse(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfMonth;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar startOfYear = __webpack_require__(50);\nvar differenceInCalendarDays = __webpack_require__(14);\n\n/**\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nfunction getDayOfYear(dirtyDate) {\n var date = parse(dirtyDate);\n var diff = differenceInCalendarDays(date, startOfYear(date));\n var dayOfYear = diff + 1;\n return dayOfYear;\n}\n\nmodule.exports = getDayOfYear;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nfunction startOfYear(dirtyDate) {\n var cleanDate = parse(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfYear;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isDate = __webpack_require__(19);\n\n/**\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {Date} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} argument must be an instance of Date\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(dirtyDate) {\n if (isDate(dirtyDate)) {\n return !isNaN(dirtyDate);\n } else {\n throw new TypeError(toString.call(dirtyDate) + ' is not an instance of Date');\n }\n}\n\nmodule.exports = isValid;\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nfunction isLeapYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nmodule.exports = isLeapYear;\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nfunction getISODay(dirtyDate) {\n var date = parse(dirtyDate);\n var day = date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\n}\n\nmodule.exports = getISODay;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfHour = __webpack_require__(55);\n\n/**\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 6, 30)\n * )\n * //=> true\n */\nfunction isSameHour(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\n}\n\nmodule.exports = isSameHour;\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an hour\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nfunction startOfHour(dirtyDate) {\n var date = parse(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfHour;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameWeek = __webpack_require__(28);\n\n/**\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(\n * new Date(2014, 8, 1),\n * new Date(2014, 8, 7)\n * )\n * //=> true\n */\nfunction isSameISOWeek(dirtyDateLeft, dirtyDateRight) {\n return isSameWeek(dirtyDateLeft, dirtyDateRight, { weekStartsOn: 1 });\n}\n\nmodule.exports = isSameISOWeek;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfISOYear = __webpack_require__(10);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOYear(\n * new Date(2003, 11, 29),\n * new Date(2005, 0, 2)\n * )\n * //=> true\n */\nfunction isSameISOYear(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfYear = startOfISOYear(dirtyDateLeft);\n var dateRightStartOfYear = startOfISOYear(dirtyDateRight);\n\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime();\n}\n\nmodule.exports = isSameISOYear;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfMinute = __webpack_require__(59);\n\n/**\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\nfunction isSameMinute(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft);\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight);\n\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime();\n}\n\nmodule.exports = isSameMinute;\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a minute\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nfunction startOfMinute(dirtyDate) {\n var date = parse(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}\n\nmodule.exports = startOfMinute;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameMonth(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}\n\nmodule.exports = isSameMonth;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfQuarter = __webpack_require__(62);\n\n/**\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(\n * new Date(2014, 0, 1),\n * new Date(2014, 2, 8)\n * )\n * //=> true\n */\nfunction isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft);\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight);\n\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime();\n}\n\nmodule.exports = isSameQuarter;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nfunction startOfQuarter(dirtyDate) {\n var date = parse(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3;\n date.setMonth(month, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfQuarter;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfSecond = __webpack_require__(64);\n\n/**\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\nfunction isSameSecond(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}\n\nmodule.exports = isSameSecond;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a second\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nfunction startOfSecond(dirtyDate) {\n var date = parse(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}\n\nmodule.exports = startOfSecond;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameYear(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}\n\nmodule.exports = isSameYear;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction lastDayOfWeek(dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0;\n\n var date = parse(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + diff);\n return date;\n}\n\nmodule.exports = lastDayOfWeek;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar getDaysInMonth = __webpack_require__(20);\n\n/**\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month setted\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nfunction setMonth(dirtyDate, dirtyMonth) {\n var date = parse(dirtyDate);\n var month = Number(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}\n\nmodule.exports = setMonth;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IMAGE_WIDTHS = undefined;\nexports.createResponsiveSrcSet = createResponsiveSrcSet;\n\nvar _serumImagecropUtils = __webpack_require__(12);\n\nvar IMAGE_WIDTHS = exports.IMAGE_WIDTHS = [320, 450, 650, 768, 900, 1280, 1600, 1920, 2400];\n\nfunction createResponsiveSrcSet(opts) {\n var id = opts.id,\n ratio = opts.ratio,\n quality = opts.quality;\n\n return IMAGE_WIDTHS.map(function (width) {\n var imageUrl = (0, _serumImagecropUtils.createImageUrl)({ id: id, width: width, ratio: ratio, quality: quality });\n return imageUrl + ' ' + width + 'w';\n }).join(', ');\n}\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\nvar _index = __webpack_require__(225);\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction Skew(props) {\n var position = props.position;\n\n\n var className = '' + (0, _dhUtils.bem)(_index2.default.skew, position) + (props.className ? ' ' + props.className : '');\n\n var polygon = void 0;\n\n switch (position) {\n case 'top':\n polygon = (0, _preact.h)('polygon', { points: '300 0 300 10 0 10' });\n break;\n\n case 'bottom':\n polygon = (0, _preact.h)('polygon', { points: '0 0 300 0 0 10' });\n break;\n }\n\n return (0, _preact.h)(\n 'div',\n { className: className, 'aria-hidden': 'true' },\n (0, _preact.h)(\n 'svg',\n { viewBox: '0 0 300 10' },\n (0, _preact.h)(\n 'g',\n { stroke: 'none', fill: 'none', fillRule: 'evenodd' },\n (0, _preact.h)(\n 'g',\n { fill: 'currentColor' },\n polygon\n )\n )\n )\n );\n} // @jsx h\n\nexports.default = Skew;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(71);\nmodule.exports = __webpack_require__(73);\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(72);\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n\n(function (window, document) {\n 'use strict';\n\n // Exits early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n\n if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function get() {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n }\n\n /**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observering a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\n var registry = [];\n\n /**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\n function IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n this.intersectionRatio = intersectionArea / targetArea;\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n }\n\n /**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\n function IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function (margin) {\n return margin.value + margin.unit;\n }).join(' ');\n }\n\n /**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n /**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\n IntersectionObserver.prototype.POLL_INTERVAL = null;\n\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n /**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.observe = function (target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function (item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({ element: target, entry: null });\n this._monitorIntersections();\n this._checkForIntersections();\n };\n\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets = this._observationTargets.filter(function (item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n };\n\n /**\n * Stops observing all target elements for intersection changes.\n */\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n };\n\n /**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\n IntersectionObserver.prototype.takeRecords = function () {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n };\n\n /**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\n IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function (t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n };\n\n /**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\n IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function (margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return { value: parseFloat(parts[1]), unit: parts[2] };\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n };\n\n /**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibilty state is visible.\n * @private\n */\n IntersectionObserver.prototype._monitorIntersections = function () {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(this._checkForIntersections, this.POLL_INTERVAL);\n } else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n };\n\n /**\n * Stops polling for intersection changes.\n * @private\n */\n IntersectionObserver.prototype._unmonitorIntersections = function () {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n };\n\n /**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\n IntersectionObserver.prototype._checkForIntersections = function () {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function (item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget && this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n };\n\n /**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\n IntersectionObserver.prototype._computeTargetAndRootIntersection = function (target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ? window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body && parent != document.documentElement && parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n };\n\n /**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\n IntersectionObserver.prototype._getRootRect = function () {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n };\n\n /**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n var margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit == 'px' ? margin.value : margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n };\n\n /**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\n IntersectionObserver.prototype._hasCrossedThreshold = function (oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio || threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n };\n\n /**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root);\n };\n\n /**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\n return containsDeep(this.root || document, target);\n };\n\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n IntersectionObserver.prototype._registerInstance = function () {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n };\n\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n IntersectionObserver.prototype._unregisterInstance = function () {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n };\n\n /**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\n function now() {\n return window.performance && performance.now && performance.now();\n }\n\n /**\n * Throttles a function and delays its executiong, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\n function throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function () {\n fn();\n timer = null;\n }, timeout);\n }\n };\n }\n\n /**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\n function addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n }\n\n /**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\n function removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n }\n\n /**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\n function computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return width >= 0 && height >= 0 && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n /**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\n function getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n }\n\n /**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\n function getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n\n /**\n * Checks to see if a parent element contains a child elemnt (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\n function containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n }\n\n /**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\n function getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n return parent;\n }\n\n // Exposes the constructors globally.\n window.IntersectionObserver = IntersectionObserver;\n window.IntersectionObserverEntry = IntersectionObserverEntry;\n})(window, document);\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; // @jsx h\n\n/* global __HOT__ */\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _featureTests = __webpack_require__(78);\n\nvar _domready = __webpack_require__(79);\n\nvar _domready2 = _interopRequireDefault(_domready);\n\nvar _googleAnalytics = __webpack_require__(80);\n\nvar _preact = __webpack_require__(1);\n\n__webpack_require__(81);\n\n__webpack_require__(82);\n\n__webpack_require__(83);\n\n__webpack_require__(84);\n\n__webpack_require__(85);\n\n__webpack_require__(86);\n\n__webpack_require__(87);\n\n__webpack_require__(88);\n\n__webpack_require__(89);\n\n__webpack_require__(90);\n\nvar _client = __webpack_require__(91);\n\nvar _client2 = _interopRequireDefault(_client);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nwindow[_client2.default.root] = window[_client2.default.root] || {};\n\nfunction init() {\n findElements().forEach(function (el) {\n el.id = (0, _dhUtils.createUniqueId)();\n window[_client2.default.root][el.id] = true;\n\n cutTheMustard(function (hasSupport) {\n if (hasSupport) {\n // Tell CSS that JS is supported\n el.className = el.className.replace('root--noJs', 'root--js');\n\n // Extract preloaded state sent from server\n var preloadedState = JSON.parse(el.getAttribute('data-preloaded-state'));\n\n // ... and render with the exact same props\n renderArticle(el, preloadedState);\n\n // Enable webpack hot-reloading\n if (false) {\n // Reload and re-render React application\n module.hot.accept('./client', function () {\n renderArticle(el, preloadedState);\n });\n }\n } else {\n console && console.warn && console.warn('Bruker du en gammel nettleser? Oppgrader til Edge, Chrome, Safari, Firefox eller likende.');\n }\n });\n });\n}\n\nfunction cutTheMustard(callbackFn) {\n return (0, _featureTests.testPositionSticky)(callbackFn);\n}\n\nfunction handleAnalyticsEvent() {\n var analyticsEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (typeof analyticsEvent.action === 'string') {\n (0, _googleAnalytics.sendEvent)({\n category: 'dh-kultur-spesial-hnio',\n action: analyticsEvent.action,\n label: 'Å jobbe i en operafabrikk – Spesial'\n });\n }\n}\n\nfunction renderArticle(el, props) {\n var Article = __webpack_require__(92).default;\n (0, _preact.render)((0, _preact.h)(Article, _extends({}, props, { onAnalyticsEvent: handleAnalyticsEvent })), el, el.firstChild);\n}\n\nfunction findElements() {\n return (0, _dhUtils.toArray)(document.getElementsByClassName(_client2.default.root)).filter(function (el) {\n return !isInitialized(el);\n });\n}\n\nfunction isInitialized(el) {\n return el.id && window[_client2.default.root][el.id];\n}\n\n(0, _domready2.default)(init);\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toArray = toArray;\nfunction toArray(nodeList) {\n return [].slice.call(nodeList);\n}\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\nfunction toStrings(object) {\n return Object.keys(object).filter(function (key) {\n return object[key];\n });\n}\n\nexports.default = function (blockName) {\n for (var _len = arguments.length, modifiers = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n modifiers[_key - 1] = arguments[_key];\n }\n\n var strings = modifiers.filter(function (modifier) {\n return typeof modifier === 'string';\n });\n var objects = modifiers.filter(function (modifier) {\n return (typeof modifier === 'undefined' ? 'undefined' : _typeof(modifier)) === 'object';\n });\n\n var objectString = objects.map(function (object) {\n return toStrings(object);\n }).reduce(function (a, b) {\n return [].concat(_toConsumableArray(a), _toConsumableArray(b));\n }, []);\n\n return [blockName].concat(strings.map(function (modifier) {\n return blockName + '--' + modifier;\n })).concat(objectString.map(function (modifier) {\n return blockName + '--' + modifier;\n })).join(' ');\n};\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getScrollLeft = getScrollLeft;\nexports.getScrollTop = getScrollTop;\nfunction getScrollLeft() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageXOffset || document.documentElement && document.documentElement.scrollLeft || 0;\n}\n\nfunction getScrollTop() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageYOffset || document.documentElement && document.documentElement.scrollTop || 0;\n}\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createUniqueId = createUniqueId;\nfunction createUniqueId() {\n var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n return '' + prefix + Math.random().toString(36).substr(2, len - prefix.length);\n}\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction testJs(callback) {\n callback(true);\n}\n\nfunction testJs$1(callback) {\n var el = document.createElement('img');\n\n callback(el.style.objectFit !== undefined);\n}\n\nfunction testPositionSticky(callback) {\n var el = document.createElement('a');\n\n el.style.cssText = 'position: sticky; position: -webkit-sticky; position: -ms-sticky;';\n\n callback(el.style.position.indexOf('sticky') !== -1);\n}\n\nvar videoAutoPlayCache = null;\n\nfunction testVideoAutoPlay(callback) {\n if (typeof window === 'undefined') {\n return callback(false);\n }\n\n if (videoAutoPlayCache !== null) {\n return callback(videoAutoPlayCache);\n }\n\n var videoElm = document.createElement('video');\n\n var isPlaying = false;\n\n videoElm.setAttribute('autoplay', '');\n videoElm.setAttribute('muted', '');\n videoElm.setAttribute('webkit-playsinline', 'webkit-playsinline');\n videoElm.setAttribute('playsinline', 'playsinline');\n\n try {\n if (videoElm.canPlayType('video/ogg')) {\n videoElm.src = 'data:video/ogg;base64,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';\n } else if (videoElm.canPlayType('video/mp4')) {\n videoElm.src = 'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAs1tZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0OCByMjYwMSBhMGNkN2QzIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNSAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTEgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEwIHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAD2WIhAA3//728P4FNjuZQQAAAu5tb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAZAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACGHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAgAAAAIAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAGQAAAAAAAEAAAAAAZBtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAACgAAAAEAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAE7bWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAA+3N0YmwAAACXc3RzZAAAAAAAAAABAAAAh2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgACAEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwFkAAr/4QAYZ2QACqzZX4iIhAAAAwAEAAADAFA8SJZYAQAGaOvjyyLAAAAAGHN0dHMAAAAAAAAAAQAAAAEAAAQAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAAsUAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU2LjQwLjEwMQ==';\n } else {\n return callback(false);\n }\n } catch (_) {\n return callback(false);\n }\n\n videoElm.load();\n videoElm.play();\n\n videoElm.oncanplay = function () {\n videoAutoPlayCache = isPlaying;\n callback(videoAutoPlayCache);\n };\n\n videoElm.onplay = function () {\n isPlaying = true;\n };\n}\n\nvar index = { testJs: testJs, testObjectFit: testJs$1, testPositionSticky: testPositionSticky, testVideoAutoPlay: testVideoAutoPlay };\n\nexports.default = index;\nexports.testJs = testJs;\nexports.testObjectFit = testJs$1;\nexports.testPositionSticky = testPositionSticky;\nexports.testVideoAutoPlay = testVideoAutoPlay;\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n */\n!function (name, definition) {\n\n if (true) module.exports = definition();else if (typeof define == 'function' && _typeof(define.amd) == 'object') define(definition);else this[name] = definition();\n}('domready', function () {\n\n var fns = [],\n _listener,\n doc = document,\n hack = doc.documentElement.doScroll,\n domContentLoaded = 'DOMContentLoaded',\n loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\n\n if (!loaded) doc.addEventListener(domContentLoaded, _listener = function listener() {\n doc.removeEventListener(domContentLoaded, _listener);\n loaded = 1;\n while (_listener = fns.shift()) {\n _listener();\n }\n });\n\n return function (fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn);\n };\n});\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sendEvent = sendEvent;\nfunction sendEvent(event) {\n if (window.ga) {\n window.ga('send', 'event', event.category, event.action, event.label);\n } else {\n if (typeof console !== 'undefined') {\n console.log('ga.sendEvent', JSON.stringify(event));\n }\n }\n}\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"dh-kult-hnio-root\",\"root--js\":\"dh-kult-hnio-root--js\",\"root--noJs\":\"dh-kult-hnio-root--noJs\",\"saksuniversContainer\":\"dh-kult-hnio-saksuniversContainer\"};\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _maxViewportObservable = __webpack_require__(93);\n\nvar _maxViewportObservable2 = _interopRequireDefault(_maxViewportObservable);\n\nvar _dateFns = __webpack_require__(94);\n\nvar _preact = __webpack_require__(1);\n\nvar _Header = __webpack_require__(196);\n\nvar _Header2 = _interopRequireDefault(_Header);\n\nvar _Content = __webpack_require__(226);\n\nvar _Content2 = _interopRequireDefault(_Content);\n\nvar _index = __webpack_require__(17);\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @jsx h\n\nvar Article = function (_Component) {\n _inherits(Article, _Component);\n\n function Article() {\n _classCallCheck(this, Article);\n\n var _this = _possibleConstructorReturn(this, (Article.__proto__ || Object.getPrototypeOf(Article)).call(this));\n\n _this.handleUserToggleMute = function () {\n _this.setState({ muted: !_this.state.muted });\n };\n\n _this.state = {\n muted: true,\n viewport: {\n width: -1,\n height: -1\n }\n };\n return _this;\n }\n\n _createClass(Article, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n this.viewport$ = _maxViewportObservable2.default.create({\n root: window\n });\n\n this.viewportSubscription = this.viewport$.subscribe({\n next: function next(viewport) {\n _this2.setState({ viewport: viewport });\n }\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.viewportSubscription.unsubscribe();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n mediaBaseUrl = _props.mediaBaseUrl,\n onAnalyticsEvent = _props.onAnalyticsEvent;\n var _props$data = this.props.data,\n publishedAt = _props$data.publishedAt,\n sections = _props$data.sections;\n var _state = this.state,\n muted = _state.muted,\n viewport = _state.viewport;\n\n\n return (0, _preact.h)(\n 'article',\n { className: _index2.default.article },\n (0, _preact.h)(_Header2.default, _extends({}, this.props, { viewport: viewport })),\n (0, _preact.h)(_Content2.default, {\n mediaBaseUrl: mediaBaseUrl,\n muted: muted,\n onAnalyticsEvent: onAnalyticsEvent,\n onUserToggleMute: this.handleUserToggleMute,\n sections: sections,\n viewport: viewport\n }),\n (0, _preact.h)(\n 'footer',\n { className: _index2.default.article__publishedAt },\n 'Publisert ',\n (0, _dateFns.format)(publishedAt, 'DD.MM.YYYY'),\n ', kl.',\n ' ',\n (0, _dateFns.format)(publishedAt, 'HH:mm')\n )\n );\n }\n }]);\n\n return Article;\n}(_preact.Component);\n\nexports.default = Article;\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction create() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var root = opts.root;\n\n var getRect = function getRect() {\n if (root instanceof Element) {\n var rect = root.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height\n };\n }\n\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n };\n\n var subscribe = function subscribe(observer) {\n var isDynamicViewport = false;\n var isTouching = false;\n var rect = { width: -1, height: -1 };\n\n var listeners = {\n orientationchange: function orientationchange() {\n rect = { width: -1, height: -1 };\n },\n resize: function resize() {\n var prevRect = rect;\n\n rect = getRect();\n\n if (isDynamicViewport && rect.height < prevRect.height) {\n rect.height = prevRect.height;\n }\n\n observer.next(rect);\n },\n scroll: function scroll() {\n if (isTouching) {\n isDynamicViewport = true;\n window.removeEventListener('scroll', listeners.scroll);\n }\n },\n touchstart: function touchstart() {\n isTouching = true;\n },\n touchend: function touchend() {\n isTouching = false;\n }\n };\n\n window.addEventListener('orientationchange', listeners.orientationchange);\n window.addEventListener('resize', listeners.resize);\n window.addEventListener('scroll', listeners.scroll);\n window.addEventListener('touchstart', listeners.touchstart);\n window.addEventListener('touchend', listeners.touchend);\n\n // Trigger initial \"resize\"\n listeners.resize();\n\n return {\n unsubscribe: function unsubscribe() {\n window.removeEventListener('orientationchange', listeners.orientationchange);\n window.removeEventListener('resize', listeners.resize);\n window.removeEventListener('scroll', listeners.scroll);\n window.removeEventListener('touchstart', listeners.touchstart);\n window.removeEventListener('touchend', listeners.touchend);\n }\n };\n };\n\n return { subscribe: subscribe };\n}\n\nvar index = { create: create };\n\nexports.create = create;\nexports.default = index;\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n addDays: __webpack_require__(8),\n addHours: __webpack_require__(33),\n addISOYears: __webpack_require__(34),\n addMilliseconds: __webpack_require__(9),\n addMinutes: __webpack_require__(36),\n addMonths: __webpack_require__(15),\n addQuarters: __webpack_require__(37),\n addSeconds: __webpack_require__(38),\n addWeeks: __webpack_require__(21),\n addYears: __webpack_require__(39),\n areRangesOverlapping: __webpack_require__(95),\n closestIndexTo: __webpack_require__(96),\n closestTo: __webpack_require__(97),\n compareAsc: __webpack_require__(11),\n compareDesc: __webpack_require__(22),\n differenceInCalendarDays: __webpack_require__(14),\n differenceInCalendarISOWeeks: __webpack_require__(98),\n differenceInCalendarISOYears: __webpack_require__(40),\n differenceInCalendarMonths: __webpack_require__(41),\n differenceInCalendarQuarters: __webpack_require__(99),\n differenceInCalendarWeeks: __webpack_require__(100),\n differenceInCalendarYears: __webpack_require__(43),\n differenceInDays: __webpack_require__(44),\n differenceInHours: __webpack_require__(101),\n differenceInISOYears: __webpack_require__(102),\n differenceInMilliseconds: __webpack_require__(16),\n differenceInMinutes: __webpack_require__(103),\n differenceInMonths: __webpack_require__(23),\n differenceInQuarters: __webpack_require__(104),\n differenceInSeconds: __webpack_require__(24),\n differenceInWeeks: __webpack_require__(105),\n differenceInYears: __webpack_require__(106),\n distanceInWords: __webpack_require__(46),\n distanceInWordsStrict: __webpack_require__(110),\n distanceInWordsToNow: __webpack_require__(111),\n eachDay: __webpack_require__(112),\n endOfDay: __webpack_require__(26),\n endOfHour: __webpack_require__(113),\n endOfISOWeek: __webpack_require__(114),\n endOfISOYear: __webpack_require__(115),\n endOfMinute: __webpack_require__(116),\n endOfMonth: __webpack_require__(48),\n endOfQuarter: __webpack_require__(117),\n endOfSecond: __webpack_require__(118),\n endOfToday: __webpack_require__(119),\n endOfTomorrow: __webpack_require__(120),\n endOfWeek: __webpack_require__(47),\n endOfYear: __webpack_require__(121),\n endOfYesterday: __webpack_require__(122),\n format: __webpack_require__(123),\n getDate: __webpack_require__(124),\n getDay: __webpack_require__(125),\n getDayOfYear: __webpack_require__(49),\n getDaysInMonth: __webpack_require__(20),\n getDaysInYear: __webpack_require__(126),\n getHours: __webpack_require__(127),\n getISODay: __webpack_require__(53),\n getISOWeek: __webpack_require__(27),\n getISOWeeksInYear: __webpack_require__(128),\n getISOYear: __webpack_require__(4),\n getMilliseconds: __webpack_require__(129),\n getMinutes: __webpack_require__(130),\n getMonth: __webpack_require__(131),\n getOverlappingDaysInRanges: __webpack_require__(132),\n getQuarter: __webpack_require__(42),\n getSeconds: __webpack_require__(133),\n getTime: __webpack_require__(134),\n getYear: __webpack_require__(135),\n isAfter: __webpack_require__(136),\n isBefore: __webpack_require__(137),\n isDate: __webpack_require__(19),\n isEqual: __webpack_require__(138),\n isFirstDayOfMonth: __webpack_require__(139),\n isFriday: __webpack_require__(140),\n isFuture: __webpack_require__(141),\n isLastDayOfMonth: __webpack_require__(142),\n isLeapYear: __webpack_require__(52),\n isMonday: __webpack_require__(143),\n isPast: __webpack_require__(144),\n isSameDay: __webpack_require__(145),\n isSameHour: __webpack_require__(54),\n isSameISOWeek: __webpack_require__(56),\n isSameISOYear: __webpack_require__(57),\n isSameMinute: __webpack_require__(58),\n isSameMonth: __webpack_require__(60),\n isSameQuarter: __webpack_require__(61),\n isSameSecond: __webpack_require__(63),\n isSameWeek: __webpack_require__(28),\n isSameYear: __webpack_require__(65),\n isSaturday: __webpack_require__(146),\n isSunday: __webpack_require__(147),\n isThisHour: __webpack_require__(148),\n isThisISOWeek: __webpack_require__(149),\n isThisISOYear: __webpack_require__(150),\n isThisMinute: __webpack_require__(151),\n isThisMonth: __webpack_require__(152),\n isThisQuarter: __webpack_require__(153),\n isThisSecond: __webpack_require__(154),\n isThisWeek: __webpack_require__(155),\n isThisYear: __webpack_require__(156),\n isThursday: __webpack_require__(157),\n isToday: __webpack_require__(158),\n isTomorrow: __webpack_require__(159),\n isTuesday: __webpack_require__(160),\n isValid: __webpack_require__(51),\n isWednesday: __webpack_require__(161),\n isWeekend: __webpack_require__(162),\n isWithinRange: __webpack_require__(163),\n isYesterday: __webpack_require__(164),\n lastDayOfISOWeek: __webpack_require__(165),\n lastDayOfISOYear: __webpack_require__(166),\n lastDayOfMonth: __webpack_require__(167),\n lastDayOfQuarter: __webpack_require__(168),\n lastDayOfWeek: __webpack_require__(66),\n lastDayOfYear: __webpack_require__(169),\n max: __webpack_require__(170),\n min: __webpack_require__(171),\n parse: __webpack_require__(0),\n setDate: __webpack_require__(172),\n setDay: __webpack_require__(173),\n setDayOfYear: __webpack_require__(174),\n setHours: __webpack_require__(175),\n setISODay: __webpack_require__(176),\n setISOWeek: __webpack_require__(177),\n setISOYear: __webpack_require__(35),\n setMilliseconds: __webpack_require__(178),\n setMinutes: __webpack_require__(179),\n setMonth: __webpack_require__(67),\n setQuarter: __webpack_require__(180),\n setSeconds: __webpack_require__(181),\n setYear: __webpack_require__(182),\n startOfDay: __webpack_require__(6),\n startOfHour: __webpack_require__(55),\n startOfISOWeek: __webpack_require__(5),\n startOfISOYear: __webpack_require__(10),\n startOfMinute: __webpack_require__(59),\n startOfMonth: __webpack_require__(183),\n startOfQuarter: __webpack_require__(62),\n startOfSecond: __webpack_require__(64),\n startOfToday: __webpack_require__(184),\n startOfTomorrow: __webpack_require__(185),\n startOfWeek: __webpack_require__(13),\n startOfYear: __webpack_require__(50),\n startOfYesterday: __webpack_require__(186),\n subDays: __webpack_require__(187),\n subHours: __webpack_require__(188),\n subISOYears: __webpack_require__(45),\n subMilliseconds: __webpack_require__(189),\n subMinutes: __webpack_require__(190),\n subMonths: __webpack_require__(191),\n subQuarters: __webpack_require__(192),\n subSeconds: __webpack_require__(193),\n subWeeks: __webpack_require__(194),\n subYears: __webpack_require__(195)\n};\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Range Helpers\n * @summary Is the given date range overlapping with another date range?\n *\n * @description\n * Is the given date range overlapping with another date range?\n *\n * @param {Date|String|Number} initialRangeStartDate - the start of the initial range\n * @param {Date|String|Number} initialRangeEndDate - the end of the initial range\n * @param {Date|String|Number} comparedRangeStartDate - the start of the range to compare it with\n * @param {Date|String|Number} comparedRangeEndDate - the end of the range to compare it with\n * @returns {Boolean} whether the date ranges are overlapping\n * @throws {Error} startDate of a date range cannot be after its endDate\n *\n * @example\n * // For overlapping date ranges:\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping date ranges:\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 21), new Date(2014, 0, 22)\n * )\n * //=> false\n */\nfunction areRangesOverlapping(dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) {\n var initialStartTime = parse(dirtyInitialRangeStartDate).getTime();\n var initialEndTime = parse(dirtyInitialRangeEndDate).getTime();\n var comparedStartTime = parse(dirtyComparedRangeStartDate).getTime();\n var comparedEndTime = parse(dirtyComparedRangeEndDate).getTime();\n\n if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) {\n throw new Error('The start of the range cannot be after the end of the range');\n }\n\n return initialStartTime < comparedEndTime && comparedStartTime < initialEndTime;\n}\n\nmodule.exports = areRangesOverlapping;\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} the second argument must be an instance of Array\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nfunction closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n if (!(dirtyDatesArray instanceof Array)) {\n throw new TypeError(toString.call(dirtyDatesArray) + ' is not an instance of Array');\n }\n\n var dateToCompare = parse(dirtyDateToCompare);\n var timeToCompare = dateToCompare.getTime();\n\n var result;\n var minDistance;\n\n dirtyDatesArray.forEach(function (dirtyDate, index) {\n var currentDate = parse(dirtyDate);\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n if (result === undefined || distance < minDistance) {\n result = index;\n minDistance = distance;\n }\n });\n\n return result;\n}\n\nmodule.exports = closestIndexTo;\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} the second argument must be an instance of Array\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nfunction closestTo(dirtyDateToCompare, dirtyDatesArray) {\n if (!(dirtyDatesArray instanceof Array)) {\n throw new TypeError(toString.call(dirtyDatesArray) + ' is not an instance of Array');\n }\n\n var dateToCompare = parse(dirtyDateToCompare);\n var timeToCompare = dateToCompare.getTime();\n\n var result;\n var minDistance;\n\n dirtyDatesArray.forEach(function (dirtyDate) {\n var currentDate = parse(dirtyDate);\n var distance = Math.abs(timeToCompare - currentDate.getTime());\n if (result === undefined || distance < minDistance) {\n result = currentDate;\n minDistance = distance;\n }\n });\n\n return result;\n}\n\nmodule.exports = closestTo;\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfISOWeek = __webpack_require__(5);\n\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nfunction differenceInCalendarISOWeeks(dirtyDateLeft, dirtyDateRight) {\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft);\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight);\n\n var timestampLeft = startOfISOWeekLeft.getTime() - startOfISOWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n var timestampRight = startOfISOWeekRight.getTime() - startOfISOWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}\n\nmodule.exports = differenceInCalendarISOWeeks;\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getQuarter = __webpack_require__(42);\nvar parse = __webpack_require__(0);\n\n/**\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nfunction differenceInCalendarQuarters(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight);\n\n return yearDiff * 4 + quarterDiff;\n}\n\nmodule.exports = differenceInCalendarQuarters;\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfWeek = __webpack_require__(13);\n\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 2\n */\nfunction differenceInCalendarWeeks(dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions);\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions);\n\n var timestampLeft = startOfWeekLeft.getTime() - startOfWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n var timestampRight = startOfWeekRight.getTime() - startOfWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE;\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK);\n}\n\nmodule.exports = differenceInCalendarWeeks;\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar differenceInMilliseconds = __webpack_require__(16);\n\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nfunction differenceInHours(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_HOUR;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInHours;\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar differenceInCalendarISOYears = __webpack_require__(40);\nvar compareAsc = __webpack_require__(11);\nvar subISOYears = __webpack_require__(45);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nfunction differenceInISOYears(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarISOYears(dateLeft, dateRight));\n dateLeft = subISOYears(dateLeft, sign * difference);\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n return sign * (difference - isLastISOYearNotFull);\n}\n\nmodule.exports = differenceInISOYears;\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar differenceInMilliseconds = __webpack_require__(16);\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\nfunction differenceInMinutes(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_MINUTE;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInMinutes;\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar differenceInMonths = __webpack_require__(23);\n\n/**\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nfunction differenceInQuarters(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInQuarters;\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar differenceInDays = __webpack_require__(44);\n\n/**\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 2\n */\nfunction differenceInWeeks(dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7;\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff);\n}\n\nmodule.exports = differenceInWeeks;\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar differenceInCalendarYears = __webpack_require__(43);\nvar compareAsc = __webpack_require__(11);\n\n/**\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 1\n */\nfunction differenceInYears(dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft);\n var dateRight = parse(dirtyDateRight);\n\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference);\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n return sign * (difference - isLastYearNotFull);\n}\n\nmodule.exports = differenceInYears;\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction buildDistanceInWordsLocale() {\n var distanceInWordsLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n };\n\n function localize(token, count, options) {\n options = options || {};\n\n var result;\n if (typeof distanceInWordsLocale[token] === 'string') {\n result = distanceInWordsLocale[token];\n } else if (count === 1) {\n result = distanceInWordsLocale[token].one;\n } else {\n result = distanceInWordsLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n }\n\n return {\n localize: localize\n };\n}\n\nmodule.exports = buildDistanceInWordsLocale;\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar buildFormattingTokensRegExp = __webpack_require__(109);\n\nfunction buildFormatLocale() {\n // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n var months3char = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n var monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var weekdays2char = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n var weekdays3char = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n var weekdaysFull = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n var meridiemUppercase = ['AM', 'PM'];\n var meridiemLowercase = ['am', 'pm'];\n var meridiemFull = ['a.m.', 'p.m.'];\n\n var formatters = {\n // Month: Jan, Feb, ..., Dec\n 'MMM': function MMM(date) {\n return months3char[date.getMonth()];\n },\n\n // Month: January, February, ..., December\n 'MMMM': function MMMM(date) {\n return monthsFull[date.getMonth()];\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': function dd(date) {\n return weekdays2char[date.getDay()];\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': function ddd(date) {\n return weekdays3char[date.getDay()];\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': function dddd(date) {\n return weekdaysFull[date.getDay()];\n },\n\n // AM, PM\n 'A': function A(date) {\n return date.getHours() / 12 >= 1 ? meridiemUppercase[1] : meridiemUppercase[0];\n },\n\n // am, pm\n 'a': function a(date) {\n return date.getHours() / 12 >= 1 ? meridiemLowercase[1] : meridiemLowercase[0];\n },\n\n // a.m., p.m.\n 'aa': function aa(date) {\n return date.getHours() / 12 >= 1 ? meridiemFull[1] : meridiemFull[0];\n }\n\n // Generate ordinal version of formatters: M -> Mo, D -> Do, etc.\n };var ordinalFormatters = ['M', 'D', 'DDD', 'd', 'Q', 'W'];\n ordinalFormatters.forEach(function (formatterToken) {\n formatters[formatterToken + 'o'] = function (date, formatters) {\n return ordinal(formatters[formatterToken](date));\n };\n });\n\n return {\n formatters: formatters,\n formattingTokensRegExp: buildFormattingTokensRegExp(formatters)\n };\n}\n\nfunction ordinal(number) {\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n}\n\nmodule.exports = buildFormatLocale;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar commonFormatterKeys = ['M', 'MM', 'Q', 'D', 'DD', 'DDD', 'DDDD', 'd', 'E', 'W', 'WW', 'YY', 'YYYY', 'GG', 'GGGG', 'H', 'HH', 'h', 'hh', 'm', 'mm', 's', 'ss', 'S', 'SS', 'SSS', 'Z', 'ZZ', 'X', 'x'];\n\nfunction buildFormattingTokensRegExp(formatters) {\n var formatterKeys = [];\n for (var key in formatters) {\n if (formatters.hasOwnProperty(key)) {\n formatterKeys.push(key);\n }\n }\n\n var formattingTokens = commonFormatterKeys.concat(formatterKeys).sort().reverse();\n var formattingTokensRegExp = new RegExp('(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?' + '(' + formattingTokens.join('|') + '|.)', 'g');\n\n return formattingTokensRegExp;\n}\n\nmodule.exports = buildFormattingTokensRegExp;\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar compareDesc = __webpack_require__(22);\nvar parse = __webpack_require__(0);\nvar differenceInSeconds = __webpack_require__(24);\nvar enLocale = __webpack_require__(25);\n\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_YEAR = 525600;\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `distanceInWords`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date|String|Number} date - the other date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'s'|'m'|'h'|'d'|'M'|'Y'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.partialMethod='floor'] - which way to round partial units\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = distanceInWordsStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = distanceInWordsStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = distanceInWordsStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {addSuffix: true}\n * )\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = distanceInWordsStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {unit: 'm'}\n * )\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 28 January 2015, in months, rounded up?\n * var result = distanceInWordsStrict(\n * new Date(2015, 0, 28),\n * new Date(2015, 0, 1),\n * {unit: 'M', partialMethod: 'ceil'}\n * )\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWordsStrict(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nfunction distanceInWordsStrict(dirtyDateToCompare, dirtyDate, dirtyOptions) {\n var options = dirtyOptions || {};\n\n var comparison = compareDesc(dirtyDateToCompare, dirtyDate);\n\n var locale = options.locale;\n var localize = enLocale.distanceInWords.localize;\n if (locale && locale.distanceInWords && locale.distanceInWords.localize) {\n localize = locale.distanceInWords.localize;\n }\n\n var localizeOptions = {\n addSuffix: Boolean(options.addSuffix),\n comparison: comparison\n };\n\n var dateLeft, dateRight;\n if (comparison > 0) {\n dateLeft = parse(dirtyDateToCompare);\n dateRight = parse(dirtyDate);\n } else {\n dateLeft = parse(dirtyDate);\n dateRight = parse(dirtyDateToCompare);\n }\n\n var unit;\n var mathPartial = Math[options.partialMethod ? String(options.partialMethod) : 'floor'];\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset();\n var minutes = mathPartial(seconds / 60) - offset;\n var hours, days, months, years;\n\n if (options.unit) {\n unit = String(options.unit);\n } else {\n if (minutes < 1) {\n unit = 's';\n } else if (minutes < 60) {\n unit = 'm';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'h';\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'd';\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'M';\n } else {\n unit = 'Y';\n }\n }\n\n // 0 up to 60 seconds\n if (unit === 's') {\n return localize('xSeconds', seconds, localizeOptions);\n\n // 1 up to 60 mins\n } else if (unit === 'm') {\n return localize('xMinutes', minutes, localizeOptions);\n\n // 1 up to 24 hours\n } else if (unit === 'h') {\n hours = mathPartial(minutes / 60);\n return localize('xHours', hours, localizeOptions);\n\n // 1 up to 30 days\n } else if (unit === 'd') {\n days = mathPartial(minutes / MINUTES_IN_DAY);\n return localize('xDays', days, localizeOptions);\n\n // 1 up to 12 months\n } else if (unit === 'M') {\n months = mathPartial(minutes / MINUTES_IN_MONTH);\n return localize('xMonths', months, localizeOptions);\n\n // 1 year up to max Date\n } else if (unit === 'Y') {\n years = mathPartial(minutes / MINUTES_IN_YEAR);\n return localize('xYears', years, localizeOptions);\n }\n\n throw new Error('Unknown unit: ' + unit);\n}\n\nmodule.exports = distanceInWordsStrict;\n\n/***/ }),\n/* 111 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar distanceInWords = __webpack_require__(46);\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if the second date is earlier or later than the first\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = distanceInWordsToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = distanceInWordsToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = distanceInWordsToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWordsToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nfunction distanceInWordsToNow(dirtyDate, dirtyOptions) {\n return distanceInWords(Date.now(), dirtyDate, dirtyOptions);\n}\n\nmodule.exports = distanceInWordsToNow;\n\n/***/ }),\n/* 112 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Day Helpers\n * @summary Return the array of dates within the specified range.\n *\n * @description\n * Return the array of dates within the specified range.\n *\n * @param {Date|String|Number} startDate - the first date\n * @param {Date|String|Number} endDate - the last date\n * @param {Number} [step=1] - the step between each day\n * @returns {Date[]} the array with starts of days from the day of startDate to the day of endDate\n * @throws {Error} startDate cannot be after endDate\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDay(\n * new Date(2014, 9, 6),\n * new Date(2014, 9, 10)\n * )\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nfunction eachDay(dirtyStartDate, dirtyEndDate, dirtyStep) {\n var startDate = parse(dirtyStartDate);\n var endDate = parse(dirtyEndDate);\n var step = dirtyStep !== undefined ? dirtyStep : 1;\n\n var endTime = endDate.getTime();\n\n if (startDate.getTime() > endTime) {\n throw new Error('The first date cannot be after the second date');\n }\n\n var dates = [];\n\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n\n while (currentDate.getTime() <= endTime) {\n dates.push(parse(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n }\n\n return dates;\n}\n\nmodule.exports = eachDay;\n\n/***/ }),\n/* 113 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an hour\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nfunction endOfHour(dirtyDate) {\n var date = parse(dirtyDate);\n date.setMinutes(59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfHour;\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar endOfWeek = __webpack_require__(47);\n\n/**\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfISOWeek(dirtyDate) {\n return endOfWeek(dirtyDate, { weekStartsOn: 1 });\n}\n\nmodule.exports = endOfISOWeek;\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getISOYear = __webpack_require__(4);\nvar startOfISOWeek = __webpack_require__(5);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nfunction endOfISOYear(dirtyDate) {\n var year = getISOYear(dirtyDate);\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear);\n date.setMilliseconds(date.getMilliseconds() - 1);\n return date;\n}\n\nmodule.exports = endOfISOYear;\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a minute\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nfunction endOfMinute(dirtyDate) {\n var date = parse(dirtyDate);\n date.setSeconds(59, 999);\n return date;\n}\n\nmodule.exports = endOfMinute;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a quarter\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nfunction endOfQuarter(dirtyDate) {\n var date = parse(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfQuarter;\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a second\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nfunction endOfSecond(dirtyDate) {\n var date = parse(dirtyDate);\n date.setMilliseconds(999);\n return date;\n}\n\nmodule.exports = endOfSecond;\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar endOfDay = __webpack_require__(26);\n\n/**\n * @category Day Helpers\n * @summary Return the end of today.\n *\n * @description\n * Return the end of today.\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\nfunction endOfToday() {\n return endOfDay(new Date());\n}\n\nmodule.exports = endOfToday;\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * @category Day Helpers\n * @summary Return the end of tomorrow.\n *\n * @description\n * Return the end of tomorrow.\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfTomorrow()\n * //=> Tue Oct 7 2014 23:59:59.999\n */\nfunction endOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfTomorrow;\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nfunction endOfYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfYear;\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * @category Day Helpers\n * @summary Return the end of yesterday.\n *\n * @description\n * Return the end of yesterday.\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfYesterday()\n * //=> Sun Oct 5 2014 23:59:59.999\n */\nfunction endOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(23, 59, 59, 999);\n return date;\n}\n\nmodule.exports = endOfYesterday;\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getDayOfYear = __webpack_require__(49);\nvar getISOWeek = __webpack_require__(27);\nvar getISOYear = __webpack_require__(4);\nvar parse = __webpack_require__(0);\nvar isValid = __webpack_require__(51);\nvar enLocale = __webpack_require__(25);\n\n/**\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format.\n *\n * Accepted tokens:\n * | Unit | Token | Result examples |\n * |-------------------------|-------|----------------------------------|\n * | Month | M | 1, 2, ..., 12 |\n * | | Mo | 1st, 2nd, ..., 12th |\n * | | MM | 01, 02, ..., 12 |\n * | | MMM | Jan, Feb, ..., Dec |\n * | | MMMM | January, February, ..., December |\n * | Quarter | Q | 1, 2, 3, 4 |\n * | | Qo | 1st, 2nd, 3rd, 4th |\n * | Day of month | D | 1, 2, ..., 31 |\n * | | Do | 1st, 2nd, ..., 31st |\n * | | DD | 01, 02, ..., 31 |\n * | Day of year | DDD | 1, 2, ..., 366 |\n * | | DDDo | 1st, 2nd, ..., 366th |\n * | | DDDD | 001, 002, ..., 366 |\n * | Day of week | d | 0, 1, ..., 6 |\n * | | do | 0th, 1st, ..., 6th |\n * | | dd | Su, Mo, ..., Sa |\n * | | ddd | Sun, Mon, ..., Sat |\n * | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | E | 1, 2, ..., 7 |\n * | ISO week | W | 1, 2, ..., 53 |\n * | | Wo | 1st, 2nd, ..., 53rd |\n * | | WW | 01, 02, ..., 53 |\n * | Year | YY | 00, 01, ..., 99 |\n * | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | GG | 00, 01, ..., 99 |\n * | | GGGG | 1900, 1901, ..., 2099 |\n * | AM/PM | A | AM, PM |\n * | | a | am, pm |\n * | | aa | a.m., p.m. |\n * | Hour | H | 0, 1, ... 23 |\n * | | HH | 00, 01, ... 23 |\n * | | h | 1, 2, ..., 12 |\n * | | hh | 01, 02, ..., 12 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | S | 0, 1, ..., 9 |\n * | 1/100 of second | SS | 00, 01, ..., 99 |\n * | Millisecond | SSS | 000, 001, ..., 999 |\n * | Timezone | Z | -01:00, +00:00, ... +12:00 |\n * | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | X | 512969520 |\n * | Milliseconds timestamp | x | 512969520900 |\n *\n * The characters wrapped in square brackets are escaped.\n *\n * The result may vary by locale.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} [format='YYYY-MM-DDTHH:mm:ss.SSSZ'] - the string of tokens\n * @param {Object} [options] - the object with options\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the formatted date string\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/DD/YYYY'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * var eoLocale = require('date-fns/locale/eo')\n * var result = format(\n * new Date(2014, 6, 2),\n * 'Do [de] MMMM YYYY',\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n */\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n var formatStr = dirtyFormatStr ? String(dirtyFormatStr) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n var options = dirtyOptions || {};\n\n var locale = options.locale;\n var localeFormatters = enLocale.format.formatters;\n var formattingTokensRegExp = enLocale.format.formattingTokensRegExp;\n if (locale && locale.format && locale.format.formatters) {\n localeFormatters = locale.format.formatters;\n\n if (locale.format.formattingTokensRegExp) {\n formattingTokensRegExp = locale.format.formattingTokensRegExp;\n }\n }\n\n var date = parse(dirtyDate);\n\n if (!isValid(date)) {\n return 'Invalid Date';\n }\n\n var formatFn = buildFormatFn(formatStr, localeFormatters, formattingTokensRegExp);\n\n return formatFn(date);\n}\n\nvar formatters = {\n // Month: 1, 2, ..., 12\n 'M': function M(date) {\n return date.getMonth() + 1;\n },\n\n // Month: 01, 02, ..., 12\n 'MM': function MM(date) {\n return addLeadingZeros(date.getMonth() + 1, 2);\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': function Q(date) {\n return Math.ceil((date.getMonth() + 1) / 3);\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': function D(date) {\n return date.getDate();\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': function DD(date) {\n return addLeadingZeros(date.getDate(), 2);\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': function DDD(date) {\n return getDayOfYear(date);\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': function DDDD(date) {\n return addLeadingZeros(getDayOfYear(date), 3);\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': function d(date) {\n return date.getDay();\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': function E(date) {\n return date.getDay() || 7;\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': function W(date) {\n return getISOWeek(date);\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': function WW(date) {\n return addLeadingZeros(getISOWeek(date), 2);\n },\n\n // Year: 00, 01, ..., 99\n 'YY': function YY(date) {\n return addLeadingZeros(date.getFullYear(), 4).substr(2);\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': function YYYY(date) {\n return addLeadingZeros(date.getFullYear(), 4);\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': function GG(date) {\n return String(getISOYear(date)).substr(2);\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': function GGGG(date) {\n return getISOYear(date);\n },\n\n // Hour: 0, 1, ... 23\n 'H': function H(date) {\n return date.getHours();\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': function HH(date) {\n return addLeadingZeros(date.getHours(), 2);\n },\n\n // Hour: 1, 2, ..., 12\n 'h': function h(date) {\n var hours = date.getHours();\n if (hours === 0) {\n return 12;\n } else if (hours > 12) {\n return hours % 12;\n } else {\n return hours;\n }\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': function hh(date) {\n return addLeadingZeros(formatters['h'](date), 2);\n },\n\n // Minute: 0, 1, ..., 59\n 'm': function m(date) {\n return date.getMinutes();\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': function mm(date) {\n return addLeadingZeros(date.getMinutes(), 2);\n },\n\n // Second: 0, 1, ..., 59\n 's': function s(date) {\n return date.getSeconds();\n },\n\n // Second: 00, 01, ..., 59\n 'ss': function ss(date) {\n return addLeadingZeros(date.getSeconds(), 2);\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': function S(date) {\n return Math.floor(date.getMilliseconds() / 100);\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': function SS(date) {\n return addLeadingZeros(Math.floor(date.getMilliseconds() / 10), 2);\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': function SSS(date) {\n return addLeadingZeros(date.getMilliseconds(), 3);\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': function Z(date) {\n return formatTimezone(date.getTimezoneOffset(), ':');\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': function ZZ(date) {\n return formatTimezone(date.getTimezoneOffset());\n },\n\n // Seconds timestamp: 512969520\n 'X': function X(date) {\n return Math.floor(date.getTime() / 1000);\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': function x(date) {\n return date.getTime();\n }\n};\n\nfunction buildFormatFn(formatStr, localeFormatters, formattingTokensRegExp) {\n var array = formatStr.match(formattingTokensRegExp);\n var length = array.length;\n\n var i;\n var formatter;\n for (i = 0; i < length; i++) {\n formatter = localeFormatters[array[i]] || formatters[array[i]];\n if (formatter) {\n array[i] = formatter;\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (date) {\n var output = '';\n for (var i = 0; i < length; i++) {\n if (array[i] instanceof Function) {\n output += array[i](date, formatters);\n } else {\n output += array[i];\n }\n }\n return output;\n };\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction formatTimezone(offset, delimeter) {\n delimeter = delimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2);\n}\n\nfunction addLeadingZeros(number, targetLength) {\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return output;\n}\n\nmodule.exports = format;\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of month\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nfunction getDate(dirtyDate) {\n var date = parse(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}\n\nmodule.exports = getDate;\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of week\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nfunction getDay(dirtyDate) {\n var date = parse(dirtyDate);\n var day = date.getDay();\n return day;\n}\n\nmodule.exports = getDay;\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isLeapYear = __webpack_require__(52);\n\n/**\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of days in a year\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nfunction getDaysInYear(dirtyDate) {\n return isLeapYear(dirtyDate) ? 366 : 365;\n}\n\nmodule.exports = getDaysInYear;\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the hours\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nfunction getHours(dirtyDate) {\n var date = parse(dirtyDate);\n var hours = date.getHours();\n return hours;\n}\n\nmodule.exports = getHours;\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfISOYear = __webpack_require__(10);\nvar addWeeks = __webpack_require__(21);\n\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nfunction getISOWeeksInYear(dirtyDate) {\n var thisYear = startOfISOYear(dirtyDate);\n var nextYear = startOfISOYear(addWeeks(thisYear, 60));\n var diff = nextYear.valueOf() - thisYear.valueOf();\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK);\n}\n\nmodule.exports = getISOWeeksInYear;\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the milliseconds\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nfunction getMilliseconds(dirtyDate) {\n var date = parse(dirtyDate);\n var milliseconds = date.getMilliseconds();\n return milliseconds;\n}\n\nmodule.exports = getMilliseconds;\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the minutes\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nfunction getMinutes(dirtyDate) {\n var date = parse(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}\n\nmodule.exports = getMinutes;\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the month\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nfunction getMonth(dirtyDate) {\n var date = parse(dirtyDate);\n var month = date.getMonth();\n return month;\n}\n\nmodule.exports = getMonth;\n\n/***/ }),\n/* 132 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;\n\n/**\n * @category Range Helpers\n * @summary Get the number of days that overlap in two date ranges\n *\n * @description\n * Get the number of days that overlap in two date ranges\n *\n * @param {Date|String|Number} initialRangeStartDate - the start of the initial range\n * @param {Date|String|Number} initialRangeEndDate - the end of the initial range\n * @param {Date|String|Number} comparedRangeStartDate - the start of the range to compare it with\n * @param {Date|String|Number} comparedRangeEndDate - the end of the range to compare it with\n * @returns {Number} the number of days that overlap in two date ranges\n * @throws {Error} startDate of a date range cannot be after its endDate\n *\n * @example\n * // For overlapping date ranges adds 1 for each started overlapping day:\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping date ranges returns 0:\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 21), new Date(2014, 0, 22)\n * )\n * //=> 0\n */\nfunction getOverlappingDaysInRanges(dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) {\n var initialStartTime = parse(dirtyInitialRangeStartDate).getTime();\n var initialEndTime = parse(dirtyInitialRangeEndDate).getTime();\n var comparedStartTime = parse(dirtyComparedRangeStartDate).getTime();\n var comparedEndTime = parse(dirtyComparedRangeEndDate).getTime();\n\n if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) {\n throw new Error('The start of the range cannot be after the end of the range');\n }\n\n var isOverlapping = initialStartTime < comparedEndTime && comparedStartTime < initialEndTime;\n\n if (!isOverlapping) {\n return 0;\n }\n\n var overlapStartDate = comparedStartTime < initialStartTime ? initialStartTime : comparedStartTime;\n\n var overlapEndDate = comparedEndTime > initialEndTime ? initialEndTime : comparedEndTime;\n\n var differenceInMs = overlapEndDate - overlapStartDate;\n\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY);\n}\n\nmodule.exports = getOverlappingDaysInRanges;\n\n/***/ }),\n/* 133 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the seconds\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nfunction getSeconds(dirtyDate) {\n var date = parse(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}\n\nmodule.exports = getSeconds;\n\n/***/ }),\n/* 134 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the timestamp\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nfunction getTime(dirtyDate) {\n var date = parse(dirtyDate);\n var timestamp = date.getTime();\n return timestamp;\n}\n\nmodule.exports = getTime;\n\n/***/ }),\n/* 135 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the year\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nfunction getYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n return year;\n}\n\nmodule.exports = getYear;\n\n/***/ }),\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter(dirtyDate, dirtyDateToCompare) {\n var date = parse(dirtyDate);\n var dateToCompare = parse(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}\n\nmodule.exports = isAfter;\n\n/***/ }),\n/* 137 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore(dirtyDate, dirtyDateToCompare) {\n var date = parse(dirtyDate);\n var dateToCompare = parse(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}\n\nmodule.exports = isBefore;\n\n/***/ }),\n/* 138 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual(dirtyLeftDate, dirtyRightDate) {\n var dateLeft = parse(dirtyLeftDate);\n var dateRight = parse(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}\n\nmodule.exports = isEqual;\n\n/***/ }),\n/* 139 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nfunction isFirstDayOfMonth(dirtyDate) {\n return parse(dirtyDate).getDate() === 1;\n}\n\nmodule.exports = isFirstDayOfMonth;\n\n/***/ }),\n/* 140 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nfunction isFriday(dirtyDate) {\n return parse(dirtyDate).getDay() === 5;\n}\n\nmodule.exports = isFriday;\n\n/***/ }),\n/* 141 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Is the given date in the future?\n *\n * @description\n * Is the given date in the future?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * var result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\nfunction isFuture(dirtyDate) {\n return parse(dirtyDate).getTime() > new Date().getTime();\n}\n\nmodule.exports = isFuture;\n\n/***/ }),\n/* 142 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar endOfDay = __webpack_require__(26);\nvar endOfMonth = __webpack_require__(48);\n\n/**\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nfunction isLastDayOfMonth(dirtyDate) {\n var date = parse(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}\n\nmodule.exports = isLastDayOfMonth;\n\n/***/ }),\n/* 143 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nfunction isMonday(dirtyDate) {\n return parse(dirtyDate).getDay() === 1;\n}\n\nmodule.exports = isMonday;\n\n/***/ }),\n/* 144 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Is the given date in the past?\n *\n * @description\n * Is the given date in the past?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * var result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\nfunction isPast(dirtyDate) {\n return parse(dirtyDate).getTime() < new Date().getTime();\n}\n\nmodule.exports = isPast;\n\n/***/ }),\n/* 145 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfDay = __webpack_require__(6);\n\n/**\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 18, 0)\n * )\n * //=> true\n */\nfunction isSameDay(dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}\n\nmodule.exports = isSameDay;\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nfunction isSaturday(dirtyDate) {\n return parse(dirtyDate).getDay() === 6;\n}\n\nmodule.exports = isSaturday;\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nfunction isSunday(dirtyDate) {\n return parse(dirtyDate).getDay() === 0;\n}\n\nmodule.exports = isSunday;\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameHour = __webpack_require__(54);\n\n/**\n * @category Hour Helpers\n * @summary Is the given date in the same hour as the current date?\n *\n * @description\n * Is the given date in the same hour as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this hour\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:00:00 in this hour?\n * var result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\nfunction isThisHour(dirtyDate) {\n return isSameHour(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisHour;\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameISOWeek = __webpack_require__(56);\n\n/**\n * @category ISO Week Helpers\n * @summary Is the given date in the same ISO week as the current date?\n *\n * @description\n * Is the given date in the same ISO week as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week\n *\n * @example\n * // If today is 25 September 2014, is 22 September 2014 in this ISO week?\n * var result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\nfunction isThisISOWeek(dirtyDate) {\n return isSameISOWeek(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisISOWeek;\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameISOYear = __webpack_require__(57);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Is the given date in the same ISO week-numbering year as the current date?\n *\n * @description\n * Is the given date in the same ISO week-numbering year as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week-numbering year\n *\n * @example\n * // If today is 25 September 2014,\n * // is 30 December 2013 in this ISO week-numbering year?\n * var result = isThisISOYear(new Date(2013, 11, 30))\n * //=> true\n */\nfunction isThisISOYear(dirtyDate) {\n return isSameISOYear(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisISOYear;\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameMinute = __webpack_require__(58);\n\n/**\n * @category Minute Helpers\n * @summary Is the given date in the same minute as the current date?\n *\n * @description\n * Is the given date in the same minute as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this minute\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:00 in this minute?\n * var result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\nfunction isThisMinute(dirtyDate) {\n return isSameMinute(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisMinute;\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameMonth = __webpack_require__(60);\n\n/**\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this month\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * var result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\nfunction isThisMonth(dirtyDate) {\n return isSameMonth(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisMonth;\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameQuarter = __webpack_require__(61);\n\n/**\n * @category Quarter Helpers\n * @summary Is the given date in the same quarter as the current date?\n *\n * @description\n * Is the given date in the same quarter as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this quarter\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this quarter?\n * var result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\nfunction isThisQuarter(dirtyDate) {\n return isSameQuarter(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisQuarter;\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameSecond = __webpack_require__(63);\n\n/**\n * @category Second Helpers\n * @summary Is the given date in the same second as the current date?\n *\n * @description\n * Is the given date in the same second as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this second\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:15.000 in this second?\n * var result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\nfunction isThisSecond(dirtyDate) {\n return isSameSecond(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisSecond;\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameWeek = __webpack_require__(28);\n\n/**\n * @category Week Helpers\n * @summary Is the given date in the same week as the current date?\n *\n * @description\n * Is the given date in the same week as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the date is in this week\n *\n * @example\n * // If today is 25 September 2014, is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21))\n * //=> true\n *\n * @example\n * // If today is 25 September 2014 and week starts with Monday\n * // is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21), {weekStartsOn: 1})\n * //=> false\n */\nfunction isThisWeek(dirtyDate, dirtyOptions) {\n return isSameWeek(new Date(), dirtyDate, dirtyOptions);\n}\n\nmodule.exports = isThisWeek;\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar isSameYear = __webpack_require__(65);\n\n/**\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * var result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\nfunction isThisYear(dirtyDate) {\n return isSameYear(new Date(), dirtyDate);\n}\n\nmodule.exports = isThisYear;\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nfunction isThursday(dirtyDate) {\n return parse(dirtyDate).getDay() === 4;\n}\n\nmodule.exports = isThursday;\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfDay = __webpack_require__(6);\n\n/**\n * @category Day Helpers\n * @summary Is the given date today?\n *\n * @description\n * Is the given date today?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is today\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nfunction isToday(dirtyDate) {\n return startOfDay(dirtyDate).getTime() === startOfDay(new Date()).getTime();\n}\n\nmodule.exports = isToday;\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfDay = __webpack_require__(6);\n\n/**\n * @category Day Helpers\n * @summary Is the given date tomorrow?\n *\n * @description\n * Is the given date tomorrow?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is tomorrow\n *\n * @example\n * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?\n * var result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\nfunction isTomorrow(dirtyDate) {\n var tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return startOfDay(dirtyDate).getTime() === startOfDay(tomorrow).getTime();\n}\n\nmodule.exports = isTomorrow;\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nfunction isTuesday(dirtyDate) {\n return parse(dirtyDate).getDay() === 2;\n}\n\nmodule.exports = isTuesday;\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nfunction isWednesday(dirtyDate) {\n return parse(dirtyDate).getDay() === 3;\n}\n\nmodule.exports = isWednesday;\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nfunction isWeekend(dirtyDate) {\n var date = parse(dirtyDate);\n var day = date.getDay();\n return day === 0 || day === 6;\n}\n\nmodule.exports = isWeekend;\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Range Helpers\n * @summary Is the given date within the range?\n *\n * @description\n * Is the given date within the range?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Date|String|Number} startDate - the start of range\n * @param {Date|String|Number} endDate - the end of range\n * @returns {Boolean} the date is within the range\n * @throws {Error} startDate cannot be after endDate\n *\n * @example\n * // For the date within the range:\n * isWithinRange(\n * new Date(2014, 0, 3), new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n * //=> true\n *\n * @example\n * // For the date outside of the range:\n * isWithinRange(\n * new Date(2014, 0, 10), new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n * //=> false\n */\nfunction isWithinRange(dirtyDate, dirtyStartDate, dirtyEndDate) {\n var time = parse(dirtyDate).getTime();\n var startTime = parse(dirtyStartDate).getTime();\n var endTime = parse(dirtyEndDate).getTime();\n\n if (startTime > endTime) {\n throw new Error('The start of the range cannot be after the end of the range');\n }\n\n return time >= startTime && time <= endTime;\n}\n\nmodule.exports = isWithinRange;\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfDay = __webpack_require__(6);\n\n/**\n * @category Day Helpers\n * @summary Is the given date yesterday?\n *\n * @description\n * Is the given date yesterday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * var result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\nfunction isYesterday(dirtyDate) {\n var yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n return startOfDay(dirtyDate).getTime() === startOfDay(yesterday).getTime();\n}\n\nmodule.exports = isYesterday;\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar lastDayOfWeek = __webpack_require__(66);\n\n/**\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction lastDayOfISOWeek(dirtyDate) {\n return lastDayOfWeek(dirtyDate, { weekStartsOn: 1 });\n}\n\nmodule.exports = lastDayOfISOWeek;\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getISOYear = __webpack_require__(4);\nvar startOfISOWeek = __webpack_require__(5);\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nfunction lastDayOfISOYear(dirtyDate) {\n var year = getISOYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year + 1, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n date.setDate(date.getDate() - 1);\n return date;\n}\n\nmodule.exports = lastDayOfISOYear;\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nfunction lastDayOfMonth(dirtyDate) {\n var date = parse(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = lastDayOfMonth;\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a quarter\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nfunction lastDayOfQuarter(dirtyDate) {\n var date = parse(dirtyDate);\n var currentMonth = date.getMonth();\n var month = currentMonth - currentMonth % 3 + 3;\n date.setMonth(month, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = lastDayOfQuarter;\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a year\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nfunction lastDayOfYear(dirtyDate) {\n var date = parse(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = lastDayOfYear;\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {...(Date|String|Number)} dates - the dates to compare\n * @returns {Date} the latest of the dates\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max(\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * )\n * //=> Sun Jul 02 1995 00:00:00\n */\nfunction max() {\n var dirtyDates = Array.prototype.slice.call(arguments);\n var dates = dirtyDates.map(function (dirtyDate) {\n return parse(dirtyDate);\n });\n var latestTimestamp = Math.max.apply(null, dates);\n return new Date(latestTimestamp);\n}\n\nmodule.exports = max;\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * @param {...(Date|String|Number)} dates - the dates to compare\n * @returns {Date} the earliest of the dates\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min(\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * )\n * //=> Wed Feb 11 1987 00:00:00\n */\nfunction min() {\n var dirtyDates = Array.prototype.slice.call(arguments);\n var dates = dirtyDates.map(function (dirtyDate) {\n return parse(dirtyDate);\n });\n var earliestTimestamp = Math.min.apply(null, dates);\n return new Date(earliestTimestamp);\n}\n\nmodule.exports = min;\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month setted\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nfunction setDate(dirtyDate, dirtyDayOfMonth) {\n var date = parse(dirtyDate);\n var dayOfMonth = Number(dirtyDayOfMonth);\n date.setDate(dayOfMonth);\n return date;\n}\n\nmodule.exports = setDate;\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar addDays = __webpack_require__(8);\n\n/**\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the new date with the day of the week setted\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If week starts with Monday, set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0, {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction setDay(dirtyDate, dirtyDay, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? Number(dirtyOptions.weekStartsOn) || 0 : 0;\n var date = parse(dirtyDate);\n var day = Number(dirtyDay);\n var currentDay = date.getDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n return addDays(date, diff);\n}\n\nmodule.exports = setDay;\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year setted\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nfunction setDayOfYear(dirtyDate, dirtyDayOfYear) {\n var date = parse(dirtyDate);\n var dayOfYear = Number(dirtyDayOfYear);\n date.setMonth(0);\n date.setDate(dayOfYear);\n return date;\n}\n\nmodule.exports = setDayOfYear;\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours setted\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nfunction setHours(dirtyDate, dirtyHours) {\n var date = parse(dirtyDate);\n var hours = Number(dirtyHours);\n date.setHours(hours);\n return date;\n}\n\nmodule.exports = setHours;\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar addDays = __webpack_require__(8);\nvar getISODay = __webpack_require__(53);\n\n/**\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week setted\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction setISODay(dirtyDate, dirtyDay) {\n var date = parse(dirtyDate);\n var day = Number(dirtyDay);\n var currentDay = getISODay(date);\n var diff = day - currentDay;\n return addDays(date, diff);\n}\n\nmodule.exports = setISODay;\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar getISOWeek = __webpack_require__(27);\n\n/**\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week setted\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nfunction setISOWeek(dirtyDate, dirtyISOWeek) {\n var date = parse(dirtyDate);\n var isoWeek = Number(dirtyISOWeek);\n var diff = getISOWeek(date) - isoWeek;\n date.setDate(date.getDate() - diff * 7);\n return date;\n}\n\nmodule.exports = setISOWeek;\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds setted\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nfunction setMilliseconds(dirtyDate, dirtyMilliseconds) {\n var date = parse(dirtyDate);\n var milliseconds = Number(dirtyMilliseconds);\n date.setMilliseconds(milliseconds);\n return date;\n}\n\nmodule.exports = setMilliseconds;\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes setted\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nfunction setMinutes(dirtyDate, dirtyMinutes) {\n var date = parse(dirtyDate);\n var minutes = Number(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}\n\nmodule.exports = setMinutes;\n\n/***/ }),\n/* 180 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\nvar setMonth = __webpack_require__(67);\n\n/**\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter setted\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nfunction setQuarter(dirtyDate, dirtyQuarter) {\n var date = parse(dirtyDate);\n var quarter = Number(dirtyQuarter);\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1;\n var diff = quarter - oldQuarter;\n return setMonth(date, date.getMonth() + diff * 3);\n}\n\nmodule.exports = setQuarter;\n\n/***/ }),\n/* 181 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds setted\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nfunction setSeconds(dirtyDate, dirtySeconds) {\n var date = parse(dirtyDate);\n var seconds = Number(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}\n\nmodule.exports = setSeconds;\n\n/***/ }),\n/* 182 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year setted\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nfunction setYear(dirtyDate, dirtyYear) {\n var date = parse(dirtyDate);\n var year = Number(dirtyYear);\n date.setFullYear(year);\n return date;\n}\n\nmodule.exports = setYear;\n\n/***/ }),\n/* 183 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar parse = __webpack_require__(0);\n\n/**\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfMonth(dirtyDate) {\n var date = parse(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfMonth;\n\n/***/ }),\n/* 184 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar startOfDay = __webpack_require__(6);\n\n/**\n * @category Day Helpers\n * @summary Return the start of today.\n *\n * @description\n * Return the start of today.\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\nfunction startOfToday() {\n return startOfDay(new Date());\n}\n\nmodule.exports = startOfToday;\n\n/***/ }),\n/* 185 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n *\n * @description\n * Return the start of tomorrow.\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nfunction startOfTomorrow() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n\n var date = new Date(0);\n date.setFullYear(year, month, day + 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfTomorrow;\n\n/***/ }),\n/* 186 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * @category Day Helpers\n * @summary Return the start of yesterday.\n *\n * @description\n * Return the start of yesterday.\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfYesterday()\n * //=> Sun Oct 5 2014 00:00:00\n */\nfunction startOfYesterday() {\n var now = new Date();\n var year = now.getFullYear();\n var month = now.getMonth();\n var day = now.getDate();\n\n var date = new Date(0);\n date.setFullYear(year, month, day - 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}\n\nmodule.exports = startOfYesterday;\n\n/***/ }),\n/* 187 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addDays = __webpack_require__(8);\n\n/**\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @returns {Date} the new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nfunction subDays(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}\n\nmodule.exports = subDays;\n\n/***/ }),\n/* 188 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addHours = __webpack_require__(33);\n\n/**\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted\n * @returns {Date} the new date with the hours subtracted\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nfunction subHours(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addHours(dirtyDate, -amount);\n}\n\nmodule.exports = subHours;\n\n/***/ }),\n/* 189 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addMilliseconds = __webpack_require__(9);\n\n/**\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}\n\nmodule.exports = subMilliseconds;\n\n/***/ }),\n/* 190 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addMinutes = __webpack_require__(36);\n\n/**\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @returns {Date} the new date with the mintues subtracted\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nfunction subMinutes(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMinutes(dirtyDate, -amount);\n}\n\nmodule.exports = subMinutes;\n\n/***/ }),\n/* 191 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addMonths = __webpack_require__(15);\n\n/**\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @returns {Date} the new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction subMonths(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}\n\nmodule.exports = subMonths;\n\n/***/ }),\n/* 192 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addQuarters = __webpack_require__(37);\n\n/**\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted\n * @returns {Date} the new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nfunction subQuarters(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addQuarters(dirtyDate, -amount);\n}\n\nmodule.exports = subQuarters;\n\n/***/ }),\n/* 193 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addSeconds = __webpack_require__(38);\n\n/**\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted\n * @returns {Date} the new date with the seconds subtracted\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nfunction subSeconds(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addSeconds(dirtyDate, -amount);\n}\n\nmodule.exports = subSeconds;\n\n/***/ }),\n/* 194 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addWeeks = __webpack_require__(21);\n\n/**\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @returns {Date} the new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nfunction subWeeks(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}\n\nmodule.exports = subWeeks;\n\n/***/ }),\n/* 195 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar addYears = __webpack_require__(39);\n\n/**\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @returns {Date} the new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nfunction subYears(dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount);\n return addYears(dirtyDate, -amount);\n}\n\nmodule.exports = subYears;\n\n/***/ }),\n/* 196 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dhFeatureComponents = __webpack_require__(7);\n\nvar _preact = __webpack_require__(1);\n\nvar _Skew = __webpack_require__(69);\n\nvar _Skew2 = _interopRequireDefault(_Skew);\n\nvar _index = __webpack_require__(17);\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// @jsx h\n\nfunction Header(props) {\n var mediaBaseUrl = props.mediaBaseUrl,\n viewport = props.viewport;\n var _props$data = props.data,\n authors = _props$data.authors,\n intro = _props$data.intro,\n leadMedia = _props$data.leadMedia,\n title = _props$data.title;\n\n\n return (0, _preact.h)(\n 'header',\n { className: _index2.default.article__header },\n (0, _preact.h)(\n 'div',\n { className: _index2.default.article__leadMediaWrapper },\n (0, _preact.h)(_Skew2.default, { className: _index2.default.article__headerTopSkew, position: 'bottom' }),\n (0, _preact.h)(_dhFeatureComponents.ResponsiveVideo, {\n className: _index2.default.article__leadMedia,\n loop: true,\n playing: true,\n playsInline: true,\n preload: 'auto',\n muted: true,\n resolution720p: {\n poster: '' + mediaBaseUrl + leadMedia.resolution720p.poster,\n sources: leadMedia.resolution720p.sources.map(function (source) {\n return {\n type: source.type,\n src: '' + mediaBaseUrl + source.src\n };\n })\n },\n resolution1080p: {\n poster: '' + mediaBaseUrl + leadMedia.resolution1080p.poster,\n sources: leadMedia.resolution1080p.sources.map(function (source) {\n return {\n type: source.type,\n src: '' + mediaBaseUrl + source.src\n };\n })\n },\n viewport: viewport\n }),\n (0, _preact.h)(_Skew2.default, { className: _index2.default.article__headerBottomSkew, position: 'top' })\n ),\n (0, _preact.h)(\n 'div',\n { className: _index2.default.article__headerText },\n (0, _preact.h)('h1', {\n className: _index2.default.article__title,\n dangerouslySetInnerHTML: { __html: title }\n }),\n intro && (0, _preact.h)('p', {\n className: _index2.default.article__intro,\n dangerouslySetInnerHTML: { __html: intro }\n }),\n (0, _preact.h)(_dhFeatureComponents.Byline, { className: _index2.default.article__authors, authors: authors })\n )\n );\n}\n\nexports.default = Header;\n\n/***/ }),\n/* 197 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'byline': 'dhfc-1_0_0-beta_20-byline',\n 'byline__name': 'dhfc-1_0_0-beta_20-byline__name'\n};\n\nvar Byline = function (_PureComponent) {\n _inherits(Byline, _PureComponent);\n\n function Byline() {\n _classCallCheck(this, Byline);\n\n return _possibleConstructorReturn(this, (Byline.__proto__ || Object.getPrototypeOf(Byline)).apply(this, arguments));\n }\n\n _createClass(Byline, [{\n key: 'render',\n value: function render() {\n var authors = this.props.authors;\n\n var len = authors.length;\n var className = '' + style.byline + (this.props.className ? ' ' + this.props.className : '');\n\n if (len === 0) return null;\n\n return (0, _preact.h)('div', { className: className }, 'Av', ' ', authors.map(function (author, idx) {\n if (len === 1) {\n return (0, _preact.h)('span', { key: String(idx) }, (0, _preact.h)('span', {\n className: style.byline__name,\n dangerouslySetInnerHTML: { __html: author.name }\n }));\n }\n\n if (idx === len - 1) {\n return (0, _preact.h)('span', { key: String(idx) }, '&', ' ', (0, _preact.h)('span', {\n className: style.byline__name,\n dangerouslySetInnerHTML: { __html: author.name }\n }));\n }\n\n if (idx === len - 2) {\n return (0, _preact.h)('span', { key: String(idx) }, (0, _preact.h)('span', {\n className: style.byline__name,\n dangerouslySetInnerHTML: { __html: author.name }\n }), ' ');\n }\n\n return (0, _preact.h)('span', { key: String(idx) }, (0, _preact.h)('span', {\n className: style.byline__name,\n dangerouslySetInnerHTML: { __html: author.name }\n }), ',', ' ');\n }));\n }\n }]);\n\n return Byline;\n}(_preactPureComponent2.default);\n\nexports.default = Byline;\n\n/***/ }),\n/* 198 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _Message = __webpack_require__(199);\n\nvar _Date = __webpack_require__(204);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\nvar ChatLog = function (_PureComponent) {\n _inherits(ChatLog, _PureComponent);\n\n function ChatLog() {\n _classCallCheck(this, ChatLog);\n\n return _possibleConstructorReturn(this, (ChatLog.__proto__ || Object.getPrototypeOf(ChatLog)).apply(this, arguments));\n }\n\n _createClass(ChatLog, [{\n key: 'render',\n value: function render() {\n var messages = this.props.messages;\n\n var className = '' + styles.chatLog + (this.props.className ? ' ' + this.props.className : '');\n\n return (0, _preact.h)('div', { className: className }, messages.map(function (message, idx) {\n return [(0, _preact.h)(_Date.Date, { date: message.date, index: idx, key: 'date_' + idx }), (0, _preact.h)(_Message.Message, {\n key: idx,\n isLastInGroup: isLastInGroup(messages, idx),\n message: message\n })];\n }));\n }\n }]);\n\n return ChatLog;\n}(_preactPureComponent2.default);\n\nfunction isLastInGroup(messages, index) {\n return messages.length - 1 === index;\n}\n\nexports.default = ChatLog;\n\n/***/ }),\n/* 199 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Message = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _ImageMessage = __webpack_require__(200);\n\nvar _TextMessage = __webpack_require__(202);\n\nvar _index = __webpack_require__(203);\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar Message = exports.Message = function (_Component) {\n _inherits(Message, _Component);\n\n function Message() {\n _classCallCheck(this, Message);\n\n return _possibleConstructorReturn(this, (Message.__proto__ || Object.getPrototypeOf(Message)).apply(this, arguments));\n }\n\n _createClass(Message, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n isLastInGroup = _props.isLastInGroup,\n message = _props.message;\n var content = message.content;\n var type = content.type;\n\n switch (type) {\n case 'image':\n return (0, _preact.h)(_ImageMessage.ImageMessage, { message: message, isLastInGroup: isLastInGroup });\n case 'images':\n return (0, _preact.h)(_index.ImagesMessage, { message: message, isLastInGroup: isLastInGroup });\n case 'text':\n return (0, _preact.h)(_TextMessage.TextMessage, { message: message, isLastInGroup: isLastInGroup });\n default:\n throw new Error('Unknown message type ' + type);\n }\n }\n }]);\n\n return Message;\n}(_preact.Component);\n\n/***/ }),\n/* 200 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ImageMessage = undefined;\n\nvar _preact = __webpack_require__(1);\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _index = __webpack_require__(29);\n\nvar _imageUrl = __webpack_require__(30);\n\n// @jsx h\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\nvar ImageMessage = exports.ImageMessage = function ImageMessage(props) {\n var message = props.message,\n isLastInGroup = props.isLastInGroup;\n var from = message.from,\n content = message.content;\n var name = from.name,\n side = from.side,\n display = from.display;\n\n var showAvatar = ['avatar', 'both'].indexOf(display) !== -1;\n var showName = ['name', 'both'].indexOf(display) !== -1;\n var imageSrc = (0, _imageUrl.getImageUrl)(content.image, { width: 320, ratio: '1:1' });\n\n return (0, _preact.h)('div', { className: (0, _dhUtils.bem)(styles.message, side, { showAvatar: showAvatar, isLastInGroup: isLastInGroup }) }, (0, _preact.h)('span', { className: 'nrk-sr' }, name, ':'), showAvatar && (0, _preact.h)(_index.Avatar, { person: from }), (0, _preact.h)('div', { className: (0, _dhUtils.bem)(styles.message__content, side, { showName: showName }) }, (0, _preact.h)('span', { 'aria-hidden': true, className: (0, _dhUtils.bem)(styles.message__name, side) }, showName && name), (0, _preact.h)('span', { className: (0, _dhUtils.bem)(styles.message__image, side) }, (0, _preact.h)('img', {\n src: imageSrc,\n alt: content.image.alt || '',\n nopin: 'nopin',\n 'data-pin-nopin': 'true'\n }))));\n};\n\n/***/ }),\n/* 201 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AvatarImage = AvatarImage;\n\nvar _preact = __webpack_require__(1);\n\nvar _imageUrl = __webpack_require__(30);\n\n// @jsx h\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\nfunction AvatarImage(props) {\n var image = props.image,\n alt = props.alt,\n title = props.title;\n\n return (0, _preact.h)('img', {\n className: styles.avatarImage,\n title: title,\n src: (0, _imageUrl.getImageUrl)(image),\n alt: alt,\n nopin: 'no-pin',\n 'data-pin-nopin': 'true'\n });\n}\n\n/***/ }),\n/* 202 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TextMessage = undefined;\n\nvar _preact = __webpack_require__(1);\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _Avatar = __webpack_require__(29);\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n}; // @jsx h\n\nvar TextMessage = exports.TextMessage = function TextMessage(props) {\n var message = props.message,\n isLastInGroup = props.isLastInGroup;\n var from = message.from,\n content = message.content;\n var name = from.name,\n side = from.side,\n display = from.display;\n\n var showAvatar = ['avatar', 'both'].indexOf(display) !== -1;\n var showName = ['name', 'both'].indexOf(display) !== -1;\n\n return (0, _preact.h)('div', { className: (0, _dhUtils.bem)(styles.message, side, { showAvatar: showAvatar, isLastInGroup: isLastInGroup }) }, (0, _preact.h)('span', { className: 'nrk-sr' }, name, ':'), showAvatar && (0, _preact.h)(_Avatar.Avatar, { person: from }), (0, _preact.h)('div', { className: (0, _dhUtils.bem)(styles.message__content, side, { showName: showName }) }, (0, _preact.h)('span', { 'aria-hidden': true, className: (0, _dhUtils.bem)(styles.message__name, side) }, showName && name), (0, _preact.h)('span', {\n className: (0, _dhUtils.bem)(styles.message__text, side),\n dangerouslySetInnerHTML: { __html: content.message }\n })));\n};\n\n/***/ }),\n/* 203 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ImagesMessage = undefined;\n\nvar _preact = __webpack_require__(1);\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _index = __webpack_require__(29);\n\nvar _imageUrl = __webpack_require__(30);\n\n// @jsx h\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\nvar ImagesMessage = exports.ImagesMessage = function ImagesMessage(props) {\n var message = props.message,\n isLastInGroup = props.isLastInGroup;\n var from = message.from,\n content = message.content;\n var name = from.name,\n side = from.side,\n display = from.display;\n\n var showAvatar = ['avatar', 'both'].indexOf(display) !== -1;\n var showName = ['name', 'both'].indexOf(display) !== -1;\n\n return (0, _preact.h)('div', { className: (0, _dhUtils.bem)(styles.message, side, { showAvatar: showAvatar, isLastInGroup: isLastInGroup }) }, (0, _preact.h)('span', { className: 'nrk-sr' }, name, ':'), showAvatar && (0, _preact.h)(_index.Avatar, { person: from }), (0, _preact.h)('div', { className: (0, _dhUtils.bem)(styles.message__content, side, { showName: showName }) }, (0, _preact.h)('span', { 'aria-hidden': true, className: (0, _dhUtils.bem)(styles.message__name, side) }, showName && name), (0, _preact.h)('ul', { className: (0, _dhUtils.bem)(styles.message__images, side) }, content.images.map(function (image, idx) {\n var imageSrc = (0, _imageUrl.getImageUrl)(image, { width: 160, ratio: '1:1' });\n return (0, _preact.h)('li', { key: idx }, (0, _preact.h)('img', {\n src: imageSrc,\n alt: image.alt || '',\n nopin: 'nopin',\n 'data-pin-nopin': 'true'\n }));\n }))));\n};\n\n/***/ }),\n/* 204 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Date = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\nvar Date = exports.Date = function (_Component) {\n _inherits(Date, _Component);\n\n function Date() {\n _classCallCheck(this, Date);\n\n return _possibleConstructorReturn(this, (Date.__proto__ || Object.getPrototypeOf(Date)).apply(this, arguments));\n }\n\n _createClass(Date, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n date = _props.date,\n index = _props.index;\n\n if (!date) return null;\n\n return (0, _preact.h)('h4', {\n className: (0, _dhUtils.bem)(styles.date, { isFirst: index === 0 }),\n dangerouslySetInnerHTML: { __html: date }\n });\n }\n }]);\n\n return Date;\n}(_preact.Component);\n\n/***/ }),\n/* 205 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'figure': 'dhfc-1_0_0-beta_20-figure',\n 'figure__credit': 'dhfc-1_0_0-beta_20-figure__credit'\n};\n\nvar Figure = function (_PureComponent) {\n _inherits(Figure, _PureComponent);\n\n function Figure() {\n _classCallCheck(this, Figure);\n\n return _possibleConstructorReturn(this, (Figure.__proto__ || Object.getPrototypeOf(Figure)).apply(this, arguments));\n }\n\n _createClass(Figure, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n caption = _props.caption,\n credit = _props.credit,\n media = _props.media;\n\n var className = '' + style.figure + (this.props.className ? ' ' + this.props.className : '');\n\n return (0, _preact.h)('figure', { className: className }, media, caption && (0, _preact.h)('figcaption', null, caption.map(function (text, idx) {\n return (0, _preact.h)('p', { dangerouslySetInnerHTML: { __html: text }, key: String(idx) });\n }), credit && (0, _preact.h)('div', { className: style.figure__credit }, credit)));\n }\n }]);\n\n return Figure;\n}(_preactPureComponent2.default);\n\nexports.default = Figure;\n\n/***/ }),\n/* 206 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\n/* eslint-disable jsx-a11y/heading-has-content */\n\nvar style = {\n 'heading': 'dhfc-1_0_0-beta_20-heading'\n};\n\nvar Heading = function (_PureComponent) {\n _inherits(Heading, _PureComponent);\n\n function Heading() {\n _classCallCheck(this, Heading);\n\n return _possibleConstructorReturn(this, (Heading.__proto__ || Object.getPrototypeOf(Heading)).apply(this, arguments));\n }\n\n _createClass(Heading, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n html = _props.html,\n level = _props.level;\n\n var className = '' + style.heading + (this.props.className ? ' ' + this.props.className : '');\n\n var htmlProps = {\n className: className\n };\n\n if (html) {\n htmlProps.dangerouslySetInnerHTML = { __html: html };\n } else {\n htmlProps.children = children;\n }\n\n switch (level) {\n case 2:\n return (0, _preact.h)('h2', htmlProps);\n\n case 3:\n return (0, _preact.h)('h3', htmlProps);\n\n case 4:\n return (0, _preact.h)('h4', htmlProps);\n\n case 5:\n return (0, _preact.h)('h5', htmlProps);\n\n case 6:\n return (0, _preact.h)('h6', htmlProps);\n\n default:\n return (0, _preact.h)('h1', htmlProps);\n }\n }\n }]);\n\n return Heading;\n}(_preactPureComponent2.default);\n\nexports.default = Heading;\n\n/***/ }),\n/* 207 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _preact = __webpack_require__(1);\n\nvar style = {\n 'icon': 'dhfc-1_0_0-beta_20-icon'\n}; // @jsx h\n\nfunction Icon(props) {\n var className = '' + style.icon + (props.className ? ' ' + props.className : '');\n\n return (0, _preact.h)('svg', {\n className: className,\n 'aria-hidden': props['aria-hidden'],\n dangerouslySetInnerHTML: {\n __html: ''\n }\n });\n}\n\nexports.default = Icon;\n\n/***/ }),\n/* 208 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'list': 'dhfc-1_0_0-beta_20-list'\n};\n\nvar List = function (_PureComponent) {\n _inherits(List, _PureComponent);\n\n function List() {\n _classCallCheck(this, List);\n\n return _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).apply(this, arguments));\n }\n\n _createClass(List, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n type = _props.type;\n\n var className = '' + style.list + (this.props.className ? ' ' + this.props.className : '');\n\n if (type === 'numbered') {\n return (0, _preact.h)('ol', { className: className }, children);\n }\n\n return (0, _preact.h)('ul', { className: className }, children);\n }\n }]);\n\n return List;\n}(_preactPureComponent2.default);\n\nexports.default = List;\n\n/***/ }),\n/* 209 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar ListItem = function (_PureComponent) {\n _inherits(ListItem, _PureComponent);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n html = _props.html;\n\n if (html) {\n return (0, _preact.h)('li', { dangerouslySetInnerHTML: { __html: html } });\n }\n\n return (0, _preact.h)('li', null, children);\n }\n }]);\n\n return ListItem;\n}(_preactPureComponent2.default);\n\nexports.default = ListItem;\n\n/***/ }),\n/* 210 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'paragraph': 'dhfc-1_0_0-beta_20-paragraph'\n};\n\nvar Paragraph = function (_PureComponent) {\n _inherits(Paragraph, _PureComponent);\n\n function Paragraph() {\n _classCallCheck(this, Paragraph);\n\n return _possibleConstructorReturn(this, (Paragraph.__proto__ || Object.getPrototypeOf(Paragraph)).apply(this, arguments));\n }\n\n _createClass(Paragraph, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n html = _props.html;\n\n var className = '' + style.paragraph + (this.props.className ? ' ' + this.props.className : '');\n\n if (html) {\n return (0, _preact.h)('p', { className: className, dangerouslySetInnerHTML: { __html: html } });\n }\n\n return (0, _preact.h)('p', { className: className }, children);\n }\n }]);\n\n return Paragraph;\n}(_preactPureComponent2.default);\n\nexports.default = Paragraph;\n\n/***/ }),\n/* 211 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\n/* eslint-disable jsx-a11y/aria-role */\n\nvar style = {\n 'pullQuote': 'dhfc-1_0_0-beta_20-pullQuote',\n 'pullQuote__content': 'dhfc-1_0_0-beta_20-pullQuote__content',\n 'pullQuote__footer': 'dhfc-1_0_0-beta_20-pullQuote__footer'\n};\n\nvar PullQuote = function (_PureComponent) {\n _inherits(PullQuote, _PureComponent);\n\n function PullQuote() {\n _classCallCheck(this, PullQuote);\n\n return _possibleConstructorReturn(this, (PullQuote.__proto__ || Object.getPrototypeOf(PullQuote)).apply(this, arguments));\n }\n\n _createClass(PullQuote, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n cite = _props.cite,\n html = _props.html;\n\n var className = '' + style.pullQuote + (this.props.className ? ' ' + this.props.className : '');\n\n return (0, _preact.h)('blockquote', { className: className }, (0, _preact.h)('div', { className: style.pullQuote__content }, (0, _preact.h)('p', { dangerouslySetInnerHTML: { __html: html } })), cite && (0, _preact.h)('footer', { className: style.pullQuote__footer }, (0, _preact.h)('cite', { role: 'text' }, (0, _preact.h)('svg', { viewBox: '0 0 20 30', 'aria-hidden': 'true' }, (0, _preact.h)('path', { d: 'M 5.5,5.5 L5.5,24.5 L14.5,24.5' }), (0, _preact.h)('circle', { cx: '5.5', cy: '5.5', r: '3.5' })), (0, _preact.h)('span', {\n dangerouslySetInnerHTML: {\n __html: \"\\u2013 \" + (cite || '')\n }\n }))));\n }\n }]);\n\n return PullQuote;\n}(_preactPureComponent2.default);\n\nexports.default = PullQuote;\n\n/***/ }),\n/* 212 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _Video = __webpack_require__(31);\n\nvar _Video2 = _interopRequireDefault(_Video);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;target[i] = obj[i];\n }return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'responsiveVideo': 'dhfc-1_0_0-beta_20-responsiveVideo',\n 'responsiveVideo__720p': 'dhfc-1_0_0-beta_20-responsiveVideo__720p',\n 'responsiveVideo--1080p': 'dhfc-1_0_0-beta_20-responsiveVideo--1080p',\n 'responsiveVideo__1080p': 'dhfc-1_0_0-beta_20-responsiveVideo__1080p'\n};\n\nvar THRESHOLD_1080P = 960;\n\nvar ResponsiveVideo = function (_PureComponent) {\n _inherits(ResponsiveVideo, _PureComponent);\n\n function ResponsiveVideo() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ResponsiveVideo);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ResponsiveVideo.__proto__ || Object.getPrototypeOf(ResponsiveVideo)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n time: 0\n }, _this.handleTimeupdate = function (time) {\n var onTimeupdate = _this.props.onTimeupdate;\n\n _this.setState({ time: time });\n\n if (onTimeupdate) {\n onTimeupdate(time);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ResponsiveVideo, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var prevIs1080p = prevProps.viewport.width >= THRESHOLD_1080P;\n var is1080p = this.props.viewport.width >= THRESHOLD_1080P;\n\n if (is1080p !== prevIs1080p) {\n this.seek(this.state.time);\n }\n }\n }, {\n key: 'seek',\n value: function seek(time) {\n var is1080p = this.props.viewport.width >= THRESHOLD_1080P;\n\n if (is1080p) {\n this.resolution1080p.seek(time);\n } else {\n this.resolution720p.seek(time);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n playing = _props.playing,\n resolution720p = _props.resolution720p,\n resolution1080p = _props.resolution1080p,\n viewport = _props.viewport,\n restProps = _objectWithoutProperties(_props, ['playing', 'resolution720p', 'resolution1080p', 'viewport']);\n\n if (!resolution720p) {\n throw new Error('Missing `resolution720p` property');\n }\n\n if (!resolution1080p) {\n throw new Error('Missing `resolution1080p` property');\n }\n\n var isValidViewport = viewport.width > -1 && viewport.height > -1;\n var is1080p = viewport.width >= THRESHOLD_1080P;\n var className = '' + (0, _dhUtils.bem)(style.responsiveVideo, is1080p && '1080p') + (this.props.className ? ' ' + this.props.className : '');\n\n return (0, _preact.h)('div', { className: className }, (0, _preact.h)(_Video2.default, _extends({}, resolution720p, restProps, {\n className: style.responsiveVideo__720p,\n playing: isValidViewport && !is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution720p) {\n return _this2.resolution720p = resolution720p;\n }\n })), (0, _preact.h)(_Video2.default, _extends({}, resolution1080p, restProps, {\n className: style.responsiveVideo__1080p,\n playing: isValidViewport && is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution1080p) {\n return _this2.resolution1080p = resolution1080p;\n }\n })));\n }\n }]);\n\n return ResponsiveVideo;\n}(_preactPureComponent2.default);\n\nexports.default = ResponsiveVideo;\n\n/***/ }),\n/* 213 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _serumImagecropUtils = __webpack_require__(12);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n/** @jsx h */\n\nvar SerumImage = function (_PureComponent) {\n _inherits(SerumImage, _PureComponent);\n\n function SerumImage() {\n _classCallCheck(this, SerumImage);\n\n return _possibleConstructorReturn(this, (SerumImage.__proto__ || Object.getPrototypeOf(SerumImage)).apply(this, arguments));\n }\n\n _createClass(SerumImage, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n alt = _props.alt,\n id = _props.id,\n quality = _props.quality,\n ratio = _props.ratio,\n width = _props.width;\n\n var src = (0, _serumImagecropUtils.createImageUrl)({\n id: id,\n width: width,\n quality: quality,\n ratio: ratio\n });\n\n return (0, _preact.h)('img', { className: className, src: src, alt: alt });\n }\n }]);\n\n return SerumImage;\n}(_preactPureComponent2.default);\n\nexports.default = SerumImage;\n\n/***/ }),\n/* 214 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _serumImagecropUtils = __webpack_require__(12);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _helpers = __webpack_require__(68);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n/** @jsx h */\n\nvar SerumResponsivePicture = function (_PureComponent) {\n _inherits(SerumResponsivePicture, _PureComponent);\n\n function SerumResponsivePicture() {\n _classCallCheck(this, SerumResponsivePicture);\n\n return _possibleConstructorReturn(this, (SerumResponsivePicture.__proto__ || Object.getPrototypeOf(SerumResponsivePicture)).apply(this, arguments));\n }\n\n _createClass(SerumResponsivePicture, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n alt = _props.alt,\n id = _props.id,\n quality = _props.quality,\n ratio = _props.ratio;\n\n var defaultUrl = (0, _serumImagecropUtils.createImageUrl)({\n id: id,\n width: 1600,\n quality: quality,\n ratio: ratio || '16:9'\n });\n\n var horizontalSourceSet = (0, _helpers.createResponsiveSrcSet)({\n id: id,\n quality: quality,\n ratio: ratio || '16:9'\n });\n\n return (0, _preact.h)('picture', { className: className }, (0, _preact.h)('source', { srcSet: horizontalSourceSet }), (0, _preact.h)('img', { src: defaultUrl, alt: alt }));\n }\n }]);\n\n return SerumResponsivePicture;\n}(_preactPureComponent2.default);\n\nexports.default = SerumResponsivePicture;\n\n/***/ }),\n/* 215 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _serumImagecropUtils = __webpack_require__(12);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _helpers = __webpack_require__(68);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n/** @jsx h */\n\nvar SerumSmartPicture = function (_PureComponent) {\n _inherits(SerumSmartPicture, _PureComponent);\n\n function SerumSmartPicture() {\n _classCallCheck(this, SerumSmartPicture);\n\n return _possibleConstructorReturn(this, (SerumSmartPicture.__proto__ || Object.getPrototypeOf(SerumSmartPicture)).apply(this, arguments));\n }\n\n _createClass(SerumSmartPicture, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n alt = _props.alt,\n horizontal = _props.horizontal,\n vertical = _props.vertical;\n\n var defaultUrl = (0, _serumImagecropUtils.createImageUrl)(_extends({}, horizontal, {\n width: 1600,\n ratio: '16:9'\n }));\n\n var horizontalSourceSet = (0, _helpers.createResponsiveSrcSet)(_extends({}, horizontal, {\n ratio: '16:9'\n }));\n\n var verticalSourceSet = (0, _helpers.createResponsiveSrcSet)(_extends({}, vertical, {\n ratio: '3:4'\n }));\n\n return (0, _preact.h)('picture', { className: className }, (0, _preact.h)('source', { media: '(min-aspect-ratio: 4/5)', srcSet: horizontalSourceSet }), (0, _preact.h)('source', { media: '(max-aspect-ratio: 4/5)', srcSet: verticalSourceSet }), (0, _preact.h)('img', { src: defaultUrl, alt: alt }));\n }\n }]);\n\n return SerumSmartPicture;\n}(_preactPureComponent2.default);\n\nexports.default = SerumSmartPicture;\n\n/***/ }),\n/* 216 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'slideshow': 'dhfc-1_0_0-beta_20-slideshow',\n 'slideshow__slide': 'dhfc-1_0_0-beta_20-slideshow__slide',\n 'slideshow__slide--stacked': 'dhfc-1_0_0-beta_20-slideshow__slide--stacked',\n 'slideshow__slide--visible': 'dhfc-1_0_0-beta_20-slideshow__slide--visible',\n 'slideshow__slide--active': 'dhfc-1_0_0-beta_20-slideshow__slide--active'\n};\n\nvar Slide = function (_PureComponent) {\n _inherits(Slide, _PureComponent);\n\n function Slide() {\n _classCallCheck(this, Slide);\n\n return _possibleConstructorReturn(this, (Slide.__proto__ || Object.getPrototypeOf(Slide)).apply(this, arguments));\n }\n\n _createClass(Slide, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n active = _props.active,\n children = _props.children,\n stacked = _props.stacked,\n visible = _props.visible;\n\n var className = '' + (0, _dhUtils.bem)(style.slideshow__slide, stacked && 'stacked', visible && 'visible', active && 'active') + (this.props.className ? ' ' + this.props.className : '');\n\n return (0, _preact.h)('div', { className: className }, children);\n }\n }]);\n\n return Slide;\n}(_preactPureComponent2.default);\n\nexports.default = Slide;\n\n/***/ }),\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'slideshow': 'dhfc-1_0_0-beta_20-slideshow',\n 'slideshow__slide': 'dhfc-1_0_0-beta_20-slideshow__slide',\n 'slideshow__slide--stacked': 'dhfc-1_0_0-beta_20-slideshow__slide--stacked',\n 'slideshow__slide--visible': 'dhfc-1_0_0-beta_20-slideshow__slide--visible',\n 'slideshow__slide--active': 'dhfc-1_0_0-beta_20-slideshow__slide--active'\n};\n\nvar Slideshow = function (_PureComponent) {\n _inherits(Slideshow, _PureComponent);\n\n function Slideshow() {\n _classCallCheck(this, Slideshow);\n\n return _possibleConstructorReturn(this, (Slideshow.__proto__ || Object.getPrototypeOf(Slideshow)).apply(this, arguments));\n }\n\n _createClass(Slideshow, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n viewport = _props.viewport;\n\n var activeIndex = this.props.activeIndex || 0;\n var className = '' + style.slideshow + (this.props.className ? ' ' + this.props.className : '');\n\n var inlineStyle = {};\n\n if (viewport && viewport.height > -1) {\n inlineStyle.height = viewport.height + 'px';\n }\n\n return (0, _preact.h)('div', {\n className: className,\n style: inlineStyle,\n 'data-active-index': String(activeIndex)\n }, children.map(function (child, idx) {\n if (idx <= activeIndex) {\n child.attributes.stacked = true;\n }\n\n if (idx >= activeIndex - 1 && idx <= activeIndex + 1) {\n child.attributes.visible = true;\n }\n\n child.attributes.active = idx === activeIndex;\n\n return child;\n }));\n }\n }]);\n\n return Slideshow;\n}(_preactPureComponent2.default);\n\nexports.default = Slideshow;\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _Video = __webpack_require__(31);\n\nvar _Video2 = _interopRequireDefault(_Video);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;target[i] = obj[i];\n }return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'smartVideo': 'dhfc-1_0_0-beta_20-smartVideo',\n 'smartVideo__720p': 'dhfc-1_0_0-beta_20-smartVideo__720p',\n 'smartVideo--horizontal': 'dhfc-1_0_0-beta_20-smartVideo--horizontal',\n 'smartVideo--1080p': 'dhfc-1_0_0-beta_20-smartVideo--1080p',\n 'smartVideo__960p': 'dhfc-1_0_0-beta_20-smartVideo__960p',\n 'smartVideo__1080p': 'dhfc-1_0_0-beta_20-smartVideo__1080p'\n};\n\nvar THRESHOLD_1080P = 960;\nvar THRESHOLD_HORIZONTAL = 2 / 3;\n\nvar SmartVideo = function (_PureComponent) {\n _inherits(SmartVideo, _PureComponent);\n\n function SmartVideo() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, SmartVideo);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = SmartVideo.__proto__ || Object.getPrototypeOf(SmartVideo)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n time: 0\n }, _this.handleTimeupdate = function (time) {\n var onTimeupdate = _this.props.onTimeupdate;\n\n _this.setState({ time: time });\n\n if (onTimeupdate) {\n onTimeupdate(time);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(SmartVideo, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var prevIsHorizontal = prevProps.viewport.width / prevProps.viewport.height >= THRESHOLD_HORIZONTAL;\n var isHorizontal = this.props.viewport.width / this.props.viewport.height >= THRESHOLD_HORIZONTAL;\n\n var prevIs1080p = prevProps.viewport.width >= THRESHOLD_1080P;\n var is1080p = this.props.viewport.width >= THRESHOLD_1080P;\n\n if (prevIsHorizontal !== isHorizontal || is1080p !== prevIs1080p) {\n this.seek(this.state.time);\n }\n }\n }, {\n key: 'seek',\n value: function seek(time) {\n var viewport = this.props.viewport;\n\n var isHorizontal = viewport.width / viewport.height >= THRESHOLD_HORIZONTAL;\n var is1080p = viewport.width >= THRESHOLD_1080P;\n\n if (isHorizontal) {\n if (is1080p) {\n this.resolution1080p.seek(time);\n } else {\n this.resolution720p.seek(time);\n }\n } else {\n this.resolution960p.seek(time);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n playing = _props.playing,\n resolution720p = _props.resolution720p,\n resolution960p = _props.resolution960p,\n resolution1080p = _props.resolution1080p,\n viewport = _props.viewport,\n restProps = _objectWithoutProperties(_props, ['playing', 'resolution720p', 'resolution960p', 'resolution1080p', 'viewport']);\n\n if (!resolution720p) {\n throw new Error('Missing `resolution720p` property');\n }\n\n if (!resolution960p) {\n throw new Error('Missing `resolution960p` property');\n }\n\n if (!resolution1080p) {\n throw new Error('Missing `resolution1080p` property');\n }\n\n var isValidViewport = viewport.width > -1 && viewport.height > -1;\n var isHorizontal = viewport.width / viewport.height >= THRESHOLD_HORIZONTAL;\n var is1080p = isHorizontal && viewport.width >= THRESHOLD_1080P;\n var className = '' + (0, _dhUtils.bem)(style.smartVideo, {\n '1080p': is1080p,\n horizontal: isHorizontal\n }) + (this.props.className ? ' ' + this.props.className : '');\n\n return (0, _preact.h)('div', { className: className }, (0, _preact.h)(_Video2.default, _extends({}, resolution720p, restProps, {\n className: style.smartVideo__720p,\n playing: isValidViewport && isHorizontal && !is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution720p) {\n return _this2.resolution720p = resolution720p;\n }\n })), (0, _preact.h)(_Video2.default, _extends({}, resolution960p, restProps, {\n className: style.smartVideo__960p,\n playing: isValidViewport && !isHorizontal && !is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution960p) {\n return _this2.resolution960p = resolution960p;\n }\n })), (0, _preact.h)(_Video2.default, _extends({}, resolution1080p, restProps, {\n className: style.smartVideo__1080p,\n playing: isValidViewport && isHorizontal && is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution1080p) {\n return _this2.resolution1080p = resolution1080p;\n }\n })));\n }\n }]);\n\n return SmartVideo;\n}(_preactPureComponent2.default);\n\nexports.default = SmartVideo;\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _warn = __webpack_require__(220);\n\nvar _warn2 = _interopRequireDefault(_warn);\n\nvar _Scrubber = __webpack_require__(221);\n\nvar _Scrubber2 = _interopRequireDefault(_Scrubber);\n\nvar _TogglePlayButton = __webpack_require__(222);\n\nvar _TogglePlayButton2 = _interopRequireDefault(_TogglePlayButton);\n\nvar _ToggleMuteButton = __webpack_require__(223);\n\nvar _ToggleMuteButton2 = _interopRequireDefault(_ToggleMuteButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'videoPlayer': 'dhfc-1_0_0-beta_20-videoPlayer',\n 'videoPlayer__container': 'dhfc-1_0_0-beta_20-videoPlayer__container',\n 'videoPlayer__caption': 'dhfc-1_0_0-beta_20-videoPlayer__caption',\n 'videoPlayer__controls': 'dhfc-1_0_0-beta_20-videoPlayer__controls',\n 'videoPlayer__togglePlayButton': 'dhfc-1_0_0-beta_20-videoPlayer__togglePlayButton',\n 'videoPlayer__toggleMuteButton': 'dhfc-1_0_0-beta_20-videoPlayer__toggleMuteButton'\n};\n\nvar VideoPlayer = function (_PureComponent) {\n _inherits(VideoPlayer, _PureComponent);\n\n function VideoPlayer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, VideoPlayer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = VideoPlayer.__proto__ || Object.getPrototypeOf(VideoPlayer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n caption: null,\n duration: 0,\n isPlaying: false,\n time: 0\n }, _this.handleUserTogglePlay = function () {\n _this.props.onUserTogglePlay();\n }, _this.handleUserToggleMute = function () {\n _this.props.onUserToggleMute();\n }, _this.handleScrubberPositionUpdate = function (position) {\n if (_this.video) {\n _this.video.seek(_this.state.duration * position);\n } else {\n (0, _warn2.default)('[@nrk/dh-feature-components] No video reference');\n }\n }, _this.handleCaptionCueEnter = function (caption) {\n _this.setState({ caption: caption });\n }, _this.handleCaptionCueExit = function () {\n _this.setState({ caption: null });\n }, _this.handleDurationChange = function (duration) {\n _this.setState({ duration: duration });\n }, _this.handlePlay = function () {\n var onPlay = _this.props.onPlay;\n\n _this.setState({ isPlaying: true });\n\n if (onPlay) {\n onPlay();\n }\n }, _this.handlePause = function () {\n var onPause = _this.props.onPause;\n\n _this.setState({ isPlaying: false });\n\n if (onPause) {\n onPause();\n }\n }, _this.handleTimeupdate = function (time) {\n _this.setState({ time: time });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(VideoPlayer, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n muted = _props.muted,\n playing = _props.playing,\n video = _props.video;\n var _state = this.state,\n caption = _state.caption,\n duration = _state.duration,\n isPlaying = _state.isPlaying,\n time = _state.time;\n\n if (!video.attributes) {\n throw new Error('The `video` property must be a virtual node');\n }\n\n var className = '' + style.videoPlayer + (this.props.className ? ' ' + this.props.className : '');\n\n video.attributes.muted = muted;\n video.attributes.playing = playing;\n video.attributes.playsInline = true;\n video.attributes.ref = function (video) {\n return _this2.video = video;\n };\n video.attributes.onPlay = this.handlePlay;\n video.attributes.onPause = this.handlePause;\n video.attributes.onCaptionCueEnter = this.handleCaptionCueEnter;\n video.attributes.onCaptionCueExit = this.handleCaptionCueExit;\n video.attributes.onDurationChange = this.handleDurationChange;\n video.attributes.onTimeupdate = this.handleTimeupdate;\n\n return (0, _preact.h)('div', { className: className }, (0, _preact.h)('div', { className: style.videoPlayer__container }, video, caption && (0, _preact.h)('div', { className: style.videoPlayer__caption, 'aria-hidden': 'true' }, caption.text.split('\\n').map(function (text, idx) {\n return (0, _preact.h)('div', { key: String(idx) }, (0, _preact.h)('span', { dangerouslySetInnerHTML: { __html: text } }));\n })), (0, _preact.h)('div', { className: style.videoPlayer__controls }, (0, _preact.h)(_TogglePlayButton2.default, {\n className: style.videoPlayer__togglePlayButton,\n playing: isPlaying,\n onClick: this.handleUserTogglePlay\n }), (0, _preact.h)(_Scrubber2.default, {\n time: time,\n duration: duration,\n onPositionUpdate: this.handleScrubberPositionUpdate\n }), (0, _preact.h)(_ToggleMuteButton2.default, {\n className: style.videoPlayer__toggleMuteButton,\n muted: muted,\n onClick: this.handleUserToggleMute\n }))));\n }\n }]);\n\n return VideoPlayer;\n}(_preactPureComponent2.default);\n\nexports.default = VideoPlayer;\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = warn;\nfunction warn() {\n var _console;\n\n typeof window !== 'undefined' && console && console.warn && (_console = console).warn.apply(_console, arguments);\n}\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar style = {\n 'scrubber': 'dhfc-1_0_0-beta_20-scrubber',\n 'scrubber__bgBar': 'dhfc-1_0_0-beta_20-scrubber__bgBar',\n 'scrubber__bufferedBar': 'dhfc-1_0_0-beta_20-scrubber__bufferedBar',\n 'scrubber__playedBar': 'dhfc-1_0_0-beta_20-scrubber__playedBar'\n};\n\nvar Scrubber = function (_PureComponent) {\n _inherits(Scrubber, _PureComponent);\n\n function Scrubber() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Scrubber);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Scrubber.__proto__ || Object.getPrototypeOf(Scrubber)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n left: 0,\n width: 0,\n isScrubbing: false,\n position: null\n }, _this.handleKeyDown = function (evt) {\n var _this$props = _this.props,\n duration = _this$props.duration,\n time = _this$props.time,\n onPositionUpdate = _this$props.onPositionUpdate;\n\n if (onPositionUpdate) {\n var nextTime = time;\n\n switch (evt.key) {\n case 'ArrowLeft':\n nextTime -= 1;\n break;\n case 'ArrowRight':\n nextTime += 1;\n break;\n }\n\n onPositionUpdate(Math.max(Math.min(nextTime / duration, 1), 0));\n }\n }, _this.handleMouseDown = function (evt) {\n evt.preventDefault();\n _this.focus();\n _this.start(evt.pageX);\n _this.elm.addEventListener('mousemove', _this.handleMouseMove);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseMove = function (evt) {\n _this.move(evt.pageX);\n }, _this.handleMouseUp = function (evt) {\n _this.focus();\n _this.end();\n _this.elm.removeEventListener('mousemove', _this.handleMouseMove);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleResize = function () {\n var rect = _this.bgElm.getBoundingClientRect();\n\n _this.setState({\n left: Math.floor(rect.left),\n width: rect.width\n });\n }, _this.handleTouchStart = function (evt) {\n if (evt.touches.length === 1) {\n evt.preventDefault();\n _this.focus();\n _this.start(evt.touches[0].clientX);\n _this.elm.addEventListener('touchmove', _this.handleTouchMove);\n window.addEventListener('touchend', _this.handleTouchEnd);\n }\n }, _this.handleTouchMove = function (evt) {\n if (evt.touches.length === 1) {\n _this.move(evt.touches[0].clientX);\n }\n }, _this.handleTouchEnd = function (evt) {\n _this.focus();\n _this.end();\n _this.elm.removeEventListener('touchmove', _this.handleTouchMove);\n window.removeEventListener('touchend', _this.handleTouchEnd);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Scrubber, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.onPositionUpdate) {\n this.elm.addEventListener('keydown', this.handleKeyDown);\n this.elm.addEventListener('mousedown', this.handleMouseDown);\n this.elm.addEventListener('touchstart', this.handleTouchStart);\n window.addEventListener('resize', this.handleResize);\n this.handleResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.props.onPositionUpdate) {\n this.elm.removeEventListener('keydown', this.handleKeyDown);\n this.elm.removeEventListener('mousedown', this.handleMouseDown);\n this.elm.removeEventListener('touchstart', this.handleTouchStart);\n window.removeEventListener('resize', this.handleResize);\n }\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.handleElm.focus();\n }\n }, {\n key: 'start',\n value: function start(clientX) {\n if (this.positionTimeout) {\n clearTimeout(this.positionTimeout);\n }\n\n this.setState({\n position: (clientX - this.state.left) / this.state.width,\n isScrubbing: true\n });\n }\n }, {\n key: 'move',\n value: function move(clientX) {\n this.setState({\n position: Math.max(Math.min((clientX - this.state.left) / this.state.width, 1), 0)\n });\n }\n }, {\n key: 'end',\n value: function end() {\n var _this2 = this;\n\n if (this.props.onPositionUpdate && this.state.position !== null) {\n this.props.onPositionUpdate(this.state.position);\n }\n\n this.setState({\n isScrubbing: false\n });\n\n this.positionTimeout = setTimeout(function () {\n _this2.setState({\n position: null\n });\n }, 350);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props = this.props,\n duration = _props.duration,\n time = _props.time;\n\n var className = '' + style.scrubber + (this.props.className ? ' ' + this.props.className : '');\n var position = this.state.position !== null ? this.state.position : time / duration;\n\n return (0, _preact.h)('div', { className: className, ref: function ref(elm) {\n return _this3.elm = elm;\n } }, (0, _preact.h)('div', {\n className: style.scrubber__bgBar,\n ref: function ref(bgElm) {\n return _this3.bgElm = bgElm;\n }\n }), (0, _preact.h)('div', { className: style.scrubber__bufferedBar }), (0, _preact.h)('div', {\n className: style.scrubber__playedBar,\n style: { width: position * 100 + '%' }\n }), (0, _preact.h)('button', {\n ref: function ref(handleElm) {\n return _this3.handleElm = handleElm;\n },\n role: 'slider',\n 'aria-valuemin': '0',\n 'aria-valuemax': duration * 1000,\n 'aria-valuenow': time * 1000,\n style: { left: position * 100 + '%' }\n }));\n }\n }]);\n\n return Scrubber;\n}(_preactPureComponent2.default);\n\nexports.default = Scrubber;\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = TogglePlayButton;\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\n// @jsx h\n\nvar style = {\n 'togglePlayButton': 'dhfc-1_0_0-beta_20-togglePlayButton',\n 'togglePlayButton__pauseIcon': 'dhfc-1_0_0-beta_20-togglePlayButton__pauseIcon',\n 'togglePlayButton--playing': 'dhfc-1_0_0-beta_20-togglePlayButton--playing',\n 'togglePlayButton__playIcon': 'dhfc-1_0_0-beta_20-togglePlayButton__playIcon'\n};\n\nfunction TogglePlayButton(props) {\n var playing = props.playing;\n\n var className = '' + (0, _dhUtils.bem)(style.togglePlayButton, playing && 'playing') + (props.className ? ' ' + props.className : '');\n\n return (0, _preact.h)('button', { className: className, onClick: props.onClick }, (0, _preact.h)('span', { className: 'nrk-sr' }, playing ? 'Sett video på pause' : 'Spill av video'), (0, _preact.h)('svg', {\n className: style.togglePlayButton__pauseIcon,\n 'aria-hidden': 'true',\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }), (0, _preact.h)('svg', {\n className: style.togglePlayButton__playIcon,\n 'aria-hidden': 'true',\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }));\n}\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ToggleMuteButton;\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\n// @jsx h\n\nvar style = {\n 'toggleMuteButton': 'dhfc-1_0_0-beta_20-toggleMuteButton',\n 'toggleMuteButton__volumeIcon': 'dhfc-1_0_0-beta_20-toggleMuteButton__volumeIcon',\n 'toggleMuteButton--muted': 'dhfc-1_0_0-beta_20-toggleMuteButton--muted',\n 'toggleMuteButton__mutedIcon': 'dhfc-1_0_0-beta_20-toggleMuteButton__mutedIcon'\n};\n\nfunction ToggleMuteButton(props) {\n var muted = props.muted;\n\n var className = '' + (0, _dhUtils.bem)(style.toggleMuteButton, muted && 'muted') + (props.className ? ' ' + props.className : '');\n\n return (0, _preact.h)('button', { className: className, onClick: props.onClick }, (0, _preact.h)('span', { className: 'nrk-sr' }, muted ? 'Slå på lyd' : 'Slå av lyd'), (0, _preact.h)('svg', {\n className: style.toggleMuteButton__mutedIcon,\n 'aria-hidden': 'true',\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }), (0, _preact.h)('svg', {\n className: style.toggleMuteButton__volumeIcon,\n 'aria-hidden': 'true',\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }));\n}\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(2);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : _typeof(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// @jsx h\n\nvar ViewportIntersections = function (_PureComponent) {\n _inherits(ViewportIntersections, _PureComponent);\n\n function ViewportIntersections(props) {\n _classCallCheck(this, ViewportIntersections);\n\n var _this = _possibleConstructorReturn(this, (ViewportIntersections.__proto__ || Object.getPrototypeOf(ViewportIntersections)).call(this));\n\n _this.state = {\n intersections: props.children.map(function (child, idx) {\n return {\n isIntersecting: false,\n ratio: null\n };\n })\n };\n return _this;\n }\n\n _createClass(ViewportIntersections, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var _props = this.props,\n onChange = _props.onChange,\n onEnter = _props.onEnter,\n onLeave = _props.onLeave,\n rootMargin = _props.rootMargin,\n threshold = _props.threshold;\n\n var childNodes = (0, _dhUtils.toArray)(this.elm.childNodes);\n\n this.intersectionObserver = new IntersectionObserver(function (entries) {\n var intersections = _this2.state.intersections.slice(0);\n\n entries.forEach(function (entry) {\n var idx = childNodes.indexOf(entry.target);\n var prevIntersection = intersections[idx];\n\n intersections.splice(idx, 1, {\n isIntersecting: entry.isIntersecting,\n ratio: entry.intersectionRatio\n });\n\n if (onEnter && !prevIntersection.isIntersecting && entry.isIntersecting) {\n onEnter(entry, idx);\n }\n\n if (onLeave && prevIntersection.isIntersecting && !entry.isIntersecting) {\n onLeave(entry, idx);\n }\n });\n\n _this2.setState({ intersections: intersections });\n\n if (onChange) {\n onChange(intersections);\n }\n }, {\n rootMargin: rootMargin || '0px 0px 0px 0px',\n threshold: threshold || 1.0\n });\n\n childNodes.forEach(function (childElm) {\n return _this2.intersectionObserver.observe(childElm);\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.intersectionObserver.disconnect();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props2 = this.props,\n className = _props2.className,\n children = _props2.children,\n style = _props2.style;\n\n return (0, _preact.h)('div', { ref: function ref(elm) {\n return _this3.elm = elm;\n }, className: className, style: style }, children);\n }\n }]);\n\n return ViewportIntersections;\n}(_preactPureComponent2.default);\n\nexports.default = ViewportIntersections;\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"skew\":\"dh-kult-hnio-skew\",\"skew--top\":\"dh-kult-hnio-skew--top\",\"skew--bottom\":\"dh-kult-hnio-skew--bottom\"};\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(18);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _index = __webpack_require__(17);\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Section = __webpack_require__(227);\n\nvar _Section2 = _interopRequireDefault(_Section);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @jsx h\n\n/* eslint-disable compat/compat */\n\nvar Content = function (_PureComponent) {\n _inherits(Content, _PureComponent);\n\n function Content(props) {\n _classCallCheck(this, Content);\n\n var _this = _possibleConstructorReturn(this, (Content.__proto__ || Object.getPrototypeOf(Content)).call(this, props));\n\n _this.handleRegisterSectionElement = function (sectionElm, sectionIndex) {\n _this.sectionElms[sectionIndex] = sectionElm;\n };\n\n _this.handleRegisterTriggerElement = function (triggerElm, sectionIndex, index) {\n if (_this.triggerElms[sectionIndex]) {\n _this.triggerElms[sectionIndex][index] = triggerElm;\n }\n };\n\n _this.sectionElms = props.sections.map(function (section) {\n return null;\n });\n _this.triggerElms = props.sections.map(function (section) {\n switch (section.type) {\n case 'section':\n return section.value.content ? section.value.content.map(function (item) {\n return null;\n }) : [];\n\n default:\n return null;\n }\n });\n _this.state = {\n sectionIntersections: props.sections.map(function (section) {\n return {\n isIntersecting: false,\n intersectionRatio: 0\n };\n }),\n triggerIntersections: props.sections.map(function (section) {\n switch (section.type) {\n case 'section':\n return section.value.content ? section.value.content.map(function (item) {\n return {\n intersectionRatio: -1,\n isIntersecting: false\n };\n }) : [];\n\n default:\n return null;\n }\n })\n };\n return _this;\n }\n\n _createClass(Content, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n this.intersectionObserver = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n var sectionIndex = -1;\n var index = -1;\n\n // Find indexes\n _this2.triggerElms.forEach(function (triggerElms, idx) {\n if (triggerElms) {\n var triggerIndex = triggerElms.indexOf(entry.target);\n\n if (triggerIndex > -1) {\n sectionIndex = idx;\n index = triggerIndex;\n }\n }\n });\n\n // Update triggerIntersections\n if (index > -1) {\n var triggerIntersections = _this2.state.triggerIntersections.slice(0);\n\n if (triggerIntersections[sectionIndex]) {\n var intersections = triggerIntersections[sectionIndex].slice(0);\n\n intersections[index] = {\n isIntersecting: entry.isIntersecting,\n intersectionRatio: entry.intersectionRatio\n };\n\n triggerIntersections[sectionIndex] = intersections;\n }\n\n _this2.setState({ triggerIntersections: triggerIntersections });\n\n return;\n }\n\n sectionIndex = _this2.sectionElms.indexOf(entry.target);\n\n // Update sectionIntersections\n if (sectionIndex > -1) {\n var sectionIntersections = _this2.state.sectionIntersections.slice(0);\n\n sectionIntersections[sectionIndex] = {\n isIntersecting: entry.isIntersecting,\n intersectionRatio: entry.intersectionRatio\n };\n\n _this2.setState({ sectionIntersections: sectionIntersections });\n }\n });\n }, {\n rootMargin: '0px 0px 0px 0px',\n threshold: [0, 0.5]\n });\n\n // Observe intersection of section elements\n this.sectionElms.forEach(function (sectionElm) {\n if (sectionElm) {\n _this2.intersectionObserver.observe(sectionElm);\n }\n });\n\n // Observe intersections of trigger elements\n this.triggerElms.forEach(function (triggerElms) {\n if (triggerElms) {\n triggerElms.forEach(function (triggerElm) {\n if (triggerElm) {\n _this2.intersectionObserver.observe(triggerElm);\n }\n });\n }\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props = this.props,\n mediaBaseUrl = _props.mediaBaseUrl,\n muted = _props.muted,\n onAnalyticsEvent = _props.onAnalyticsEvent,\n onUserToggleMute = _props.onUserToggleMute,\n sections = _props.sections,\n viewport = _props.viewport;\n var _state = this.state,\n sectionIntersections = _state.sectionIntersections,\n triggerIntersections = _state.triggerIntersections;\n\n\n return (0, _preact.h)(\n 'div',\n { className: _index2.default.article__content },\n sections.map(function (section, idx) {\n switch (section.type) {\n case 'section':\n return (0, _preact.h)(_Section2.default, _extends({}, section, sectionIntersections[idx], {\n key: String(idx),\n index: idx,\n intersections: triggerIntersections[idx],\n mediaBaseUrl: mediaBaseUrl,\n muted: muted,\n onAnalyticsEvent: onAnalyticsEvent,\n onUserToggleMute: onUserToggleMute,\n onRegisterSectionElement: _this3.handleRegisterSectionElement,\n onRegisterTriggerElement: _this3.handleRegisterTriggerElement,\n viewport: viewport\n }));\n\n default:\n return null;\n }\n })\n );\n }\n }]);\n\n return Content;\n}(_preactPureComponent2.default);\n\nexports.default = Content;\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dhFeatureComponents = __webpack_require__(7);\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(18);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _VisualStory = __webpack_require__(228);\n\nvar _VisualStory2 = _interopRequireDefault(_VisualStory);\n\nvar _VideoPlayer = __webpack_require__(231);\n\nvar _VideoPlayer2 = _interopRequireDefault(_VideoPlayer);\n\nvar _index = __webpack_require__(17);\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @jsx h\n\nvar Section = function (_PureComponent) {\n _inherits(Section, _PureComponent);\n\n function Section(props) {\n _classCallCheck(this, Section);\n\n var _this = _possibleConstructorReturn(this, (Section.__proto__ || Object.getPrototypeOf(Section)).call(this, props));\n\n _this.handleIntersectionEnter = function (entry, index) {\n var onAnalyticsEvent = _this.props.onAnalyticsEvent;\n\n\n onAnalyticsEvent({\n action: 'section/SHOW_ITEM/' + _this.props.index + '/' + index\n });\n };\n\n _this.state = {\n seen: false\n };\n return _this;\n }\n\n _createClass(Section, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.props.onRegisterSectionElement(this.elm, this.props.index);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var _this2 = this;\n\n var _props = this.props,\n isIntersecting = _props.isIntersecting,\n onAnalyticsEvent = _props.onAnalyticsEvent;\n var seen = this.state.seen;\n\n\n if (!seen && isIntersecting && !prevProps.isIntersecting) {\n setTimeout(function () {\n _this2.setState({ seen: true });\n }, 0);\n\n onAnalyticsEvent({ action: 'section/SHOW/' + this.props.index });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props2 = this.props,\n index = _props2.index,\n intersections = _props2.intersections,\n isIntersecting = _props2.isIntersecting,\n mediaBaseUrl = _props2.mediaBaseUrl,\n muted = _props2.muted,\n onAnalyticsEvent = _props2.onAnalyticsEvent,\n onRegisterTriggerElement = _props2.onRegisterTriggerElement,\n onUserToggleMute = _props2.onUserToggleMute,\n viewport = _props2.viewport;\n var _props$value = this.props.value,\n content = _props$value.content,\n id = _props$value.id,\n title = _props$value.title;\n\n var visible = isIntersecting;\n\n return (0, _preact.h)(\n 'div',\n {\n ref: function ref(elm) {\n return _this3.elm = elm;\n },\n className: (0, _dhUtils.bem)(_index2.default.section, {\n visible: visible,\n dark: this.props.value.color === 'dark'\n }),\n id: id\n },\n title && (0, _preact.h)(\n 'h2',\n { className: _index2.default.section__title },\n title\n ),\n content && (0, _preact.h)(\n _dhFeatureComponents.ViewportIntersections,\n {\n onEnter: this.handleIntersectionEnter,\n className: _index2.default.section__content,\n threshold: [0]\n },\n content.map(function (item, idx) {\n switch (item.type) {\n case 'figure':\n return (0, _preact.h)(_dhFeatureComponents.Figure, {\n media: (0, _preact.h)(_dhFeatureComponents.SerumResponsivePicture, { id: item.value.media.id }),\n caption: item.value.caption.map(function (item) {\n return item.value;\n }),\n key: String(idx)\n });\n case 'pullQuote':\n return (0, _preact.h)(_dhFeatureComponents.PullQuote, {\n className: _index2.default.article__pullQuote,\n key: String(idx),\n html: item.value.text,\n cite: item.value.cite\n });\n case 'video':\n return (0, _preact.h)(_VideoPlayer2.default, _extends({}, intersections[idx], {\n key: String(idx),\n index: idx,\n sectionIndex: index,\n className: _index2.default.article__videoPlayer,\n muted: muted,\n onAnalyticsEvent: onAnalyticsEvent,\n onUserToggleMute: onUserToggleMute,\n onUserTogglePlay: function onUserTogglePlay() {},\n onRegisterTriggerElement: onRegisterTriggerElement,\n video: (0, _preact.h)(_dhFeatureComponents.SmartVideo, {\n playsInline: true,\n textTracks: item.value.textTracks.map(function (textTrack) {\n return {\n language: textTrack.language || 'Norsk',\n captions: textTrack.captions ? textTrack.captions.map(function (caption) {\n return {\n in: caption.in ? Number(caption.in) : 0,\n out: caption.out ? Number(caption.out) : 0,\n text: String(caption.text).replace(/
/g, '\\n')\n };\n }) : []\n };\n }),\n resolution720p: {\n poster: '' + mediaBaseUrl + item.value.resolution720p.poster,\n sources: item.value.resolution720p.sources.map(function (source) {\n return {\n type: source.type,\n src: '' + mediaBaseUrl + source.src\n };\n })\n },\n resolution960p: {\n poster: '' + mediaBaseUrl + item.value.resolution960p.poster,\n sources: item.value.resolution960p.sources.map(function (source) {\n return {\n type: source.type,\n src: '' + mediaBaseUrl + source.src\n };\n })\n },\n resolution1080p: {\n poster: '' + mediaBaseUrl + item.value.resolution1080p.poster,\n sources: item.value.resolution1080p.sources.map(function (source) {\n return {\n type: source.type,\n src: '' + mediaBaseUrl + source.src\n };\n })\n },\n viewport: viewport\n })\n }));\n case 'visualStory':\n return (0, _preact.h)(_VisualStory2.default, _extends({}, item.value, intersections[idx], {\n mediaBaseUrl: mediaBaseUrl,\n muted: muted,\n onAnalyticsEvent: onAnalyticsEvent,\n onUserToggleMute: onUserToggleMute,\n onRegisterTriggerElement: onRegisterTriggerElement,\n index: idx,\n sectionIndex: index,\n viewport: viewport,\n key: String(idx)\n }));\n case 'text':\n return (0, _preact.h)(_dhFeatureComponents.Paragraph, {\n className: _index2.default.article__paragraph,\n key: String(idx),\n html: item.value\n });\n default:\n return (0, _preact.h)(\n 'div',\n { key: String(idx) },\n item.type\n );\n }\n })\n )\n );\n }\n }]);\n\n return Section;\n}(_preactPureComponent2.default);\n\nexports.default = Section;\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dhFeatureComponents = __webpack_require__(7);\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(18);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nvar _Skew = __webpack_require__(69);\n\nvar _Skew2 = _interopRequireDefault(_Skew);\n\nvar _index = __webpack_require__(32);\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MediaSlide = __webpack_require__(229);\n\nvar _MediaSlide2 = _interopRequireDefault(_MediaSlide);\n\nvar _DefaultCard = __webpack_require__(230);\n\nvar _DefaultCard2 = _interopRequireDefault(_DefaultCard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @jsx h\n\n// Import card types\n\n\nvar VisualStory = function (_PureComponent) {\n _inherits(VisualStory, _PureComponent);\n\n function VisualStory(props) {\n _classCallCheck(this, VisualStory);\n\n var _this = _possibleConstructorReturn(this, (VisualStory.__proto__ || Object.getPrototypeOf(VisualStory)).call(this, props));\n\n _this.handleResize = function () {\n var scrollTop = (0, _dhUtils.getScrollTop)();\n var rect = _this.elm.getBoundingClientRect();\n\n _this.setState({\n rect: {\n height: rect.height,\n top: rect.top + scrollTop,\n bottom: rect.bottom + scrollTop\n }\n });\n };\n\n _this.handleChange = function (intersections) {\n _this.setState({\n intersectionRatio: intersections[_this.state.activeIndex].ratio\n });\n };\n\n _this.handleEnter = function (entry, idx) {\n _this.setState({ activeIndex: idx });\n };\n\n _this.state = {\n intersectionRatio: 0,\n rect: null,\n activeIndex: props.slides.length ? 0 : -1,\n visible: false\n };\n return _this;\n }\n\n _createClass(VisualStory, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.handleResize();\n\n this.props.onRegisterTriggerElement(this.elm, this.props.sectionIndex, this.props.index);\n\n window.addEventListener('resize', this.handleResize);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var isIntersecting = this.props.isIntersecting;\n\n\n if (isIntersecting !== prevProps.isIntersecting) {\n if (isIntersecting && !prevProps.isIntersecting) {\n this.startVisibilityListener();\n } else {\n this.stopVisibilityListener();\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.handleResize);\n }\n }, {\n key: 'startVisibilityListener',\n value: function startVisibilityListener() {\n var _this2 = this;\n\n var _state = this.state,\n rect = _state.rect,\n visible = _state.visible;\n\n var scrollTop = (0, _dhUtils.getScrollTop)();\n var halfHeight = window.innerHeight;\n\n if (rect) {\n if (scrollTop > rect.top - halfHeight && scrollTop < rect.bottom) {\n if (!visible) {\n this.setState({ visible: true });\n }\n } else {\n if (visible) {\n this.setState({ visible: false });\n }\n }\n }\n\n this.visibleRaf = requestAnimationFrame(function () {\n _this2.startVisibilityListener();\n });\n }\n }, {\n key: 'stopVisibilityListener',\n value: function stopVisibilityListener() {\n if (this.visibleRaf) {\n cancelAnimationFrame(this.visibleRaf);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props = this.props,\n isIntersecting = _props.isIntersecting,\n mediaBaseUrl = _props.mediaBaseUrl,\n muted = _props.muted,\n onAnalyticsEvent = _props.onAnalyticsEvent,\n onToggleMute = _props.onToggleMute,\n slides = _props.slides,\n viewport = _props.viewport;\n var _state2 = this.state,\n visible = _state2.visible,\n activeIndex = _state2.activeIndex;\n\n // Build inline styles for `div.visualStory__cards`\n\n var cardsInlineStyle = {};\n if (viewport.height > -1) {\n cardsInlineStyle.marginTop = 0 - viewport.height + 'px';\n cardsInlineStyle.paddingBottom = viewport.height + 'px';\n }\n\n return (0, _preact.h)(\n 'div',\n { ref: function ref(elm) {\n return _this3.elm = elm;\n }, className: _index2.default.visualStory },\n (0, _preact.h)(_Skew2.default, { className: _index2.default.visualStory__topSkew, position: 'bottom' }),\n (0, _preact.h)(\n _dhFeatureComponents.Slideshow,\n {\n className: (0, _dhUtils.bem)(_index2.default.visualStory__slideshow, { isIntersecting: isIntersecting }),\n activeIndex: activeIndex,\n viewport: viewport\n },\n slides.map(function (slide, idx) {\n return (0, _preact.h)(_MediaSlide2.default, _extends({}, slide, {\n key: String(idx),\n isIntersecting: isIntersecting,\n mediaBaseUrl: mediaBaseUrl,\n muted: muted,\n onAnalyticsEvent: onAnalyticsEvent,\n onToggleMute: onToggleMute,\n viewport: viewport,\n parentVisible: visible && isIntersecting && idx === activeIndex\n }));\n })\n ),\n (0, _preact.h)(\n _dhFeatureComponents.ViewportIntersections,\n {\n className: _index2.default.visualStory__cards,\n onChange: this.handleChange,\n onEnter: this.handleEnter,\n threshold: [0, 0.5, 1],\n style: cardsInlineStyle\n },\n slides.map(function (slide, idx) {\n switch (slide.type) {\n default:\n return (0, _preact.h)(_DefaultCard2.default, _extends({}, slide, {\n key: String(idx),\n viewport: viewport\n }));\n }\n })\n ),\n (0, _preact.h)(_Skew2.default, { className: _index2.default.visualStory__bottomSkew, position: 'top' })\n );\n }\n }]);\n\n return VisualStory;\n}(_preactPureComponent2.default);\n\nexports.default = VisualStory;\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _dhFeatureComponents = __webpack_require__(7);\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _preact = __webpack_require__(1);\n\nvar _index = __webpack_require__(32);\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } // @jsx h\n\n// import Fallback from '../Fallback'\n\n\nfunction MediaSlide(props) {\n var isIntersecting = props.isIntersecting,\n mediaBaseUrl = props.mediaBaseUrl,\n viewport = props.viewport,\n parentVisible = props.parentVisible,\n restProps = _objectWithoutProperties(props, ['isIntersecting', 'mediaBaseUrl', 'viewport', 'parentVisible']);\n\n var _props$value = props.value,\n description = _props$value.description,\n media = _props$value.media,\n title = _props$value.title;\n\n\n if (!media) {\n return (0, _preact.h)(_dhFeatureComponents.Slide, _extends({}, restProps, { className: _index2.default.visualStory__slide }));\n }\n\n var text = (description || title) && (0, _preact.h)(\n 'div',\n { className: _index2.default.visualStory__slideText },\n title && (0, _preact.h)('h3', { dangerouslySetInnerHTML: { __html: title } }),\n description && (0, _preact.h)('p', { dangerouslySetInnerHTML: { __html: description } })\n );\n\n switch (media.type) {\n case 'image':\n return (0, _preact.h)(\n _dhFeatureComponents.Slide,\n _extends({}, restProps, { className: _index2.default.visualStory__slide }),\n text,\n (0, _preact.h)(_dhFeatureComponents.SerumSmartPicture, { horizontal: media, vertical: media, alt: '' })\n );\n\n case 'videoLoop':\n return (0, _preact.h)(\n _dhFeatureComponents.Slide,\n _extends({}, restProps, {\n className: (0, _dhUtils.bem)(_index2.default.visualStory__slide, {\n active: restProps.active\n })\n }),\n text,\n (0, _preact.h)(_dhFeatureComponents.SmartVideo, {\n className: _index2.default.visualStory__smartVideo,\n loop: true,\n muted: true,\n playing: parentVisible && restProps.active,\n playsInline: true,\n preload: 'none',\n resolution720p: {\n poster: '' + mediaBaseUrl + media.resolution720p.poster,\n sources: media.resolution720p.sources.map(function (source) {\n return {\n type: source.type,\n src: '' + mediaBaseUrl + source.src\n };\n })\n },\n resolution960p: {\n poster: '' + mediaBaseUrl + media.resolution960p.poster,\n sources: media.resolution960p.sources.map(function (source) {\n return {\n type: source.type,\n src: '' + mediaBaseUrl + source.src\n };\n })\n },\n resolution1080p: {\n poster: '' + mediaBaseUrl + media.resolution1080p.poster,\n sources: media.resolution1080p.sources.map(function (source) {\n return {\n type: source.type,\n src: '' + mediaBaseUrl + source.src\n };\n })\n },\n viewport: viewport\n })\n );\n\n default:\n return (0, _preact.h)(_dhFeatureComponents.Slide, _extends({}, restProps, { className: _index2.default.visualStory__slide }));\n }\n}\n\nexports.default = MediaSlide;\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dhUtils = __webpack_require__(3);\n\nvar _dhFeatureComponents = __webpack_require__(7);\n\nvar _preact = __webpack_require__(1);\n\nvar _index = __webpack_require__(32);\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// @jsx h\n\nfunction DefaultCard(props) {\n var viewport = props.viewport;\n var _props$value = props.value,\n align = _props$value.align,\n content = _props$value.content,\n credit = _props$value.credit;\n\n\n var wrapperInlineStyle = {};\n\n if (viewport.height > -1) {\n wrapperInlineStyle.marginTop = viewport.height - 10 + 'px';\n }\n\n return (0, _preact.h)(\n 'div',\n { className: (0, _dhUtils.bem)(_index2.default.defaultCard, align) },\n (0, _preact.h)(\n 'div',\n { className: _index2.default.defaultCard__wrapper, style: wrapperInlineStyle },\n content && content.map(function (item, itemIdx) {\n return (0, _preact.h)(_dhFeatureComponents.Paragraph, { html: item.value, key: String(itemIdx) });\n }),\n credit && (0, _preact.h)(\n 'div',\n { className: _index2.default.defaultCard__credit },\n credit\n )\n )\n );\n}\n\nexports.default = DefaultCard;\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dhFeatureComponents = __webpack_require__(7);\n\nvar _preact = __webpack_require__(1);\n\nvar _preactPureComponent = __webpack_require__(18);\n\nvar _preactPureComponent2 = _interopRequireDefault(_preactPureComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @jsx h\n\nvar VideoPlayer = function (_PureComponent) {\n _inherits(VideoPlayer, _PureComponent);\n\n function VideoPlayer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, VideoPlayer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = VideoPlayer.__proto__ || Object.getPrototypeOf(VideoPlayer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n playing: true\n }, _this.handleUserTogglePlay = function () {\n _this.setState({ playing: !_this.state.playing });\n }, _this.handlePlay = function () {\n _this.props.onAnalyticsEvent({\n action: 'video/PLAY/' + _this.props.sectionIndex + '/' + _this.props.index\n });\n }, _this.handlePause = function () {\n _this.props.onAnalyticsEvent({\n action: 'video/PAUSE/' + _this.props.sectionIndex + '/' + _this.props.index\n });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(VideoPlayer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.props.onRegisterTriggerElement(this.elm, this.props.sectionIndex, this.props.index);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var playing = this.state.playing;\n\n\n return (0, _preact.h)(\n 'div',\n { ref: function ref(elm) {\n return _this2.elm = elm;\n } },\n (0, _preact.h)(_dhFeatureComponents.VideoPlayer, _extends({}, this.props, {\n playing: this.props.isIntersecting && this.props.intersectionRatio >= 0.5 && playing,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onUserTogglePlay: this.handleUserTogglePlay\n }))\n );\n }\n }]);\n\n return VideoPlayer;\n}(_preactPureComponent2.default);\n\nexports.default = VideoPlayer;\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// dh-kultur-spesial-hnio-v1-f8930e9167b06a9a2790.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://dh-static.mesos.nrk.no/dh-kultur-spesial-hnio/static/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 70);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ed545092369425d82067","var isDate = require('../is_date/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar parseTokenDateTimeDelimeter = /[T ]/\nvar parseTokenPlainTime = /:/\n\n// year tokens\nvar parseTokenYY = /^(\\d{2})$/\nvar parseTokensYYY = [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n]\n\nvar parseTokenYYYY = /^(\\d{4})/\nvar parseTokensYYYYY = [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n]\n\n// date tokens\nvar parseTokenMM = /^-(\\d{2})$/\nvar parseTokenDDD = /^-?(\\d{3})$/\nvar parseTokenMMDD = /^-?(\\d{2})-?(\\d{2})$/\nvar parseTokenWww = /^-?W(\\d{2})$/\nvar parseTokenWwwD = /^-?W(\\d{2})-?(\\d{1})$/\n\n// time tokens\nvar parseTokenHH = /^(\\d{2}([.,]\\d*)?)$/\nvar parseTokenHHMM = /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/\nvar parseTokenHHMMSS = /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/\n\n// timezone tokens\nvar parseTokenTimezone = /([Z+-].*)$/\nvar parseTokenTimezoneZ = /^(Z)$/\nvar parseTokenTimezoneHH = /^([+-])(\\d{2})$/\nvar parseTokenTimezoneHHMM = /^([+-])(\\d{2}):?(\\d{2})$/\n\n/**\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Object} [options] - the object with options\n * @param {0 | 1 | 2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parse('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Parse string '+02014101',\n * // if the additional number of digits in the extended year format is 1:\n * var result = parse('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction parse (argument, dirtyOptions) {\n if (isDate(argument)) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument !== 'string') {\n return new Date(argument)\n }\n\n var options = dirtyOptions || {}\n var additionalDigits = options.additionalDigits\n if (additionalDigits == null) {\n additionalDigits = DEFAULT_ADDITIONAL_DIGITS\n } else {\n additionalDigits = Number(additionalDigits)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone)\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = new Date(timestamp + time).getTimezoneOffset()\n offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset()\n }\n\n return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE)\n } else {\n return new Date(argument)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {}\n var array = dateString.split(parseTokenDateTimeDelimeter)\n var timeString\n\n if (parseTokenPlainTime.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n }\n\n if (timeString) {\n var token = parseTokenTimezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var parseTokenYYY = parseTokensYYY[additionalDigits]\n var parseTokenYYYYY = parseTokensYYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = parseTokenYYYY.exec(dateString) || parseTokenYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = parseTokenYY.exec(dateString) || parseTokenYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = parseTokenMM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = parseTokenDDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = parseTokenMMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = parseTokenWww.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n return dayOfISOYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = parseTokenWwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n return dayOfISOYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = parseTokenHH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = parseTokenHHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = parseTokenHHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token\n var absoluteOffset\n\n // Z\n token = parseTokenTimezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n // ±hh\n token = parseTokenTimezoneHH.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = parseTokenTimezoneHHMM.exec(timezoneString)\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10)\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOYear (isoYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\nmodule.exports = parse\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/parse/index.js","/** Virtual DOM Node */\nfunction VNode() {}\n\n/** Global options\n *\t@public\n *\t@namespace options {Object}\n */\nvar options = {\n\n\t/** If `true`, `prop` changes trigger synchronous component updates.\n *\t@name syncComponentUpdates\n *\t@type Boolean\n *\t@default true\n */\n\t//syncComponentUpdates: true,\n\n\t/** Processes all created VNodes.\n *\t@param {VNode} vnode\tA newly-created VNode to normalize/process\n */\n\t//vnode(vnode) { }\n\n\t/** Hook invoked after a component is mounted. */\n\t// afterMount(component) { }\n\n\t/** Hook invoked after the DOM is updated with a component's latest render. */\n\t// afterUpdate(component) { }\n\n\t/** Hook invoked immediately before a component is unmounted. */\n\t// beforeUnmount(component) { }\n};\n\nvar stack = [];\n\nvar EMPTY_CHILDREN = [];\n\n/**\n * JSX/hyperscript reviver.\n * @see http://jasonformat.com/wtf-is-jsx\n * Benchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0\n *\n * Note: this is exported as both `h()` and `createElement()` for compatibility reasons.\n *\n * Creates a VNode (virtual DOM element). A tree of VNodes can be used as a lightweight representation\n * of the structure of a DOM tree. This structure can be realized by recursively comparing it against\n * the current _actual_ DOM structure, and applying only the differences.\n *\n * `h()`/`createElement()` accepts an element name, a list of attributes/props,\n * and optionally children to append to the element.\n *\n * @example The following DOM tree\n *\n * `
Hello!
`\n *\n * can be constructed using this function as:\n *\n * `h('div', { id: 'foo', name : 'bar' }, 'Hello!');`\n *\n * @param {string} nodeName\tAn element name. Ex: `div`, `a`, `span`, etc.\n * @param {Object} attributes\tAny attributes/props to set on the created element.\n * @param rest\t\t\tAdditional arguments are taken to be children to append. Can be infinitely nested Arrays.\n *\n * @public\n */\nfunction h(nodeName, attributes) {\n\tvar children = EMPTY_CHILDREN,\n\t lastSimple,\n\t child,\n\t simple,\n\t i;\n\tfor (i = arguments.length; i-- > 2;) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children != null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop !== undefined) {\n\t\t\tfor (i = child.length; i--;) {\n\t\t\t\tstack.push(child[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof child === 'boolean') child = null;\n\n\t\t\tif (simple = typeof nodeName !== 'function') {\n\t\t\t\tif (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length - 1] += child;\n\t\t\t} else if (children === EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t} else {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tvar p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes == null ? undefined : attributes;\n\tp.key = attributes == null ? undefined : attributes.key;\n\n\t// if a \"vnode hook\" is defined, pass every created VNode to it\n\tif (options.vnode !== undefined) options.vnode(p);\n\n\treturn p;\n}\n\n/**\n * Copy all properties from `props` onto `obj`.\n * @param {Object} obj\t\tObject onto which properties should be copied.\n * @param {Object} props\tObject from which to copy properties.\n * @returns obj\n * @private\n */\nfunction extend(obj, props) {\n for (var i in props) {\n obj[i] = props[i];\n }return obj;\n}\n\n/**\n * Call a function asynchronously, as soon as possible. Makes\n * use of HTML Promise to schedule the callback if available,\n * otherwise falling back to `setTimeout` (mainly for IE<11).\n *\n * @param {Function} callback\n */\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {VNode} vnode\t\tThe virutal DOM element to clone\n * @param {Object} props\tAttributes/props to add when cloning\n * @param {VNode} rest\t\tAny additional arguments will be used as replacement children.\n */\nfunction cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\n\n// DOM properties that should NOT have \"px\" added when numeric\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\n/** Managed queue of dirty components to be re-rendered */\n\nvar items = [];\n\nfunction enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\nfunction rerender() {\n\tvar p,\n\t list = items;\n\titems = [];\n\twhile (p = list.pop()) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n\n/**\n * Check if two nodes are equivalent.\n *\n * @param {Node} node\t\t\tDOM Node to compare\n * @param {VNode} vnode\t\t\tVirtual DOM node to compare\n * @param {boolean} [hyrdating=false]\tIf true, ignores component constructors when comparing.\n * @private\n */\nfunction isSameNodeType(node, vnode, hydrating) {\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n return node.splitText !== undefined;\n }\n if (typeof vnode.nodeName === 'string') {\n return !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n }\n return hydrating || node._componentConstructor === vnode.nodeName;\n}\n\n/**\n * Check if an Element has a given nodeName, case-insensitively.\n *\n * @param {Element} node\tA DOM Element to inspect the name of.\n * @param {String} nodeName\tUnnormalized name to compare against.\n */\nfunction isNamedNode(node, nodeName) {\n return node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n *\n * @param {VNode} vnode\n * @returns {Object} props\n */\nfunction getNodeProps(vnode) {\n var props = extend({}, vnode.attributes);\n props.children = vnode.children;\n\n var defaultProps = vnode.nodeName.defaultProps;\n if (defaultProps !== undefined) {\n for (var i in defaultProps) {\n if (props[i] === undefined) {\n props[i] = defaultProps[i];\n }\n }\n }\n\n return props;\n}\n\n/** Create an element with the given nodeName.\n *\t@param {String} nodeName\n *\t@param {Boolean} [isSvg=false]\tIf `true`, creates an element within the SVG namespace.\n *\t@returns {Element} node\n */\nfunction createNode(nodeName, isSvg) {\n\tvar node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\n/** Remove a child node from its parent if attached.\n *\t@param {Element} node\t\tThe node to remove\n */\nfunction removeNode(node) {\n\tvar parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\n/** Set a named attribute on the given Node, with special behavior for some names and event handlers.\n *\tIf `value` is `null`, the attribute/handler will be removed.\n *\t@param {Element} node\tAn element to mutate\n *\t@param {string} name\tThe name/key to set, such as an event or attribute name\n *\t@param {any} old\tThe last value that was set for this name/node pair\n *\t@param {any} value\tAn attribute value, such as a function to be used as an event handler\n *\t@param {Boolean} isSvg\tAre we currently diffing inside an svg?\n *\t@private\n */\nfunction setAccessor(node, name, old, value, isSvg) {\n\tif (name === 'className') name = 'class';\n\n\tif (name === 'key') {\n\t\t// ignore\n\t} else if (name === 'ref') {\n\t\tif (old) old(null);\n\t\tif (value) value(node);\n\t} else if (name === 'class' && !isSvg) {\n\t\tnode.className = value || '';\n\t} else if (name === 'style') {\n\t\tif (!value || typeof value === 'string' || typeof old === 'string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tif (typeof old !== 'string') {\n\t\t\t\tfor (var i in old) {\n\t\t\t\t\tif (!(i in value)) node.style[i] = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i in value) {\n\t\t\t\tnode.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n\t\t\t}\n\t\t}\n\t} else if (name === 'dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t} else if (name[0] == 'o' && name[1] == 'n') {\n\t\tvar useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t} else {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t} else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n\t\tsetProperty(node, name, value == null ? '' : value);\n\t\tif (value == null || value === false) node.removeAttribute(name);\n\t} else {\n\t\tvar ns = isSvg && name !== (name = name.replace(/^xlink\\:?/, ''));\n\t\tif (value == null || value === false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n\t\t} else if (typeof value !== 'function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/** Attempt to set a DOM property to the given value.\n *\tIE & FF throw for certain property-value combinations.\n */\nfunction setProperty(node, name, value) {\n\ttry {\n\t\tnode[name] = value;\n\t} catch (e) {}\n}\n\n/** Proxy an event to hooked event handlers\n *\t@private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n\n/** Queue of components that have been mounted and are awaiting componentDidMount */\nvar mounts = [];\n\n/** Diff recursion count, used to track the end of the diff cycle. */\nvar diffLevel = 0;\n\n/** Global flag indicating if the diff is currently within an SVG */\nvar isSvgMode = false;\n\n/** Global flag indicating if the diff is performing hydration */\nvar hydrating = false;\n\n/** Invoke queued componentDidMount lifecycle methods */\nfunction flushMounts() {\n\tvar c;\n\twhile (c = mounts.pop()) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\n/** Apply differences in a given vnode (and it's deep children) to a real DOM Node.\n *\t@param {Element} [dom=null]\t\tA DOM node to mutate into the shape of the `vnode`\n *\t@param {VNode} vnode\t\t\tA VNode (with descendants forming a tree) representing the desired DOM structure\n *\t@returns {Element} dom\t\t\tThe created/mutated element\n *\t@private\n */\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\t// diffLevel having been 0 here indicates initial entry into the diff (not a subdiff)\n\tif (!diffLevel++) {\n\t\t// when first starting the diff, check if we're diffing an SVG or within an SVG\n\t\tisSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n\t\t// hydration is indicated by the existing element to be diffed not having a prop cache\n\t\thydrating = dom != null && !('__preactattr_' in dom);\n\t}\n\n\tvar ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\t// append the element if its a new parent\n\tif (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n\t// diffLevel being reduced to 0 means we're exiting the diff\n\tif (! --diffLevel) {\n\t\thydrating = false;\n\t\t// invoke queued componentDidMount lifecycle methods\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\n/** Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing. */\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tvar out = dom,\n\t prevSvgMode = isSvgMode;\n\n\t// empty values (null, undefined, booleans) render as empty Text nodes\n\tif (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n\t// Fast case: Strings & Numbers create/update Text nodes.\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\n\t\t// update if it's already a Text node:\n\t\tif (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\t/* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */\n\t\t\tif (dom.nodeValue != vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t} else {\n\t\t\t// it wasn't a Text node: replace it with one and recycle the old Element\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout['__preactattr_'] = true;\n\n\t\treturn out;\n\t}\n\n\t// If the VNode represents a Component, perform a component diff:\n\tvar vnodeName = vnode.nodeName;\n\tif (typeof vnodeName === 'function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n\t// If there's no existing element or it's the wrong type, create a new one:\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\t// move children into the replacement node\n\t\t\twhile (dom.firstChild) {\n\t\t\t\tout.appendChild(dom.firstChild);\n\t\t\t} // if the previous Element was mounted into the DOM, replace it inline\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\t// recycle the old element (skips non-Element node types)\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\tvar fc = out.firstChild,\n\t props = out['__preactattr_'],\n\t vchildren = vnode.children;\n\n\tif (props == null) {\n\t\tprops = out['__preactattr_'] = {};\n\t\tfor (var a = out.attributes, i = a.length; i--;) {\n\t\t\tprops[a[i].name] = a[i].value;\n\t\t}\n\t}\n\n\t// Optimization: fast-path for elements containing a single TextNode:\n\tif (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n\t\tif (fc.nodeValue != vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t}\n\t// otherwise, if there are existing or new children, diff them:\n\telse if (vchildren && vchildren.length || fc != null) {\n\t\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n\t\t}\n\n\t// Apply attributes/props from VNode to the DOM Element:\n\tdiffAttributes(out, vnode.attributes, props);\n\n\t// restore previous SVG mode: (in case we're exiting an SVG namespace)\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\n/** Apply child and attribute changes between a VNode and a DOM Node to the DOM.\n *\t@param {Element} dom\t\t\tElement whose children should be compared & mutated\n *\t@param {Array} vchildren\t\tArray of VNodes to compare to `dom.childNodes`\n *\t@param {Object} context\t\t\tImplicitly descendant context object (from most recent `getChildContext()`)\n *\t@param {Boolean} mountAll\n *\t@param {Boolean} isHydrating\tIf `true`, consumes externally created elements similar to hydration\n */\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tvar originalChildren = dom.childNodes,\n\t children = [],\n\t keyed = {},\n\t keyedLen = 0,\n\t min = 0,\n\t len = originalChildren.length,\n\t childrenLen = 0,\n\t vlen = vchildren ? vchildren.length : 0,\n\t j,\n\t c,\n\t f,\n\t vchild,\n\t child;\n\n\t// Build up a map of keyed children and an Array of unkeyed children:\n\tif (len !== 0) {\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar _child = originalChildren[i],\n\t\t\t props = _child['__preactattr_'],\n\t\t\t key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n\t\t\tif (key != null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = _child;\n\t\t\t} else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = _child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen !== 0) {\n\t\tfor (var i = 0; i < vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\t// attempt to find a node based on key matching\n\t\t\tvar key = vchild.key;\n\t\t\tif (key != null) {\n\t\t\t\tif (keyedLen && keyed[key] !== undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// attempt to pluck a node of the same type from the existing children\n\t\t\telse if (!child && min < childrenLen) {\n\t\t\t\t\tfor (j = min; j < childrenLen; j++) {\n\t\t\t\t\t\tif (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\t\tif (j === childrenLen - 1) childrenLen--;\n\t\t\t\t\t\t\tif (j === min) min++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// morph the matched/found/created DOM child to match vchild (deep)\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child !== dom && child !== f) {\n\t\t\t\tif (f == null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t} else if (child === f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t} else {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// remove unused keyed children:\n\tif (keyedLen) {\n\t\tfor (var i in keyed) {\n\t\t\tif (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n\t\t}\n\t}\n\n\t// remove orphaned unkeyed children:\n\twhile (min <= childrenLen) {\n\t\tif ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n\t}\n}\n\n/** Recursively recycle (or just unmount) a node and its descendants.\n *\t@param {Node} node\t\t\t\t\t\tDOM node to start unmount/removal from\n *\t@param {Boolean} [unmountOnly=false]\tIf `true`, only triggers unmount lifecycle, skips removal\n */\nfunction recollectNodeTree(node, unmountOnly) {\n\tvar component = node._component;\n\tif (component) {\n\t\t// if node is owned by a Component, unmount that component (ends up recursing back here)\n\t\tunmountComponent(component);\n\t} else {\n\t\t// If the node's VNode had a ref function, invoke it with null here.\n\t\t// (this is part of the React spec, and smart for unsetting references)\n\t\tif (node['__preactattr_'] != null && node['__preactattr_'].ref) node['__preactattr_'].ref(null);\n\n\t\tif (unmountOnly === false || node['__preactattr_'] == null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\n/** Recollect/unmount all children.\n *\t- we use .lastChild here because it causes less reflow than .firstChild\n *\t- it's also cheaper than accessing the .childNodes Live NodeList\n */\nfunction removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tvar next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\n/** Apply differences in attributes from a VNode to the given DOM Element.\n *\t@param {Element} dom\t\tElement with attributes to diff `attrs` against\n *\t@param {Object} attrs\t\tThe desired end-state key-value attribute pairs\n *\t@param {Object} old\t\t\tCurrent/previous attributes (from previous VNode or element's prop cache)\n */\nfunction diffAttributes(dom, attrs, old) {\n\tvar name;\n\n\t// remove attributes no longer present on the vnode by setting them to undefined\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name] != null) && old[name] != null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\t// add new & update changed attributes\n\tfor (name in attrs) {\n\t\tif (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n\n/** Retains a pool of Components for re-use, keyed on component name.\n *\tNote: since component names are not unique or even necessarily available, these are primarily a form of sharding.\n *\t@private\n */\nvar components = {};\n\n/** Reclaim a component for later re-use by the recycler. */\nfunction collectComponent(component) {\n\tvar name = component.constructor.name;\n\t(components[name] || (components[name] = [])).push(component);\n}\n\n/** Create a component. Normalizes differences between PFC's and classful Components. */\nfunction createComponent(Ctor, props, context) {\n\tvar list = components[Ctor.name],\n\t inst;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t} else {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\tif (list) {\n\t\tfor (var i = list.length; i--;) {\n\t\t\tif (list[i].constructor === Ctor) {\n\t\t\t\tinst.nextBase = list[i].nextBase;\n\t\t\t\tlist.splice(i, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn inst;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n\n/** Set a component's `props` (generally derived from JSX attributes).\n *\t@param {Object} props\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.renderSync=false]\tIf `true` and {@link options.syncComponentUpdates} is `true`, triggers synchronous rendering.\n *\t@param {boolean} [opts.render=true]\t\t\tIf `false`, no render will be triggered.\n */\nfunction setComponentProps(component, props, opts, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tif (component.__ref = props.ref) delete props.ref;\n\tif (component.__key = props.key) delete props.key;\n\n\tif (!component.base || mountAll) {\n\t\tif (component.componentWillMount) component.componentWillMount();\n\t} else if (component.componentWillReceiveProps) {\n\t\tcomponent.componentWillReceiveProps(props, context);\n\t}\n\n\tif (context && context !== component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (opts !== 0) {\n\t\tif (opts === 1 || options.syncComponentUpdates !== false || !component.base) {\n\t\t\trenderComponent(component, 1, mountAll);\n\t\t} else {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tif (component.__ref) component.__ref(component);\n}\n\n/** Render a Component, triggering necessary lifecycle events and taking High-Order Components into account.\n *\t@param {Component} component\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.build=false]\t\tIf `true`, component will build and store a DOM node if not already associated with one.\n *\t@private\n */\nfunction renderComponent(component, opts, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tvar props = component.props,\n\t state = component.state,\n\t context = component.context,\n\t previousProps = component.prevProps || props,\n\t previousState = component.prevState || state,\n\t previousContext = component.prevContext || context,\n\t isUpdate = component.base,\n\t nextBase = component.nextBase,\n\t initialBase = isUpdate || nextBase,\n\t initialChildComponent = component._component,\n\t skip = false,\n\t rendered,\n\t inst,\n\t cbase;\n\n\t// if updating\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (opts !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t} else if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\t// context to pass to the child, can be updated via (grand-)parent component\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tvar childComponent = rendered && rendered.nodeName,\n\t\t toUnmount,\n\t\t base;\n\n\t\tif (typeof childComponent === 'function') {\n\t\t\t// set up high order component link\n\n\t\t\tvar childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, 1, context, false);\n\t\t\t} else {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, 0, context, false);\n\t\t\t\trenderComponent(inst, 1, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t} else {\n\t\t\tcbase = initialBase;\n\n\t\t\t// destroy high order component link\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || opts === 1) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t\t\tvar baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base !== baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tvar componentRef = component,\n\t\t\t t = component;\n\t\t\twhile (t = t._parentComponent) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.unshift(component);\n\t} else if (!skip) {\n\t\t// Ensure that pending componentDidMount() hooks of child components\n\t\t// are called before the componentDidUpdate() hook in the parent.\n\t\t// Note: disabled as it causes duplicate hooks, see https://github.com/developit/preact/issues/750\n\t\t// flushMounts();\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, previousContext);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\tif (component._renderCallbacks != null) {\n\t\twhile (component._renderCallbacks.length) {\n\t\t\tcomponent._renderCallbacks.pop().call(component);\n\t\t}\n\t}\n\n\tif (!diffLevel && !isChild) flushMounts();\n}\n\n/** Apply the Component referenced by a VNode to the DOM.\n *\t@param {Element} dom\tThe DOM node to mutate\n *\t@param {VNode} vnode\tA Component-referencing VNode\n *\t@returns {Element} dom\tThe created/mutated element\n *\t@private\n */\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tvar c = dom && dom._component,\n\t originalComponent = c,\n\t oldDom = dom,\n\t isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n\t isOwner = isDirectOwner,\n\t props = getNodeProps(vnode);\n\twhile (c && !isOwner && (c = c._parentComponent)) {\n\t\tisOwner = c.constructor === vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, 3, context, mountAll);\n\t\tdom = c.base;\n\t} else {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\t\t\t// passing dom/oldDom as nextBase will recycle it if unused, so bypass recycling on L229:\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, 1, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom !== oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/** Remove a component from the DOM and recycle it.\n *\t@param {Component} component\tThe Component instance to unmount\n *\t@private\n */\nfunction unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tvar base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\t// recursively tear down & recollect high-order component children:\n\tvar inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t} else if (base) {\n\t\tif (base['__preactattr_'] && base['__preactattr_'].ref) base['__preactattr_'].ref(null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\tcollectComponent(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tif (component.__ref) component.__ref(null);\n}\n\n/** Base Component class.\n *\tProvides `setState()` and `forceUpdate()`, which trigger rendering.\n *\t@public\n *\n *\t@example\n *\tclass MyFoo extends Component {\n *\t\trender(props, state) {\n *\t\t\treturn
;\n *\t\t}\n *\t}\n */\nfunction Component(props, context) {\n\tthis._dirty = true;\n\n\t/** @public\n *\t@type {object}\n */\n\tthis.context = context;\n\n\t/** @public\n *\t@type {object}\n */\n\tthis.props = props;\n\n\t/** @public\n *\t@type {object}\n */\n\tthis.state = this.state || {};\n}\n\nextend(Component.prototype, {\n\n\t/** Returns a `boolean` indicating if the component should re-render when receiving the given `props` and `state`.\n *\t@param {object} nextProps\n *\t@param {object} nextState\n *\t@param {object} nextContext\n *\t@returns {Boolean} should the component re-render\n *\t@name shouldComponentUpdate\n *\t@function\n */\n\n\t/** Update component state by copying properties from `state` to `this.state`.\n *\t@param {object} state\t\tA hash of state properties to update with new values\n *\t@param {function} callback\tA function to be called once component state is updated\n */\n\tsetState: function setState(state, callback) {\n\t\tvar s = this.state;\n\t\tif (!this.prevState) this.prevState = extend({}, s);\n\t\textend(s, typeof state === 'function' ? state(s, this.props) : state);\n\t\tif (callback) (this._renderCallbacks = this._renderCallbacks || []).push(callback);\n\t\tenqueueRender(this);\n\t},\n\n\n\t/** Immediately perform a synchronous re-render of the component.\n *\t@param {function} callback\t\tA function to be called after component is re-rendered.\n *\t@private\n */\n\tforceUpdate: function forceUpdate(callback) {\n\t\tif (callback) (this._renderCallbacks = this._renderCallbacks || []).push(callback);\n\t\trenderComponent(this, 2);\n\t},\n\n\n\t/** Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n *\tVirtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n *\t@param {object} props\t\tProps (eg: JSX attributes) received from parent element/component\n *\t@param {object} state\t\tThe component's current state\n *\t@param {object} context\t\tContext object (if a parent component has provided context)\n *\t@returns VNode\n */\n\trender: function render() {}\n});\n\n/** Render JSX into a `parent` Element.\n *\t@param {VNode} vnode\t\tA (JSX) VNode to render\n *\t@param {Element} parent\t\tDOM element to render into\n *\t@param {Element} [merge]\tAttempt to re-use an existing DOM tree rooted at `merge`\n *\t@public\n *\n *\t@example\n *\t// render a div into :\n *\trender(
hello!
, document.body);\n *\n *\t@example\n *\t// render a \"Thing\" component into #foo:\n *\tconst Thing = ({ name }) => { name };\n *\trender(, document.querySelector('#foo'));\n */\nfunction render(vnode, parent, merge) {\n return diff(merge, vnode, {}, false, parent, false);\n}\n\nvar preact = {\n\th: h,\n\tcreateElement: h,\n\tcloneElement: cloneElement,\n\tComponent: Component,\n\trender: render,\n\trerender: rerender,\n\toptions: options\n};\n\nexport { h, h as createElement, cloneElement, Component, render, rerender, options };\nexport default preact;\n//# sourceMappingURL=preact.esm.js.map\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/preact/dist/preact.esm.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Component } from 'preact';\n\nfunction shallowEqual(a, b) {\n for (var key in a) {\n if (a[key] !== b[key]) return false;\n }for (var _key in b) {\n if (!(_key in a)) return false;\n }return true;\n}\n\nvar PureComponent = function (_Component) {\n _inherits(PureComponent, _Component);\n\n function PureComponent() {\n _classCallCheck(this, PureComponent);\n\n return _possibleConstructorReturn(this, (PureComponent.__proto__ || Object.getPrototypeOf(PureComponent)).apply(this, arguments));\n }\n\n _createClass(PureComponent, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(props, state) {\n return !(shallowEqual(props, this.props) && shallowEqual(state, this.state));\n }\n }]);\n\n return PureComponent;\n}(Component);\n\nexport default PureComponent;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/lib/preact-pure-component.js","import { toArray } from './array';\nimport bem from './bem';\nimport { getScrollLeft, getScrollTop } from './scroll';\nimport { createUniqueId } from './string';\n\nexport { bem, createUniqueId, getScrollLeft, getScrollTop, toArray };\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/index.js","var parse = require('../parse/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nfunction getISOYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\nmodule.exports = getISOYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_iso_year/index.js","var startOfWeek = require('../start_of_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfISOWeek (dirtyDate) {\n return startOfWeek(dirtyDate, {weekStartsOn: 1})\n}\n\nmodule.exports = startOfISOWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_iso_week/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nfunction startOfDay (dirtyDate) {\n var date = parse(dirtyDate)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfDay\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_day/index.js","import Byline from './Byline';\nimport ChatLog from './ChatLog';\nimport Figure from './Figure';\nimport Heading from './Heading';\nimport Icon from './core/Icon';\nimport List from './List';\nimport ListItem from './List/ListItem';\nimport Paragraph from './Paragraph';\nimport PullQuote from './PullQuote';\nimport PureComponent from './lib/preact-pure-component';\nimport ResponsiveVideo from './video/ResponsiveVideo';\nimport SerumImage from './serum/SerumImage';\nimport SerumResponsivePicture from './serum/SerumResponsivePicture';\nimport SerumSmartPicture from './serum/SerumSmartPicture';\nimport Slide from './Slideshow/Slide';\nimport Slideshow from './Slideshow';\nimport SmartVideo from './video/SmartVideo';\nimport Video from './video/Video';\nimport VideoPlayer from './video/VideoPlayer';\nimport ViewportIntersections from './ViewportIntersections';\n\nexport { Byline, ChatLog, Figure, Heading, Icon, List, ListItem, Paragraph, PullQuote, PureComponent, ResponsiveVideo, SerumImage, SerumSmartPicture, SerumResponsivePicture, Slide, Slideshow, SmartVideo, Video, VideoPlayer, ViewportIntersections };\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @returns {Date} the new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nfunction addDays (dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate)\n var amount = Number(dirtyAmount)\n date.setDate(date.getDate() + amount)\n return date\n}\n\nmodule.exports = addDays\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_days/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount) {\n var timestamp = parse(dirtyDate).getTime()\n var amount = Number(dirtyAmount)\n return new Date(timestamp + amount)\n}\n\nmodule.exports = addMilliseconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_milliseconds/index.js","var getISOYear = require('../get_iso_year/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an ISO year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nfunction startOfISOYear (dirtyDate) {\n var year = getISOYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary)\n return date\n}\n\nmodule.exports = startOfISOYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_iso_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nfunction compareAsc (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var timeLeft = dateLeft.getTime()\n var dateRight = parse(dirtyDateRight)\n var timeRight = dateRight.getTime()\n\n if (timeLeft < timeRight) {\n return -1\n } else if (timeLeft > timeRight) {\n return 1\n } else {\n return 0\n }\n}\n\nmodule.exports = compareAsc\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/compare_asc/index.js","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.nrkSerumImagecropUtils = {})));\n}(this, (function (exports) { 'use strict';\n\n var isPolopolyIdRegex = /^[1-9]{1,2}\\.\\d+$/;\n\n function isPolopolyId(id) {\n if (!id) {\n return false;\n }\n return isPolopolyIdRegex.test(id);\n }\n\n // prettier-ignore\n var widths = [100, 120, 150, 174, 200, 206, 225, 244, 250, 252, 300, 320, 350, 400, 450, 452, 460, 462, 500, 600, 650, 665, 682, 700, 734, 768, 900, 974, 1200, 1280, 1360, 1450, 1550, 1600, 1700, 1800, 1920, 2000, 2100, 2200, 2300, 2400];\n\n // prettier-ignore\n var ratios = ['1:1', '11', '16:9', '169', '16:3', '163', '3:4', '34'];\n\n // prettier-ignore\n var qualities = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0];\n\n var _baseUrl = 'https://nrk.no/serum/api/imagecrop/';\n\n function createUrl(_ref) {\n var id = _ref.id,\n ratio = _ref.ratio,\n width = _ref.width,\n quality = _ref.quality;\n\n var url = '' + _baseUrl + id;\n var queryString = createQueryString({ ratio: ratio, width: width, quality: quality });\n if (queryString) {\n url += '?' + queryString;\n }\n return url;\n }\n\n function createQueryString(_ref2) {\n var ratio = _ref2.ratio,\n width = _ref2.width,\n quality = _ref2.quality;\n\n if (!ratio && !width) {\n return quality ? 'quality=' + quality : '';\n }\n var ratioPart = ratio ? 'f' + ratio.replace(':', '') : '';\n var widthPart = width ? 'w' + width : '';\n var qualityPart = quality ? '&quality=' + quality : '';\n return 'cropid=' + ratioPart + widthPart + qualityPart;\n }\n\n function getClosestNumber(goal, targets) {\n if (!isValidGoal(goal)) {\n throw new Error('\\n getClosestNumber(goal, targets): passing a goal of ' + goal + '\\n is not supported. Pass a number');\n }\n if (!isValidTargets(targets)) {\n throw new Error('\\n getClosestNumber(goal, targets): targets ' + targets.toString() + ' is invald.\\n Pass an array of numbers');\n }\n if (!targets.length) {\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n return targets.reduce(function (prev, curr) {\n return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\n });\n }\n\n function isValidGoal(goal) {\n return typeof goal === 'number';\n }\n\n function isValidTargets(targets) {\n if (!targets) {\n return false;\n }\n var isValid = true;\n for (var i = 0; i < targets.length; i++) {\n if (typeof targets[i] !== 'number') {\n isValid = false;\n break;\n }\n }\n // return targets.some((target) => {\n // return (typeof target !== 'number')\n // })\n return isValid;\n }\n\n function isValidRatio(ratio, supportedRatios) {\n if (!Array.isArray(supportedRatios)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidRatio(ratio, supportedRatios): supportedRatios '\" + supportedRatios + \"' is not supported. Pass an array of supported ratios\");\n }\n if (!ratio) {\n return false;\n }\n return supportedRatios.includes(ratio);\n }\n\n function isValidQuality(quality, supportedQualities) {\n if (!Array.isArray(supportedQualities)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidQuality(quality, supportedQualities): supportedQualities '\" + supportedQualities + \"' is not supported. Pass an array of supported qualities\");\n }\n if (!quality) {\n return false;\n }\n return supportedQualities.includes(quality);\n }\n\n function createImageUrl(options) {\n var polopolyId = options.id,\n width = options.width,\n ratio = options.ratio,\n quality = options.quality;\n\n\n if (!isPolopolyId(polopolyId)) {\n throw new Error('createSerumImageUrl(): invalid polopolyId. Got ' + polopolyId);\n }\n\n var args = {\n id: polopolyId,\n ratio: null,\n quality: 0.8,\n width: 0\n\n // If a ratio is provided, ensure that it is valid\n };if (hasOption(ratio)) {\n if (!isValidRatio(ratio, ratios)) {\n throw new Error('\\n createSerumImageUrl(): ratio ' + ratio + ' is not supported.\\n Supported ratios are ' + ratios.toString());\n }\n args.ratio = ratio;\n }\n\n // If a quality is provided, ensure that it is valid\n if (hasOption(quality)) {\n if (!isValidQuality(quality, qualities)) {\n throw new Error('\\n createSerumImageUrl(): quality ' + quality + ' is not supported.\\n Supported qualities are ' + qualities.toString());\n }\n args.quality = quality;\n }\n\n // If a width is provided, ensure that is is a positive integer\n if (hasOption(width)) {\n if (!isNumber(width) || width <= 0) {\n var errorMessage = 'createSerumImageUrl(): width must be a positive integer, got ' + width;\n throw new Error(errorMessage);\n }\n var isSupportedWidth = widths.includes(width);\n var closestWidth = getClosestNumber(width, widths);\n if (typeof closestWidth !== 'undefined' && closestWidth) {\n args.width = isSupportedWidth ? width : closestWidth;\n }\n }\n\n return createUrl(args);\n }\n\n function hasOption(option) {\n return typeof option !== 'undefined' && option;\n }\n\n function isNumber(number) {\n return Number.isInteger(number);\n }\n\n exports.createImageUrl = createImageUrl;\n exports.ratios = ratios;\n exports.widths = widths;\n exports.qualities = qualities;\n exports.isPolopolyId = isPolopolyId;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/serum-imagecrop-utils/lib/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n\n var date = parse(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setDate(date.getDate() - diff)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_week/index.js","var startOfDay = require('../start_of_day/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_DAY = 86400000\n\n/**\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n */\nfunction differenceInCalendarDays (dirtyDateLeft, dirtyDateRight) {\n var startOfDayLeft = startOfDay(dirtyDateLeft)\n var startOfDayRight = startOfDay(dirtyDateRight)\n\n var timestampLeft = startOfDayLeft.getTime() -\n startOfDayLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n var timestampRight = startOfDayRight.getTime() -\n startOfDayRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY)\n}\n\nmodule.exports = differenceInCalendarDays\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_calendar_days/index.js","var parse = require('../parse/index.js')\nvar getDaysInMonth = require('../get_days_in_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @returns {Date} the new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nfunction addMonths (dirtyDate, dirtyAmount) {\n var date = parse(dirtyDate)\n var amount = Number(dirtyAmount)\n var desiredMonth = date.getMonth() + amount\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()))\n return date\n}\n\nmodule.exports = addMonths\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_months/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nfunction differenceInMilliseconds (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getTime() - dateRight.getTime()\n}\n\nmodule.exports = differenceInMilliseconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_milliseconds/index.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"article\":\"dh-kult-hnio-article\",\"article__header\":\"dh-kult-hnio-article__header\",\"article__leadMediaWrapper\":\"dh-kult-hnio-article__leadMediaWrapper\",\"article__leadMedia\":\"dh-kult-hnio-article__leadMedia\",\"article__headerTopSkew\":\"dh-kult-hnio-article__headerTopSkew\",\"root--noJs\":\"dh-kult-hnio-root--noJs\",\"article__headerBottomSkew\":\"dh-kult-hnio-article__headerBottomSkew\",\"article__headerText\":\"dh-kult-hnio-article__headerText\",\"article__title\":\"dh-kult-hnio-article__title\",\"article__intro\":\"dh-kult-hnio-article__intro\",\"article__authors\":\"dh-kult-hnio-article__authors\",\"article__content\":\"dh-kult-hnio-article__content\",\"section__content\":\"dh-kult-hnio-section__content\",\"article__paragraph\":\"dh-kult-hnio-article__paragraph\",\"article__pullQuote\":\"dh-kult-hnio-article__pullQuote\",\"article__videoPlayer\":\"dh-kult-hnio-article__videoPlayer\",\"article__publishedAt\":\"dh-kult-hnio-article__publishedAt\",\"section\":\"dh-kult-hnio-section\",\"section--dark\":\"dh-kult-hnio-section--dark\",\"section__title\":\"dh-kult-hnio-section__title\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/v1/components/Article/index.css\n// module id = 17\n// module chunks = 0","// @flow\n\nimport { Component } from 'preact'\n\nfunction shallowEqual (a: any, b: any) {\n for (let key in a) if (a[key] !== b[key]) return false\n for (let key in b) if (!(key in a)) return false\n return true\n}\n\nclass PureComponent extends Component {\n shouldComponentUpdate (props: Props, state: State) {\n return !(shallowEqual(props, this.props) && shallowEqual(state, this.state))\n }\n}\n\nexport default PureComponent\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/preact-pure-component.js","/**\n * @category Common Helpers\n * @summary Is the given argument an instance of Date?\n *\n * @description\n * Is the given argument an instance of Date?\n *\n * @param {*} argument - the argument to check\n * @returns {Boolean} the given argument is an instance of Date\n *\n * @example\n * // Is 'mayonnaise' a Date?\n * var result = isDate('mayonnaise')\n * //=> false\n */\nfunction isDate (argument) {\n return argument instanceof Date\n}\n\nmodule.exports = isDate\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_date/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nfunction getDaysInMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n var monthIndex = date.getMonth()\n var lastDayOfMonth = new Date(0)\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0)\n lastDayOfMonth.setHours(0, 0, 0, 0)\n return lastDayOfMonth.getDate()\n}\n\nmodule.exports = getDaysInMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_days_in_month/index.js","var addDays = require('../add_days/index.js')\n\n/**\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @returns {Date} the new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nfunction addWeeks (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n var days = amount * 7\n return addDays(dirtyDate, days)\n}\n\nmodule.exports = addWeeks\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_weeks/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * )\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nfunction compareDesc (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var timeLeft = dateLeft.getTime()\n var dateRight = parse(dirtyDateRight)\n var timeRight = dateRight.getTime()\n\n if (timeLeft > timeRight) {\n return -1\n } else if (timeLeft < timeRight) {\n return 1\n } else {\n return 0\n }\n}\n\nmodule.exports = compareDesc\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/compare_desc/index.js","var parse = require('../parse/index.js')\nvar differenceInCalendarMonths = require('../difference_in_calendar_months/index.js')\nvar compareAsc = require('../compare_asc/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 7\n */\nfunction differenceInMonths (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight))\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference)\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastMonthNotFull)\n}\n\nmodule.exports = differenceInMonths\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_months/index.js","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js')\n\n/**\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nfunction differenceInSeconds (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInSeconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_seconds/index.js","var buildDistanceInWordsLocale = require('./build_distance_in_words_locale/index.js')\nvar buildFormatLocale = require('./build_format_locale/index.js')\n\n/**\n * @category Locales\n * @summary English locale.\n */\nmodule.exports = {\n distanceInWords: buildDistanceInWordsLocale(),\n format: buildFormatLocale()\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/locale/en/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nfunction endOfDay (dirtyDate) {\n var date = parse(dirtyDate)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfDay\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_day/index.js","var parse = require('../parse/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\nvar startOfISOYear = require('../start_of_iso_year/index.js')\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nfunction getISOWeek (dirtyDate) {\n var date = parse(dirtyDate)\n var diff = startOfISOWeek(date).getTime() - startOfISOYear(date).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n\nmodule.exports = getISOWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_iso_week/index.js","var startOfWeek = require('../start_of_week/index.js')\n\n/**\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the dates are in the same week\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4)\n * )\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(\n * new Date(2014, 7, 31),\n * new Date(2014, 8, 4),\n * {weekStartsOn: 1}\n * )\n * //=> false\n */\nfunction isSameWeek (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()\n}\n\nmodule.exports = isSameWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_week/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { Component, h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\nimport { AvatarImage } from './AvatarImage';\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\n\nexport var Avatar = function (_Component) {\n _inherits(Avatar, _Component);\n\n function Avatar() {\n _classCallCheck(this, Avatar);\n\n return _possibleConstructorReturn(this, (Avatar.__proto__ || Object.getPrototypeOf(Avatar)).apply(this, arguments));\n }\n\n _createClass(Avatar, [{\n key: 'render',\n value: function render() {\n var person = this.props.person;\n var name = person.name,\n image = person.image;\n\n var displayImage = image && image.type !== 'none';\n return h(\n 'div',\n { 'aria-hidden': true, className: bem(styles.avatar, person.side) },\n displayImage && h(AvatarImage, { image: image, alt: person.name, title: person.name }),\n !displayImage && h(\n 'span',\n { className: styles.avatar__placeholder, title: name },\n getInitials(name)\n )\n );\n }\n }]);\n\n return Avatar;\n}(Component);\n\nfunction getInitials() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var initials = name.trim().split(/[ -]/).map(function (item) {\n return item.charAt(0).toUpperCase();\n });\n\n if (initials.length < 2) return initials[0];\n return [initials[0], initials[initials.length - 1]].join('');\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Avatar/index.js","import { createImageUrl } from '@nrk/serum-imagecrop-utils';\n\n\nexport function getImageUrl(image, options) {\n var _ref = options || {},\n _ref$width = _ref.width,\n width = _ref$width === undefined ? 120 : _ref$width,\n _ref$ratio = _ref.ratio,\n ratio = _ref$ratio === undefined ? '1:1' : _ref$ratio;\n\n switch (image.type) {\n case 'polopoly-image':\n {\n return createImageUrl({ id: image.id, width: width, ratio: ratio });\n }\n case 'url-image':\n {\n return image.url;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/lib/image-url.js","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\n/* eslint-disable jsx-a11y/media-has-caption */\n\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\n\nvar Video = function (_PureComponent) {\n _inherits(Video, _PureComponent);\n\n function Video() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Video);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Video.__proto__ || Object.getPrototypeOf(Video)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n isPlaying: false,\n isResolvingPlay: false,\n time: 0\n }, _this.tracks = [], _this.handlePlay = function () {\n var onPlay = _this.props.onPlay;\n\n\n _this.setState({ isPlaying: true });\n\n if (onPlay) {\n onPlay();\n }\n }, _this.handlePause = function () {\n var onPause = _this.props.onPause;\n\n\n _this.setState({ isPlaying: false });\n\n if (onPause) {\n onPause();\n }\n }, _this.handleDurationChange = function () {\n var onDurationChange = _this.props.onDurationChange;\n\n\n if (onDurationChange) {\n onDurationChange(_this.elm.duration);\n }\n }, _this.handleTimeupdate = function () {\n var onTimeupdate = _this.props.onTimeupdate;\n\n var time = _this.elm.currentTime;\n\n _this.setState({ time: time });\n\n if (onTimeupdate) {\n onTimeupdate(time);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Video, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var _props = this.props,\n textTracks = _props.textTracks,\n playing = _props.playing,\n onCaptionCueEnter = _props.onCaptionCueEnter,\n onCaptionCueExit = _props.onCaptionCueExit;\n\n\n if (textTracks) {\n textTracks.forEach(function (textTrack) {\n var track = _this2.elm.addTextTrack('subtitles', textTrack.language);\n track.mode = 'hidden';\n\n _this2.tracks.push(track);\n\n try {\n textTrack.captions.forEach(function (a) {\n return track.addCue(new window.VTTCue(Number(a.in), Number(a.out), a.text));\n });\n } catch (_) {\n // ignore error\n\n textTrack.captions.forEach(function (a) {\n return track.addCue(new window.TextTrackCue(Number(a.in), Number(a.out), a.text));\n });\n }\n\n var _loop = function _loop(i) {\n var cue = track.cues[i];\n\n try {\n cue.onenter = function () {\n if (typeof onCaptionCueEnter !== 'undefined') {\n onCaptionCueEnter({\n in: cue.startTime,\n out: cue.endTime,\n text: cue.text\n });\n }\n };\n cue.onexit = function () {\n if (typeof onCaptionCueExit !== 'undefined') {\n onCaptionCueExit();\n }\n };\n } catch (_) {\n // ignore error\n }\n };\n\n for (var i = 0; i < track.cues.length; i++) {\n _loop(i);\n }\n });\n }\n\n if (playing) {\n this.play();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.playing !== this.props.playing) {\n if (this.props.playing) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n }, {\n key: 'play',\n value: function play() {\n var _this3 = this;\n\n var onError = this.props.onError;\n\n var playPromise = this.elm.play();\n\n if (playPromise) {\n this.setState({ isResolvingPlay: true });\n\n playPromise.then(function () {\n _this3.setState({ isResolvingPlay: false });\n }).catch(function (err) {\n if (onError) {\n onError(err.message);\n }\n\n _this3.setState({ isResolvingPlay: false });\n });\n }\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.elm.pause();\n }\n }, {\n key: 'seek',\n value: function seek(time) {\n this.elm.currentTime = time;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props2 = this.props,\n playing = _props2.playing,\n sources = _props2.sources,\n restProps = _objectWithoutProperties(_props2, ['playing', 'sources']);\n\n var isPlaying = this.state.isPlaying;\n\n\n var eventHandlers = {\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onDurationChange: this.handleDurationChange,\n onTimeupdate: this.handleTimeupdate\n };\n\n var dataProps = {};\n\n if (isPlaying) {\n dataProps['data-playing'] = true;\n }\n\n return h(\n 'video',\n _extends({}, restProps, eventHandlers, {\n ref: function ref(elm) {\n return _this4.elm = elm;\n }\n }, dataProps),\n sources.map(function (source) {\n return h('source', _extends({}, source, { key: source.type }));\n })\n );\n }\n }]);\n\n return Video;\n}(PureComponent);\n\nexport default Video;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/video/Video/index.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"visualStory\":\"dh-kult-hnio-visualStory\",\"visualStory__topSkew\":\"dh-kult-hnio-visualStory__topSkew\",\"section--dark\":\"dh-kult-hnio-section--dark\",\"root--noJs\":\"dh-kult-hnio-root--noJs\",\"visualStory__bottomSkew\":\"dh-kult-hnio-visualStory__bottomSkew\",\"visualStory__slideshow\":\"dh-kult-hnio-visualStory__slideshow\",\"root--js\":\"dh-kult-hnio-root--js\",\"visualStory__slideshow--isIntersecting\":\"dh-kult-hnio-visualStory__slideshow--isIntersecting\",\"visualStory__slide\":\"dh-kult-hnio-visualStory__slide\",\"visualStory__smartVideo\":\"dh-kult-hnio-visualStory__smartVideo\",\"visualStory__slideText\":\"dh-kult-hnio-visualStory__slideText\",\"visualStory__cards\":\"dh-kult-hnio-visualStory__cards\",\"defaultCard\":\"dh-kult-hnio-defaultCard\",\"defaultCard__wrapper\":\"dh-kult-hnio-defaultCard__wrapper\",\"defaultCard--right\":\"dh-kult-hnio-defaultCard--right\",\"defaultCard--left\":\"dh-kult-hnio-defaultCard--left\",\"defaultCard__credit\":\"dh-kult-hnio-defaultCard__credit\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/v1/components/VisualStory/index.css\n// module id = 32\n// module chunks = 0","var addMilliseconds = require('../add_milliseconds/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @returns {Date} the new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nfunction addHours (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR)\n}\n\nmodule.exports = addHours\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_hours/index.js","var getISOYear = require('../get_iso_year/index.js')\nvar setISOYear = require('../set_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @returns {Date} the new date with the ISO week-numbering years added\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nfunction addISOYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return setISOYear(dirtyDate, getISOYear(dirtyDate) + amount)\n}\n\nmodule.exports = addISOYears\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_iso_years/index.js","var parse = require('../parse/index.js')\nvar startOfISOYear = require('../start_of_iso_year/index.js')\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year setted\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nfunction setISOYear (dirtyDate, dirtyISOYear) {\n var date = parse(dirtyDate)\n var isoYear = Number(dirtyISOYear)\n var diff = differenceInCalendarDays(date, startOfISOYear(date))\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(isoYear, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n date = startOfISOYear(fourthOfJanuary)\n date.setDate(date.getDate() + diff)\n return date\n}\n\nmodule.exports = setISOYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_iso_year/index.js","var addMilliseconds = require('../add_milliseconds/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @returns {Date} the new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nfunction addMinutes (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE)\n}\n\nmodule.exports = addMinutes\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_minutes/index.js","var addMonths = require('../add_months/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @returns {Date} the new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nfunction addQuarters (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n var months = amount * 3\n return addMonths(dirtyDate, months)\n}\n\nmodule.exports = addQuarters\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_quarters/index.js","var addMilliseconds = require('../add_milliseconds/index.js')\n\n/**\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @returns {Date} the new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nfunction addSeconds (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * 1000)\n}\n\nmodule.exports = addSeconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_seconds/index.js","var addMonths = require('../add_months/index.js')\n\n/**\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @returns {Date} the new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nfunction addYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMonths(dirtyDate, amount * 12)\n}\n\nmodule.exports = addYears\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/add_years/index.js","var getISOYear = require('../get_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nfunction differenceInCalendarISOYears (dirtyDateLeft, dirtyDateRight) {\n return getISOYear(dirtyDateLeft) - getISOYear(dirtyDateRight)\n}\n\nmodule.exports = differenceInCalendarISOYears\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_calendar_iso_years/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nfunction differenceInCalendarMonths (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth()\n\n return yearDiff * 12 + monthDiff\n}\n\nmodule.exports = differenceInCalendarMonths\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_calendar_months/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nfunction getQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var quarter = Math.floor(date.getMonth() / 3) + 1\n return quarter\n}\n\nmodule.exports = getQuarter\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_quarter/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nfunction differenceInCalendarYears (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n return dateLeft.getFullYear() - dateRight.getFullYear()\n}\n\nmodule.exports = differenceInCalendarYears\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_calendar_years/index.js","var parse = require('../parse/index.js')\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js')\nvar compareAsc = require('../compare_asc/index.js')\n\n/**\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full days between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full days\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n */\nfunction differenceInDays (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight))\n dateLeft.setDate(dateLeft.getDate() - sign * difference)\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastDayNotFull)\n}\n\nmodule.exports = differenceInDays\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_days/index.js","var addISOYears = require('../add_iso_years/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nfunction subISOYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addISOYears(dirtyDate, -amount)\n}\n\nmodule.exports = subISOYears\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_iso_years/index.js","var compareDesc = require('../compare_desc/index.js')\nvar parse = require('../parse/index.js')\nvar differenceInSeconds = require('../difference_in_seconds/index.js')\nvar differenceInMonths = require('../difference_in_months/index.js')\nvar enLocale = require('../locale/en/index.js')\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_TWO_MONTHS = 86400\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date|String|Number} date - the other date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = distanceInWords(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 1)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = distanceInWords(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = distanceInWords(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWords(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nfunction distanceInWords (dirtyDateToCompare, dirtyDate, dirtyOptions) {\n var options = dirtyOptions || {}\n\n var comparison = compareDesc(dirtyDateToCompare, dirtyDate)\n\n var locale = options.locale\n var localize = enLocale.distanceInWords.localize\n if (locale && locale.distanceInWords && locale.distanceInWords.localize) {\n localize = locale.distanceInWords.localize\n }\n\n var localizeOptions = {\n addSuffix: Boolean(options.addSuffix),\n comparison: comparison\n }\n\n var dateLeft, dateRight\n if (comparison > 0) {\n dateLeft = parse(dirtyDateToCompare)\n dateRight = parse(dirtyDate)\n } else {\n dateLeft = parse(dirtyDate)\n dateRight = parse(dirtyDateToCompare)\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft)\n var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset()\n var minutes = Math.round(seconds / 60) - offset\n var months\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return localize('lessThanXSeconds', 5, localizeOptions)\n } else if (seconds < 10) {\n return localize('lessThanXSeconds', 10, localizeOptions)\n } else if (seconds < 20) {\n return localize('lessThanXSeconds', 20, localizeOptions)\n } else if (seconds < 40) {\n return localize('halfAMinute', null, localizeOptions)\n } else if (seconds < 60) {\n return localize('lessThanXMinutes', 1, localizeOptions)\n } else {\n return localize('xMinutes', 1, localizeOptions)\n }\n } else {\n if (minutes === 0) {\n return localize('lessThanXMinutes', 1, localizeOptions)\n } else {\n return localize('xMinutes', minutes, localizeOptions)\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return localize('xMinutes', minutes, localizeOptions)\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return localize('aboutXHours', 1, localizeOptions)\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60)\n return localize('aboutXHours', hours, localizeOptions)\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return localize('xDays', 1, localizeOptions)\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY)\n return localize('xDays', days, localizeOptions)\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH)\n return localize('aboutXMonths', months, localizeOptions)\n }\n\n months = differenceInMonths(dateRight, dateLeft)\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)\n return localize('xMonths', nearestMonth, localizeOptions)\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12\n var years = Math.floor(months / 12)\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return localize('aboutXYears', years, localizeOptions)\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return localize('overXYears', years, localizeOptions)\n\n // N years 9 months up to N year 12 months\n } else {\n return localize('almostXYears', years + 1, localizeOptions)\n }\n }\n}\n\nmodule.exports = distanceInWords\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/distance_in_words/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n\n var date = parse(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setDate(date.getDate() + diff)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_week/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nfunction endOfMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_month/index.js","var parse = require('../parse/index.js')\nvar startOfYear = require('../start_of_year/index.js')\nvar differenceInCalendarDays = require('../difference_in_calendar_days/index.js')\n\n/**\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nfunction getDayOfYear (dirtyDate) {\n var date = parse(dirtyDate)\n var diff = differenceInCalendarDays(date, startOfYear(date))\n var dayOfYear = diff + 1\n return dayOfYear\n}\n\nmodule.exports = getDayOfYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_day_of_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nfunction startOfYear (dirtyDate) {\n var cleanDate = parse(dirtyDate)\n var date = new Date(0)\n date.setFullYear(cleanDate.getFullYear(), 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_year/index.js","var isDate = require('../is_date/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {Date} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} argument must be an instance of Date\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid (dirtyDate) {\n if (isDate(dirtyDate)) {\n return !isNaN(dirtyDate)\n } else {\n throw new TypeError(toString.call(dirtyDate) + ' is not an instance of Date')\n }\n}\n\nmodule.exports = isValid\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_valid/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nfunction isLeapYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0\n}\n\nmodule.exports = isLeapYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_leap_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nfunction getISODay (dirtyDate) {\n var date = parse(dirtyDate)\n var day = date.getDay()\n\n if (day === 0) {\n day = 7\n }\n\n return day\n}\n\nmodule.exports = getISODay\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_iso_day/index.js","var startOfHour = require('../start_of_hour/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 6, 30)\n * )\n * //=> true\n */\nfunction isSameHour (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft)\n var dateRightStartOfHour = startOfHour(dirtyDateRight)\n\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime()\n}\n\nmodule.exports = isSameHour\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_hour/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of an hour\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nfunction startOfHour (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMinutes(0, 0, 0)\n return date\n}\n\nmodule.exports = startOfHour\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_hour/index.js","var isSameWeek = require('../is_same_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(\n * new Date(2014, 8, 1),\n * new Date(2014, 8, 7)\n * )\n * //=> true\n */\nfunction isSameISOWeek (dirtyDateLeft, dirtyDateRight) {\n return isSameWeek(dirtyDateLeft, dirtyDateRight, {weekStartsOn: 1})\n}\n\nmodule.exports = isSameISOWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_iso_week/index.js","var startOfISOYear = require('../start_of_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOYear(\n * new Date(2003, 11, 29),\n * new Date(2005, 0, 2)\n * )\n * //=> true\n */\nfunction isSameISOYear (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfYear = startOfISOYear(dirtyDateLeft)\n var dateRightStartOfYear = startOfISOYear(dirtyDateRight)\n\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime()\n}\n\nmodule.exports = isSameISOYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_iso_year/index.js","var startOfMinute = require('../start_of_minute/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\nfunction isSameMinute (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft)\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight)\n\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime()\n}\n\nmodule.exports = isSameMinute\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_minute/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a minute\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nfunction startOfMinute (dirtyDate) {\n var date = parse(dirtyDate)\n date.setSeconds(0, 0)\n return date\n}\n\nmodule.exports = startOfMinute\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_minute/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameMonth (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getFullYear() === dateRight.getFullYear() &&\n dateLeft.getMonth() === dateRight.getMonth()\n}\n\nmodule.exports = isSameMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_month/index.js","var startOfQuarter = require('../start_of_quarter/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(\n * new Date(2014, 0, 1),\n * new Date(2014, 2, 8)\n * )\n * //=> true\n */\nfunction isSameQuarter (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft)\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight)\n\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime()\n}\n\nmodule.exports = isSameQuarter\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_quarter/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nfunction startOfQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3\n date.setMonth(month, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfQuarter\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_quarter/index.js","var startOfSecond = require('../start_of_second/index.js')\n\n/**\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\nfunction isSameSecond (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft)\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight)\n\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime()\n}\n\nmodule.exports = isSameSecond\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_second/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a second\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nfunction startOfSecond (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMilliseconds(0)\n return date\n}\n\nmodule.exports = startOfSecond\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_second/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameYear (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n return dateLeft.getFullYear() === dateRight.getFullYear()\n}\n\nmodule.exports = isSameYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the last day of a week\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction lastDayOfWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n\n var date = parse(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setHours(0, 0, 0, 0)\n date.setDate(date.getDate() + diff)\n return date\n}\n\nmodule.exports = lastDayOfWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/last_day_of_week/index.js","var parse = require('../parse/index.js')\nvar getDaysInMonth = require('../get_days_in_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month setted\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nfunction setMonth (dirtyDate, dirtyMonth) {\n var date = parse(dirtyDate)\n var month = Number(dirtyMonth)\n var year = date.getFullYear()\n var day = date.getDate()\n\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(year, month, 15)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth))\n return date\n}\n\nmodule.exports = setMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_month/index.js","import { createImageUrl } from '@nrk/serum-imagecrop-utils';\n\nexport var IMAGE_WIDTHS = [320, 450, 650, 768, 900, 1280, 1600, 1920, 2400];\n\nexport function createResponsiveSrcSet(opts) {\n var id = opts.id,\n ratio = opts.ratio,\n quality = opts.quality;\n\n\n return IMAGE_WIDTHS.map(function (width) {\n var imageUrl = createImageUrl({ id: id, width: width, ratio: ratio, quality: quality });\n return imageUrl + ' ' + width + 'w';\n }).join(', ');\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/serum/helpers.js","// @flow @jsx h\n\nimport { bem } from '@nrk/dh-utils'\nimport { h } from 'preact'\nimport style from './index.css'\n\ntype Props = {\n className?: string,\n position: 'top' | 'bottom'\n}\n\nfunction Skew (props: Props) {\n const { position } = props\n\n const className = `${bem(style.skew, position)}${\n props.className ? ` ${props.className}` : ''\n }`\n\n let polygon\n\n switch (position) {\n case 'top':\n polygon = \n break\n\n case 'bottom':\n polygon = \n break\n }\n\n return (\n \n )\n}\n\nexport default Skew\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/Skew/index.js","import 'intersection-observer'\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/client.polyfill.js","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n\n(function(window, document) {\n'use strict';\n\n\n// Exits early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observering a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n this.intersectionRatio = intersectionArea / targetArea;\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections();\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibilty state is visible.\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its executiong, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n/**\n * Checks to see if a parent element contains a child elemnt (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}(window, document));\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/intersection-observer/intersection-observer.js","// @jsx h\n\n/* global __HOT__ */\n\nimport { createUniqueId, toArray } from '@nrk/dh-utils'\nimport { testPositionSticky } from '@nrk/feature-tests'\nimport domready from 'domready'\nimport { sendEvent } from 'google-analytics'\nimport { h, render } from 'preact'\n\nimport '@nrk/dh-feature-components/dist/module/Figure/index.css'\nimport '@nrk/dh-feature-components/dist/module/Paragraph/index.css'\nimport '@nrk/dh-feature-components/dist/module/PullQuote/index.css'\nimport '@nrk/dh-feature-components/dist/module/Slideshow/index.css'\nimport '@nrk/dh-feature-components/dist/module/video/ResponsiveVideo/index.css'\nimport '@nrk/dh-feature-components/dist/module/video/SmartVideo/index.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/Scrubber.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/TogglePlayButton.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/ToggleMuteButton.css'\nimport '@nrk/dh-feature-components/dist/module/video/VideoPlayer/index.css'\nimport style from './client.css'\n\nwindow[style.root] = window[style.root] || {}\n\nfunction init () {\n findElements().forEach(el => {\n el.id = createUniqueId()\n window[style.root][el.id] = true\n\n cutTheMustard(hasSupport => {\n if (hasSupport) {\n // Tell CSS that JS is supported\n el.className = el.className.replace('root--noJs', 'root--js')\n\n // Extract preloaded state sent from server\n const preloadedState = JSON.parse(\n el.getAttribute('data-preloaded-state')\n )\n\n // ... and render with the exact same props\n renderArticle(el, preloadedState)\n\n // Enable webpack hot-reloading\n if (__HOT__) {\n // Reload and re-render React application\n module.hot.accept('./client', () => {\n renderArticle(el, preloadedState)\n })\n }\n } else {\n console &&\n console.warn &&\n console.warn(\n 'Bruker du en gammel nettleser? Oppgrader til Edge, Chrome, Safari, Firefox eller likende.'\n )\n }\n })\n })\n}\n\nfunction cutTheMustard (callbackFn) {\n return testPositionSticky(callbackFn)\n}\n\nfunction handleAnalyticsEvent (analyticsEvent = {}) {\n if (typeof analyticsEvent.action === 'string') {\n sendEvent({\n category: 'dh-kultur-spesial-hnio',\n action: analyticsEvent.action,\n label: 'Å jobbe i en operafabrikk – Spesial'\n })\n }\n}\n\nfunction renderArticle (el, props) {\n const Article = require('./components/Article').default\n render(\n
,\n el,\n el.firstChild\n )\n}\n\nfunction findElements () {\n return toArray(document.getElementsByClassName(style.root)).filter(\n el => !isInitialized(el)\n )\n}\n\nfunction isInitialized (el) {\n return el.id && window[style.root][el.id]\n}\n\ndomready(init)\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/client.js","export function toArray(nodeList) {\n return [].slice.call(nodeList);\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/array.js","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction toStrings(object) {\n return Object.keys(object).filter(function (key) {\n return object[key];\n });\n}\n\nexport default (function (blockName) {\n for (var _len = arguments.length, modifiers = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n modifiers[_key - 1] = arguments[_key];\n }\n\n var strings = modifiers.filter(function (modifier) {\n return typeof modifier === 'string';\n });\n var objects = modifiers.filter(function (modifier) {\n return typeof modifier === 'object';\n });\n\n var objectString = objects.map(function (object) {\n return toStrings(object);\n }).reduce(function (a, b) {\n return [].concat(_toConsumableArray(a), _toConsumableArray(b));\n }, []);\n\n return [blockName].concat(strings.map(function (modifier) {\n return blockName + '--' + modifier;\n })).concat(objectString.map(function (modifier) {\n return blockName + '--' + modifier;\n })).join(' ');\n});\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/bem.js","export function getScrollLeft() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageXOffset || document.documentElement && document.documentElement.scrollLeft || 0;\n}\n\nexport function getScrollTop() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageYOffset || document.documentElement && document.documentElement.scrollTop || 0;\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/scroll.js","export function createUniqueId() {\n var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n return '' + prefix + Math.random().toString(36).substr(2, len - prefix.length);\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/string.js","function testJs(callback) {\n callback(true);\n}\n\nfunction testJs$1(callback) {\n var el = document.createElement('img');\n\n callback(el.style.objectFit !== undefined);\n}\n\nfunction testPositionSticky(callback) {\n var el = document.createElement('a');\n\n el.style.cssText = 'position: sticky; position: -webkit-sticky; position: -ms-sticky;';\n\n callback(el.style.position.indexOf('sticky') !== -1);\n}\n\nvar videoAutoPlayCache = null;\n\nfunction testVideoAutoPlay(callback) {\n if (typeof window === 'undefined') {\n return callback(false);\n }\n\n if (videoAutoPlayCache !== null) {\n return callback(videoAutoPlayCache);\n }\n\n var videoElm = document.createElement('video');\n\n var isPlaying = false;\n\n videoElm.setAttribute('autoplay', '');\n videoElm.setAttribute('muted', '');\n videoElm.setAttribute('webkit-playsinline', 'webkit-playsinline');\n videoElm.setAttribute('playsinline', 'playsinline');\n\n try {\n if (videoElm.canPlayType('video/ogg')) {\n videoElm.src = 'data:video/ogg;base64,T2dnUwACAAAAAAAAAABmnCATAAAAAHDEixYBKoB0aGVvcmEDAgEAAQABAAAQAAAQAAAAAAAFAAAAAQAAAAAAAAAAAGIAYE9nZ1MAAAAAAAAAAAAAZpwgEwEAAAACrA7TDlj///////////////+QgXRoZW9yYSsAAABYaXBoLk9yZyBsaWJ0aGVvcmEgMS4xIDIwMDkwODIyIChUaHVzbmVsZGEpAQAAABoAAABFTkNPREVSPWZmbXBlZzJ0aGVvcmEtMC4yOYJ0aGVvcmG+zSj3uc1rGLWpSUoQc5zmMYxSlKQhCDGMYhCEIQhAAAAAAAAAAAAAEW2uU2eSyPxWEvx4OVts5ir1aKtUKBMpJFoQ/nk5m41mUwl4slUpk4kkghkIfDwdjgajQYC8VioUCQRiIQh8PBwMhgLBQIg4FRba5TZ5LI/FYS/Hg5W2zmKvVoq1QoEykkWhD+eTmbjWZTCXiyVSmTiSSCGQh8PB2OBqNBgLxWKhQJBGIhCHw8HAyGAsFAiDgUCw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDAwPEhQUFQ0NDhESFRUUDg4PEhQVFRUOEBETFBUVFRARFBUVFRUVEhMUFRUVFRUUFRUVFRUVFRUVFRUVFRUVEAwLEBQZGxwNDQ4SFRwcGw4NEBQZHBwcDhATFhsdHRwRExkcHB4eHRQYGxwdHh4dGxwdHR4eHh4dHR0dHh4eHRALChAYKDM9DAwOExo6PDcODRAYKDlFOA4RFh0zV1A+EhYlOkRtZ00YIzdAUWhxXDFATldneXhlSFxfYnBkZ2MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEhIVGRoaGhoSFBYaGhoaGhUWGRoaGhoaGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhESFh8kJCQkEhQYIiQkJCQWGCEkJCQkJB8iJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQREhgvY2NjYxIVGkJjY2NjGBo4Y2NjY2MvQmNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRISEhUXGBkbEhIVFxgZGxwSFRcYGRscHRUXGBkbHB0dFxgZGxwdHR0YGRscHR0dHhkbHB0dHR4eGxwdHR0eHh4REREUFxocIBERFBcaHCAiERQXGhwgIiUUFxocICIlJRcaHCAiJSUlGhwgIiUlJSkcICIlJSUpKiAiJSUlKSoqEBAQFBgcICgQEBQYHCAoMBAUGBwgKDBAFBgcICgwQEAYHCAoMEBAQBwgKDBAQEBgICgwQEBAYIAoMEBAQGCAgAfF5cdH1e3Ow/L66wGmYnfIUbwdUTe3LMRbqON8B+5RJEvcGxkvrVUjTMrsXYhAnIwe0dTJfOYbWrDYyqUrz7dw/JO4hpmV2LsQQvkUeGq1BsZLx+cu5iV0e0eScJ91VIQYrmqfdVSK7GgjOU0oPaPOu5IcDK1mNvnD+K8LwS87f8Jx2mHtHnUkTGAurWZlNQa74ZLSFH9oF6FPGxzLsjQO5Qe0edcpttd7BXBSqMCL4k/4tFrHIPuEQ7m1/uIWkbDMWVoDdOSuRQ9286kvVUlQjzOE6VrNguN4oRXYGkgcnih7t13/9kxvLYKQezwLTrO44sVmMPgMqORo1E0sm1/9SludkcWHwfJwTSybR4LeAz6ugWVgRaY8mV/9SluQmtHrzsBtRF/wPY+X0JuYTs+ltgrXAmlk10xQHmTu9VSIAk1+vcvU4ml2oNzrNhEtQ3CysNP8UeR35wqpKUBdGdZMSjX4WVi8nJpdpHnbhzEIdx7mwf6W1FKAiucMXrWUWVjyRf23chNtR9mIzDoT/6ZLYailAjhFlZuvPtSeZ+2oREubDoWmT3TguY+JHPdRVSLKxfKH3vgNqJ/9emeEYikGXDFNzaLjvTeGAL61mogOoeG3y6oU4rW55ydoj0lUTSR/mmRhPmF86uwIfzp3FtiufQCmppaHDlGE0r2iTzXIw3zBq5hvaTldjG4CPb9wdxAme0SyedVKczJ9AtYbgPOzYKJvZZImsN7ecrxWZg5dR6ZLj/j4qpWsIA+vYwE+Tca9ounMIsrXMB4Stiib2SPQtZv+FVIpfEbzv8ncZoLBXc3YBqTG1HsskTTotZOYTG+oVUjLk6zhP8bg4RhMUNtfZdO7FdpBuXzhJ5Fh8IKlJG7wtD9ik8rWOJxy6iQ3NwzBpQ219mlyv+FLicYs2iJGSE0u2txzed++D61ZWCiHD/cZdQVCqkO2gJpdpNaObhnDfAPrT89RxdWFZ5hO3MseBSIlANppdZNIV/Rwe5eLTDvkfWKzFnH+QJ7m9QWV1KdwnuIwTNtZdJMoXBf74OhRnh2t+OTGL+AVUnIkyYY+QG7g9itHXyF3OIygG2s2kud679ZWKqSFa9n3IHD6MeLv1lZ0XyduRhiDRtrNnKoyiFVLcBm0ba5Yy3fQkDh4XsFE34isVpOzpa9nR8iCpS4HoxG2rJpnRhf3YboVa1PcRouh5LIJv/uQcPNd095ickTaiGBnWLKVWRc0OnYTSyex/n2FofEPnDG8y3PztHrzOLK1xo6RAml2k9owKajOC0Wr4D5x+3nA0UEhK2m198wuBHF3zlWWVKWLN1CHzLClUfuoYBcx4b1llpeBKmbayaR58njtE9onD66lUcsg0Spm2snsb+8HaJRn4dYcLbCuBuYwziB8/5U1C1DOOz2gZjSZtrLJk6vrLF3hwY4Io9xuT/ruUFRSBkNtUzTOWhjh26irLEPx4jPZL3Fo3QrReoGTTM21xYTT9oFdhTUIvjqTkfkvt0bzgVUjq/hOYY8j60IaO/0AzRBtqkTS6R5ellZd5uKdzzhb8BFlDdAcrwkE0rbXTOPB+7Y0FlZO96qFL4Ykg21StJs8qIW7h16H5hGiv8V2Cflau7QVDepTAHa6Lgt6feiEvJDM21StJsmOH/hynURrKxvUpQ8BH0JF7BiyG2qZpnL/7AOU66gt+reLEXY8pVOCQvSsBtqZTNM8bk9ohRcwD18o/WVkbvrceVKRb9I59IEKysjBeTMmmbA21xu/6iHadLRxuIzkLpi8wZYmmbbWi32RVAUjruxWlJ//iFxE38FI9hNKOoCdhwf5fDe4xZ81lgREhK2m1j78vW1CqkuMu/AjBNK210kzRUX/B+69cMMUG5bYrIeZxVSEZISmkzbXOi9yxwIfPgdsov7R71xuJ7rFcACjG/9PzApqFq7wEgzNJm2suWESPuwrQvejj7cbnQxMkxpm21lUYJL0fKmogPPqywn7e3FvB/FCNxPJ85iVUkCE9/tLKx31G4CgNtWTTPFhMvlu8G4/TrgaZttTChljfNJGgOT2X6EqpETy2tYd9cCBI4lIXJ1/3uVUllZEJz4baqGF64yxaZ+zPLYwde8Uqn1oKANtUrSaTOPHkhvuQP3bBlEJ/LFe4pqQOHUI8T8q7AXx3fLVBgSCVpMba55YxN3rv8U1Dv51bAPSOLlZWebkL8vSMGI21lJmmeVxPRwFlZF1CpqCN8uLwymaZyjbXHCRytogPN3o/n74CNykfT+qqRv5AQlHcRxYrC5KvGmbbUwmZY/29BvF6C1/93x4WVglXDLFpmbapmF89HKTogRwqqSlGbu+oiAkcWFbklC6Zhf+NtTLFpn8oWz+HsNRVSgIxZWON+yVyJlE5tq/+GWLTMutYX9ekTySEQPLVNQQ3OfycwJBM0zNtZcse7CvcKI0V/zh16Dr9OSA21MpmmcrHC+6pTAPHPwoit3LHHqs7jhFNRD6W8+EBGoSEoaZttTCZljfduH/fFisn+dRBGAZYtMzbVMwvul/T/crK1NQh8gN0SRRa9cOux6clC0/mDLFpmbarmF8/e6CopeOLCNW6S/IUUg3jJIYiAcDoMcGeRbOvuTPjXR/tyo79LK3kqqkbxkkMRAOB0GODPItnX3Jnxro/25Ud+llbyVVSN4ySGIgHA6DHBnkWzr7kz410f7cqO/Syt5KqpFVJwn6gBEvBM0zNtZcpGOEPiysW8vvRd2R0f7gtjhqUvXL+gWVwHm4XJDBiMpmmZtrLfPwd/IugP5+fKVSysH1EXreFAcEhelGmbbUmZY4Xdo1vQWVnK19P4RuEnbf0gQnR+lDCZlivNM22t1ESmopPIgfT0duOfQrsjgG4tPxli0zJmF5trdL1JDUIUT1ZXSqQDeR4B8mX3TrRro/2McGeUvLtwo6jIEKMkCUXWsLyZROd9P/rFYNtXPBli0z398iVUlVKAjFlY437JXImUTm2r/4ZYtMy61hf16RPJIU9nZ1MABAwAAAAAAAAAZpwgEwIAAABhp658BScAAAAAAADnUFBQXIDGXLhwtttNHDhw5OcpQRMETBEwRPduylKVB0HRdF0A';\n } else if (videoElm.canPlayType('video/mp4')) {\n videoElm.src = 'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAs1tZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0OCByMjYwMSBhMGNkN2QzIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNSAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTEgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEwIHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAD2WIhAA3//728P4FNjuZQQAAAu5tb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAZAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACGHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAgAAAAIAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAGQAAAAAAAEAAAAAAZBtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAACgAAAAEAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAE7bWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAA+3N0YmwAAACXc3RzZAAAAAAAAAABAAAAh2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgACAEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwFkAAr/4QAYZ2QACqzZX4iIhAAAAwAEAAADAFA8SJZYAQAGaOvjyyLAAAAAGHN0dHMAAAAAAAAAAQAAAAEAAAQAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAAsUAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU2LjQwLjEwMQ==';\n } else {\n return callback(false);\n }\n } catch (_) {\n return callback(false);\n }\n\n videoElm.load();\n videoElm.play();\n\n videoElm.oncanplay = function () {\n videoAutoPlayCache = isPlaying;\n callback(videoAutoPlayCache);\n };\n\n videoElm.onplay = function () {\n isPlaying = true;\n };\n}\n\nvar index = { testJs: testJs, testObjectFit: testJs$1, testPositionSticky: testPositionSticky, testVideoAutoPlay: testVideoAutoPlay };\n\nexport default index;\nexport { testJs, testJs$1 as testObjectFit, testPositionSticky, testVideoAutoPlay };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/feature-tests/dist/feature-tests.module.js","/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n */\n!function (name, definition) {\n\n if (typeof module != 'undefined') module.exports = definition()\n else if (typeof define == 'function' && typeof define.amd == 'object') define(definition)\n else this[name] = definition()\n\n}('domready', function () {\n\n var fns = [], listener\n , doc = document\n , hack = doc.documentElement.doScroll\n , domContentLoaded = 'DOMContentLoaded'\n , loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState)\n\n\n if (!loaded)\n doc.addEventListener(domContentLoaded, listener = function () {\n doc.removeEventListener(domContentLoaded, listener)\n loaded = 1\n while (listener = fns.shift()) listener()\n })\n\n return function (fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn)\n }\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/domready/ready.js","export function sendEvent (event) {\n if (window.ga) {\n window.ga('send', 'event', event.category, event.action, event.label)\n } else {\n if (typeof console !== 'undefined') {\n console.log('ga.sendEvent', JSON.stringify(event))\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/google-analytics.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"dh-kult-hnio-root\",\"root--js\":\"dh-kult-hnio-root--js\",\"root--noJs\":\"dh-kult-hnio-root--noJs\",\"saksuniversContainer\":\"dh-kult-hnio-saksuniversContainer\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/v1/client.css\n// module id = 91\n// module chunks = 0","// @flow @jsx h\n\nimport maxViewportObservable from '@nrk/max-viewport-observable'\nimport { format } from 'date-fns'\nimport { Component, h } from 'preact'\nimport Header from './Header'\nimport Content from './Content'\nimport style from './index.css'\n\nimport type { Props, State } from './types'\n\nclass Article extends Component {\n viewport$: any\n viewportSubscription: any\n\n constructor () {\n super()\n\n this.state = {\n muted: true,\n viewport: {\n width: -1,\n height: -1\n }\n }\n }\n\n componentDidMount () {\n this.viewport$ = maxViewportObservable.create({\n root: window\n })\n\n this.viewportSubscription = this.viewport$.subscribe({\n next: viewport => {\n this.setState({ viewport })\n }\n })\n }\n\n componentWillUnmount () {\n this.viewportSubscription.unsubscribe()\n }\n\n handleUserToggleMute = () => {\n this.setState({ muted: !this.state.muted })\n }\n\n render () {\n const { mediaBaseUrl, onAnalyticsEvent } = this.props\n const { publishedAt, sections } = this.props.data\n const { muted, viewport } = this.state\n\n return (\n
\n
\n\n \n\n
\n Publisert {format(publishedAt, 'DD.MM.YYYY')}, kl.{' '}\n {format(publishedAt, 'HH:mm')}\n
\n
\n )\n }\n}\n\nexport default Article\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/Article/index.js","function create() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var root = opts.root;\n\n\n var getRect = function getRect() {\n if (root instanceof Element) {\n var rect = root.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height\n };\n }\n\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n };\n\n var subscribe = function subscribe(observer) {\n var isDynamicViewport = false;\n var isTouching = false;\n var rect = { width: -1, height: -1 };\n\n var listeners = {\n orientationchange: function orientationchange() {\n rect = { width: -1, height: -1 };\n },\n resize: function resize() {\n var prevRect = rect;\n\n rect = getRect();\n\n if (isDynamicViewport && rect.height < prevRect.height) {\n rect.height = prevRect.height;\n }\n\n observer.next(rect);\n },\n scroll: function scroll() {\n if (isTouching) {\n isDynamicViewport = true;\n window.removeEventListener('scroll', listeners.scroll);\n }\n },\n touchstart: function touchstart() {\n isTouching = true;\n },\n touchend: function touchend() {\n isTouching = false;\n }\n };\n\n window.addEventListener('orientationchange', listeners.orientationchange);\n window.addEventListener('resize', listeners.resize);\n window.addEventListener('scroll', listeners.scroll);\n window.addEventListener('touchstart', listeners.touchstart);\n window.addEventListener('touchend', listeners.touchend);\n\n // Trigger initial \"resize\"\n listeners.resize();\n\n return {\n unsubscribe: function unsubscribe() {\n window.removeEventListener('orientationchange', listeners.orientationchange);\n window.removeEventListener('resize', listeners.resize);\n window.removeEventListener('scroll', listeners.scroll);\n window.removeEventListener('touchstart', listeners.touchstart);\n window.removeEventListener('touchend', listeners.touchend);\n }\n };\n };\n\n return { subscribe: subscribe };\n}\n\nvar index = { create: create };\n\nexport { create };\nexport default index;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/max-viewport-observable/dist/max-viewport-observable.module.js","module.exports = {\n addDays: require('./add_days/index.js'),\n addHours: require('./add_hours/index.js'),\n addISOYears: require('./add_iso_years/index.js'),\n addMilliseconds: require('./add_milliseconds/index.js'),\n addMinutes: require('./add_minutes/index.js'),\n addMonths: require('./add_months/index.js'),\n addQuarters: require('./add_quarters/index.js'),\n addSeconds: require('./add_seconds/index.js'),\n addWeeks: require('./add_weeks/index.js'),\n addYears: require('./add_years/index.js'),\n areRangesOverlapping: require('./are_ranges_overlapping/index.js'),\n closestIndexTo: require('./closest_index_to/index.js'),\n closestTo: require('./closest_to/index.js'),\n compareAsc: require('./compare_asc/index.js'),\n compareDesc: require('./compare_desc/index.js'),\n differenceInCalendarDays: require('./difference_in_calendar_days/index.js'),\n differenceInCalendarISOWeeks: require('./difference_in_calendar_iso_weeks/index.js'),\n differenceInCalendarISOYears: require('./difference_in_calendar_iso_years/index.js'),\n differenceInCalendarMonths: require('./difference_in_calendar_months/index.js'),\n differenceInCalendarQuarters: require('./difference_in_calendar_quarters/index.js'),\n differenceInCalendarWeeks: require('./difference_in_calendar_weeks/index.js'),\n differenceInCalendarYears: require('./difference_in_calendar_years/index.js'),\n differenceInDays: require('./difference_in_days/index.js'),\n differenceInHours: require('./difference_in_hours/index.js'),\n differenceInISOYears: require('./difference_in_iso_years/index.js'),\n differenceInMilliseconds: require('./difference_in_milliseconds/index.js'),\n differenceInMinutes: require('./difference_in_minutes/index.js'),\n differenceInMonths: require('./difference_in_months/index.js'),\n differenceInQuarters: require('./difference_in_quarters/index.js'),\n differenceInSeconds: require('./difference_in_seconds/index.js'),\n differenceInWeeks: require('./difference_in_weeks/index.js'),\n differenceInYears: require('./difference_in_years/index.js'),\n distanceInWords: require('./distance_in_words/index.js'),\n distanceInWordsStrict: require('./distance_in_words_strict/index.js'),\n distanceInWordsToNow: require('./distance_in_words_to_now/index.js'),\n eachDay: require('./each_day/index.js'),\n endOfDay: require('./end_of_day/index.js'),\n endOfHour: require('./end_of_hour/index.js'),\n endOfISOWeek: require('./end_of_iso_week/index.js'),\n endOfISOYear: require('./end_of_iso_year/index.js'),\n endOfMinute: require('./end_of_minute/index.js'),\n endOfMonth: require('./end_of_month/index.js'),\n endOfQuarter: require('./end_of_quarter/index.js'),\n endOfSecond: require('./end_of_second/index.js'),\n endOfToday: require('./end_of_today/index.js'),\n endOfTomorrow: require('./end_of_tomorrow/index.js'),\n endOfWeek: require('./end_of_week/index.js'),\n endOfYear: require('./end_of_year/index.js'),\n endOfYesterday: require('./end_of_yesterday/index.js'),\n format: require('./format/index.js'),\n getDate: require('./get_date/index.js'),\n getDay: require('./get_day/index.js'),\n getDayOfYear: require('./get_day_of_year/index.js'),\n getDaysInMonth: require('./get_days_in_month/index.js'),\n getDaysInYear: require('./get_days_in_year/index.js'),\n getHours: require('./get_hours/index.js'),\n getISODay: require('./get_iso_day/index.js'),\n getISOWeek: require('./get_iso_week/index.js'),\n getISOWeeksInYear: require('./get_iso_weeks_in_year/index.js'),\n getISOYear: require('./get_iso_year/index.js'),\n getMilliseconds: require('./get_milliseconds/index.js'),\n getMinutes: require('./get_minutes/index.js'),\n getMonth: require('./get_month/index.js'),\n getOverlappingDaysInRanges: require('./get_overlapping_days_in_ranges/index.js'),\n getQuarter: require('./get_quarter/index.js'),\n getSeconds: require('./get_seconds/index.js'),\n getTime: require('./get_time/index.js'),\n getYear: require('./get_year/index.js'),\n isAfter: require('./is_after/index.js'),\n isBefore: require('./is_before/index.js'),\n isDate: require('./is_date/index.js'),\n isEqual: require('./is_equal/index.js'),\n isFirstDayOfMonth: require('./is_first_day_of_month/index.js'),\n isFriday: require('./is_friday/index.js'),\n isFuture: require('./is_future/index.js'),\n isLastDayOfMonth: require('./is_last_day_of_month/index.js'),\n isLeapYear: require('./is_leap_year/index.js'),\n isMonday: require('./is_monday/index.js'),\n isPast: require('./is_past/index.js'),\n isSameDay: require('./is_same_day/index.js'),\n isSameHour: require('./is_same_hour/index.js'),\n isSameISOWeek: require('./is_same_iso_week/index.js'),\n isSameISOYear: require('./is_same_iso_year/index.js'),\n isSameMinute: require('./is_same_minute/index.js'),\n isSameMonth: require('./is_same_month/index.js'),\n isSameQuarter: require('./is_same_quarter/index.js'),\n isSameSecond: require('./is_same_second/index.js'),\n isSameWeek: require('./is_same_week/index.js'),\n isSameYear: require('./is_same_year/index.js'),\n isSaturday: require('./is_saturday/index.js'),\n isSunday: require('./is_sunday/index.js'),\n isThisHour: require('./is_this_hour/index.js'),\n isThisISOWeek: require('./is_this_iso_week/index.js'),\n isThisISOYear: require('./is_this_iso_year/index.js'),\n isThisMinute: require('./is_this_minute/index.js'),\n isThisMonth: require('./is_this_month/index.js'),\n isThisQuarter: require('./is_this_quarter/index.js'),\n isThisSecond: require('./is_this_second/index.js'),\n isThisWeek: require('./is_this_week/index.js'),\n isThisYear: require('./is_this_year/index.js'),\n isThursday: require('./is_thursday/index.js'),\n isToday: require('./is_today/index.js'),\n isTomorrow: require('./is_tomorrow/index.js'),\n isTuesday: require('./is_tuesday/index.js'),\n isValid: require('./is_valid/index.js'),\n isWednesday: require('./is_wednesday/index.js'),\n isWeekend: require('./is_weekend/index.js'),\n isWithinRange: require('./is_within_range/index.js'),\n isYesterday: require('./is_yesterday/index.js'),\n lastDayOfISOWeek: require('./last_day_of_iso_week/index.js'),\n lastDayOfISOYear: require('./last_day_of_iso_year/index.js'),\n lastDayOfMonth: require('./last_day_of_month/index.js'),\n lastDayOfQuarter: require('./last_day_of_quarter/index.js'),\n lastDayOfWeek: require('./last_day_of_week/index.js'),\n lastDayOfYear: require('./last_day_of_year/index.js'),\n max: require('./max/index.js'),\n min: require('./min/index.js'),\n parse: require('./parse/index.js'),\n setDate: require('./set_date/index.js'),\n setDay: require('./set_day/index.js'),\n setDayOfYear: require('./set_day_of_year/index.js'),\n setHours: require('./set_hours/index.js'),\n setISODay: require('./set_iso_day/index.js'),\n setISOWeek: require('./set_iso_week/index.js'),\n setISOYear: require('./set_iso_year/index.js'),\n setMilliseconds: require('./set_milliseconds/index.js'),\n setMinutes: require('./set_minutes/index.js'),\n setMonth: require('./set_month/index.js'),\n setQuarter: require('./set_quarter/index.js'),\n setSeconds: require('./set_seconds/index.js'),\n setYear: require('./set_year/index.js'),\n startOfDay: require('./start_of_day/index.js'),\n startOfHour: require('./start_of_hour/index.js'),\n startOfISOWeek: require('./start_of_iso_week/index.js'),\n startOfISOYear: require('./start_of_iso_year/index.js'),\n startOfMinute: require('./start_of_minute/index.js'),\n startOfMonth: require('./start_of_month/index.js'),\n startOfQuarter: require('./start_of_quarter/index.js'),\n startOfSecond: require('./start_of_second/index.js'),\n startOfToday: require('./start_of_today/index.js'),\n startOfTomorrow: require('./start_of_tomorrow/index.js'),\n startOfWeek: require('./start_of_week/index.js'),\n startOfYear: require('./start_of_year/index.js'),\n startOfYesterday: require('./start_of_yesterday/index.js'),\n subDays: require('./sub_days/index.js'),\n subHours: require('./sub_hours/index.js'),\n subISOYears: require('./sub_iso_years/index.js'),\n subMilliseconds: require('./sub_milliseconds/index.js'),\n subMinutes: require('./sub_minutes/index.js'),\n subMonths: require('./sub_months/index.js'),\n subQuarters: require('./sub_quarters/index.js'),\n subSeconds: require('./sub_seconds/index.js'),\n subWeeks: require('./sub_weeks/index.js'),\n subYears: require('./sub_years/index.js')\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Range Helpers\n * @summary Is the given date range overlapping with another date range?\n *\n * @description\n * Is the given date range overlapping with another date range?\n *\n * @param {Date|String|Number} initialRangeStartDate - the start of the initial range\n * @param {Date|String|Number} initialRangeEndDate - the end of the initial range\n * @param {Date|String|Number} comparedRangeStartDate - the start of the range to compare it with\n * @param {Date|String|Number} comparedRangeEndDate - the end of the range to compare it with\n * @returns {Boolean} whether the date ranges are overlapping\n * @throws {Error} startDate of a date range cannot be after its endDate\n *\n * @example\n * // For overlapping date ranges:\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping date ranges:\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 21), new Date(2014, 0, 22)\n * )\n * //=> false\n */\nfunction areRangesOverlapping (dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) {\n var initialStartTime = parse(dirtyInitialRangeStartDate).getTime()\n var initialEndTime = parse(dirtyInitialRangeEndDate).getTime()\n var comparedStartTime = parse(dirtyComparedRangeStartDate).getTime()\n var comparedEndTime = parse(dirtyComparedRangeEndDate).getTime()\n\n if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) {\n throw new Error('The start of the range cannot be after the end of the range')\n }\n\n return initialStartTime < comparedEndTime && comparedStartTime < initialEndTime\n}\n\nmodule.exports = areRangesOverlapping\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/are_ranges_overlapping/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} the second argument must be an instance of Array\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nfunction closestIndexTo (dirtyDateToCompare, dirtyDatesArray) {\n if (!(dirtyDatesArray instanceof Array)) {\n throw new TypeError(toString.call(dirtyDatesArray) + ' is not an instance of Array')\n }\n\n var dateToCompare = parse(dirtyDateToCompare)\n var timeToCompare = dateToCompare.getTime()\n\n var result\n var minDistance\n\n dirtyDatesArray.forEach(function (dirtyDate, index) {\n var currentDate = parse(dirtyDate)\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result === undefined || distance < minDistance) {\n result = index\n minDistance = distance\n }\n })\n\n return result\n}\n\nmodule.exports = closestIndexTo\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/closest_index_to/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date[]|String[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} the second argument must be an instance of Array\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nfunction closestTo (dirtyDateToCompare, dirtyDatesArray) {\n if (!(dirtyDatesArray instanceof Array)) {\n throw new TypeError(toString.call(dirtyDatesArray) + ' is not an instance of Array')\n }\n\n var dateToCompare = parse(dirtyDateToCompare)\n var timeToCompare = dateToCompare.getTime()\n\n var result\n var minDistance\n\n dirtyDatesArray.forEach(function (dirtyDate) {\n var currentDate = parse(dirtyDate)\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result === undefined || distance < minDistance) {\n result = currentDate\n minDistance = distance\n }\n })\n\n return result\n}\n\nmodule.exports = closestTo\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/closest_to/index.js","var startOfISOWeek = require('../start_of_iso_week/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nfunction differenceInCalendarISOWeeks (dirtyDateLeft, dirtyDateRight) {\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft)\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight)\n\n var timestampLeft = startOfISOWeekLeft.getTime() -\n startOfISOWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n var timestampRight = startOfISOWeekRight.getTime() -\n startOfISOWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n\nmodule.exports = differenceInCalendarISOWeeks\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_calendar_iso_weeks/index.js","var getQuarter = require('../get_quarter/index.js')\nvar parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nfunction differenceInCalendarQuarters (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight)\n\n return yearDiff * 4 + quarterDiff\n}\n\nmodule.exports = differenceInCalendarQuarters\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_calendar_quarters/index.js","var startOfWeek = require('../start_of_week/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the number of calendar weeks\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 2\n */\nfunction differenceInCalendarWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions)\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft = startOfWeekLeft.getTime() -\n startOfWeekLeft.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n var timestampRight = startOfWeekRight.getTime() -\n startOfWeekRight.getTimezoneOffset() * MILLISECONDS_IN_MINUTE\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n\nmodule.exports = differenceInCalendarWeeks\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_calendar_weeks/index.js","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js')\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nfunction differenceInHours (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_HOUR\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInHours\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_hours/index.js","var parse = require('../parse/index.js')\nvar differenceInCalendarISOYears = require('../difference_in_calendar_iso_years/index.js')\nvar compareAsc = require('../compare_asc/index.js')\nvar subISOYears = require('../sub_iso_years/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nfunction differenceInISOYears (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarISOYears(dateLeft, dateRight))\n dateLeft = subISOYears(dateLeft, sign * difference)\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOYearNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastISOYearNotFull)\n}\n\nmodule.exports = differenceInISOYears\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_iso_years/index.js","var differenceInMilliseconds = require('../difference_in_milliseconds/index.js')\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\nfunction differenceInMinutes (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / MILLISECONDS_IN_MINUTE\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInMinutes\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_minutes/index.js","var differenceInMonths = require('../difference_in_months/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nfunction differenceInQuarters (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInQuarters\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_quarters/index.js","var differenceInDays = require('../difference_in_days/index.js')\n\n/**\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 2\n */\nfunction differenceInWeeks (dirtyDateLeft, dirtyDateRight) {\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n\nmodule.exports = differenceInWeeks\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_weeks/index.js","var parse = require('../parse/index.js')\nvar differenceInCalendarYears = require('../difference_in_calendar_years/index.js')\nvar compareAsc = require('../compare_asc/index.js')\n\n/**\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 1\n */\nfunction differenceInYears (dirtyDateLeft, dirtyDateRight) {\n var dateLeft = parse(dirtyDateLeft)\n var dateRight = parse(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight))\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference)\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign\n return sign * (difference - isLastYearNotFull)\n}\n\nmodule.exports = differenceInYears\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/difference_in_years/index.js","function buildDistanceInWordsLocale () {\n var distanceInWordsLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n }\n\n function localize (token, count, options) {\n options = options || {}\n\n var result\n if (typeof distanceInWordsLocale[token] === 'string') {\n result = distanceInWordsLocale[token]\n } else if (count === 1) {\n result = distanceInWordsLocale[token].one\n } else {\n result = distanceInWordsLocale[token].other.replace('{{count}}', count)\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n }\n\n return {\n localize: localize\n }\n}\n\nmodule.exports = buildDistanceInWordsLocale\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/locale/en/build_distance_in_words_locale/index.js","var buildFormattingTokensRegExp = require('../../_lib/build_formatting_tokens_reg_exp/index.js')\n\nfunction buildFormatLocale () {\n // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n var months3char = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n var monthsFull = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n var weekdays2char = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\n var weekdays3char = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n var weekdaysFull = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n var meridiemUppercase = ['AM', 'PM']\n var meridiemLowercase = ['am', 'pm']\n var meridiemFull = ['a.m.', 'p.m.']\n\n var formatters = {\n // Month: Jan, Feb, ..., Dec\n 'MMM': function (date) {\n return months3char[date.getMonth()]\n },\n\n // Month: January, February, ..., December\n 'MMMM': function (date) {\n return monthsFull[date.getMonth()]\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': function (date) {\n return weekdays2char[date.getDay()]\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': function (date) {\n return weekdays3char[date.getDay()]\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': function (date) {\n return weekdaysFull[date.getDay()]\n },\n\n // AM, PM\n 'A': function (date) {\n return (date.getHours() / 12) >= 1 ? meridiemUppercase[1] : meridiemUppercase[0]\n },\n\n // am, pm\n 'a': function (date) {\n return (date.getHours() / 12) >= 1 ? meridiemLowercase[1] : meridiemLowercase[0]\n },\n\n // a.m., p.m.\n 'aa': function (date) {\n return (date.getHours() / 12) >= 1 ? meridiemFull[1] : meridiemFull[0]\n }\n }\n\n // Generate ordinal version of formatters: M -> Mo, D -> Do, etc.\n var ordinalFormatters = ['M', 'D', 'DDD', 'd', 'Q', 'W']\n ordinalFormatters.forEach(function (formatterToken) {\n formatters[formatterToken + 'o'] = function (date, formatters) {\n return ordinal(formatters[formatterToken](date))\n }\n })\n\n return {\n formatters: formatters,\n formattingTokensRegExp: buildFormattingTokensRegExp(formatters)\n }\n}\n\nfunction ordinal (number) {\n var rem100 = number % 100\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nmodule.exports = buildFormatLocale\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/locale/en/build_format_locale/index.js","var commonFormatterKeys = [\n 'M', 'MM', 'Q', 'D', 'DD', 'DDD', 'DDDD', 'd',\n 'E', 'W', 'WW', 'YY', 'YYYY', 'GG', 'GGGG',\n 'H', 'HH', 'h', 'hh', 'm', 'mm',\n 's', 'ss', 'S', 'SS', 'SSS',\n 'Z', 'ZZ', 'X', 'x'\n]\n\nfunction buildFormattingTokensRegExp (formatters) {\n var formatterKeys = []\n for (var key in formatters) {\n if (formatters.hasOwnProperty(key)) {\n formatterKeys.push(key)\n }\n }\n\n var formattingTokens = commonFormatterKeys\n .concat(formatterKeys)\n .sort()\n .reverse()\n var formattingTokensRegExp = new RegExp(\n '(\\\\[[^\\\\[]*\\\\])|(\\\\\\\\)?' + '(' + formattingTokens.join('|') + '|.)', 'g'\n )\n\n return formattingTokensRegExp\n}\n\nmodule.exports = buildFormattingTokensRegExp\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/locale/_lib/build_formatting_tokens_reg_exp/index.js","var compareDesc = require('../compare_desc/index.js')\nvar parse = require('../parse/index.js')\nvar differenceInSeconds = require('../difference_in_seconds/index.js')\nvar enLocale = require('../locale/en/index.js')\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_YEAR = 525600\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `distanceInWords`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Date|String|Number} date - the other date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'s'|'m'|'h'|'d'|'M'|'Y'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.partialMethod='floor'] - which way to round partial units\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = distanceInWordsStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = distanceInWordsStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = distanceInWordsStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {addSuffix: true}\n * )\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = distanceInWordsStrict(\n * new Date(2016, 0, 1),\n * new Date(2015, 0, 1),\n * {unit: 'm'}\n * )\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 28 January 2015, in months, rounded up?\n * var result = distanceInWordsStrict(\n * new Date(2015, 0, 28),\n * new Date(2015, 0, 1),\n * {unit: 'M', partialMethod: 'ceil'}\n * )\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWordsStrict(\n * new Date(2016, 7, 1),\n * new Date(2015, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nfunction distanceInWordsStrict (dirtyDateToCompare, dirtyDate, dirtyOptions) {\n var options = dirtyOptions || {}\n\n var comparison = compareDesc(dirtyDateToCompare, dirtyDate)\n\n var locale = options.locale\n var localize = enLocale.distanceInWords.localize\n if (locale && locale.distanceInWords && locale.distanceInWords.localize) {\n localize = locale.distanceInWords.localize\n }\n\n var localizeOptions = {\n addSuffix: Boolean(options.addSuffix),\n comparison: comparison\n }\n\n var dateLeft, dateRight\n if (comparison > 0) {\n dateLeft = parse(dirtyDateToCompare)\n dateRight = parse(dirtyDate)\n } else {\n dateLeft = parse(dirtyDate)\n dateRight = parse(dirtyDateToCompare)\n }\n\n var unit\n var mathPartial = Math[options.partialMethod ? String(options.partialMethod) : 'floor']\n var seconds = differenceInSeconds(dateRight, dateLeft)\n var offset = dateRight.getTimezoneOffset() - dateLeft.getTimezoneOffset()\n var minutes = mathPartial(seconds / 60) - offset\n var hours, days, months, years\n\n if (options.unit) {\n unit = String(options.unit)\n } else {\n if (minutes < 1) {\n unit = 's'\n } else if (minutes < 60) {\n unit = 'm'\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'h'\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'd'\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'M'\n } else {\n unit = 'Y'\n }\n }\n\n // 0 up to 60 seconds\n if (unit === 's') {\n return localize('xSeconds', seconds, localizeOptions)\n\n // 1 up to 60 mins\n } else if (unit === 'm') {\n return localize('xMinutes', minutes, localizeOptions)\n\n // 1 up to 24 hours\n } else if (unit === 'h') {\n hours = mathPartial(minutes / 60)\n return localize('xHours', hours, localizeOptions)\n\n // 1 up to 30 days\n } else if (unit === 'd') {\n days = mathPartial(minutes / MINUTES_IN_DAY)\n return localize('xDays', days, localizeOptions)\n\n // 1 up to 12 months\n } else if (unit === 'M') {\n months = mathPartial(minutes / MINUTES_IN_MONTH)\n return localize('xMonths', months, localizeOptions)\n\n // 1 year up to max Date\n } else if (unit === 'Y') {\n years = mathPartial(minutes / MINUTES_IN_YEAR)\n return localize('xYears', years, localizeOptions)\n }\n\n throw new Error('Unknown unit: ' + unit)\n}\n\nmodule.exports = distanceInWordsStrict\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/distance_in_words_strict/index.js","var distanceInWords = require('../distance_in_words/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|String|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if the second date is earlier or later than the first\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the distance in words\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = distanceInWordsToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = distanceInWordsToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = distanceInWordsToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = distanceInWordsToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nfunction distanceInWordsToNow (dirtyDate, dirtyOptions) {\n return distanceInWords(Date.now(), dirtyDate, dirtyOptions)\n}\n\nmodule.exports = distanceInWordsToNow\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/distance_in_words_to_now/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the array of dates within the specified range.\n *\n * @description\n * Return the array of dates within the specified range.\n *\n * @param {Date|String|Number} startDate - the first date\n * @param {Date|String|Number} endDate - the last date\n * @param {Number} [step=1] - the step between each day\n * @returns {Date[]} the array with starts of days from the day of startDate to the day of endDate\n * @throws {Error} startDate cannot be after endDate\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDay(\n * new Date(2014, 9, 6),\n * new Date(2014, 9, 10)\n * )\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nfunction eachDay (dirtyStartDate, dirtyEndDate, dirtyStep) {\n var startDate = parse(dirtyStartDate)\n var endDate = parse(dirtyEndDate)\n var step = dirtyStep !== undefined ? dirtyStep : 1\n\n var endTime = endDate.getTime()\n\n if (startDate.getTime() > endTime) {\n throw new Error('The first date cannot be after the second date')\n }\n\n var dates = []\n\n var currentDate = startDate\n currentDate.setHours(0, 0, 0, 0)\n\n while (currentDate.getTime() <= endTime) {\n dates.push(parse(currentDate))\n currentDate.setDate(currentDate.getDate() + step)\n }\n\n return dates\n}\n\nmodule.exports = eachDay\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/each_day/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an hour\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nfunction endOfHour (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMinutes(59, 59, 999)\n return date\n}\n\nmodule.exports = endOfHour\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_hour/index.js","var endOfWeek = require('../end_of_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfISOWeek (dirtyDate) {\n return endOfWeek(dirtyDate, {weekStartsOn: 1})\n}\n\nmodule.exports = endOfISOWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_iso_week/index.js","var getISOYear = require('../get_iso_year/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nfunction endOfISOYear (dirtyDate) {\n var year = getISOYear(dirtyDate)\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear)\n date.setMilliseconds(date.getMilliseconds() - 1)\n return date\n}\n\nmodule.exports = endOfISOYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_iso_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a minute\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nfunction endOfMinute (dirtyDate) {\n var date = parse(dirtyDate)\n date.setSeconds(59, 999)\n return date\n}\n\nmodule.exports = endOfMinute\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_minute/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a quarter\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nfunction endOfQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfQuarter\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_quarter/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a second\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nfunction endOfSecond (dirtyDate) {\n var date = parse(dirtyDate)\n date.setMilliseconds(999)\n return date\n}\n\nmodule.exports = endOfSecond\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_second/index.js","var endOfDay = require('../end_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the end of today.\n *\n * @description\n * Return the end of today.\n *\n * @returns {Date} the end of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfToday()\n * //=> Mon Oct 6 2014 23:59:59.999\n */\nfunction endOfToday () {\n return endOfDay(new Date())\n}\n\nmodule.exports = endOfToday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_today/index.js","/**\n * @category Day Helpers\n * @summary Return the end of tomorrow.\n *\n * @description\n * Return the end of tomorrow.\n *\n * @returns {Date} the end of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfTomorrow()\n * //=> Tue Oct 7 2014 23:59:59.999\n */\nfunction endOfTomorrow () {\n var now = new Date()\n var year = now.getFullYear()\n var month = now.getMonth()\n var day = now.getDate()\n\n var date = new Date(0)\n date.setFullYear(year, month, day + 1)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfTomorrow\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_tomorrow/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nfunction endOfYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_year/index.js","/**\n * @category Day Helpers\n * @summary Return the end of yesterday.\n *\n * @description\n * Return the end of yesterday.\n *\n * @returns {Date} the end of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = endOfYesterday()\n * //=> Sun Oct 5 2014 23:59:59.999\n */\nfunction endOfYesterday () {\n var now = new Date()\n var year = now.getFullYear()\n var month = now.getMonth()\n var day = now.getDate()\n\n var date = new Date(0)\n date.setFullYear(year, month, day - 1)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nmodule.exports = endOfYesterday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/end_of_yesterday/index.js","var getDayOfYear = require('../get_day_of_year/index.js')\nvar getISOWeek = require('../get_iso_week/index.js')\nvar getISOYear = require('../get_iso_year/index.js')\nvar parse = require('../parse/index.js')\nvar isValid = require('../is_valid/index.js')\nvar enLocale = require('../locale/en/index.js')\n\n/**\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format.\n *\n * Accepted tokens:\n * | Unit | Token | Result examples |\n * |-------------------------|-------|----------------------------------|\n * | Month | M | 1, 2, ..., 12 |\n * | | Mo | 1st, 2nd, ..., 12th |\n * | | MM | 01, 02, ..., 12 |\n * | | MMM | Jan, Feb, ..., Dec |\n * | | MMMM | January, February, ..., December |\n * | Quarter | Q | 1, 2, 3, 4 |\n * | | Qo | 1st, 2nd, 3rd, 4th |\n * | Day of month | D | 1, 2, ..., 31 |\n * | | Do | 1st, 2nd, ..., 31st |\n * | | DD | 01, 02, ..., 31 |\n * | Day of year | DDD | 1, 2, ..., 366 |\n * | | DDDo | 1st, 2nd, ..., 366th |\n * | | DDDD | 001, 002, ..., 366 |\n * | Day of week | d | 0, 1, ..., 6 |\n * | | do | 0th, 1st, ..., 6th |\n * | | dd | Su, Mo, ..., Sa |\n * | | ddd | Sun, Mon, ..., Sat |\n * | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | E | 1, 2, ..., 7 |\n * | ISO week | W | 1, 2, ..., 53 |\n * | | Wo | 1st, 2nd, ..., 53rd |\n * | | WW | 01, 02, ..., 53 |\n * | Year | YY | 00, 01, ..., 99 |\n * | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | GG | 00, 01, ..., 99 |\n * | | GGGG | 1900, 1901, ..., 2099 |\n * | AM/PM | A | AM, PM |\n * | | a | am, pm |\n * | | aa | a.m., p.m. |\n * | Hour | H | 0, 1, ... 23 |\n * | | HH | 00, 01, ... 23 |\n * | | h | 1, 2, ..., 12 |\n * | | hh | 01, 02, ..., 12 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | S | 0, 1, ..., 9 |\n * | 1/100 of second | SS | 00, 01, ..., 99 |\n * | Millisecond | SSS | 000, 001, ..., 999 |\n * | Timezone | Z | -01:00, +00:00, ... +12:00 |\n * | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | X | 512969520 |\n * | Milliseconds timestamp | x | 512969520900 |\n *\n * The characters wrapped in square brackets are escaped.\n *\n * The result may vary by locale.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} [format='YYYY-MM-DDTHH:mm:ss.SSSZ'] - the string of tokens\n * @param {Object} [options] - the object with options\n * @param {Object} [options.locale=enLocale] - the locale object\n * @returns {String} the formatted date string\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/DD/YYYY'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * var eoLocale = require('date-fns/locale/eo')\n * var result = format(\n * new Date(2014, 6, 2),\n * 'Do [de] MMMM YYYY',\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n */\nfunction format (dirtyDate, dirtyFormatStr, dirtyOptions) {\n var formatStr = dirtyFormatStr ? String(dirtyFormatStr) : 'YYYY-MM-DDTHH:mm:ss.SSSZ'\n var options = dirtyOptions || {}\n\n var locale = options.locale\n var localeFormatters = enLocale.format.formatters\n var formattingTokensRegExp = enLocale.format.formattingTokensRegExp\n if (locale && locale.format && locale.format.formatters) {\n localeFormatters = locale.format.formatters\n\n if (locale.format.formattingTokensRegExp) {\n formattingTokensRegExp = locale.format.formattingTokensRegExp\n }\n }\n\n var date = parse(dirtyDate)\n\n if (!isValid(date)) {\n return 'Invalid Date'\n }\n\n var formatFn = buildFormatFn(formatStr, localeFormatters, formattingTokensRegExp)\n\n return formatFn(date)\n}\n\nvar formatters = {\n // Month: 1, 2, ..., 12\n 'M': function (date) {\n return date.getMonth() + 1\n },\n\n // Month: 01, 02, ..., 12\n 'MM': function (date) {\n return addLeadingZeros(date.getMonth() + 1, 2)\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': function (date) {\n return Math.ceil((date.getMonth() + 1) / 3)\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': function (date) {\n return date.getDate()\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': function (date) {\n return addLeadingZeros(date.getDate(), 2)\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': function (date) {\n return getDayOfYear(date)\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': function (date) {\n return addLeadingZeros(getDayOfYear(date), 3)\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': function (date) {\n return date.getDay()\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': function (date) {\n return date.getDay() || 7\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': function (date) {\n return getISOWeek(date)\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': function (date) {\n return addLeadingZeros(getISOWeek(date), 2)\n },\n\n // Year: 00, 01, ..., 99\n 'YY': function (date) {\n return addLeadingZeros(date.getFullYear(), 4).substr(2)\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': function (date) {\n return addLeadingZeros(date.getFullYear(), 4)\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': function (date) {\n return String(getISOYear(date)).substr(2)\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': function (date) {\n return getISOYear(date)\n },\n\n // Hour: 0, 1, ... 23\n 'H': function (date) {\n return date.getHours()\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': function (date) {\n return addLeadingZeros(date.getHours(), 2)\n },\n\n // Hour: 1, 2, ..., 12\n 'h': function (date) {\n var hours = date.getHours()\n if (hours === 0) {\n return 12\n } else if (hours > 12) {\n return hours % 12\n } else {\n return hours\n }\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': function (date) {\n return addLeadingZeros(formatters['h'](date), 2)\n },\n\n // Minute: 0, 1, ..., 59\n 'm': function (date) {\n return date.getMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': function (date) {\n return addLeadingZeros(date.getMinutes(), 2)\n },\n\n // Second: 0, 1, ..., 59\n 's': function (date) {\n return date.getSeconds()\n },\n\n // Second: 00, 01, ..., 59\n 'ss': function (date) {\n return addLeadingZeros(date.getSeconds(), 2)\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': function (date) {\n return Math.floor(date.getMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': function (date) {\n return addLeadingZeros(Math.floor(date.getMilliseconds() / 10), 2)\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': function (date) {\n return addLeadingZeros(date.getMilliseconds(), 3)\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': function (date) {\n return formatTimezone(date.getTimezoneOffset(), ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': function (date) {\n return formatTimezone(date.getTimezoneOffset())\n },\n\n // Seconds timestamp: 512969520\n 'X': function (date) {\n return Math.floor(date.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': function (date) {\n return date.getTime()\n }\n}\n\nfunction buildFormatFn (formatStr, localeFormatters, formattingTokensRegExp) {\n var array = formatStr.match(formattingTokensRegExp)\n var length = array.length\n\n var i\n var formatter\n for (i = 0; i < length; i++) {\n formatter = localeFormatters[array[i]] || formatters[array[i]]\n if (formatter) {\n array[i] = formatter\n } else {\n array[i] = removeFormattingTokens(array[i])\n }\n }\n\n return function (date) {\n var output = ''\n for (var i = 0; i < length; i++) {\n if (array[i] instanceof Function) {\n output += array[i](date, formatters)\n } else {\n output += array[i]\n }\n }\n return output\n }\n}\n\nfunction removeFormattingTokens (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n\nfunction formatTimezone (offset, delimeter) {\n delimeter = delimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return output\n}\n\nmodule.exports = format\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/format/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of month\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nfunction getDate (dirtyDate) {\n var date = parse(dirtyDate)\n var dayOfMonth = date.getDate()\n return dayOfMonth\n}\n\nmodule.exports = getDate\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_date/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the day of week\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nfunction getDay (dirtyDate) {\n var date = parse(dirtyDate)\n var day = date.getDay()\n return day\n}\n\nmodule.exports = getDay\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_day/index.js","var isLeapYear = require('../is_leap_year/index.js')\n\n/**\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of days in a year\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nfunction getDaysInYear (dirtyDate) {\n return isLeapYear(dirtyDate) ? 366 : 365\n}\n\nmodule.exports = getDaysInYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_days_in_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the hours\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nfunction getHours (dirtyDate) {\n var date = parse(dirtyDate)\n var hours = date.getHours()\n return hours\n}\n\nmodule.exports = getHours\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_hours/index.js","var startOfISOYear = require('../start_of_iso_year/index.js')\nvar addWeeks = require('../add_weeks/index.js')\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nfunction getISOWeeksInYear (dirtyDate) {\n var thisYear = startOfISOYear(dirtyDate)\n var nextYear = startOfISOYear(addWeeks(thisYear, 60))\n var diff = nextYear.valueOf() - thisYear.valueOf()\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK)\n}\n\nmodule.exports = getISOWeeksInYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_iso_weeks_in_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the milliseconds\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nfunction getMilliseconds (dirtyDate) {\n var date = parse(dirtyDate)\n var milliseconds = date.getMilliseconds()\n return milliseconds\n}\n\nmodule.exports = getMilliseconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_milliseconds/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the minutes\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nfunction getMinutes (dirtyDate) {\n var date = parse(dirtyDate)\n var minutes = date.getMinutes()\n return minutes\n}\n\nmodule.exports = getMinutes\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_minutes/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the month\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nfunction getMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var month = date.getMonth()\n return month\n}\n\nmodule.exports = getMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_month/index.js","var parse = require('../parse/index.js')\n\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000\n\n/**\n * @category Range Helpers\n * @summary Get the number of days that overlap in two date ranges\n *\n * @description\n * Get the number of days that overlap in two date ranges\n *\n * @param {Date|String|Number} initialRangeStartDate - the start of the initial range\n * @param {Date|String|Number} initialRangeEndDate - the end of the initial range\n * @param {Date|String|Number} comparedRangeStartDate - the start of the range to compare it with\n * @param {Date|String|Number} comparedRangeEndDate - the end of the range to compare it with\n * @returns {Number} the number of days that overlap in two date ranges\n * @throws {Error} startDate of a date range cannot be after its endDate\n *\n * @example\n * // For overlapping date ranges adds 1 for each started overlapping day:\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping date ranges returns 0:\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20), new Date(2014, 0, 21), new Date(2014, 0, 22)\n * )\n * //=> 0\n */\nfunction getOverlappingDaysInRanges (dirtyInitialRangeStartDate, dirtyInitialRangeEndDate, dirtyComparedRangeStartDate, dirtyComparedRangeEndDate) {\n var initialStartTime = parse(dirtyInitialRangeStartDate).getTime()\n var initialEndTime = parse(dirtyInitialRangeEndDate).getTime()\n var comparedStartTime = parse(dirtyComparedRangeStartDate).getTime()\n var comparedEndTime = parse(dirtyComparedRangeEndDate).getTime()\n\n if (initialStartTime > initialEndTime || comparedStartTime > comparedEndTime) {\n throw new Error('The start of the range cannot be after the end of the range')\n }\n\n var isOverlapping = initialStartTime < comparedEndTime && comparedStartTime < initialEndTime\n\n if (!isOverlapping) {\n return 0\n }\n\n var overlapStartDate = comparedStartTime < initialStartTime\n ? initialStartTime\n : comparedStartTime\n\n var overlapEndDate = comparedEndTime > initialEndTime\n ? initialEndTime\n : comparedEndTime\n\n var differenceInMs = overlapEndDate - overlapStartDate\n\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY)\n}\n\nmodule.exports = getOverlappingDaysInRanges\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_overlapping_days_in_ranges/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the seconds\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nfunction getSeconds (dirtyDate) {\n var date = parse(dirtyDate)\n var seconds = date.getSeconds()\n return seconds\n}\n\nmodule.exports = getSeconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_seconds/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the timestamp\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nfunction getTime (dirtyDate) {\n var date = parse(dirtyDate)\n var timestamp = date.getTime()\n return timestamp\n}\n\nmodule.exports = getTime\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_time/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @returns {Number} the year\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nfunction getYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n return year\n}\n\nmodule.exports = getYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/get_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter (dirtyDate, dirtyDateToCompare) {\n var date = parse(dirtyDate)\n var dateToCompare = parse(dirtyDateToCompare)\n return date.getTime() > dateToCompare.getTime()\n}\n\nmodule.exports = isAfter\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_after/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore (dirtyDate, dirtyDateToCompare) {\n var date = parse(dirtyDate)\n var dateToCompare = parse(dirtyDateToCompare)\n return date.getTime() < dateToCompare.getTime()\n}\n\nmodule.exports = isBefore\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_before/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual (dirtyLeftDate, dirtyRightDate) {\n var dateLeft = parse(dirtyLeftDate)\n var dateRight = parse(dirtyRightDate)\n return dateLeft.getTime() === dateRight.getTime()\n}\n\nmodule.exports = isEqual\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_equal/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nfunction isFirstDayOfMonth (dirtyDate) {\n return parse(dirtyDate).getDate() === 1\n}\n\nmodule.exports = isFirstDayOfMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_first_day_of_month/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nfunction isFriday (dirtyDate) {\n return parse(dirtyDate).getDay() === 5\n}\n\nmodule.exports = isFriday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_friday/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the given date in the future?\n *\n * @description\n * Is the given date in the future?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the future\n *\n * @example\n * // If today is 6 October 2014, is 31 December 2014 in the future?\n * var result = isFuture(new Date(2014, 11, 31))\n * //=> true\n */\nfunction isFuture (dirtyDate) {\n return parse(dirtyDate).getTime() > new Date().getTime()\n}\n\nmodule.exports = isFuture\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_future/index.js","var parse = require('../parse/index.js')\nvar endOfDay = require('../end_of_day/index.js')\nvar endOfMonth = require('../end_of_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nfunction isLastDayOfMonth (dirtyDate) {\n var date = parse(dirtyDate)\n return endOfDay(date).getTime() === endOfMonth(date).getTime()\n}\n\nmodule.exports = isLastDayOfMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_last_day_of_month/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nfunction isMonday (dirtyDate) {\n return parse(dirtyDate).getDay() === 1\n}\n\nmodule.exports = isMonday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_monday/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Is the given date in the past?\n *\n * @description\n * Is the given date in the past?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * var result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\nfunction isPast (dirtyDate) {\n return parse(dirtyDate).getTime() < new Date().getTime()\n}\n\nmodule.exports = isPast\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_past/index.js","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 18, 0)\n * )\n * //=> true\n */\nfunction isSameDay (dirtyDateLeft, dirtyDateRight) {\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft)\n var dateRightStartOfDay = startOfDay(dirtyDateRight)\n\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n}\n\nmodule.exports = isSameDay\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_same_day/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nfunction isSaturday (dirtyDate) {\n return parse(dirtyDate).getDay() === 6\n}\n\nmodule.exports = isSaturday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_saturday/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nfunction isSunday (dirtyDate) {\n return parse(dirtyDate).getDay() === 0\n}\n\nmodule.exports = isSunday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_sunday/index.js","var isSameHour = require('../is_same_hour/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Is the given date in the same hour as the current date?\n *\n * @description\n * Is the given date in the same hour as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this hour\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:00:00 in this hour?\n * var result = isThisHour(new Date(2014, 8, 25, 18))\n * //=> true\n */\nfunction isThisHour (dirtyDate) {\n return isSameHour(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisHour\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_this_hour/index.js","var isSameISOWeek = require('../is_same_iso_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Is the given date in the same ISO week as the current date?\n *\n * @description\n * Is the given date in the same ISO week as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week\n *\n * @example\n * // If today is 25 September 2014, is 22 September 2014 in this ISO week?\n * var result = isThisISOWeek(new Date(2014, 8, 22))\n * //=> true\n */\nfunction isThisISOWeek (dirtyDate) {\n return isSameISOWeek(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisISOWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_this_iso_week/index.js","var isSameISOYear = require('../is_same_iso_year/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Is the given date in the same ISO week-numbering year as the current date?\n *\n * @description\n * Is the given date in the same ISO week-numbering year as the current date?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this ISO week-numbering year\n *\n * @example\n * // If today is 25 September 2014,\n * // is 30 December 2013 in this ISO week-numbering year?\n * var result = isThisISOYear(new Date(2013, 11, 30))\n * //=> true\n */\nfunction isThisISOYear (dirtyDate) {\n return isSameISOYear(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisISOYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_this_iso_year/index.js","var isSameMinute = require('../is_same_minute/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Is the given date in the same minute as the current date?\n *\n * @description\n * Is the given date in the same minute as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this minute\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:00 in this minute?\n * var result = isThisMinute(new Date(2014, 8, 25, 18, 30))\n * //=> true\n */\nfunction isThisMinute (dirtyDate) {\n return isSameMinute(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisMinute\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_this_minute/index.js","var isSameMonth = require('../is_same_month/index.js')\n\n/**\n * @category Month Helpers\n * @summary Is the given date in the same month as the current date?\n *\n * @description\n * Is the given date in the same month as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this month\n *\n * @example\n * // If today is 25 September 2014, is 15 September 2014 in this month?\n * var result = isThisMonth(new Date(2014, 8, 15))\n * //=> true\n */\nfunction isThisMonth (dirtyDate) {\n return isSameMonth(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_this_month/index.js","var isSameQuarter = require('../is_same_quarter/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Is the given date in the same quarter as the current date?\n *\n * @description\n * Is the given date in the same quarter as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this quarter\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this quarter?\n * var result = isThisQuarter(new Date(2014, 6, 2))\n * //=> true\n */\nfunction isThisQuarter (dirtyDate) {\n return isSameQuarter(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisQuarter\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_this_quarter/index.js","var isSameSecond = require('../is_same_second/index.js')\n\n/**\n * @category Second Helpers\n * @summary Is the given date in the same second as the current date?\n *\n * @description\n * Is the given date in the same second as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this second\n *\n * @example\n * // If now is 25 September 2014 18:30:15.500,\n * // is 25 September 2014 18:30:15.000 in this second?\n * var result = isThisSecond(new Date(2014, 8, 25, 18, 30, 15))\n * //=> true\n */\nfunction isThisSecond (dirtyDate) {\n return isSameSecond(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisSecond\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_this_second/index.js","var isSameWeek = require('../is_same_week/index.js')\n\n/**\n * @category Week Helpers\n * @summary Is the given date in the same week as the current date?\n *\n * @description\n * Is the given date in the same week as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Boolean} the date is in this week\n *\n * @example\n * // If today is 25 September 2014, is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21))\n * //=> true\n *\n * @example\n * // If today is 25 September 2014 and week starts with Monday\n * // is 21 September 2014 in this week?\n * var result = isThisWeek(new Date(2014, 8, 21), {weekStartsOn: 1})\n * //=> false\n */\nfunction isThisWeek (dirtyDate, dirtyOptions) {\n return isSameWeek(new Date(), dirtyDate, dirtyOptions)\n}\n\nmodule.exports = isThisWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_this_week/index.js","var isSameYear = require('../is_same_year/index.js')\n\n/**\n * @category Year Helpers\n * @summary Is the given date in the same year as the current date?\n *\n * @description\n * Is the given date in the same year as the current date?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is in this year\n *\n * @example\n * // If today is 25 September 2014, is 2 July 2014 in this year?\n * var result = isThisYear(new Date(2014, 6, 2))\n * //=> true\n */\nfunction isThisYear (dirtyDate) {\n return isSameYear(new Date(), dirtyDate)\n}\n\nmodule.exports = isThisYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_this_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nfunction isThursday (dirtyDate) {\n return parse(dirtyDate).getDay() === 4\n}\n\nmodule.exports = isThursday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_thursday/index.js","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Is the given date today?\n *\n * @description\n * Is the given date today?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is today\n *\n * @example\n * // If today is 6 October 2014, is 6 October 14:00:00 today?\n * var result = isToday(new Date(2014, 9, 6, 14, 0))\n * //=> true\n */\nfunction isToday (dirtyDate) {\n return startOfDay(dirtyDate).getTime() === startOfDay(new Date()).getTime()\n}\n\nmodule.exports = isToday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_today/index.js","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Is the given date tomorrow?\n *\n * @description\n * Is the given date tomorrow?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is tomorrow\n *\n * @example\n * // If today is 6 October 2014, is 7 October 14:00:00 tomorrow?\n * var result = isTomorrow(new Date(2014, 9, 7, 14, 0))\n * //=> true\n */\nfunction isTomorrow (dirtyDate) {\n var tomorrow = new Date()\n tomorrow.setDate(tomorrow.getDate() + 1)\n return startOfDay(dirtyDate).getTime() === startOfDay(tomorrow).getTime()\n}\n\nmodule.exports = isTomorrow\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_tomorrow/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nfunction isTuesday (dirtyDate) {\n return parse(dirtyDate).getDay() === 2\n}\n\nmodule.exports = isTuesday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_tuesday/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nfunction isWednesday (dirtyDate) {\n return parse(dirtyDate).getDay() === 3\n}\n\nmodule.exports = isWednesday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_wednesday/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nfunction isWeekend (dirtyDate) {\n var date = parse(dirtyDate)\n var day = date.getDay()\n return day === 0 || day === 6\n}\n\nmodule.exports = isWeekend\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_weekend/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Range Helpers\n * @summary Is the given date within the range?\n *\n * @description\n * Is the given date within the range?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Date|String|Number} startDate - the start of range\n * @param {Date|String|Number} endDate - the end of range\n * @returns {Boolean} the date is within the range\n * @throws {Error} startDate cannot be after endDate\n *\n * @example\n * // For the date within the range:\n * isWithinRange(\n * new Date(2014, 0, 3), new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n * //=> true\n *\n * @example\n * // For the date outside of the range:\n * isWithinRange(\n * new Date(2014, 0, 10), new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n * //=> false\n */\nfunction isWithinRange (dirtyDate, dirtyStartDate, dirtyEndDate) {\n var time = parse(dirtyDate).getTime()\n var startTime = parse(dirtyStartDate).getTime()\n var endTime = parse(dirtyEndDate).getTime()\n\n if (startTime > endTime) {\n throw new Error('The start of the range cannot be after the end of the range')\n }\n\n return time >= startTime && time <= endTime\n}\n\nmodule.exports = isWithinRange\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_within_range/index.js","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Is the given date yesterday?\n *\n * @description\n * Is the given date yesterday?\n *\n * @param {Date|String|Number} date - the date to check\n * @returns {Boolean} the date is yesterday\n *\n * @example\n * // If today is 6 October 2014, is 5 October 14:00:00 yesterday?\n * var result = isYesterday(new Date(2014, 9, 5, 14, 0))\n * //=> true\n */\nfunction isYesterday (dirtyDate) {\n var yesterday = new Date()\n yesterday.setDate(yesterday.getDate() - 1)\n return startOfDay(dirtyDate).getTime() === startOfDay(yesterday).getTime()\n}\n\nmodule.exports = isYesterday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/is_yesterday/index.js","var lastDayOfWeek = require('../last_day_of_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction lastDayOfISOWeek (dirtyDate) {\n return lastDayOfWeek(dirtyDate, {weekStartsOn: 1})\n}\n\nmodule.exports = lastDayOfISOWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/last_day_of_iso_week/index.js","var getISOYear = require('../get_iso_year/index.js')\nvar startOfISOWeek = require('../start_of_iso_week/index.js')\n\n/**\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nfunction lastDayOfISOYear (dirtyDate) {\n var year = getISOYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year + 1, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary)\n date.setDate(date.getDate() - 1)\n return date\n}\n\nmodule.exports = lastDayOfISOYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/last_day_of_iso_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a month\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nfunction lastDayOfMonth (dirtyDate) {\n var date = parse(dirtyDate)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = lastDayOfMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/last_day_of_month/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a quarter\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nfunction lastDayOfQuarter (dirtyDate) {\n var date = parse(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - currentMonth % 3 + 3\n date.setMonth(month, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = lastDayOfQuarter\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/last_day_of_quarter/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the last day of a year\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nfunction lastDayOfYear (dirtyDate) {\n var date = parse(dirtyDate)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = lastDayOfYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/last_day_of_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {...(Date|String|Number)} dates - the dates to compare\n * @returns {Date} the latest of the dates\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max(\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * )\n * //=> Sun Jul 02 1995 00:00:00\n */\nfunction max () {\n var dirtyDates = Array.prototype.slice.call(arguments)\n var dates = dirtyDates.map(function (dirtyDate) {\n return parse(dirtyDate)\n })\n var latestTimestamp = Math.max.apply(null, dates)\n return new Date(latestTimestamp)\n}\n\nmodule.exports = max\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/max/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * @param {...(Date|String|Number)} dates - the dates to compare\n * @returns {Date} the earliest of the dates\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min(\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * )\n * //=> Wed Feb 11 1987 00:00:00\n */\nfunction min () {\n var dirtyDates = Array.prototype.slice.call(arguments)\n var dates = dirtyDates.map(function (dirtyDate) {\n return parse(dirtyDate)\n })\n var earliestTimestamp = Math.min.apply(null, dates)\n return new Date(earliestTimestamp)\n}\n\nmodule.exports = min\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/min/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month setted\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nfunction setDate (dirtyDate, dirtyDayOfMonth) {\n var date = parse(dirtyDate)\n var dayOfMonth = Number(dirtyDayOfMonth)\n date.setDate(dayOfMonth)\n return date\n}\n\nmodule.exports = setDate\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_date/index.js","var parse = require('../parse/index.js')\nvar addDays = require('../add_days/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - the object with options\n * @param {Number} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the new date with the day of the week setted\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If week starts with Monday, set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0, {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction setDay (dirtyDate, dirtyDay, dirtyOptions) {\n var weekStartsOn = dirtyOptions ? (Number(dirtyOptions.weekStartsOn) || 0) : 0\n var date = parse(dirtyDate)\n var day = Number(dirtyDay)\n var currentDay = date.getDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n return addDays(date, diff)\n}\n\nmodule.exports = setDay\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_day/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year setted\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nfunction setDayOfYear (dirtyDate, dirtyDayOfYear) {\n var date = parse(dirtyDate)\n var dayOfYear = Number(dirtyDayOfYear)\n date.setMonth(0)\n date.setDate(dayOfYear)\n return date\n}\n\nmodule.exports = setDayOfYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_day_of_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours setted\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nfunction setHours (dirtyDate, dirtyHours) {\n var date = parse(dirtyDate)\n var hours = Number(dirtyHours)\n date.setHours(hours)\n return date\n}\n\nmodule.exports = setHours\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_hours/index.js","var parse = require('../parse/index.js')\nvar addDays = require('../add_days/index.js')\nvar getISODay = require('../get_iso_day/index.js')\n\n/**\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week setted\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction setISODay (dirtyDate, dirtyDay) {\n var date = parse(dirtyDate)\n var day = Number(dirtyDay)\n var currentDay = getISODay(date)\n var diff = day - currentDay\n return addDays(date, diff)\n}\n\nmodule.exports = setISODay\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_iso_day/index.js","var parse = require('../parse/index.js')\nvar getISOWeek = require('../get_iso_week/index.js')\n\n/**\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week setted\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nfunction setISOWeek (dirtyDate, dirtyISOWeek) {\n var date = parse(dirtyDate)\n var isoWeek = Number(dirtyISOWeek)\n var diff = getISOWeek(date) - isoWeek\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n\nmodule.exports = setISOWeek\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_iso_week/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds setted\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nfunction setMilliseconds (dirtyDate, dirtyMilliseconds) {\n var date = parse(dirtyDate)\n var milliseconds = Number(dirtyMilliseconds)\n date.setMilliseconds(milliseconds)\n return date\n}\n\nmodule.exports = setMilliseconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_milliseconds/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes setted\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nfunction setMinutes (dirtyDate, dirtyMinutes) {\n var date = parse(dirtyDate)\n var minutes = Number(dirtyMinutes)\n date.setMinutes(minutes)\n return date\n}\n\nmodule.exports = setMinutes\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_minutes/index.js","var parse = require('../parse/index.js')\nvar setMonth = require('../set_month/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter setted\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nfunction setQuarter (dirtyDate, dirtyQuarter) {\n var date = parse(dirtyDate)\n var quarter = Number(dirtyQuarter)\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1\n var diff = quarter - oldQuarter\n return setMonth(date, date.getMonth() + diff * 3)\n}\n\nmodule.exports = setQuarter\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_quarter/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds setted\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nfunction setSeconds (dirtyDate, dirtySeconds) {\n var date = parse(dirtyDate)\n var seconds = Number(dirtySeconds)\n date.setSeconds(seconds)\n return date\n}\n\nmodule.exports = setSeconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_seconds/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year setted\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nfunction setYear (dirtyDate, dirtyYear) {\n var date = parse(dirtyDate)\n var year = Number(dirtyYear)\n date.setFullYear(year)\n return date\n}\n\nmodule.exports = setYear\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/set_year/index.js","var parse = require('../parse/index.js')\n\n/**\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @returns {Date} the start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfMonth (dirtyDate) {\n var date = parse(dirtyDate)\n date.setDate(1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfMonth\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_month/index.js","var startOfDay = require('../start_of_day/index.js')\n\n/**\n * @category Day Helpers\n * @summary Return the start of today.\n *\n * @description\n * Return the start of today.\n *\n * @returns {Date} the start of today\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfToday()\n * //=> Mon Oct 6 2014 00:00:00\n */\nfunction startOfToday () {\n return startOfDay(new Date())\n}\n\nmodule.exports = startOfToday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_today/index.js","/**\n * @category Day Helpers\n * @summary Return the start of tomorrow.\n *\n * @description\n * Return the start of tomorrow.\n *\n * @returns {Date} the start of tomorrow\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfTomorrow()\n * //=> Tue Oct 7 2014 00:00:00\n */\nfunction startOfTomorrow () {\n var now = new Date()\n var year = now.getFullYear()\n var month = now.getMonth()\n var day = now.getDate()\n\n var date = new Date(0)\n date.setFullYear(year, month, day + 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfTomorrow\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_tomorrow/index.js","/**\n * @category Day Helpers\n * @summary Return the start of yesterday.\n *\n * @description\n * Return the start of yesterday.\n *\n * @returns {Date} the start of yesterday\n *\n * @example\n * // If today is 6 October 2014:\n * var result = startOfYesterday()\n * //=> Sun Oct 5 2014 00:00:00\n */\nfunction startOfYesterday () {\n var now = new Date()\n var year = now.getFullYear()\n var month = now.getMonth()\n var day = now.getDate()\n\n var date = new Date(0)\n date.setFullYear(year, month, day - 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nmodule.exports = startOfYesterday\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/start_of_yesterday/index.js","var addDays = require('../add_days/index.js')\n\n/**\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @returns {Date} the new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nfunction subDays (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addDays(dirtyDate, -amount)\n}\n\nmodule.exports = subDays\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_days/index.js","var addHours = require('../add_hours/index.js')\n\n/**\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted\n * @returns {Date} the new date with the hours subtracted\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nfunction subHours (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addHours(dirtyDate, -amount)\n}\n\nmodule.exports = subHours\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_hours/index.js","var addMilliseconds = require('../add_milliseconds/index.js')\n\n/**\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMilliseconds(dirtyDate, -amount)\n}\n\nmodule.exports = subMilliseconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_milliseconds/index.js","var addMinutes = require('../add_minutes/index.js')\n\n/**\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @returns {Date} the new date with the mintues subtracted\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nfunction subMinutes (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMinutes(dirtyDate, -amount)\n}\n\nmodule.exports = subMinutes\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_minutes/index.js","var addMonths = require('../add_months/index.js')\n\n/**\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @returns {Date} the new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction subMonths (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addMonths(dirtyDate, -amount)\n}\n\nmodule.exports = subMonths\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_months/index.js","var addQuarters = require('../add_quarters/index.js')\n\n/**\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted\n * @returns {Date} the new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nfunction subQuarters (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addQuarters(dirtyDate, -amount)\n}\n\nmodule.exports = subQuarters\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_quarters/index.js","var addSeconds = require('../add_seconds/index.js')\n\n/**\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted\n * @returns {Date} the new date with the seconds subtracted\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nfunction subSeconds (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addSeconds(dirtyDate, -amount)\n}\n\nmodule.exports = subSeconds\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_seconds/index.js","var addWeeks = require('../add_weeks/index.js')\n\n/**\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @returns {Date} the new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nfunction subWeeks (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addWeeks(dirtyDate, -amount)\n}\n\nmodule.exports = subWeeks\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_weeks/index.js","var addYears = require('../add_years/index.js')\n\n/**\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @returns {Date} the new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nfunction subYears (dirtyDate, dirtyAmount) {\n var amount = Number(dirtyAmount)\n return addYears(dirtyDate, -amount)\n}\n\nmodule.exports = subYears\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/date-fns/sub_years/index.js","// @flow @jsx h\n\nimport { Byline, ResponsiveVideo } from '@nrk/dh-feature-components'\nimport { h } from 'preact'\nimport Skew from '../Skew'\nimport style from './index.css'\n\nimport type { Props as BaseProps, Viewport } from './types'\n\ntype Props = BaseProps & {\n viewport: Viewport\n}\n\nfunction Header (props: Props) {\n const { mediaBaseUrl, viewport } = props\n const { authors, intro, leadMedia, title } = props.data\n\n return (\n
\n
\n \n {\n return {\n type: source.type,\n src: `${mediaBaseUrl}${source.src}`\n }\n })\n }}\n resolution1080p={{\n poster: `${mediaBaseUrl}${leadMedia.resolution1080p.poster}`,\n sources: leadMedia.resolution1080p.sources.map(source => {\n return {\n type: source.type,\n src: `${mediaBaseUrl}${source.src}`\n }\n })\n }}\n viewport={viewport}\n />\n \n
\n\n
\n \n {intro && (\n \n )}\n \n
\n
\n )\n}\n\nexport default Header\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/Article/Header.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n 'byline': 'dhfc-1_0_0-beta_20-byline',\n 'byline__name': 'dhfc-1_0_0-beta_20-byline__name'\n};\n\nvar Byline = function (_PureComponent) {\n _inherits(Byline, _PureComponent);\n\n function Byline() {\n _classCallCheck(this, Byline);\n\n return _possibleConstructorReturn(this, (Byline.__proto__ || Object.getPrototypeOf(Byline)).apply(this, arguments));\n }\n\n _createClass(Byline, [{\n key: 'render',\n value: function render() {\n var authors = this.props.authors;\n\n var len = authors.length;\n var className = '' + style.byline + (this.props.className ? ' ' + this.props.className : '');\n\n if (len === 0) return null;\n\n return h(\n 'div',\n { className: className },\n 'Av',\n ' ',\n authors.map(function (author, idx) {\n if (len === 1) {\n return h(\n 'span',\n { key: String(idx) },\n h('span', {\n className: style.byline__name,\n dangerouslySetInnerHTML: { __html: author.name }\n })\n );\n }\n\n if (idx === len - 1) {\n return h(\n 'span',\n { key: String(idx) },\n '&',\n ' ',\n h('span', {\n className: style.byline__name,\n dangerouslySetInnerHTML: { __html: author.name }\n })\n );\n }\n\n if (idx === len - 2) {\n return h(\n 'span',\n { key: String(idx) },\n h('span', {\n className: style.byline__name,\n dangerouslySetInnerHTML: { __html: author.name }\n }),\n ' '\n );\n }\n\n return h(\n 'span',\n { key: String(idx) },\n h('span', {\n className: style.byline__name,\n dangerouslySetInnerHTML: { __html: author.name }\n }),\n ',',\n ' '\n );\n })\n );\n }\n }]);\n\n return Byline;\n}(PureComponent);\n\nexport default Byline;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/Byline/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nimport { Message } from './Message';\nimport { Date } from './Date';\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\nvar ChatLog = function (_PureComponent) {\n _inherits(ChatLog, _PureComponent);\n\n function ChatLog() {\n _classCallCheck(this, ChatLog);\n\n return _possibleConstructorReturn(this, (ChatLog.__proto__ || Object.getPrototypeOf(ChatLog)).apply(this, arguments));\n }\n\n _createClass(ChatLog, [{\n key: 'render',\n value: function render() {\n var messages = this.props.messages;\n\n var className = '' + styles.chatLog + (this.props.className ? ' ' + this.props.className : '');\n\n return h(\n 'div',\n { className: className },\n messages.map(function (message, idx) {\n return [h(Date, { date: message.date, index: idx, key: 'date_' + idx }), h(Message, {\n key: idx,\n isLastInGroup: isLastInGroup(messages, idx),\n message: message\n })];\n })\n );\n }\n }]);\n\n return ChatLog;\n}(PureComponent);\n\nfunction isLastInGroup(messages, index) {\n return messages.length - 1 === index;\n}\n\nexport default ChatLog;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { Component, h } from 'preact';\nimport { ImageMessage } from './ImageMessage';\nimport { TextMessage } from './TextMessage';\nimport { ImagesMessage } from './ImagesMessage/index';\n\nexport var Message = function (_Component) {\n _inherits(Message, _Component);\n\n function Message() {\n _classCallCheck(this, Message);\n\n return _possibleConstructorReturn(this, (Message.__proto__ || Object.getPrototypeOf(Message)).apply(this, arguments));\n }\n\n _createClass(Message, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n isLastInGroup = _props.isLastInGroup,\n message = _props.message;\n var content = message.content;\n var type = content.type;\n\n\n switch (type) {\n case 'image':\n return h(ImageMessage, { message: message, isLastInGroup: isLastInGroup });\n case 'images':\n return h(ImagesMessage, { message: message, isLastInGroup: isLastInGroup });\n case 'text':\n return h(TextMessage, { message: message, isLastInGroup: isLastInGroup });\n default:\n throw new Error('Unknown message type ' + type);\n }\n }\n }]);\n\n return Message;\n}(Component);\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/index.js","// @jsx h\n\nimport { h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\nimport { Avatar } from '../../Avatar/index';\nimport { getImageUrl } from '../../lib/image-url';\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\n\nexport var ImageMessage = function ImageMessage(props) {\n var message = props.message,\n isLastInGroup = props.isLastInGroup;\n var from = message.from,\n content = message.content;\n var name = from.name,\n side = from.side,\n display = from.display;\n\n var showAvatar = ['avatar', 'both'].indexOf(display) !== -1;\n var showName = ['name', 'both'].indexOf(display) !== -1;\n var imageSrc = getImageUrl(content.image, { width: 320, ratio: '1:1' });\n\n return h(\n 'div',\n { className: bem(styles.message, side, { showAvatar: showAvatar, isLastInGroup: isLastInGroup }) },\n h(\n 'span',\n { className: 'nrk-sr' },\n name,\n ':'\n ),\n showAvatar && h(Avatar, { person: from }),\n h(\n 'div',\n { className: bem(styles.message__content, side, { showName: showName }) },\n h(\n 'span',\n { 'aria-hidden': true, className: bem(styles.message__name, side) },\n showName && name\n ),\n h(\n 'span',\n { className: bem(styles.message__image, side) },\n h('img', {\n src: imageSrc,\n alt: content.image.alt || '',\n nopin: 'nopin',\n 'data-pin-nopin': 'true'\n })\n )\n )\n );\n};\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/ImageMessage/index.js","// @jsx h\n\nimport { h } from 'preact';\nimport { getImageUrl } from '../../lib/image-url';\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\n\nexport function AvatarImage(props) {\n var image = props.image,\n alt = props.alt,\n title = props.title;\n\n return h('img', {\n className: styles.avatarImage,\n title: title,\n src: getImageUrl(image),\n alt: alt,\n nopin: 'no-pin',\n 'data-pin-nopin': 'true'\n });\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Avatar/AvatarImage/index.js","// @jsx h\n\nimport { h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\nimport { Avatar } from '../../Avatar';\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\n\nexport var TextMessage = function TextMessage(props) {\n var message = props.message,\n isLastInGroup = props.isLastInGroup;\n var from = message.from,\n content = message.content;\n var name = from.name,\n side = from.side,\n display = from.display;\n\n var showAvatar = ['avatar', 'both'].indexOf(display) !== -1;\n var showName = ['name', 'both'].indexOf(display) !== -1;\n\n return h(\n 'div',\n { className: bem(styles.message, side, { showAvatar: showAvatar, isLastInGroup: isLastInGroup }) },\n h(\n 'span',\n { className: 'nrk-sr' },\n name,\n ':'\n ),\n showAvatar && h(Avatar, { person: from }),\n h(\n 'div',\n { className: bem(styles.message__content, side, { showName: showName }) },\n h(\n 'span',\n { 'aria-hidden': true, className: bem(styles.message__name, side) },\n showName && name\n ),\n h('span', {\n className: bem(styles.message__text, side),\n dangerouslySetInnerHTML: { __html: content.message }\n })\n )\n );\n};\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/TextMessage/index.js","// @jsx h\n\nimport { h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\nimport { Avatar } from '../../Avatar/index';\nimport { getImageUrl } from '../../lib/image-url';\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\n\nexport var ImagesMessage = function ImagesMessage(props) {\n var message = props.message,\n isLastInGroup = props.isLastInGroup;\n var from = message.from,\n content = message.content;\n var name = from.name,\n side = from.side,\n display = from.display;\n\n var showAvatar = ['avatar', 'both'].indexOf(display) !== -1;\n var showName = ['name', 'both'].indexOf(display) !== -1;\n\n return h(\n 'div',\n { className: bem(styles.message, side, { showAvatar: showAvatar, isLastInGroup: isLastInGroup }) },\n h(\n 'span',\n { className: 'nrk-sr' },\n name,\n ':'\n ),\n showAvatar && h(Avatar, { person: from }),\n h(\n 'div',\n { className: bem(styles.message__content, side, { showName: showName }) },\n h(\n 'span',\n { 'aria-hidden': true, className: bem(styles.message__name, side) },\n showName && name\n ),\n h(\n 'ul',\n { className: bem(styles.message__images, side) },\n content.images.map(function (image, idx) {\n var imageSrc = getImageUrl(image, { width: 160, ratio: '1:1' });\n return h(\n 'li',\n { key: idx },\n h('img', {\n src: imageSrc,\n alt: image.alt || '',\n nopin: 'nopin',\n 'data-pin-nopin': 'true'\n })\n );\n })\n )\n )\n );\n};\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Message/ImagesMessage/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { Component, h } from 'preact';\nimport { bem } from '@nrk/dh-utils';\n\nvar styles = {\n 'chatLog': 'dhfc-1_0_0-beta_20-chatLog',\n 'avatarImage': 'dhfc-1_0_0-beta_20-avatarImage',\n 'avatar': 'dhfc-1_0_0-beta_20-avatar',\n 'avatar__placeholder': 'dhfc-1_0_0-beta_20-avatar__placeholder',\n 'avatar--right': 'dhfc-1_0_0-beta_20-avatar--right',\n 'date': 'dhfc-1_0_0-beta_20-date',\n 'date--isFirst': 'dhfc-1_0_0-beta_20-date--isFirst',\n 'message': 'dhfc-1_0_0-beta_20-message',\n 'message--left': 'dhfc-1_0_0-beta_20-message--left',\n 'message--showAvatar': 'dhfc-1_0_0-beta_20-message--showAvatar',\n 'message--right': 'dhfc-1_0_0-beta_20-message--right',\n 'message--isLastInGroup': 'dhfc-1_0_0-beta_20-message--isLastInGroup',\n 'message__text': 'dhfc-1_0_0-beta_20-message__text',\n 'message__text--right': 'dhfc-1_0_0-beta_20-message__text--right',\n 'message__text--left': 'dhfc-1_0_0-beta_20-message__text--left',\n 'message__image': 'dhfc-1_0_0-beta_20-message__image',\n 'message__images': 'dhfc-1_0_0-beta_20-message__images',\n 'message__image--expanded': 'dhfc-1_0_0-beta_20-message__image--expanded',\n 'message__image--clickable': 'dhfc-1_0_0-beta_20-message__image--clickable',\n 'message__image--hover': 'dhfc-1_0_0-beta_20-message__image--hover',\n 'message__image--left': 'dhfc-1_0_0-beta_20-message__image--left',\n 'message__image--right': 'dhfc-1_0_0-beta_20-message__image--right',\n 'message__name': 'dhfc-1_0_0-beta_20-message__name',\n 'message__content': 'dhfc-1_0_0-beta_20-message__content',\n 'message__content--left': 'dhfc-1_0_0-beta_20-message__content--left',\n 'message__content--right': 'dhfc-1_0_0-beta_20-message__content--right',\n 'message__content--showName': 'dhfc-1_0_0-beta_20-message__content--showName'\n};\n\n\nexport var Date = function (_Component) {\n _inherits(Date, _Component);\n\n function Date() {\n _classCallCheck(this, Date);\n\n return _possibleConstructorReturn(this, (Date.__proto__ || Object.getPrototypeOf(Date)).apply(this, arguments));\n }\n\n _createClass(Date, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n date = _props.date,\n index = _props.index;\n\n\n if (!date) return null;\n\n return h('h4', {\n className: bem(styles.date, { isFirst: index === 0 }),\n dangerouslySetInnerHTML: { __html: date }\n });\n }\n }]);\n\n return Date;\n}(Component);\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ChatLog/Date/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n 'figure': 'dhfc-1_0_0-beta_20-figure',\n 'figure__credit': 'dhfc-1_0_0-beta_20-figure__credit'\n};\n\nvar Figure = function (_PureComponent) {\n _inherits(Figure, _PureComponent);\n\n function Figure() {\n _classCallCheck(this, Figure);\n\n return _possibleConstructorReturn(this, (Figure.__proto__ || Object.getPrototypeOf(Figure)).apply(this, arguments));\n }\n\n _createClass(Figure, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n caption = _props.caption,\n credit = _props.credit,\n media = _props.media;\n\n var className = '' + style.figure + (this.props.className ? ' ' + this.props.className : '');\n\n return h(\n 'figure',\n { className: className },\n media,\n caption && h(\n 'figcaption',\n null,\n caption.map(function (text, idx) {\n return h('p', { dangerouslySetInnerHTML: { __html: text }, key: String(idx) });\n }),\n credit && h(\n 'div',\n { className: style.figure__credit },\n credit\n )\n )\n );\n }\n }]);\n\n return Figure;\n}(PureComponent);\n\nexport default Figure;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/Figure/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\n/* eslint-disable jsx-a11y/heading-has-content */\n\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n 'heading': 'dhfc-1_0_0-beta_20-heading'\n};\n\nvar Heading = function (_PureComponent) {\n _inherits(Heading, _PureComponent);\n\n function Heading() {\n _classCallCheck(this, Heading);\n\n return _possibleConstructorReturn(this, (Heading.__proto__ || Object.getPrototypeOf(Heading)).apply(this, arguments));\n }\n\n _createClass(Heading, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n html = _props.html,\n level = _props.level;\n\n var className = '' + style.heading + (this.props.className ? ' ' + this.props.className : '');\n\n var htmlProps = {\n className: className\n };\n\n if (html) {\n htmlProps.dangerouslySetInnerHTML = { __html: html };\n } else {\n htmlProps.children = children;\n }\n\n switch (level) {\n case 2:\n return h('h2', htmlProps);\n\n case 3:\n return h('h3', htmlProps);\n\n case 4:\n return h('h4', htmlProps);\n\n case 5:\n return h('h5', htmlProps);\n\n case 6:\n return h('h6', htmlProps);\n\n default:\n return h('h1', htmlProps);\n }\n }\n }]);\n\n return Heading;\n}(PureComponent);\n\nexport default Heading;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/Heading/index.js","// @jsx h\n\nimport { h } from 'preact';\nvar style = {\n 'icon': 'dhfc-1_0_0-beta_20-icon'\n};\n\n\nfunction Icon(props) {\n var className = '' + style.icon + (props.className ? ' ' + props.className : '');\n\n return h('svg', {\n className: className,\n 'aria-hidden': props['aria-hidden'],\n dangerouslySetInnerHTML: {\n __html: ''\n }\n });\n}\n\nexport default Icon;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/core/Icon/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n 'list': 'dhfc-1_0_0-beta_20-list'\n};\n\nvar List = function (_PureComponent) {\n _inherits(List, _PureComponent);\n\n function List() {\n _classCallCheck(this, List);\n\n return _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).apply(this, arguments));\n }\n\n _createClass(List, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n type = _props.type;\n\n var className = '' + style.list + (this.props.className ? ' ' + this.props.className : '');\n\n if (type === 'numbered') {\n return h(\n 'ol',\n { className: className },\n children\n );\n }\n\n return h(\n 'ul',\n { className: className },\n children\n );\n }\n }]);\n\n return List;\n}(PureComponent);\n\nexport default List;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/List/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\n\nvar ListItem = function (_PureComponent) {\n _inherits(ListItem, _PureComponent);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n html = _props.html;\n\n\n if (html) {\n return h('li', { dangerouslySetInnerHTML: { __html: html } });\n }\n\n return h(\n 'li',\n null,\n children\n );\n }\n }]);\n\n return ListItem;\n}(PureComponent);\n\nexport default ListItem;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/List/ListItem.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n 'paragraph': 'dhfc-1_0_0-beta_20-paragraph'\n};\n\nvar Paragraph = function (_PureComponent) {\n _inherits(Paragraph, _PureComponent);\n\n function Paragraph() {\n _classCallCheck(this, Paragraph);\n\n return _possibleConstructorReturn(this, (Paragraph.__proto__ || Object.getPrototypeOf(Paragraph)).apply(this, arguments));\n }\n\n _createClass(Paragraph, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n html = _props.html;\n\n var className = '' + style.paragraph + (this.props.className ? ' ' + this.props.className : '');\n\n if (html) {\n return h('p', { className: className, dangerouslySetInnerHTML: { __html: html } });\n }\n\n return h(\n 'p',\n { className: className },\n children\n );\n }\n }]);\n\n return Paragraph;\n}(PureComponent);\n\nexport default Paragraph;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/Paragraph/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\n/* eslint-disable jsx-a11y/aria-role */\n\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n 'pullQuote': 'dhfc-1_0_0-beta_20-pullQuote',\n 'pullQuote__content': 'dhfc-1_0_0-beta_20-pullQuote__content',\n 'pullQuote__footer': 'dhfc-1_0_0-beta_20-pullQuote__footer'\n};\n\nvar PullQuote = function (_PureComponent) {\n _inherits(PullQuote, _PureComponent);\n\n function PullQuote() {\n _classCallCheck(this, PullQuote);\n\n return _possibleConstructorReturn(this, (PullQuote.__proto__ || Object.getPrototypeOf(PullQuote)).apply(this, arguments));\n }\n\n _createClass(PullQuote, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n cite = _props.cite,\n html = _props.html;\n\n var className = '' + style.pullQuote + (this.props.className ? ' ' + this.props.className : '');\n\n return h(\n 'blockquote',\n { className: className },\n h(\n 'div',\n { className: style.pullQuote__content },\n h('p', { dangerouslySetInnerHTML: { __html: html } })\n ),\n cite && h(\n 'footer',\n { className: style.pullQuote__footer },\n h(\n 'cite',\n { role: 'text' },\n h(\n 'svg',\n { viewBox: '0 0 20 30', 'aria-hidden': 'true' },\n h('path', { d: 'M 5.5,5.5 L5.5,24.5 L14.5,24.5' }),\n h('circle', { cx: '5.5', cy: '5.5', r: '3.5' })\n ),\n h('span', {\n dangerouslySetInnerHTML: {\n __html: '\\u2013 ' + (cite || '')\n }\n })\n )\n )\n );\n }\n }]);\n\n return PullQuote;\n}(PureComponent);\n\nexport default PullQuote;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/PullQuote/index.js","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { bem } from '@nrk/dh-utils';\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nimport Video from '../Video';\nvar style = {\n 'responsiveVideo': 'dhfc-1_0_0-beta_20-responsiveVideo',\n 'responsiveVideo__720p': 'dhfc-1_0_0-beta_20-responsiveVideo__720p',\n 'responsiveVideo--1080p': 'dhfc-1_0_0-beta_20-responsiveVideo--1080p',\n 'responsiveVideo__1080p': 'dhfc-1_0_0-beta_20-responsiveVideo__1080p'\n};\n\n\nvar THRESHOLD_1080P = 960;\n\nvar ResponsiveVideo = function (_PureComponent) {\n _inherits(ResponsiveVideo, _PureComponent);\n\n function ResponsiveVideo() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ResponsiveVideo);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ResponsiveVideo.__proto__ || Object.getPrototypeOf(ResponsiveVideo)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n time: 0\n }, _this.handleTimeupdate = function (time) {\n var onTimeupdate = _this.props.onTimeupdate;\n\n\n _this.setState({ time: time });\n\n if (onTimeupdate) {\n onTimeupdate(time);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ResponsiveVideo, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var prevIs1080p = prevProps.viewport.width >= THRESHOLD_1080P;\n var is1080p = this.props.viewport.width >= THRESHOLD_1080P;\n\n if (is1080p !== prevIs1080p) {\n this.seek(this.state.time);\n }\n }\n }, {\n key: 'seek',\n value: function seek(time) {\n var is1080p = this.props.viewport.width >= THRESHOLD_1080P;\n\n if (is1080p) {\n this.resolution1080p.seek(time);\n } else {\n this.resolution720p.seek(time);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n playing = _props.playing,\n resolution720p = _props.resolution720p,\n resolution1080p = _props.resolution1080p,\n viewport = _props.viewport,\n restProps = _objectWithoutProperties(_props, ['playing', 'resolution720p', 'resolution1080p', 'viewport']);\n\n if (!resolution720p) {\n throw new Error('Missing `resolution720p` property');\n }\n\n if (!resolution1080p) {\n throw new Error('Missing `resolution1080p` property');\n }\n\n var isValidViewport = viewport.width > -1 && viewport.height > -1;\n var is1080p = viewport.width >= THRESHOLD_1080P;\n var className = '' + bem(style.responsiveVideo, is1080p && '1080p') + (this.props.className ? ' ' + this.props.className : '');\n\n return h(\n 'div',\n { className: className },\n h(Video, _extends({}, resolution720p, restProps, {\n className: style.responsiveVideo__720p,\n playing: isValidViewport && !is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution720p) {\n return _this2.resolution720p = resolution720p;\n }\n })),\n h(Video, _extends({}, resolution1080p, restProps, {\n className: style.responsiveVideo__1080p,\n playing: isValidViewport && is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution1080p) {\n return _this2.resolution1080p = resolution1080p;\n }\n }))\n );\n }\n }]);\n\n return ResponsiveVideo;\n}(PureComponent);\n\nexport default ResponsiveVideo;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/video/ResponsiveVideo/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/** @jsx h */\n\nimport { createImageUrl } from '@nrk/serum-imagecrop-utils';\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\n\nvar SerumImage = function (_PureComponent) {\n _inherits(SerumImage, _PureComponent);\n\n function SerumImage() {\n _classCallCheck(this, SerumImage);\n\n return _possibleConstructorReturn(this, (SerumImage.__proto__ || Object.getPrototypeOf(SerumImage)).apply(this, arguments));\n }\n\n _createClass(SerumImage, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n alt = _props.alt,\n id = _props.id,\n quality = _props.quality,\n ratio = _props.ratio,\n width = _props.width;\n\n\n var src = createImageUrl({\n id: id,\n width: width,\n quality: quality,\n ratio: ratio\n });\n\n return h('img', { className: className, src: src, alt: alt });\n }\n }]);\n\n return SerumImage;\n}(PureComponent);\n\nexport default SerumImage;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/serum/SerumImage/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/** @jsx h */\n\nimport { createImageUrl } from '@nrk/serum-imagecrop-utils';\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nimport { createResponsiveSrcSet } from '../helpers';\n\nvar SerumResponsivePicture = function (_PureComponent) {\n _inherits(SerumResponsivePicture, _PureComponent);\n\n function SerumResponsivePicture() {\n _classCallCheck(this, SerumResponsivePicture);\n\n return _possibleConstructorReturn(this, (SerumResponsivePicture.__proto__ || Object.getPrototypeOf(SerumResponsivePicture)).apply(this, arguments));\n }\n\n _createClass(SerumResponsivePicture, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n alt = _props.alt,\n id = _props.id,\n quality = _props.quality,\n ratio = _props.ratio;\n\n\n var defaultUrl = createImageUrl({\n id: id,\n width: 1600,\n quality: quality,\n ratio: ratio || '16:9'\n });\n\n var horizontalSourceSet = createResponsiveSrcSet({\n id: id,\n quality: quality,\n ratio: ratio || '16:9'\n });\n\n return h(\n 'picture',\n { className: className },\n h('source', { srcSet: horizontalSourceSet }),\n h('img', { src: defaultUrl, alt: alt })\n );\n }\n }]);\n\n return SerumResponsivePicture;\n}(PureComponent);\n\nexport default SerumResponsivePicture;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/serum/SerumResponsivePicture/index.js","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/** @jsx h */\n\nimport { createImageUrl } from '@nrk/serum-imagecrop-utils';\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nimport { createResponsiveSrcSet } from '../helpers';\n\nvar SerumSmartPicture = function (_PureComponent) {\n _inherits(SerumSmartPicture, _PureComponent);\n\n function SerumSmartPicture() {\n _classCallCheck(this, SerumSmartPicture);\n\n return _possibleConstructorReturn(this, (SerumSmartPicture.__proto__ || Object.getPrototypeOf(SerumSmartPicture)).apply(this, arguments));\n }\n\n _createClass(SerumSmartPicture, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n alt = _props.alt,\n horizontal = _props.horizontal,\n vertical = _props.vertical;\n\n\n var defaultUrl = createImageUrl(_extends({}, horizontal, {\n width: 1600,\n ratio: '16:9'\n }));\n\n var horizontalSourceSet = createResponsiveSrcSet(_extends({}, horizontal, {\n ratio: '16:9'\n }));\n\n var verticalSourceSet = createResponsiveSrcSet(_extends({}, vertical, {\n ratio: '3:4'\n }));\n\n return h(\n 'picture',\n { className: className },\n h('source', { media: '(min-aspect-ratio: 4/5)', srcSet: horizontalSourceSet }),\n h('source', { media: '(max-aspect-ratio: 4/5)', srcSet: verticalSourceSet }),\n h('img', { src: defaultUrl, alt: alt })\n );\n }\n }]);\n\n return SerumSmartPicture;\n}(PureComponent);\n\nexport default SerumSmartPicture;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/serum/SerumSmartPicture/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { bem } from '@nrk/dh-utils';\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n 'slideshow': 'dhfc-1_0_0-beta_20-slideshow',\n 'slideshow__slide': 'dhfc-1_0_0-beta_20-slideshow__slide',\n 'slideshow__slide--stacked': 'dhfc-1_0_0-beta_20-slideshow__slide--stacked',\n 'slideshow__slide--visible': 'dhfc-1_0_0-beta_20-slideshow__slide--visible',\n 'slideshow__slide--active': 'dhfc-1_0_0-beta_20-slideshow__slide--active'\n};\n\nvar Slide = function (_PureComponent) {\n _inherits(Slide, _PureComponent);\n\n function Slide() {\n _classCallCheck(this, Slide);\n\n return _possibleConstructorReturn(this, (Slide.__proto__ || Object.getPrototypeOf(Slide)).apply(this, arguments));\n }\n\n _createClass(Slide, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n active = _props.active,\n children = _props.children,\n stacked = _props.stacked,\n visible = _props.visible;\n\n var className = '' + bem(style.slideshow__slide, stacked && 'stacked', visible && 'visible', active && 'active') + (this.props.className ? ' ' + this.props.className : '');\n\n return h(\n 'div',\n { className: className },\n children\n );\n }\n }]);\n\n return Slide;\n}(PureComponent);\n\nexport default Slide;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/Slideshow/Slide.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\nvar style = {\n 'slideshow': 'dhfc-1_0_0-beta_20-slideshow',\n 'slideshow__slide': 'dhfc-1_0_0-beta_20-slideshow__slide',\n 'slideshow__slide--stacked': 'dhfc-1_0_0-beta_20-slideshow__slide--stacked',\n 'slideshow__slide--visible': 'dhfc-1_0_0-beta_20-slideshow__slide--visible',\n 'slideshow__slide--active': 'dhfc-1_0_0-beta_20-slideshow__slide--active'\n};\n\nvar Slideshow = function (_PureComponent) {\n _inherits(Slideshow, _PureComponent);\n\n function Slideshow() {\n _classCallCheck(this, Slideshow);\n\n return _possibleConstructorReturn(this, (Slideshow.__proto__ || Object.getPrototypeOf(Slideshow)).apply(this, arguments));\n }\n\n _createClass(Slideshow, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n viewport = _props.viewport;\n\n var activeIndex = this.props.activeIndex || 0;\n var className = '' + style.slideshow + (this.props.className ? ' ' + this.props.className : '');\n\n var inlineStyle = {};\n\n if (viewport && viewport.height > -1) {\n inlineStyle.height = viewport.height + 'px';\n }\n\n return h(\n 'div',\n {\n className: className,\n style: inlineStyle,\n 'data-active-index': String(activeIndex)\n },\n children.map(function (child, idx) {\n if (idx <= activeIndex) {\n child.attributes.stacked = true;\n }\n\n if (idx >= activeIndex - 1 && idx <= activeIndex + 1) {\n child.attributes.visible = true;\n }\n\n child.attributes.active = idx === activeIndex;\n\n return child;\n })\n );\n }\n }]);\n\n return Slideshow;\n}(PureComponent);\n\nexport default Slideshow;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/Slideshow/index.js","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { bem } from '@nrk/dh-utils';\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nimport Video from '../Video';\nvar style = {\n 'smartVideo': 'dhfc-1_0_0-beta_20-smartVideo',\n 'smartVideo__720p': 'dhfc-1_0_0-beta_20-smartVideo__720p',\n 'smartVideo--horizontal': 'dhfc-1_0_0-beta_20-smartVideo--horizontal',\n 'smartVideo--1080p': 'dhfc-1_0_0-beta_20-smartVideo--1080p',\n 'smartVideo__960p': 'dhfc-1_0_0-beta_20-smartVideo__960p',\n 'smartVideo__1080p': 'dhfc-1_0_0-beta_20-smartVideo__1080p'\n};\n\n\nvar THRESHOLD_1080P = 960;\nvar THRESHOLD_HORIZONTAL = 2 / 3;\n\nvar SmartVideo = function (_PureComponent) {\n _inherits(SmartVideo, _PureComponent);\n\n function SmartVideo() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, SmartVideo);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = SmartVideo.__proto__ || Object.getPrototypeOf(SmartVideo)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n time: 0\n }, _this.handleTimeupdate = function (time) {\n var onTimeupdate = _this.props.onTimeupdate;\n\n\n _this.setState({ time: time });\n\n if (onTimeupdate) {\n onTimeupdate(time);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(SmartVideo, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var prevIsHorizontal = prevProps.viewport.width / prevProps.viewport.height >= THRESHOLD_HORIZONTAL;\n var isHorizontal = this.props.viewport.width / this.props.viewport.height >= THRESHOLD_HORIZONTAL;\n\n var prevIs1080p = prevProps.viewport.width >= THRESHOLD_1080P;\n var is1080p = this.props.viewport.width >= THRESHOLD_1080P;\n\n if (prevIsHorizontal !== isHorizontal || is1080p !== prevIs1080p) {\n this.seek(this.state.time);\n }\n }\n }, {\n key: 'seek',\n value: function seek(time) {\n var viewport = this.props.viewport;\n\n var isHorizontal = viewport.width / viewport.height >= THRESHOLD_HORIZONTAL;\n var is1080p = viewport.width >= THRESHOLD_1080P;\n\n if (isHorizontal) {\n if (is1080p) {\n this.resolution1080p.seek(time);\n } else {\n this.resolution720p.seek(time);\n }\n } else {\n this.resolution960p.seek(time);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n playing = _props.playing,\n resolution720p = _props.resolution720p,\n resolution960p = _props.resolution960p,\n resolution1080p = _props.resolution1080p,\n viewport = _props.viewport,\n restProps = _objectWithoutProperties(_props, ['playing', 'resolution720p', 'resolution960p', 'resolution1080p', 'viewport']);\n\n if (!resolution720p) {\n throw new Error('Missing `resolution720p` property');\n }\n\n if (!resolution960p) {\n throw new Error('Missing `resolution960p` property');\n }\n\n if (!resolution1080p) {\n throw new Error('Missing `resolution1080p` property');\n }\n\n var isValidViewport = viewport.width > -1 && viewport.height > -1;\n var isHorizontal = viewport.width / viewport.height >= THRESHOLD_HORIZONTAL;\n var is1080p = isHorizontal && viewport.width >= THRESHOLD_1080P;\n var className = '' + bem(style.smartVideo, {\n '1080p': is1080p,\n horizontal: isHorizontal\n }) + (this.props.className ? ' ' + this.props.className : '');\n\n return h(\n 'div',\n { className: className },\n h(Video, _extends({}, resolution720p, restProps, {\n className: style.smartVideo__720p,\n playing: isValidViewport && isHorizontal && !is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution720p) {\n return _this2.resolution720p = resolution720p;\n }\n })),\n h(Video, _extends({}, resolution960p, restProps, {\n className: style.smartVideo__960p,\n playing: isValidViewport && !isHorizontal && !is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution960p) {\n return _this2.resolution960p = resolution960p;\n }\n })),\n h(Video, _extends({}, resolution1080p, restProps, {\n className: style.smartVideo__1080p,\n playing: isValidViewport && isHorizontal && is1080p && playing,\n onTimeupdate: this.handleTimeupdate,\n ref: function ref(resolution1080p) {\n return _this2.resolution1080p = resolution1080p;\n }\n }))\n );\n }\n }]);\n\n return SmartVideo;\n}(PureComponent);\n\nexport default SmartVideo;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/video/SmartVideo/index.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nimport warn from '../../lib/warn';\nimport Scrubber from './Scrubber';\nimport TogglePlayButton from './TogglePlayButton';\nimport ToggleMuteButton from './ToggleMuteButton';\nvar style = {\n 'videoPlayer': 'dhfc-1_0_0-beta_20-videoPlayer',\n 'videoPlayer__container': 'dhfc-1_0_0-beta_20-videoPlayer__container',\n 'videoPlayer__caption': 'dhfc-1_0_0-beta_20-videoPlayer__caption',\n 'videoPlayer__controls': 'dhfc-1_0_0-beta_20-videoPlayer__controls',\n 'videoPlayer__togglePlayButton': 'dhfc-1_0_0-beta_20-videoPlayer__togglePlayButton',\n 'videoPlayer__toggleMuteButton': 'dhfc-1_0_0-beta_20-videoPlayer__toggleMuteButton'\n};\n\nvar VideoPlayer = function (_PureComponent) {\n _inherits(VideoPlayer, _PureComponent);\n\n function VideoPlayer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, VideoPlayer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = VideoPlayer.__proto__ || Object.getPrototypeOf(VideoPlayer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n caption: null,\n duration: 0,\n isPlaying: false,\n time: 0\n }, _this.handleUserTogglePlay = function () {\n _this.props.onUserTogglePlay();\n }, _this.handleUserToggleMute = function () {\n _this.props.onUserToggleMute();\n }, _this.handleScrubberPositionUpdate = function (position) {\n if (_this.video) {\n _this.video.seek(_this.state.duration * position);\n } else {\n warn('[@nrk/dh-feature-components] No video reference');\n }\n }, _this.handleCaptionCueEnter = function (caption) {\n _this.setState({ caption: caption });\n }, _this.handleCaptionCueExit = function () {\n _this.setState({ caption: null });\n }, _this.handleDurationChange = function (duration) {\n _this.setState({ duration: duration });\n }, _this.handlePlay = function () {\n var onPlay = _this.props.onPlay;\n\n\n _this.setState({ isPlaying: true });\n\n if (onPlay) {\n onPlay();\n }\n }, _this.handlePause = function () {\n var onPause = _this.props.onPause;\n\n\n _this.setState({ isPlaying: false });\n\n if (onPause) {\n onPause();\n }\n }, _this.handleTimeupdate = function (time) {\n _this.setState({ time: time });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(VideoPlayer, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n muted = _props.muted,\n playing = _props.playing,\n video = _props.video;\n var _state = this.state,\n caption = _state.caption,\n duration = _state.duration,\n isPlaying = _state.isPlaying,\n time = _state.time;\n\n\n if (!video.attributes) {\n throw new Error('The `video` property must be a virtual node');\n }\n\n var className = '' + style.videoPlayer + (this.props.className ? ' ' + this.props.className : '');\n\n video.attributes.muted = muted;\n video.attributes.playing = playing;\n video.attributes.playsInline = true;\n video.attributes.ref = function (video) {\n return _this2.video = video;\n };\n video.attributes.onPlay = this.handlePlay;\n video.attributes.onPause = this.handlePause;\n video.attributes.onCaptionCueEnter = this.handleCaptionCueEnter;\n video.attributes.onCaptionCueExit = this.handleCaptionCueExit;\n video.attributes.onDurationChange = this.handleDurationChange;\n video.attributes.onTimeupdate = this.handleTimeupdate;\n\n return h(\n 'div',\n { className: className },\n h(\n 'div',\n { className: style.videoPlayer__container },\n video,\n caption && h(\n 'div',\n { className: style.videoPlayer__caption, 'aria-hidden': 'true' },\n caption.text.split('\\n').map(function (text, idx) {\n return h(\n 'div',\n { key: String(idx) },\n h('span', { dangerouslySetInnerHTML: { __html: text } })\n );\n })\n ),\n h(\n 'div',\n { className: style.videoPlayer__controls },\n h(TogglePlayButton, {\n className: style.videoPlayer__togglePlayButton,\n playing: isPlaying,\n onClick: this.handleUserTogglePlay\n }),\n h(Scrubber, {\n time: time,\n duration: duration,\n onPositionUpdate: this.handleScrubberPositionUpdate\n }),\n h(ToggleMuteButton, {\n className: style.videoPlayer__toggleMuteButton,\n muted: muted,\n onClick: this.handleUserToggleMute\n })\n )\n )\n );\n }\n }]);\n\n return VideoPlayer;\n}(PureComponent);\n\nexport default VideoPlayer;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/index.js","export default function warn() {\n var _console;\n\n typeof window !== 'undefined' && console && console.warn && (_console = console).warn.apply(_console, arguments);\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/lib/warn.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { h } from 'preact';\nimport PureComponent from '../../lib/preact-pure-component';\nvar style = {\n 'scrubber': 'dhfc-1_0_0-beta_20-scrubber',\n 'scrubber__bgBar': 'dhfc-1_0_0-beta_20-scrubber__bgBar',\n 'scrubber__bufferedBar': 'dhfc-1_0_0-beta_20-scrubber__bufferedBar',\n 'scrubber__playedBar': 'dhfc-1_0_0-beta_20-scrubber__playedBar'\n};\n\nvar Scrubber = function (_PureComponent) {\n _inherits(Scrubber, _PureComponent);\n\n function Scrubber() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Scrubber);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Scrubber.__proto__ || Object.getPrototypeOf(Scrubber)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n left: 0,\n width: 0,\n isScrubbing: false,\n position: null\n }, _this.handleKeyDown = function (evt) {\n var _this$props = _this.props,\n duration = _this$props.duration,\n time = _this$props.time,\n onPositionUpdate = _this$props.onPositionUpdate;\n\n\n if (onPositionUpdate) {\n var nextTime = time;\n\n switch (evt.key) {\n case 'ArrowLeft':\n nextTime -= 1;\n break;\n case 'ArrowRight':\n nextTime += 1;\n break;\n }\n\n onPositionUpdate(Math.max(Math.min(nextTime / duration, 1), 0));\n }\n }, _this.handleMouseDown = function (evt) {\n evt.preventDefault();\n _this.focus();\n _this.start(evt.pageX);\n _this.elm.addEventListener('mousemove', _this.handleMouseMove);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseMove = function (evt) {\n _this.move(evt.pageX);\n }, _this.handleMouseUp = function (evt) {\n _this.focus();\n _this.end();\n _this.elm.removeEventListener('mousemove', _this.handleMouseMove);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleResize = function () {\n var rect = _this.bgElm.getBoundingClientRect();\n\n _this.setState({\n left: Math.floor(rect.left),\n width: rect.width\n });\n }, _this.handleTouchStart = function (evt) {\n if (evt.touches.length === 1) {\n evt.preventDefault();\n _this.focus();\n _this.start(evt.touches[0].clientX);\n _this.elm.addEventListener('touchmove', _this.handleTouchMove);\n window.addEventListener('touchend', _this.handleTouchEnd);\n }\n }, _this.handleTouchMove = function (evt) {\n if (evt.touches.length === 1) {\n _this.move(evt.touches[0].clientX);\n }\n }, _this.handleTouchEnd = function (evt) {\n _this.focus();\n _this.end();\n _this.elm.removeEventListener('touchmove', _this.handleTouchMove);\n window.removeEventListener('touchend', _this.handleTouchEnd);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Scrubber, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.onPositionUpdate) {\n this.elm.addEventListener('keydown', this.handleKeyDown);\n this.elm.addEventListener('mousedown', this.handleMouseDown);\n this.elm.addEventListener('touchstart', this.handleTouchStart);\n window.addEventListener('resize', this.handleResize);\n this.handleResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.props.onPositionUpdate) {\n this.elm.removeEventListener('keydown', this.handleKeyDown);\n this.elm.removeEventListener('mousedown', this.handleMouseDown);\n this.elm.removeEventListener('touchstart', this.handleTouchStart);\n window.removeEventListener('resize', this.handleResize);\n }\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.handleElm.focus();\n }\n }, {\n key: 'start',\n value: function start(clientX) {\n if (this.positionTimeout) {\n clearTimeout(this.positionTimeout);\n }\n\n this.setState({\n position: (clientX - this.state.left) / this.state.width,\n isScrubbing: true\n });\n }\n }, {\n key: 'move',\n value: function move(clientX) {\n this.setState({\n position: Math.max(Math.min((clientX - this.state.left) / this.state.width, 1), 0)\n });\n }\n }, {\n key: 'end',\n value: function end() {\n var _this2 = this;\n\n if (this.props.onPositionUpdate && this.state.position !== null) {\n this.props.onPositionUpdate(this.state.position);\n }\n\n this.setState({\n isScrubbing: false\n });\n\n this.positionTimeout = setTimeout(function () {\n _this2.setState({\n position: null\n });\n }, 350);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props = this.props,\n duration = _props.duration,\n time = _props.time;\n\n var className = '' + style.scrubber + (this.props.className ? ' ' + this.props.className : '');\n var position = this.state.position !== null ? this.state.position : time / duration;\n\n return h(\n 'div',\n { className: className, ref: function ref(elm) {\n return _this3.elm = elm;\n } },\n h('div', {\n className: style.scrubber__bgBar,\n ref: function ref(bgElm) {\n return _this3.bgElm = bgElm;\n }\n }),\n h('div', { className: style.scrubber__bufferedBar }),\n h('div', {\n className: style.scrubber__playedBar,\n style: { width: position * 100 + '%' }\n }),\n h('button', {\n ref: function ref(handleElm) {\n return _this3.handleElm = handleElm;\n },\n role: 'slider',\n 'aria-valuemin': '0',\n 'aria-valuemax': duration * 1000,\n 'aria-valuenow': time * 1000,\n style: { left: position * 100 + '%' }\n })\n );\n }\n }]);\n\n return Scrubber;\n}(PureComponent);\n\nexport default Scrubber;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/Scrubber.js","// @jsx h\n\nimport { bem } from '@nrk/dh-utils';\nimport { h } from 'preact';\nvar style = {\n 'togglePlayButton': 'dhfc-1_0_0-beta_20-togglePlayButton',\n 'togglePlayButton__pauseIcon': 'dhfc-1_0_0-beta_20-togglePlayButton__pauseIcon',\n 'togglePlayButton--playing': 'dhfc-1_0_0-beta_20-togglePlayButton--playing',\n 'togglePlayButton__playIcon': 'dhfc-1_0_0-beta_20-togglePlayButton__playIcon'\n};\n\n\nexport default function TogglePlayButton(props) {\n var playing = props.playing;\n\n var className = '' + bem(style.togglePlayButton, playing && 'playing') + (props.className ? ' ' + props.className : '');\n\n return h(\n 'button',\n { className: className, onClick: props.onClick },\n h(\n 'span',\n { className: 'nrk-sr' },\n playing ? 'Sett video på pause' : 'Spill av video'\n ),\n h('svg', {\n className: style.togglePlayButton__pauseIcon,\n 'aria-hidden': 'true',\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }),\n h('svg', {\n className: style.togglePlayButton__playIcon,\n 'aria-hidden': 'true',\n dangerouslySetInnerHTML: {\n __html: ''\n }\n })\n );\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/TogglePlayButton.js","// @jsx h\n\nimport { bem } from '@nrk/dh-utils';\nimport { h } from 'preact';\nvar style = {\n 'toggleMuteButton': 'dhfc-1_0_0-beta_20-toggleMuteButton',\n 'toggleMuteButton__volumeIcon': 'dhfc-1_0_0-beta_20-toggleMuteButton__volumeIcon',\n 'toggleMuteButton--muted': 'dhfc-1_0_0-beta_20-toggleMuteButton--muted',\n 'toggleMuteButton__mutedIcon': 'dhfc-1_0_0-beta_20-toggleMuteButton__mutedIcon'\n};\n\n\nexport default function ToggleMuteButton(props) {\n var muted = props.muted;\n\n var className = '' + bem(style.toggleMuteButton, muted && 'muted') + (props.className ? ' ' + props.className : '');\n\n return h(\n 'button',\n { className: className, onClick: props.onClick },\n h(\n 'span',\n { className: 'nrk-sr' },\n muted ? 'Slå på lyd' : 'Slå av lyd'\n ),\n h('svg', {\n className: style.toggleMuteButton__mutedIcon,\n 'aria-hidden': 'true',\n dangerouslySetInnerHTML: {\n __html: ''\n }\n }),\n h('svg', {\n className: style.toggleMuteButton__volumeIcon,\n 'aria-hidden': 'true',\n dangerouslySetInnerHTML: {\n __html: ''\n }\n })\n );\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/video/VideoPlayer/ToggleMuteButton.js","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// @jsx h\n\nimport { toArray } from '@nrk/dh-utils';\nimport { h } from 'preact';\nimport PureComponent from '../lib/preact-pure-component';\n\nvar ViewportIntersections = function (_PureComponent) {\n _inherits(ViewportIntersections, _PureComponent);\n\n function ViewportIntersections(props) {\n _classCallCheck(this, ViewportIntersections);\n\n var _this = _possibleConstructorReturn(this, (ViewportIntersections.__proto__ || Object.getPrototypeOf(ViewportIntersections)).call(this));\n\n _this.state = {\n intersections: props.children.map(function (child, idx) {\n return {\n isIntersecting: false,\n ratio: null\n };\n })\n };\n return _this;\n }\n\n _createClass(ViewportIntersections, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var _props = this.props,\n onChange = _props.onChange,\n onEnter = _props.onEnter,\n onLeave = _props.onLeave,\n rootMargin = _props.rootMargin,\n threshold = _props.threshold;\n\n var childNodes = toArray(this.elm.childNodes);\n\n this.intersectionObserver = new IntersectionObserver(function (entries) {\n var intersections = _this2.state.intersections.slice(0);\n\n entries.forEach(function (entry) {\n var idx = childNodes.indexOf(entry.target);\n var prevIntersection = intersections[idx];\n\n intersections.splice(idx, 1, {\n isIntersecting: entry.isIntersecting,\n ratio: entry.intersectionRatio\n });\n\n if (onEnter && !prevIntersection.isIntersecting && entry.isIntersecting) {\n onEnter(entry, idx);\n }\n\n if (onLeave && prevIntersection.isIntersecting && !entry.isIntersecting) {\n onLeave(entry, idx);\n }\n });\n\n _this2.setState({ intersections: intersections });\n\n if (onChange) {\n onChange(intersections);\n }\n }, {\n rootMargin: rootMargin || '0px 0px 0px 0px',\n threshold: threshold || 1.0\n });\n\n childNodes.forEach(function (childElm) {\n return _this2.intersectionObserver.observe(childElm);\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.intersectionObserver.disconnect();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props2 = this.props,\n className = _props2.className,\n children = _props2.children,\n style = _props2.style;\n\n\n return h(\n 'div',\n { ref: function ref(elm) {\n return _this3.elm = elm;\n }, className: className, style: style },\n children\n );\n }\n }]);\n\n return ViewportIntersections;\n}(PureComponent);\n\nexport default ViewportIntersections;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-feature-components/dist/module/ViewportIntersections/index.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"skew\":\"dh-kult-hnio-skew\",\"skew--top\":\"dh-kult-hnio-skew--top\",\"skew--bottom\":\"dh-kult-hnio-skew--bottom\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/v1/components/Skew/index.css\n// module id = 225\n// module chunks = 0","// @flow @jsx h\n\n/* eslint-disable compat/compat */\n\nimport { h } from 'preact'\nimport PureComponent from 'preact-pure-component'\nimport style from './index.css'\nimport Section from './Section'\n\ntype Props = any\n\ntype State = any\n\nclass Content extends PureComponent {\n intersectionObserver: IntersectionObserver\n sectionElms: Array\n triggerElms: Array | null>\n\n constructor (props: Props) {\n super(props)\n this.sectionElms = props.sections.map(section => null)\n this.triggerElms = props.sections.map(section => {\n switch (section.type) {\n case 'section':\n return section.value.content\n ? section.value.content.map(item => null)\n : []\n\n default:\n return null\n }\n })\n this.state = {\n sectionIntersections: props.sections.map(section => ({\n isIntersecting: false,\n intersectionRatio: 0\n })),\n triggerIntersections: props.sections.map(section => {\n switch (section.type) {\n case 'section':\n return section.value.content\n ? section.value.content.map(item => ({\n intersectionRatio: -1,\n isIntersecting: false\n }))\n : []\n\n default:\n return null\n }\n })\n }\n }\n\n componentDidMount () {\n this.intersectionObserver = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n let sectionIndex = -1\n let index = -1\n\n // Find indexes\n this.triggerElms.forEach((triggerElms, idx) => {\n if (triggerElms) {\n const triggerIndex = triggerElms.indexOf(entry.target)\n\n if (triggerIndex > -1) {\n sectionIndex = idx\n index = triggerIndex\n }\n }\n })\n\n // Update triggerIntersections\n if (index > -1) {\n const triggerIntersections = this.state.triggerIntersections.slice(\n 0\n )\n\n if (triggerIntersections[sectionIndex]) {\n const intersections = triggerIntersections[sectionIndex].slice(0)\n\n intersections[index] = {\n isIntersecting: entry.isIntersecting,\n intersectionRatio: entry.intersectionRatio\n }\n\n triggerIntersections[sectionIndex] = intersections\n }\n\n this.setState({ triggerIntersections })\n\n return\n }\n\n sectionIndex = this.sectionElms.indexOf(entry.target)\n\n // Update sectionIntersections\n if (sectionIndex > -1) {\n const sectionIntersections = this.state.sectionIntersections.slice(\n 0\n )\n\n sectionIntersections[sectionIndex] = {\n isIntersecting: entry.isIntersecting,\n intersectionRatio: entry.intersectionRatio\n }\n\n this.setState({ sectionIntersections })\n }\n })\n },\n {\n rootMargin: '0px 0px 0px 0px',\n threshold: [0, 0.5]\n }\n )\n\n // Observe intersection of section elements\n this.sectionElms.forEach(sectionElm => {\n if (sectionElm) {\n this.intersectionObserver.observe(sectionElm)\n }\n })\n\n // Observe intersections of trigger elements\n this.triggerElms.forEach(triggerElms => {\n if (triggerElms) {\n triggerElms.forEach(triggerElm => {\n if (triggerElm) {\n this.intersectionObserver.observe(triggerElm)\n }\n })\n }\n })\n }\n\n handleRegisterSectionElement = (\n sectionElm: HTMLElement,\n sectionIndex: number\n ) => {\n this.sectionElms[sectionIndex] = sectionElm\n }\n\n handleRegisterTriggerElement = (\n triggerElm: HTMLElement,\n sectionIndex: number,\n index: number\n ) => {\n if (this.triggerElms[sectionIndex]) {\n this.triggerElms[sectionIndex][index] = triggerElm\n }\n }\n\n render () {\n const {\n mediaBaseUrl,\n muted,\n onAnalyticsEvent,\n onUserToggleMute,\n sections,\n viewport\n } = this.props\n const { sectionIntersections, triggerIntersections } = this.state\n\n return (\n
\n {sections.map((section, idx) => {\n switch (section.type) {\n case 'section':\n return (\n \n )\n\n default:\n return null\n }\n })}\n
\n )\n }\n}\n\nexport default Content\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/Article/Content.js","// @flow @jsx h\n\nimport {\n Figure,\n Paragraph,\n PullQuote,\n SerumResponsivePicture,\n SmartVideo,\n ViewportIntersections\n} from '@nrk/dh-feature-components'\nimport { bem } from '@nrk/dh-utils'\nimport { h } from 'preact'\nimport PureComponent from 'preact-pure-component'\nimport VisualStory from '../../VisualStory'\nimport VideoPlayer from '../VideoPlayer'\nimport style from '../index.css'\n\nimport type { Props } from './types'\n\nclass Section extends PureComponent {\n elm: HTMLDivElement\n\n constructor (props: Props) {\n super(props)\n\n this.state = {\n seen: false\n }\n }\n\n componentDidMount () {\n this.props.onRegisterSectionElement(this.elm, this.props.index)\n }\n\n componentDidUpdate (prevProps: Props) {\n const { isIntersecting, onAnalyticsEvent } = this.props\n const { seen } = this.state\n\n if (!seen && isIntersecting && !prevProps.isIntersecting) {\n setTimeout(() => {\n this.setState({ seen: true })\n }, 0)\n\n onAnalyticsEvent({ action: `section/SHOW/${this.props.index}` })\n }\n }\n\n handleIntersectionEnter = (entry: any, index: number) => {\n const { onAnalyticsEvent } = this.props\n\n onAnalyticsEvent({\n action: `section/SHOW_ITEM/${this.props.index}/${index}`\n })\n }\n\n render () {\n const {\n index,\n intersections,\n isIntersecting,\n mediaBaseUrl,\n muted,\n onAnalyticsEvent,\n onRegisterTriggerElement,\n onUserToggleMute,\n viewport\n } = this.props\n const { content, id, title } = this.props.value\n const visible = isIntersecting\n\n return (\n (this.elm = elm)}\n className={bem(style.section, {\n visible,\n dark: this.props.value.color === 'dark'\n })}\n id={id}\n >\n {title &&

{title}

}\n {content && (\n \n {content.map((item, idx) => {\n switch (item.type) {\n case 'figure':\n return (\n \n }\n caption={item.value.caption.map(item => item.value)}\n key={String(idx)}\n />\n )\n case 'pullQuote':\n return (\n \n )\n case 'video':\n return (\n {}}\n onRegisterTriggerElement={onRegisterTriggerElement}\n video={\n {\n return {\n language: textTrack.language || 'Norsk',\n captions: textTrack.captions\n ? textTrack.captions.map(caption => {\n return {\n in: caption.in ? Number(caption.in) : 0,\n out: caption.out\n ? Number(caption.out)\n : 0,\n text: String(caption.text).replace(\n /
/g,\n '\\n'\n )\n }\n })\n : []\n }\n })}\n resolution720p={{\n poster: `${mediaBaseUrl}${\n item.value.resolution720p.poster\n }`,\n sources: item.value.resolution720p.sources.map(\n source => {\n return {\n type: source.type,\n src: `${mediaBaseUrl}${source.src}`\n }\n }\n )\n }}\n resolution960p={{\n poster: `${mediaBaseUrl}${\n item.value.resolution960p.poster\n }`,\n sources: item.value.resolution960p.sources.map(\n source => {\n return {\n type: source.type,\n src: `${mediaBaseUrl}${source.src}`\n }\n }\n )\n }}\n resolution1080p={{\n poster: `${mediaBaseUrl}${\n item.value.resolution1080p.poster\n }`,\n sources: item.value.resolution1080p.sources.map(\n source => {\n return {\n type: source.type,\n src: `${mediaBaseUrl}${source.src}`\n }\n }\n )\n }}\n viewport={viewport}\n />\n }\n />\n )\n case 'visualStory':\n return (\n \n )\n case 'text':\n return (\n \n )\n default:\n return
{item.type}
\n }\n })}\n \n )}\n \n )\n }\n}\n\nexport default Section\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/Article/Section/index.js","// @flow @jsx h\n\nimport { Slideshow, ViewportIntersections } from '@nrk/dh-feature-components'\nimport { bem, getScrollTop } from '@nrk/dh-utils'\nimport { h } from 'preact'\nimport PureComponent from 'preact-pure-component'\nimport Skew from '../Skew'\nimport style from './index.css'\nimport MediaSlide from './MediaSlide'\n\n// Import card types\nimport DefaultCard from './cards/DefaultCard'\n\nimport type { Props, State } from './types'\n\ntype Intersection = {\n isIntersecting: boolean,\n ratio: number\n}\n\nclass VisualStory extends PureComponent {\n elm: HTMLDivElement\n visibleRaf: any\n\n constructor (props: Props) {\n super(props)\n\n this.state = {\n intersectionRatio: 0,\n rect: null,\n activeIndex: props.slides.length ? 0 : -1,\n visible: false\n }\n }\n\n componentDidMount () {\n this.handleResize()\n\n this.props.onRegisterTriggerElement(\n this.elm,\n this.props.sectionIndex,\n this.props.index\n )\n\n window.addEventListener('resize', this.handleResize)\n }\n\n componentDidUpdate (prevProps: Props, prevState: State) {\n const { isIntersecting } = this.props\n\n if (isIntersecting !== prevProps.isIntersecting) {\n if (isIntersecting && !prevProps.isIntersecting) {\n this.startVisibilityListener()\n } else {\n this.stopVisibilityListener()\n }\n }\n }\n\n componentWillUnmount () {\n window.removeEventListener('resize', this.handleResize)\n }\n\n handleResize = () => {\n const scrollTop = getScrollTop()\n const rect = this.elm.getBoundingClientRect()\n\n this.setState({\n rect: {\n height: rect.height,\n top: rect.top + scrollTop,\n bottom: rect.bottom + scrollTop\n }\n })\n }\n\n handleChange = (intersections: Intersection[]) => {\n this.setState({\n intersectionRatio: intersections[this.state.activeIndex].ratio\n })\n }\n\n handleEnter = (entry: any, idx: number) => {\n this.setState({ activeIndex: idx })\n }\n\n startVisibilityListener () {\n const { rect, visible } = this.state\n const scrollTop = getScrollTop()\n const halfHeight = window.innerHeight\n\n if (rect) {\n if (scrollTop > rect.top - halfHeight && scrollTop < rect.bottom) {\n if (!visible) {\n this.setState({ visible: true })\n }\n } else {\n if (visible) {\n this.setState({ visible: false })\n }\n }\n }\n\n this.visibleRaf = requestAnimationFrame(() => {\n this.startVisibilityListener()\n })\n }\n\n stopVisibilityListener () {\n if (this.visibleRaf) {\n cancelAnimationFrame(this.visibleRaf)\n }\n }\n\n render () {\n const {\n isIntersecting,\n mediaBaseUrl,\n muted,\n onAnalyticsEvent,\n onToggleMute,\n slides,\n viewport\n } = this.props\n const { visible, activeIndex } = this.state\n\n // Build inline styles for `div.visualStory__cards`\n const cardsInlineStyle = {}\n if (viewport.height > -1) {\n cardsInlineStyle.marginTop = `${0 - viewport.height}px`\n cardsInlineStyle.paddingBottom = `${viewport.height}px`\n }\n\n return (\n
(this.elm = elm)} className={style.visualStory}>\n \n \n {slides.map((slide, idx) => (\n \n ))}\n \n \n {slides.map((slide, idx) => {\n switch (slide.type) {\n default:\n return (\n \n )\n }\n })}\n \n \n
\n )\n }\n}\n\nexport default VisualStory\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/VisualStory/index.js","// @flow @jsx h\n\nimport {\n SerumSmartPicture,\n SmartVideo,\n Slide\n} from '@nrk/dh-feature-components'\nimport { bem } from '@nrk/dh-utils'\nimport { h } from 'preact'\n// import Fallback from '../Fallback'\nimport style from './index.css'\n\nimport type { DefaultSlideProps } from './types'\n\nfunction MediaSlide (props: DefaultSlideProps) {\n const {\n isIntersecting,\n mediaBaseUrl,\n viewport,\n parentVisible,\n ...restProps\n } = props\n const { description, media, title } = props.value\n\n if (!media) {\n return \n }\n\n let text = (description || title) && (\n
\n {title &&

}\n {description &&

}\n

\n )\n\n switch (media.type) {\n case 'image':\n return (\n \n {text}\n \n \n )\n\n case 'videoLoop':\n return (\n \n {text}\n {\n return {\n type: source.type,\n src: `${mediaBaseUrl}${source.src}`\n }\n })\n }}\n resolution960p={{\n poster: `${mediaBaseUrl}${media.resolution960p.poster}`,\n sources: media.resolution960p.sources.map(source => {\n return {\n type: source.type,\n src: `${mediaBaseUrl}${source.src}`\n }\n })\n }}\n resolution1080p={{\n poster: `${mediaBaseUrl}${media.resolution1080p.poster}`,\n sources: media.resolution1080p.sources.map(source => {\n return {\n type: source.type,\n src: `${mediaBaseUrl}${source.src}`\n }\n })\n }}\n viewport={viewport}\n />\n
\n )\n\n default:\n return \n }\n}\n\nexport default MediaSlide\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/VisualStory/MediaSlide.js","// @flow @jsx h\n\nimport { bem } from '@nrk/dh-utils'\nimport { Paragraph } from '@nrk/dh-feature-components'\nimport { h } from 'preact'\nimport style from '../index.css'\n\nimport type { DefaultSlideProps } from '../types'\n\nfunction DefaultCard (props: DefaultSlideProps) {\n const { viewport } = props\n const { align, content, credit } = props.value\n\n const wrapperInlineStyle = {}\n\n if (viewport.height > -1) {\n wrapperInlineStyle.marginTop = `${viewport.height - 10}px`\n }\n\n return (\n
\n
\n {content &&\n content.map((item, itemIdx) => (\n \n ))}\n {credit &&
{credit}
}\n
\n
\n )\n}\n\nexport default DefaultCard\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/VisualStory/cards/DefaultCard.js","// @flow @jsx h\n\nimport { VideoPlayer as BaseVideoPlayer } from '@nrk/dh-feature-components'\nimport { h } from 'preact'\nimport PureComponent from 'preact-pure-component'\n\nclass VideoPlayer extends PureComponent {\n elm: any\n\n state = {\n playing: true\n }\n\n componentDidMount () {\n this.props.onRegisterTriggerElement(\n this.elm,\n this.props.sectionIndex,\n this.props.index\n )\n }\n\n handleUserTogglePlay = () => {\n this.setState({ playing: !this.state.playing })\n }\n\n handlePlay = () => {\n this.props.onAnalyticsEvent({\n action: `video/PLAY/${this.props.sectionIndex}/${this.props.index}`\n })\n }\n\n handlePause = () => {\n this.props.onAnalyticsEvent({\n action: `video/PAUSE/${this.props.sectionIndex}/${this.props.index}`\n })\n }\n\n render () {\n const { playing } = this.state\n\n return (\n
(this.elm = elm)}>\n = 0.5 &&\n playing\n }\n onPlay={this.handlePlay}\n onPause={this.handlePause}\n onUserTogglePlay={this.handleUserTogglePlay}\n />\n
\n )\n }\n}\n\nexport default VideoPlayer\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/Article/VideoPlayer.js"],"sourceRoot":""}