HTML Report for https://www.phillymag.com/foobooz/50-best-restaurants/
This tool is an ongoing experiment in better HTML checking, and its behavior remains subject to changeShowing results for https://www.phillymag.com/foobooz/50-best-restaurants/
You can view the notes...
view-source:https://www.phillymag.com/foobooz/50-best-restaurants/
| # | results |
|---|---|
| 1 |
Error
On line 1, column 9 <https://www.ph |
| 2 |
Error
On line 1, column 10 <https://www.phi |
| 3 |
Error
On line 1, column 28 <https://www.phillymag.com/wp-json |
| 4 |
Error
On line 1, column 36 ymag.com/wp-json/>; rel= |
| 5 |
Info
On line 1, column 36 ymag.com/wp-json/>; rel= |
| 6 |
Error
On line 1, column 36 ymag.com/wp-json/>; rel= |
| 7 |
Error
On line 2, column 15 /wp-json/>; rel="https://api.w.org/" link: <https://www.ph |
| 8 |
Error
On line 2, column 16 <https://www.phi |
| 9 |
Error
On line 2, column 34 <https://www.phillymag.com/wp-json |
| 10 |
Error
On line 2, column 42 ymag.com/wp-json/wp/v2/p |
| 11 |
Error
On line 2, column 45 /wp-json/wp/v2/page |
| 12 |
Error
On line 2, column 48 -json/wp/v2/pages/4 |
| 13 |
Error
On line 2, column 54 on/wp/v2/pages/4031020 |
| 14 |
Info
On line 2, column 61 v2/pages/4031020>; rel= |
| 15 |
Info
On line 2, column 61 v2/pages/4031020>; rel= |
| 16 |
Error
On line 3, column 15 s/4031020>; rel="alternate"; type="application/json" link: <https://www.ph |
| 17 |
Error
On line 3, column 16 <https://www.phi |
| 18 |
Error
On line 3, column 34 <https://www.phillymag.com/?p=4031 |
| 19 |
Info
On line 3, column 44 ymag.com/?p=4031020>; rel= |
| 20 |
Info
On line 3, column 44 ymag.com/?p=4031020>; rel= |
| 21 |
Error
On line 20, column 15 p=4031020>; rel=shortlink last-modified: Wed, 10 Apr 2024 07:59:50 GMT x-batcache: True access-control-allow-origin: * x-cache-key: https://_desktop_www.phillymag.comGET/foobooz/50-best-restaurants/prestitial x-zephr-cache: miss set-cookie: blaize_session=9892b9d3-0744-4501-8129-e44b6aaff6a0; Expires=Wed, 28 Aug 2024 07:59:50 GMT; Path=/; set-cookie: blaize_tracking_id=4860016e-75db-46c4-9d49-659ce30d4c40; Expires=Tue, 12 Aug 3023 07:59:51 GMT; Path=/; cache-control: no-store, no-transform content-encoding: gzip vary: Accept-Encoding,Cookie x-cache: Miss from cloudfront via: 1.1 bf8300a72b6d0584e2f6b1df22e3f548.cloudfront.net (CloudFront) x-amz-cf-pop: WAW51-P3 alt-svc: h3=":443"; ma=86400 x-amz-cf-id: BCtFQUfFjAvA6bODLkQ8VWravZZexHecZL3jlk7LpLkWmNkK20q6gw== <!doctype html> <html |
| 22 |
Error
On line 21, column 19 type html> <html lang="en-US"> <hea |
| 23 |
Error
On line 22, column 7 g="en-US"> <head> <me |
| 24 |
Error
On line 257, column 8 "> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> <meta content="utf-8" http-equiv="encoding"> <link rel="preconnect" href="https://securepubads.g.doubleclick.net"><link rel="preconnect" href="https://www.googleadservices.com"><link rel="preconnect" href="https://s.ntv.io"><link rel="preconnect" href="https://ib.adnxs.com"><link rel="preconnect" href="https://ap.lijit.com"><link rel="preconnect" href="https://static.criteo.net"><link rel="preconnect" href="https://cdn10.bostonmagazine.com/"><link rel="preconnect" href="https://s.ntv.io/"><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"> <!-- This site is optimized with the Yoast SEO Premium plugin v21.7 (Yoast SEO v21.7) - https://yoast.com/wordpress/plugins/seo/ --> <title>The 50 Best Restaurants in Philadelphia</title> <meta name="description" content="Philly Mag’s annual list of the 50 best restaurants taking Philly’s celebrated dining scene to ever greater heights"> <link rel="canonical" href="https://www.phillymag.com/foobooz/50-best-restaurants/"> <meta property="og:locale" content="en_US"> <meta property="og:type" content="article"> <meta property="og:title" content="The 50 Best Restaurants in Philadelphia"> <meta property="og:description" content="Philly Mag’s annual list of the 50 best restaurants taking Philly’s celebrated dining scene to ever greater heights"> <meta property="og:url" content="https://www.phillymag.com/foobooz/50-best-restaurants/"> <meta property="og:site_name" content="Philadelphia Magazine"> <meta property="article:modified_time" content="2024-01-31T01:20:45+00:00"> <meta property="og:image" content="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/1200-50-best-24.jpg"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="630"> <meta property="og:image:type" content="image/jpeg"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="The 50 Best Restaurants in Philadelphia"> <meta name="twitter:description" content="Philly Mag’s annual list of the 50 best restaurants taking Philly’s celebrated dining scene to ever greater heights"> <meta name="twitter:image" content="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/1200-50-best-24.jpg"> <meta name="twitter:label1" content="Est. reading time"> <meta name="twitter:data1" content="29 minutes"> <meta name="twitter:label2" content="Written by"> <meta name="twitter:data2" content="Kae Lani Palmisano, Regan Fletcher Stephens, Jason Sheehan, Maddy Sweitzer-Lammé"> <!-- / Yoast SEO Premium plugin. --> <link rel="dns-prefetch" href="//securepubads.g.doubleclick.net"> <link rel="dns-prefetch" href="//static.criteo.net"> <link rel="dns-prefetch" href="//s.ntv.io"> <link rel="dns-prefetch" href="//cloud.typography.com"> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/14.0.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/cdn10.phillymag.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.4.3"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c\udfff","\ud83e\udef1\ud83c\udffb\u200b\ud83e\udef2\ud83c\udfff")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <style id="wp-emoji-styles-inline-css" type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <style id="classic-theme-styles-inline-css" type="text/css"> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id="global-styles-inline-css" type="text/css"> body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} .wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} .wp-block-pullquote{font-size: 1.5em;line-height: 1.6;} </style> <link rel="stylesheet" id="phillymag-css" href="https://cdn10.phillymag.com/wp-content/themes/metrocorp/dist/css/philly.min.css?ver=87" type="text/css" media="all"> <link rel="stylesheet" id="phillymag-countdown-css-css" href="https://cdn10.phillymag.com/wp-content/themes/metrocorp-phillymag/countdown-clock/countdown.css?ver=0.4.37" type="text/css" media="all"> <script type="text/javascript" id="gpt-js-extra"> /* <![CDATA[ */ var mcAds = {"advertiserSlug":"","currentSite":"phillymag","doPrebid":"true","gptNetworkID":"\/307442\/a.site195.tmus\/","hasBannerThree":"true","isArchive":"false","isGeodir":"false","isSingle":"1","postType":"page","prebidTimeout":"2000","prebidFailsafeTimeout":"3000","slots":{"banner-1":{"adUnit":"banner","adSizes":"[[728, 90], [320, 100], [970, 250], [320, 50], [970, 90]]","id":"banner-1","mapping":"bannerOneMapping","hasSettings":true,"isPrebid":"true","isRefresh":"true","targeting":{"pos":"1"},"isLazy":"false"},"banner-2":{"adUnit":"banner","adSizes":"[[728, 90], [320, 100], [970, 250], [300, 250], [320, 50], [970, 90]]","id":"banner-2","mapping":"bannerMapping","hasSettings":true,"isLazy":"true","isRefresh":"true","isPrebid":"true","targeting":{"pos":"2"}},"banner-3":{"adUnit":"banner","adSizes":"[[728, 90], [320, 100], [970, 250], [300, 250], [320, 50], [970, 90], [1,1]]","id":"banner-3","mapping":"bannerMapping","hasSettings":true,"isLazy":"true","isRefresh":"true","isPrebid":"true","targeting":{"pos":"3"}},"banner-4":{"adUnit":"banner","adSizes":"[[728, 90], [320, 100], [970, 250], [300, 250], [320, 50], [970, 90]]","id":"banner-4","mapping":"bannerMapping","hasSettings":true,"isLazy":"true","isRefresh":"true","isPrebid":"true","targeting":{"pos":"3"}},"native_related":{"adUnit":"native_related","adSizes":"fluid","id":"native_related","targeting":{"pos":"2"}},"directory_edl-1":{"adUnit":"directory_edl","adSizes":"fluid","id":"directory_edl-1","targeting":{"pos":"1"}},"directory_edl-2":{"adUnit":"directory_edl","adSizes":"fluid","id":"directory_edl-2","targeting":{"pos":"2"}},"curated_module-1":{"adUnit":"curated_module","adSizes":"fluid","id":"curated_module-1","hasSettings":true,"isLazy":"true","targeting":{"pos":"1"},"isRefresh":"false","isPrebid":"false"},"curated_module-2":{"adUnit":"curated_module","adSizes":"fluid","id":"curated_module-2","hasSettings":true,"isLazy":"true","targeting":{"pos":"2"},"isRefresh":"false","isPrebid":"false"},"curated_module-3":{"adUnit":"curated_module","adSizes":"fluid","id":"curated_module-3","hasSettings":true,"isLazy":"true","targeting":{"pos":"3"},"isRefresh":"false","isPrebid":"false"},"toprailsponsor-1":{"adUnit":"toprailsponsor","adSizes":"[[300, 150], [300, 90], [1,1]]","id":"toprailsponsor-1","mapping":"toprailMapping","targeting":{"pos":"1"}},"teads-video-oop":{"adUnit":"teads-video-oop","id":"teads-video-oop","outOfPage":true},"native_sidebar":{"adUnit":"native_sidebar","adSizes":"fluid","id":"native_sidebar","targeting":{"pos":"1"}},"ad-reveal":{"adUnit":"ad-reveal","adSizes":"[[1300, 500], [780, 300], [360, 585]]","id":"ad-reveal","hasSettings":true,"mapping":"adrevealMapping","isPrebid":"false","isRefresh":"false","isLazy":"false"},"bottom-anchor":{"adUnit":"BOTTOM_ANCHOR","id":"bottom-anchor","isMobile":true,"isRefresh":"true","outOfPage":true,"outOfPageFormat":"BOTTOM_ANCHOR","targeting":{"test":"outofpage"}}},"slotsFired":[],"slotsViewed":[],"slotsPrebid":[],"targeting":{"vertical":"foobooz","post_ID":"4031020","cat":["guides"],"environment":"production","post_type":"article"},"debug":""}; /* ]]> */ </script> <script type="text/javascript" id="gpt-js-before"> /* <![CDATA[ */ /* prebid.js v6.23.0 Updated : 2022-05-06*/ /*! For license information please see prebid-core.js.LICENSE.txt */ !function(){var e,n={4877:function(e,n,t){"use strict";t.d(n,{Pd:function(){return s},Th:function(){return u},_U:function(){return d}});var r=t(6996),i=t(9853),o=t(265),a=t(1879),c="outstream";function u(e){var n=this,t=e.url,o=e.config,a=e.id,u=e.callback,s=e.loaded,d=e.adUnitCode;this.url=t,this.config=o,this.handlers={},this.id=a,this.loaded=s,this.cmd=[],this.push=function(e){"function"==typeof e?n.loaded?e.call():n.cmd.push(e):(0,i.logError)("Commands given to Renderer.push must be wrapped in a function")},this.callback=u||function(){n.loaded=!0,n.process()},this.render=function(){var e=this,n=arguments,o=function(){e._render?e._render.apply(e,n):(0,i.logWarn)("No render function was provided, please use .setRender on the renderer")};f(d)?((0,i.logWarn)("External Js not loaded by Renderer since renderer url and callback is already defined on adUnit ".concat(d)),o()):(this.cmd.unshift(o),(0,r.B)(t,c,this.callback,this.documentContext))}.bind(this)}function s(e){return!(!e||!e.url)}function d(e,n,t){var r=null;e.config&&e.config.documentResolver&&(r=e.config.documentResolver(n,document,t)),r||(r=document),e.documentContext=r,e.render(n,e.documentContext)}function f(e){var n=pbjs.adUnits,t=(0,a.sE)(n,(function(n){return n.code===e}));if(!t)return!1;var r=(0,o.Z)(t,"renderer"),i=!!(r&&r.url&&r.render),c=(0,o.Z)(t,"mediaTypes.video.renderer"),u=!!(c&&c.url&&c.render);return!!(i&&!0!==r.backupOnly||u&&!0!==c.backupOnly)}u.install=function(e){return new u({url:e.url,config:e.config,id:e.id,callback:e.callback,loaded:e.loaded,adUnitCode:e.adUnitCode})},u.prototype.getConfig=function(){return this.config},u.prototype.setRender=function(e){this._render=e},u.prototype.setEventHandlers=function(e){this.handlers=e},u.prototype.handleVideoEvent=function(e){var n=e.id,t=e.eventName;"function"==typeof this.handlers[t]&&this.handlers[t](),(0,i.logMessage)("Prebid Renderer event for id ".concat(n," type ").concat(t))},u.prototype.process=function(){for(;this.cmd.length>0;)try{this.cmd.shift().call()}catch(e){(0,i.logError)("Error processing Renderer command: ",e)}}},7263:function(e,n,t){"use strict";t.d(n,{f:function(){return a}});var r=t(265),i={};function o(e,n,t){var r=function(e,n){var t=i[e]=i[e]||{bidders:{}};return n?t.bidders[n]=t.bidders[n]||{}:t}(e,t);return r[n]=(r[n]||0)+1,r[n]}var a={incrementRequestsCounter:function(e){return o(e,"requestsCounter")},incrementBidderRequestsCounter:function(e,n){return o(e,"requestsCounter",n)},incrementBidderWinsCounter:function(e,n){return o(e,"winsCounter",n)},getRequestsCounter:function(e){return(0,r.Z)(i,"".concat(e,".requestsCounter"))||0},getBidderRequestsCounter:function(e,n){return(0,r.Z)(i,"".concat(e,".bidders.").concat(n,".requestsCounter"))||0},getBidderWinsCounter:function(e,n){return(0,r.Z)(i,"".concat(e,".bidders.").concat(n,".winsCounter"))||0}}},2801:function(e,n,t){"use strict";function r(e){var n=e;return{callBids:function(){},setBidderCode:function(e){n=e},getBidderCode:function(){return n}}}t.d(n,{Z:function(){return r}})},7602:function(e,n,t){"use strict";t.d(n,{qJ:function(){return G},VP:function(){return X},ZP:function(){return re},JO:function(){return Y},rp:function(){return J},uV:function(){return ee},Ct:function(){return ne},nX:function(){return Q}});var r=t(9853),i=t(265),o=t(1269),a=t(9017),c=t(1609),u=t(5755),s=t(8962),d=t(3494),f=t(1879),l=t(7263),g=t(2661);function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}function v(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),n&&y(e,n)}function y(e,n){return y=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e},y(e,n)}function b(e){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var t,r=m(e);if(n){var i=m(this).constructor;t=Reflect.construct(r,arguments,i)}else t=r.apply(this,arguments);return h(this,t)}}function h(e,n){if(n&&("object"===p(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function E(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function S(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function A(e,n,t){return n&&S(e.prototype,n),t&&S(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function T(e,n,t){!function(e,n){if(n.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,n),n.set(e,t)}function I(e,n){return function(e,n){return n.get?n.get.call(e):n.value}(e,w(e,n,"get"))}function C(e,n,t){return function(e,n,t){if(n.set)n.set.call(e,t);else{if(!n.writable)throw new TypeError("attempted to set read only private field");n.value=t}}(e,w(e,n,"set"),t),t}function w(e,n,t){if(!n.has(e))throw new TypeError("attempted to "+t+" private field on non-instance");return n.get(e)}var O=new WeakMap,B=new WeakMap,_=new WeakMap,U=new WeakMap,R=new WeakMap,D=function(){function e(){var n,t;E(this,e),T(this,O,{writable:!0,value:void 0}),T(this,B,{writable:!0,value:void 0}),T(this,_,{writable:!0,value:void 0}),T(this,U,{writable:!0,value:void 0}),T(this,R,{writable:!0,value:void 0}),t=void 0,(n="generatedTime")in this?Object.defineProperty(this,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[n]=t,this.reset()}return A(e,[{key:"reset",value:function(){var e=this;C(this,_,new Promise((function(n){C(e,U,(function(t){C(e,R,!0),C(e,B,t),n(t)}))}))),C(this,O,!1),C(this,B,null),C(this,R,!1),this.generatedTime=null}},{key:"enable",value:function(){C(this,O,!0)}},{key:"enabled",get:function(){return I(this,O)}},{key:"ready",get:function(){return I(this,R)}},{key:"promise",get:function(){return I(this,R)?Promise.resolve(I(this,B)):(I(this,O)||I(this,U).call(this,null),I(this,_))}},{key:"setConsentData",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,r.timestamp)();this.generatedTime=n,I(this,U).call(this,e)}},{key:"getConsentData",value:function(){return I(this,B)}}]),e}(),k=function(e){v(t,e);var n=b(t);function t(){return E(this,t),n.apply(this,arguments)}return A(t,[{key:"getConsentMeta",value:function(){var e=this.getConsentData();if(e&&this.generatedTime)return{usp:e,generatedAt:this.generatedTime}}}]),t}(D),j=function(e){v(t,e);var n=b(t);function t(){return E(this,t),n.apply(this,arguments)}return A(t,[{key:"getConsentMeta",value:function(){var e=this.getConsentData();if(e&&e.vendorData&&this.generatedTime)return{gdprApplies:e.gdprApplies,consentStringSize:(0,r.isStr)(e.vendorData.tcString)?e.vendorData.tcString.length:0,generatedAt:this.generatedTime,apiVersion:e.apiVersion}}}]),t}(D);function N(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function P(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?N(Object(t),!0).forEach((function(n){q(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):N(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function x(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function q(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function M(){return M=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},M.apply(this,arguments)}var G={CLIENT:"client",SERVER:"server"},W=t(5644),F=t(2319),z={},L=z.bidderRegistry={},K=z.aliasRegistry={},V=[];s.vc.getConfig("s2sConfig",(function(e){e&&e.s2sConfig&&(V=(0,r.isArray)(e.s2sConfig)?e.s2sConfig:[e.s2sConfig])}));var H={},Z=(0,d.z3)("sync",(function(e){var n=e.bidderCode,t=e.auctionId,o=e.bidderRequestId,a=e.adUnits,c=e.src;return a.reduce((function(e,a){return e.push(a.bids.filter((function(e){return e.bidder===n})).reduce((function(e,n){var u=null==(n=M({},n,(0,r.getDefinedParams)(a,["nativeParams","ortb2Imp","mediaType","renderer","storedAuctionResponse"]))).mediaTypes?a.mediaTypes:n.mediaTypes;return(0,r.isValidMediaTypes)(u)?n=M({},n,{mediaTypes:u}):(0,r.logError)("mediaTypes is not correctly configured for adunit ".concat(a.code)),e.push(M({},n,{adUnitCode:a.code,transactionId:a.transactionId,sizes:(0,i.Z)(u,"banner.sizes")||(0,i.Z)(u,"video.playerSize")||[],bidId:n.bid_id||(0,r.getUniqueIdentifierStr)(),bidderRequestId:o,auctionId:t,src:c,bidRequestsCount:l.f.getRequestsCounter(a.code),bidderRequestsCount:l.f.getBidderRequestsCounter(a.code,n.bidder),bidderWinsCount:l.f.getBidderWinsCounter(a.code,n.bidder)})),e}),[])),e}),[]).reduce(r.flatten,[]).filter((function(e){return""!==e}))}),"getBids"),Y=(0,d.z3)("sync",(function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=t.getS2SBidders,i=void 0===r?ee:r;if(null==n)return e;var o=i(n);return e.filter((function(e){return o.has(e.bidder)}))}),"filterBidsForAdUnit"),J=new j,Q=new k,X={getCoppa:function(){return!!s.vc.getConfig("coppa")}},$=(0,d.z3)("sync",(function(e,n){return(0,o.UB)(e,n)}),"setupAdUnitMediaTypes");function ee(e){(0,r.isArray)(e)||(e=[e]);var n=new Set([null]);return e.filter((function(e){return e&&e.enabled})).flatMap((function(e){return e.bidders})).forEach((function(e){return n.add(e)})),n}var ne=(0,d.z3)("sync",(function(e,n){var t,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i.getS2SBidders,a=void 0===o?ee:o,c=a(n);return(0,r.getBidderCodes)(e).reduce((function(e,n){return e[c.has(n)?G.SERVER:G.CLIENT].push(n),e}),(q(t={},G.CLIENT,[]),q(t,G.SERVER,[]),t))}),"partitionBidders");function te(e,n,t){try{var i=L[e].getSpec();i&&i[n]&&"function"==typeof i[n]&&((0,r.logInfo)("Invoking ".concat(e,".").concat(n)),s.vc.runWithBidder(e,r.bind.call(i[n],i,t)))}catch(t){(0,r.logWarn)("Error calling ".concat(n," of ").concat(e))}}z.makeBidRequests=(0,d.z3)("sync",(function(e,n,t,i,o){F.emit(W.EVENTS.BEFORE_REQUEST_BIDS,e),(0,a.Fb)(e),e=$(e,o);var c=ne(e,V),u=c[G.CLIENT],d=c[G.SERVER];s.vc.getConfig("bidderSequence")===s.FD&&(u=(0,r.shuffle)(u));var l=(0,g.n)(),p=[];V.forEach((function(i){if(i&&i.enabled){var o=function(e,n){var t=(0,r.deepClone)(e);return t.forEach((function(e){e.bids=Y(e.bids,n).map((function(e){return e.bid_id=(0,r.getUniqueIdentifierStr)(),e}))})),t.filter((function(e){return 0!==e.bids.length}))}(e,i),a=(0,r.generateUUID)();d.forEach((function(e){var c=(0,r.getUniqueIdentifierStr)(),u={bidderCode:e,auctionId:t,bidderRequestId:c,uniquePbsTid:a,bids:Z({bidderCode:e,auctionId:t,bidderRequestId:c,adUnits:(0,r.deepClone)(o),src:W.S2S.SRC}),auctionStart:n,timeout:i.timeout,src:W.S2S.SRC,refererInfo:l};0!==u.bids.length&&p.push(u)})),o.forEach((function(e){var n=e.bids.filter((function(e){return(0,f.sE)(p,(function(n){return(0,f.sE)(n.bids,(function(n){return n.bidId===e.bid_id}))}))}));e.bids=n})),p.forEach((function(e){void 0===e.adUnitsS2SCopy&&(e.adUnitsS2SCopy=o.filter((function(e){return e.bids.length>0})))}))}}));var v=function(e){var n=(0,r.deepClone)(e);return n.forEach((function(e){e.bids=Y(e.bids,null)})),n.filter((function(e){return 0!==e.bids.length}))}(e);return u.forEach((function(e){var a=(0,r.getUniqueIdentifierStr)(),c={bidderCode:e,auctionId:t,bidderRequestId:a,bids:Z({bidderCode:e,auctionId:t,bidderRequestId:a,adUnits:(0,r.deepClone)(v),labels:o,src:"client"}),auctionStart:n,timeout:i,refererInfo:l},u=L[e];u||(0,r.logError)("Trying to make a request for bidder that does not exist: ".concat(e)),u&&c.bids&&0!==c.bids.length&&p.push(c)})),J.getConsentData()&&p.forEach((function(e){e.gdprConsent=J.getConsentData()})),Q.getConsentData()&&p.forEach((function(e){e.uspConsent=Q.getConsentData()})),p}),"makeBidRequests"),z.callBids=function(e,n,t,i,o,a,c){if(n.length){var d=(y=n.reduce((function(e,n){return e[Number(void 0!==n.src&&n.src===W.S2S.SRC)].push(n),e}),[[],[]]),b=2,function(e){if(Array.isArray(e))return e}(y)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,i,o=[],a=!0,c=!1;try{for(t=t.call(e);!(a=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);a=!0);}catch(e){c=!0,i=e}finally{try{a||null==t.return||t.return()}finally{if(c)throw i}}return o}}(y,b)||function(e,n){if(e){if("string"==typeof e)return x(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?x(e,n):void 0}}(y,b)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=d[0],l=d[1],g=[];l.forEach((function(e){for(var n=-1,t=0;t<g.length;++t)if(e.uniquePbsTid===g[t].uniquePbsTid){n=t;break}n<=-1&&g.push(e)}));var p=0,v=(0,r.generateUUID)();V.forEach((function(e){if(e&&g[p]&&ee(e).has(g[p].bidderCode)){var n=(0,u.O)(a,o?{request:o.request.bind(null,"s2s"),done:o.done}:void 0),c=e.bidders,s=L[e.adapter],d=g[p].uniquePbsTid,f=g[p].adUnitsS2SCopy,y=l.filter((function(e){return e.uniquePbsTid===d}));if(s){var b={tid:v,ad_units:f,s2sConfig:e};if(b.ad_units.length){var h=y.map((function(e){return e.start=(0,r.timestamp)(),i.bind(e)})),m=(0,r.getBidderCodes)(b.ad_units).filter((function(e){return c.includes(e)}));(0,r.logMessage)("CALLING S2S HEADER BIDDERS ==== ".concat(m.length>0?m.join(", "):'No bidder specified, using "ortb2Imp" definition(s) only')),y.forEach((function(e){F.emit(W.EVENTS.BID_REQUESTED,P(P({},e),{},{tid:v}))})),s.callBids(b,l,t,(function(){return h.forEach((function(e){return e()}))}),n)}}else(0,r.logError)("missing "+e.adapter);p++}})),f.forEach((function(e){e.start=(0,r.timestamp)();var n=L[e.bidderCode];s.vc.runWithBidder(e.bidderCode,(function(){(0,r.logMessage)("CALLING BIDDER"),F.emit(W.EVENTS.BID_REQUESTED,e)}));var d=(0,u.O)(a,o?{request:o.request.bind(null,e.bidderCode),done:o.done}:void 0),f=i.bind(e);try{s.vc.runWithBidder(e.bidderCode,r.bind.call(n.callBids,n,e,t,f,d,c,s.vc.callbackWithBidder(e.bidderCode)))}catch(n){(0,r.logError)("".concat(e.bidderCode," Bid Adapter emitted an uncaught error when parsing their bidRequest"),{e:n,bidRequest:e}),f()}}))}else(0,r.logWarn)("callBids executed with no bidRequests. Were they filtered by labels or sizing?");var y,b},z.videoAdapters=[],z.registerBidAdapter=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=t.supportedMediaTypes,o=void 0===i?[]:i;e&&n?"function"==typeof e.callBids?(L[n]=e,(0,f.q9)(o,"video")&&z.videoAdapters.push(n),(0,f.q9)(o,"native")&&a.Sg.push(n)):(0,r.logError)("Bidder adaptor error for bidder code: "+n+"bidder must implement a callBids() function"):(0,r.logError)("bidAdapter or bidderCode not specified")},z.aliasBidAdapter=function(e,n,t){if(void 0===L[n]){var i=L[e];if(void 0===i){var o=[];V.forEach((function(t){if(t.bidders&&t.bidders.length){var r=t&&t.bidders;t&&(0,f.q9)(r,n)?K[n]=e:o.push(e)}})),o.forEach((function(e){(0,r.logError)('bidderCode "'+e+'" is not an existing bidder.',"adapterManager.aliasBidAdapter")}))}else try{var u,s=function(e){var n=[];return(0,f.q9)(z.videoAdapters,e)&&n.push("video"),(0,f.q9)(a.Sg,e)&&n.push("native"),n}(e);if(i.constructor.prototype!=Object.prototype)(u=new i.constructor).setBidderCode(n);else{var d=i.getSpec(),l=t&&t.gvlid,g=t&&t.skipPbsAliasing;u=(0,c.newBidder)(M({},d,{code:n,gvlid:l,skipPbsAliasing:g})),K[n]=e}z.registerBidAdapter(u,n,{supportedMediaTypes:s})}catch(n){(0,r.logError)(e+" bidder does not currently support aliasing.","adapterManager.aliasBidAdapter")}}else(0,r.logMessage)('alias name "'+n+'" has been already specified.')},z.registerAnalyticsAdapter=function(e){var n=e.adapter,t=e.code,i=e.gvlid;n&&t?"function"==typeof n.enableAnalytics?(n.code=t,H[t]={adapter:n,gvlid:i}):(0,r.logError)('Prebid Error: Analytics adaptor error for analytics "'.concat(t,'"\n analytics adapter must implement an enableAnalytics() function')):(0,r.logError)("Prebid Error: analyticsAdapter or analyticsCode not specified")},z.enableAnalytics=function(e){(0,r.isArray)(e)||(e=[e]),(0,r._each)(e,(function(e){var n=H[e.provider];n&&n.adapter?n.adapter.enableAnalytics(e):(0,r.logError)("Prebid Error: no analytics adapter found in registry for '".concat(e.provider,"'."))}))},z.getBidAdapter=function(e){return L[e]},z.getAnalyticsAdapter=function(e){return H[e]},z.callTimedOutBidders=function(e,n,t){n=n.map((function(n){return n.params=(0,r.getUserConfiguredParams)(e,n.adUnitCode,n.bidder),n.timeout=t,n})),n=(0,r.groupBy)(n,"bidder"),Object.keys(n).forEach((function(e){te(e,"onTimeout",n[e])}))},z.callBidWonBidder=function(e,n,t){n.params=(0,r.getUserConfiguredParams)(t,n.adUnitCode,n.bidder),l.f.incrementBidderWinsCounter(n.adUnitCode,n.bidder),te(e,"onBidWon",n)},z.callSetTargetingBidder=function(e,n){te(e,"onSetTargeting",n)},z.callBidViewableBidder=function(e,n){te(e,"onBidViewable",n)},z.callBidderError=function(e,n,t){te(e,"onBidderError",{error:n,bidderRequest:t})};var re=z},1609:function(e,n,t){"use strict";t.r(n),t.d(n,{getIabSubCategory:function(){return D},isValid:function(){return j},newBidder:function(){return B},preloadBidderMappingFile:function(){return R},processBidderRequests:function(){return _},registerBidder:function(){return O},registerSyncInner:function(){return U},storage:function(){return C}});var r=t(2801),i=t(7602),o=t(8962),a=t(1477),c=t(7112),u=t(9017),s=t(1929),d=t(5644),f=t(2319),l=t(1879),g=t(5755),p=t(9853),v=t(265),y=t(8265),b=t(3494),h=t(5849),m=t(4766),E=t(9624);function S(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,i,o=[],a=!0,c=!1;try{for(t=t.call(e);!(a=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);a=!0);}catch(e){c=!0,i=e}finally{try{a||null==t.return||t.return()}finally{if(c)throw i}}return o}}(e,n)||function(e,n){if(e){if("string"==typeof e)return A(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?A(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function A(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function T(e){return T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},T(e)}function I(){return I=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},I.apply(this,arguments)}var C=(0,h.eA)("bidderFactory"),w=["cpm","ttl","creativeId","netRevenue","currency"];function O(e){var n=Array.isArray(e.supportedMediaTypes)?{supportedMediaTypes:e.supportedMediaTypes}:void 0;function t(e){var t=B(e);i.ZP.registerBidAdapter(t,e.code,n)}t(e),Array.isArray(e.aliases)&&e.aliases.forEach((function(n){var r,o,a=n;(0,p.isPlainObject)(n)&&(a=n.code,r=n.gvlid,o=n.skipPbsAliasing),i.ZP.aliasRegistry[a]=e.code,t(I({},e,{code:a,gvlid:r,skipPbsAliasing:o}))}))}function B(e){return I(new r.Z(e.code),{getSpec:function(){return Object.freeze(e)},registerSyncs:n,callBids:function(r,c,u,s,l,g){if(Array.isArray(r.bids)){var v={},y=[],b=r.bids.filter(t);if(0!==b.length){var h={};b.forEach((function(e){h[e.bidId]=e,e.adUnitCode||(e.adUnitCode=e.placementCode)})),_(e,b,r,s,g,{onRequest:function(e){return f.emit(d.EVENTS.BEFORE_BIDDER_HTTP,r,e)},onResponse:function(n){l(e.code),y.push(n)},onError:function(n,t){l(e.code),i.ZP.callBidderError(e.code,t,r),f.emit(d.EVENTS.BIDDER_ERROR,{error:t,bidderRequest:r}),(0,p.logError)("Server call for ".concat(e.code," failed: ").concat(n," ").concat(t.status,". Continuing without bids."))},onBid:function(n){var t,r,i,o,u=h[n.requestId];if(u){if(n.adapterCode=u.bidder,t=n.bidderCode,r=u.bidder,i=E.S.get(r,"allowAlternateBidderCodes"),o=E.S.get(r,"allowedAlternateBidderCodes"),t&&r&&r!==t&&(void 0!==i&&!i||(0,p.isArray)(o)&&"*"!==o[0]&&!o.includes(t)))return void(0,p.logWarn)("".concat(n.bidderCode," is not a registered partner or known bidder of ").concat(u.bidder,", hence continuing without bid. If you wish to support this bidder, please mark allowAlternateBidderCodes as true in bidderSettings."));n.originalCpm=n.cpm,n.originalCurrency=n.currency,n.meta=n.meta||I({},n[u.bidder]);var s=I((0,a.m)(d.STATUS.GOOD,u),n);!function(e,n){v[e]=!0,j(e,n)&&c(e,n)}(u.adUnitCode,s)}else(0,p.logWarn)("Bidder ".concat(e.code," made bid for unknown request ID: ").concat(n.requestId,". Ignoring."))},onCompletion:m})}else m()}function m(){u(),o.vc.runWithBidder(e.code,(function(){f.emit(d.EVENTS.BIDDER_DONE,r),n(y,r.gdprConsent,r.uspConsent)}))}}});function n(n,t,r){U(e,n,t,r)}function t(n){return!!e.isBidRequestValid(n)||((0,p.logWarn)("Invalid bid sent to bidder ".concat(e.code,": ").concat(JSON.stringify(n))),!1)}}var _=(0,b.z3)("sync",(function(e,n,t,r,i,o){var a=o.onRequest,c=o.onResponse,u=o.onError,s=o.onBid,d=o.onCompletion,f=e.buildRequests(n,t);if(f&&0!==f.length){Array.isArray(f)||(f=[f]);var l=(0,p.delayExecution)(d,f.length);f.forEach((function(n){var t,o=i((function(t,r){try{t=JSON.parse(t)}catch(e){}var i;t={body:t,headers:{get:r.getResponseHeader.bind(r)}},c(t);try{i=e.interpretResponse(t,n)}catch(n){return(0,p.logError)("Bidder ".concat(e.code," failed to interpret the server's response. Continuing without bids"),null,n),void l()}i&&((0,p.isArray)(i)?i.forEach(s):s(i)),l()})),d=i((function(e,n){u(e,n),l()}));switch(a(n),n.method){case"GET":r("".concat(n.url).concat((t=n.data)?"?".concat("object"===T(t)?(0,p.parseQueryStringParameters)(t):t):""),{success:o,error:d},void 0,I({method:"GET",withCredentials:!0},n.options));break;case"POST":r(n.url,{success:o,error:d},"string"==typeof n.data?n.data:JSON.stringify(n.data),I({method:"POST",contentType:"text/plain",withCredentials:!0},n.options));break;default:(0,p.logWarn)("Skipping invalid request from ".concat(e.code,". Request type ").concat(n.type," must be GET or POST")),l()}}))}else d()}),"processBidderRequests"),U=(0,b.z3)("async",(function(e,n,t,r){var a=o.vc.getConfig("userSync.aliasSyncEnabled");if(e.getUserSyncs&&(a||!i.ZP.aliasRegistry[e.code])){var u=o.vc.getConfig("userSync.filterSettings"),s=e.getUserSyncs({iframeEnabled:!(!u||!u.iframe&&!u.all),pixelEnabled:!(!u||!u.image&&!u.all)},n,t,r);s&&(Array.isArray(s)||(s=[s]),s.forEach((function(n){c.k_.registerSync(n.type,e.code,n.url)})))}}),"registerSyncs");function R(e,n){if(!o.vc.getConfig("adpod.brandCategoryExclusion"))return e.call(this,n);n.filter((function(e){return(0,v.Z)(e,"mediaTypes.video.context")===y.Oh})).map((function(e){return e.bids.map((function(e){return e.bidder}))})).reduce(p.flatten,[]).filter(p.uniques).forEach((function(e){var n=i.ZP.getBidAdapter(e);if(n.getSpec().getMappingFileInfo){var t=n.getSpec().getMappingFileInfo(),r=t.refreshInDays?t.refreshInDays:1,o=t.localStorageKey?t.localStorageKey:n.getSpec().code,a=C.getDataFromLocalStorage(o);try{(!(a=a?JSON.parse(a):void 0)||(0,p.timestamp)()>a.lastUpdated+24*r*60*60*1e3)&&(0,g.h)(t.url,{success:function(n){try{n=JSON.parse(n);var t={lastUpdated:(0,p.timestamp)(),mapping:n.mapping};C.setDataInLocalStorage(o,JSON.stringify(t))}catch(n){(0,p.logError)("Failed to parse ".concat(e," bidder translation mapping file"))}},error:function(){(0,p.logError)("Failed to load ".concat(e," bidder translation file"))}})}catch(n){(0,p.logError)("Failed to parse ".concat(e," bidder translation mapping file"))}}})),e.call(this,n)}function D(e,n){var t=i.ZP.getBidAdapter(e);if(t.getSpec().getMappingFileInfo){var r=t.getSpec().getMappingFileInfo(),o=r.localStorageKey?r.localStorageKey:t.getBidderCode(),a=C.getDataFromLocalStorage(o);if(a){try{a=JSON.parse(a)}catch(n){(0,p.logError)("Failed to parse ".concat(e," mapping data stored in local storage"))}return a.mapping[n]?a.mapping[n]:null}}}function k(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=t.index,i=void 0===r?m.K.index:r;if((n.width||0===parseInt(n.width,10))&&(n.height||0===parseInt(n.height,10)))return n.width=parseInt(n.width,10),n.height=parseInt(n.height,10),!0;var o=i.getBidRequest(n),a=i.getMediaTypes(n),c=o&&o.sizes||a&&a.banner&&a.banner.sizes,u=(0,p.parseSizesInput)(c);if(1===u.length){var s=u[0].split("x"),d=S(s,2),f=d[0],l=d[1];return n.width=parseInt(f,10),n.height=parseInt(l,10),!0}return!1}function j(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=t.index,i=void 0===r?m.K.index:r;function o(){var e=Object.keys(n);return w.every((function(t){return(0,l.q9)(e,t)&&!(0,l.q9)([void 0,null],n[t])}))}function a(e){return"Invalid bid from ".concat(n.bidderCode,". Ignoring bid: ").concat(e)}return e?n?o()?"native"!==n.mediaType||(0,u.r4)(n,{index:i})?"video"!==n.mediaType||(0,s.Dn)(n,{index:i})?!("banner"===n.mediaType&&!k(e,n,{index:i})&&((0,p.logError)(a("Banner bids require a width and height")),1)):((0,p.logError)(a("Video bid does not have required vastUrl or renderer property")),!1):((0,p.logError)(a("Native bid missing some required properties.")),!1):((0,p.logError)(a("Bidder ".concat(n.bidderCode," is missing required params. Check http://prebid.org/dev-docs/bidder-adapter-1.html for list of params."))),!1):((0,p.logWarn)("Some adapter tried to add an undefined bid for ".concat(e,".")),!1):((0,p.logWarn)("No adUnitCode was supplied to addBidResponse."),!1)}(0,b.v5)("checkAdUnitSetup").before(R)},6996:function(e,n,t){"use strict";t.d(n,{B:function(){return c}});var r=t(1879),i=t(9853),o=new WeakMap,a=["adloox","criteo","outstream","adagio","browsi","brandmetrics","justtag"];function c(e,n,t,c){if(n&&e){if((0,r.q9)(a,n)){c||(c=document);var u=f(c,e);if(u)return t&&"function"==typeof t&&(u.loaded?t():u.callbacks.push(t)),u.tag;var s=o.get(c)||{},d={loaded:!1,tag:null,callbacks:[]};return s[e]=d,o.set(c,s),t&&"function"==typeof t&&d.callbacks.push(t),(0,i.logWarn)("module ".concat(n," is loading external JavaScript")),function(n,t,r){r||(r=document);var o=r.createElement("script");o.type="text/javascript",o.async=!0;var a=f(r,e);return a&&(a.tag=o),o.readyState?o.onreadystatechange=function(){"loaded"!==o.readyState&&"complete"!==o.readyState||(o.onreadystatechange=null,t())}:o.onload=function(){t()},o.src=n,(0,i.insertElement)(o,r),o}(e,(function(){d.loaded=!0;try{for(var e=0;e<d.callbacks.length;e++)d.callbacks[e]()}catch(e){(0,i.logError)("Error executing callback","adloader.js:loadExternalScript",e)}}),c)}(0,i.logError)("".concat(n," not whitelisted for loading external JavaScript"))}else(0,i.logError)("cannot load external script without url and moduleCode");function f(e,n){var t=o.get(e);return t&&t[n]?t[n]:null}}},5755:function(e,n,t){"use strict";t.d(n,{O:function(){return u},h:function(){return c}});var r=t(8962),i=t(9853);function o(){return o=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},o.apply(this,arguments)}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}var c=u();function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3e3,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.request,c=n.done;return function(n,u,s){var d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};try{var f,l=d.method||(s?"POST":"GET"),g=document.createElement("a");g.href=n;var p="object"===a(u)&&null!==u?u:{success:function(){(0,i.logMessage)("xhr success")},error:function(e){(0,i.logError)("xhr error",null,e)}};if("function"==typeof u&&(p.success=u),(f=new window.XMLHttpRequest).onreadystatechange=function(){if(4===f.readyState){"function"==typeof c&&c(g.origin);var e=f.status;e>=200&&e<300||304===e?p.success(f.responseText,f):p.error(f.statusText,f)}},r.vc.getConfig("disableAjaxTimeout")||(f.ontimeout=function(){(0,i.logError)(" xhr timeout after ",f.timeout,"ms")}),"GET"===l&&s){var v=(0,i.parseUrl)(n,d);o(v.search,s),n=(0,i.buildUrl)(v)}f.open(l,n,!0),r.vc.getConfig("disableAjaxTimeout")||(f.timeout=e),d.withCredentials&&(f.withCredentials=!0),(0,i._each)(d.customHeaders,(function(e,n){f.setRequestHeader(n,e)})),d.preflight&&f.setRequestHeader("X-Requested-With","XMLHttpRequest"),f.setRequestHeader("Content-Type",d.contentType||"text/plain"),"function"==typeof t&&t(g.origin),"POST"===l&&s?f.send(s):f.send()}catch(e){(0,i.logError)("xhr construction",e),"object"===a(u)&&null!==u&&u.error(e)}}}},4892:function(e,n,t){"use strict";t.d(n,{D$:function(){return N},LX:function(){return W},RH:function(){return q},Yt:function(){return _},Yw:function(){return T},dg:function(){return M},e0:function(){return U},lU:function(){return k},mv:function(){return I},sq:function(){return D},vO:function(){return B}});var r=t(9853),i=t(265),o=t(5553),a=t(9017),c=t(905),u=t(4877),s=t(8962),d=t(7112),f=t(3494),l=t(1879),g=t(1929),p=t(8265),v=t(4766),y=t(9624);function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function h(){return h=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},h.apply(this,arguments)}var m=d.k_.syncUsers,E=t(7602).ZP,S=t(2319),A=t(5644),T="inProgress",I="completed";S.on(A.EVENTS.BID_ADJUSTMENT,(function(e){!function(e){var n=e.bidderCode,t=e.cpm,i=y.S.get(n||null,"bidCpmAdjustment");if(i&&"function"==typeof i)try{t=i(e.cpm,h({},e))}catch(e){(0,r.logError)("Error during bid adjustment","bidmanager.js",e)}t>=0&&(e.cpm=t)}(e)}));var C={},w={},O=[];function B(e){var n,t,i,o,a=e.adUnits,c=e.adUnitCodes,u=e.callback,d=e.cbTimeout,f=e.labels,g=e.auctionId,p=a,y=f,b=c,h=[],B=[],D=[],N=g||(0,r.generateUUID)(),x=u,q=d,M=[],G=new Set;function W(){return{auctionId:N,timestamp:n,auctionEnd:t,auctionStatus:i,adUnits:p,adUnitCodes:b,labels:y,bidderRequests:h,noBids:D,bidsReceived:B,winningBids:M,timeout:q}}function F(e,n){if(n&&clearTimeout(o),void 0===t){var c=[];e&&((0,r.logMessage)("Auction ".concat(N," timedOut")),u=G,(c=h.map((function(e){return(e.bids||[]).filter((function(e){return!u.has(e.bidder)}))})).reduce(r.flatten,[])).length&&S.emit(A.EVENTS.BID_TIMEOUT,c)),i=I,t=Date.now(),S.emit(A.EVENTS.AUCTION_END,W()),R(p,(function(){try{if(null!=x){var n=b,t=B.filter(r.bind.call(r.adUnitsFilter,this,n)).reduce(z,{});x.apply(pbjs,[t,e,N]),x=null}}catch(e){(0,r.logError)("Error executing bidsBackHandler",null,e)}finally{c.length&&E.callTimedOutBidders(a,c,q);var i=s.vc.getConfig("userSync")||{};i.enableOverride||m(i.syncDelay)}}))}var u}function L(){s.vc.resetBidder(),(0,r.logInfo)("Bids Received for Auction with id: ".concat(N),B),i=I,F(!1,!0)}function K(e){G.add(e)}function V(e){var n=this;e.forEach((function(e){var n;n=e,h=h.concat(n)}));var t={},a={bidRequests:e,run:function(){var a,d;a=F.bind(null,!0),d=setTimeout(a,q),o=d,i=T,S.emit(A.EVENTS.AUCTION_INIT,W());var f=function(e,n){var t=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).index,i=void 0===t?v.K.index:t,o=0,a=!1,c=new Set,u={},d={};function f(e,n){null==d[e]&&(d[e]=Promise.resolve()),d[e]=d[e].then((function(){return Promise.resolve(n).catch((function(){}))}))}function g(e,t){var r=e.timeout;(null==r||r>n.getTimeout())&&(r=n.getTimeout());var i=n.getAuctionStart()+r-Date.now(),o=d[e.bidderRequestId],a=d[""];(null!=o||null!=a)&&i>0?Promise.race([new Promise((function(e){return setTimeout(e,i)})),Promise.resolve(a).then((function(){return o}))]).then(t):t()}function p(){o--,a&&0===o&&e()}function y(e,t){u[t.requestId]=!0,o++;var r=P({adUnitCode:e,bid:t,auctionId:n.getAuctionId()});"video"===r.mediaType?j(n,r,p):(k(n,r),p())}function b(){var t=n.getBidRequests(),i=s.vc.getConfig("auctionOptions");if(c.add(this),i&&!(0,r.isEmpty)(i)){var d=i.secondaryBidders;d&&!t.every((function(e){return(0,l.q9)(d,e.bidderCode)}))&&(t=t.filter((function(e){return!(0,l.q9)(d,e.bidderCode)})))}a=t.every((function(e){return c.has(e)})),this.bids.forEach((function(e){u[e.bidId]||(n.addNoBid(e),S.emit(A.EVENTS.NO_BID,e))})),a&&0===o&&e()}return{addBidResponse:function(e,n){var t=i.getBidderRequest(n);f(t&&t.bidderRequestId||"",_.call({dispatch:y},e,n))},adapterDone:function(){g(this,b.bind(this))}}}(L,n);E.callBids(p,e,f.addBidResponse,f.adapterDone,{request:function(e,n){u(C,n),u(t,e),w[e]||(w[e]={SRA:!0,origin:n}),t[e]>1&&(w[e].SRA=!1)},done:function(e){C[e]--,O[0]&&c(O[0])&&O.shift()}},q,K)}};function c(e){var n=!0,t=s.vc.getConfig("maxRequestsPerOrigin")||4;return e.bidRequests.some((function(e){var r=1,i=void 0!==e.src&&e.src===A.S2S.SRC?"s2s":e.bidderCode;return w[i]&&(!1===w[i].SRA&&(r=Math.min(e.bids.length,t)),C[w[i].origin]+r>t&&(n=!1)),!n})),n&&e.run(),n}function u(e,n){void 0===e[n]?e[n]=1:e[n]++}c(a)||((0,r.logWarn)("queueing auction due to limited endpoint capacity"),O.push(a))}return{addBidReceived:function(e){B=B.concat(e)},addNoBid:function(e){D=D.concat(e)},executeCallback:F,callBids:function(){i="started",n=Date.now();var e=E.makeBidRequests(p,n,N,q,y);(0,r.logInfo)("Bids Requested for Auction with id: ".concat(N),e),e.length<1?((0,r.logWarn)("No valid bid requests returned for auction"),L()):U.call({dispatch:V,context:this},e)},addWinningBid:function(e){M=M.concat(e),E.callBidWonBidder(e.bidder,e,a)},setBidTargeting:function(e){E.callSetTargetingBidder(e.bidder,e)},getWinningBids:function(){return M},getAuctionStart:function(){return n},getTimeout:function(){return q},getAuctionId:function(){return N},getAuctionStatus:function(){return i},getAdUnits:function(){return p},getAdUnitCodes:function(){return b},getBidRequests:function(){return h},getBidsReceived:function(){return B},getNoBids:function(){return D}}}var _=(0,f.z3)("sync",(function(e,n){this.dispatch.call(null,e,n)}),"addBidResponse"),U=(0,f.z3)("sync",(function(e){this.dispatch.call(this.context,e)}),"addBidderRequests"),R=(0,f.z3)("async",(function(e,n){n&&n()}),"bidsBackCallback");function D(e,n){n.timeToRespond>e.getTimeout()+s.vc.getConfig("timeoutBuffer")&&e.executeCallback(!0)}function k(e,n){var t,r,i;t=n,i=!0===y.S.get(t.bidderCode,"allowZeroCpmBids")?t.cpm>=0:t.cpm>0,t.bidderCode&&(i||t.dealId)&&(r=function(e,n){var t=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).index,r=void 0===t?v.K.index:t;if(!n)return{};var i=r.getBidRequest(n),o={},c=W(n.mediaType,e);return F(o,c,n,i),e&&y.S.getOwn(e,A.JSON_MAPPING.ADSERVER_TARGETING)&&(F(o,y.S.ownSettingsFor(e),n,i),n.sendStandardTargeting=y.S.get(e,"sendStandardTargeting")),n.native&&(o=h({},o,(0,a.Ur)(n))),o}(t.bidderCode,t)),t.adserverTargeting=h(t.adserverTargeting||{},r),S.emit(A.EVENTS.BID_RESPONSE,n),e.addBidReceived(n),D(e,n)}function j(e,n,t){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=o.index,c=void 0===a?v.K.index:a,u=!0,d=(0,i.Z)(c.getMediaTypes({requestId:n.originalRequestId||n.requestId,transactionId:n.transactionId}),"video"),f=d&&(0,i.Z)(d,"context");s.vc.getConfig("cache.url")&&f!==g.gZ&&(!n.videoCacheKey||s.vc.getConfig("cache.ignoreBidderCacheKey")?(u=!1,N(e,n,t,d)):n.vastUrl||((0,r.logError)("videoCacheKey specified but not required vastUrl for video bid"),u=!1)),u&&(k(e,n),t())}var N=(0,f.z3)("async",(function(e,n,t,i){(0,c.h)([n],(function(i,o){i?((0,r.logWarn)("Failed to save to the video cache: ".concat(i,". Video bid must be discarded.")),D(e,n)):""===o[0].uuid?((0,r.logWarn)("Supplied video cache key was already in use by Prebid Cache; caching attempt was rejected. Video bid must be discarded."),D(e,n)):(n.videoCacheKey=o[0].uuid,n.vastUrl||(n.vastUrl=(0,c.z)(n.videoCacheKey)),k(e,n),t())}))}),"callPrebidCache");function P(e){var n=e.adUnitCode,t=e.bid,i=e.auctionId,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=a.index,d=void 0===c?v.K.index:c,f=d.getBidderRequest(t),l=f&&f.start||t.requestTimestamp,g=h({},t,{auctionId:i,responseTimestamp:(0,r.timestamp)(),requestTimestamp:l,cpm:parseFloat(t.cpm)||0,bidder:t.bidderCode,adUnitCode:n});g.timeToRespond=g.responseTimestamp-g.requestTimestamp,S.emit(A.EVENTS.BID_ADJUSTMENT,g);var p=d.getAdUnit(g).renderer,y=g.mediaType,m=d.getMediaTypes(g),E=m&&m[y],T=E&&E.renderer,I=null;T&&T.url&&T.render&&(!0!==T.backupOnly||!t.renderer)?I=T:p&&p.url&&p.render&&(!0!==p.backupOnly||!t.renderer)&&(I=p),I&&(g.renderer=u.Th.install({url:I.url,config:I.options}),g.renderer.setRender(I.render));var C=x(t.mediaType,m,s.vc.getConfig("mediaTypePriceGranularity")),w=(0,o.D)(g.cpm,"object"===b(C)?C:s.vc.getConfig("customPriceBucket"),s.vc.getConfig("currency.granularityMultiplier"));return g.pbLg=w.low,g.pbMg=w.med,g.pbHg=w.high,g.pbAg=w.auto,g.pbDg=w.dense,g.pbCg=w.custom,g}function x(e,n,t){if(e&&t){if(e===p.pX){var r=(0,i.Z)(n,"".concat(p.pX,".context"),"instream");if(t["".concat(p.pX,"-").concat(r)])return t["".concat(p.pX,"-").concat(r)]}return t[e]}}var q=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.index,r=void 0===t?v.K.index:t,i=x(e.mediaType,r.getMediaTypes(e),s.vc.getConfig("mediaTypePriceGranularity")),o="string"==typeof e.mediaType&&i?"string"==typeof i?i:"custom":s.vc.getConfig("priceGranularity");return o},M=function(e){return function(n){var t=e||q(n);return t===A.GRANULARITY_OPTIONS.AUTO?n.pbAg:t===A.GRANULARITY_OPTIONS.DENSE?n.pbDg:t===A.GRANULARITY_OPTIONS.LOW?n.pbLg:t===A.GRANULARITY_OPTIONS.MEDIUM?n.pbMg:t===A.GRANULARITY_OPTIONS.HIGH?n.pbHg:t===A.GRANULARITY_OPTIONS.CUSTOM?n.pbCg:void 0}};function G(e,n){return{key:e,val:"function"==typeof n?function(e,t){return n(e,t)}:function(e){return(0,r.getValue)(e,n)}}}function W(e,n){var t=A.TARGETING_KEYS,o=h({},y.S.settingsFor(null));if(o[A.JSON_MAPPING.ADSERVER_TARGETING]||(o[A.JSON_MAPPING.ADSERVER_TARGETING]=function(){var e=A.TARGETING_KEYS;return[G(e.BIDDER,"bidderCode"),G(e.AD_ID,"adId"),G(e.PRICE_BUCKET,M()),G(e.SIZE,"size"),G(e.DEAL,"dealId"),G(e.SOURCE,"source"),G(e.FORMAT,"mediaType"),G(e.ADOMAIN,(function(e){return e.meta&&e.meta.advertiserDomains&&e.meta.advertiserDomains.length>0?e.meta.advertiserDomains[0]:""}))]}()),"video"===e){var a=o[A.JSON_MAPPING.ADSERVER_TARGETING].slice();if(o[A.JSON_MAPPING.ADSERVER_TARGETING]=a,[t.UUID,t.CACHE_ID].forEach((function(e){void 0===(0,l.sE)(a,(function(n){return n.key===e}))&&a.push(G(e,"videoCacheKey"))})),s.vc.getConfig("cache.url")&&(!n||!1!==y.S.get(n,"sendStandardTargeting"))){var c=(0,r.parseUrl)(s.vc.getConfig("cache.url"));void 0===(0,l.sE)(a,(function(e){return e.key===t.CACHE_HOST}))&&a.push(G(t.CACHE_HOST,(function(e){return(0,i.Z)(e,"adserverTargeting.".concat(t.CACHE_HOST))?e.adserverTargeting[t.CACHE_HOST]:c.hostname})))}}return o}function F(e,n,t,i){var o=n[A.JSON_MAPPING.ADSERVER_TARGETING];return t.size=t.getSize(),(0,r._each)(o,(function(o){var a=o.key,c=o.val;if(e[a]&&(0,r.logWarn)("The key: "+a+" is being overwritten"),(0,r.isFn)(c))try{c=c(t,i)}catch(e){(0,r.logError)("bidmanager","ERROR",e)}(void 0===n.suppressEmptyKeys||!0!==n.suppressEmptyKeys)&&a!==A.TARGETING_KEYS.DEAL||!(0,r.isEmptyStr)(c)&&null!=c?e[a]=c:(0,r.logInfo)("suppressing empty key '"+a+"' from adserver targeting")})),e}function z(e,n){return e[n.adUnitCode]||(e[n.adUnitCode]={bids:[]}),e[n.adUnitCode].bids.push(n),e}},4766:function(e,n,t){"use strict";t.d(n,{K:function(){return s}});var r=t(9853),i=t(4892),o=t(1879);function a(){return a=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},a.apply(this,arguments)}function c(e){a(this,{getAuction:function(n){var t=n.auctionId;if(null!=t)return e().find((function(e){return e.getAuctionId()===t}))},getAdUnit:function(n){var t=n.transactionId;if(null!=t)return e().flatMap((function(e){return e.getAdUnits()})).find((function(e){return e.transactionId===t}))},getMediaTypes:function(e){var n=e.transactionId,t=e.requestId;if(null!=t){var r=this.getBidRequest({requestId:t});if(null!=r&&(null==n||r.transactionId===n))return r.mediaTypes}else if(null!=n){var i=this.getAdUnit({transactionId:n});if(null!=i)return i.mediaTypes}},getBidderRequest:function(n){var t=n.requestId,r=n.bidderRequestId;if(null!=t||null!=r){var i=e().flatMap((function(e){return e.getBidRequests()}));return null!=r&&(i=i.filter((function(e){return e.bidderRequestId===r}))),null==t?i[0]:i.find((function(e){return e.bids&&null!=e.bids.find((function(e){return e.bidId===t}))}))}},getBidRequest:function(n){var t=n.requestId;if(null!=t)return e().flatMap((function(e){return e.getBidRequests()})).flatMap((function(e){return e.bids})).find((function(e){return e&&e.bidId===t}))}})}var u=t(5644),s=function(){var e=[],n={addWinningBid:function(n){var t=(0,o.sE)(e,(function(e){return e.getAuctionId()===n.auctionId}));t?(n.status=u.BID_STATUS.RENDERED,t.addWinningBid(n)):(0,r.logWarn)("Auction not found when adding winning bid")},getAllWinningBids:function(){return e.map((function(e){return e.getWinningBids()})).reduce(r.flatten,[])},getBidsRequested:function(){return e.map((function(e){return e.getBidRequests()})).reduce(r.flatten,[])},getNoBids:function(){return e.map((function(e){return e.getNoBids()})).reduce(r.flatten,[])},getBidsReceived:function(){return e.map((function(e){if(e.getAuctionStatus()===i.mv)return e.getBidsReceived()})).reduce(r.flatten,[]).filter((function(e){return e}))},getAllBidsForAdUnitCode:function(n){return e.map((function(e){return e.getBidsReceived()})).reduce(r.flatten,[]).filter((function(e){return e&&e.adUnitCode===n}))},getAdUnits:function(){return e.map((function(e){return e.getAdUnits()})).reduce(r.flatten,[])},getAdUnitCodes:function(){return e.map((function(e){return e.getAdUnitCodes()})).reduce(r.flatten,[]).filter(r.uniques)},createAuction:function(n){var t=n.adUnits,r=n.adUnitCodes,o=n.callback,a=n.cbTimeout,c=n.labels,u=n.auctionId,s=(0,i.vO)({adUnits:t,adUnitCodes:r,callback:o,cbTimeout:a,labels:c,auctionId:u});return function(n){e.push(n)}(s),s},findBidByAdId:function(n){return(0,o.sE)(e.map((function(e){return e.getBidsReceived()})).reduce(r.flatten,[]),(function(e){return e.adId===n}))},getStandardBidderAdServerTargeting:function(){return(0,i.LX)()[u.JSON_MAPPING.ADSERVER_TARGETING]},setStatusForBids:function(t,r){var i=n.findBidByAdId(t);if(i&&(i.status=r),i&&r===u.BID_STATUS.BID_TARGETING_SET){var a=(0,o.sE)(e,(function(e){return e.getAuctionId()===i.auctionId}));a&&a.setBidTargeting(i)}},getLastAuctionId:function(){return e.length&&e[e.length-1].getAuctionId()},clearAllAuctions:function(){e.length=0}};return n.index=new c((function(){return e})),n}()},9624:function(e,n,t){"use strict";t.d(n,{S:function(){return f}});var r=t(265),i=t(9853),o=t(2528);function a(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,n,t){if(!n.has(e))throw new TypeError("attempted to get private field on non-instance");return t}var u=t(5644),s=new WeakSet;function d(e){return null==e?this.defaultScope:e}var f=new(function(){function e(n,t){var r,i;!function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}(this,e),function(e,n){if(n.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(r=this,i=s),i.add(r),this.getSettings=n,this.defaultScope=t}var n,t;return n=e,(t=[{key:"get",value:function(e,n){var t=this.getOwn(e,n);return void 0===t&&(t=this.getOwn(null,n)),t}},{key:"getOwn",value:function(e,n){return e=c(this,s,d).call(this,e),(0,r.Z)(this.getSettings(),"".concat(e,".").concat(n))}},{key:"getScopes",value:function(){var e=this;return Object.keys(this.getSettings()).filter((function(n){return n!==e.defaultScope}))}},{key:"settingsFor",value:function(e){return(0,i.mergeDeep)({},this.ownSettingsFor(null),this.ownSettingsFor(e))}},{key:"ownSettingsFor",value:function(e){return e=c(this,s,d).call(this,e),this.getSettings()[e]||{}}}])&&a(n.prototype,t),Object.defineProperty(n,"prototype",{writable:!1}),e}())((function(){return(0,o.R)().bidderSettings||{}}),u.JSON_MAPPING.BD_SETTING_STANDARD)},1477:function(e,n,t){"use strict";t.d(n,{m:function(){return o}});var r=t(9853);function i(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.src,i=void 0===t?"client":t,o=n.bidder,a=void 0===o?"":o,c=n.bidId,u=n.transactionId,s=n.auctionId,d=i,f=e||0;function l(){switch(f){case 0:return"Pending";case 1:return"Bid available";case 2:return"Bid returned empty or error response";case 3:return"Bid timed out"}}this.bidderCode=a,this.width=0,this.height=0,this.statusMessage=l(),this.adId=(0,r.getUniqueIdentifierStr)(),this.requestId=c,this.transactionId=u,this.auctionId=s,this.mediaType="banner",this.source=d,this.getStatusCode=function(){return f},this.getSize=function(){return this.width+"x"+this.height},this.getIdentifiers=function(){return{src:this.source,bidder:this.bidderCode,bidId:this.requestId,transactionId:this.transactionId,auctionId:this.auctionId}}}function o(e,n){return new i(e,n)}},8962:function(e,n,t){"use strict";t.d(n,{FD:function(){return v},vc:function(){return m}});var r=t(5553),i=t(1879),o=t(9853),a=t(265),c=["fpd"];function u(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function f(){return f=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},f.apply(this,arguments)}var l=t(5644),g="TRUE"===(0,o.getParameterByName)(l.DEBUG_MODE).toUpperCase(),p=window.location.origin,v="random",y={};y[v]=!0,y.fixed=!0;var b=v,h={LOW:"low",MEDIUM:"medium",HIGH:"high",AUTO:"auto",DENSE:"dense",CUSTOM:"custom"},m=function(){var e,n,t,l=[],v=null;function m(){e={};var a={_debug:g,get debug(){return this._debug},set debug(e){this._debug=e},_bidderTimeout:3e3,get bidderTimeout(){return this._bidderTimeout},set bidderTimeout(e){this._bidderTimeout=e},_publisherDomain:p,get publisherDomain(){return this._publisherDomain},set publisherDomain(e){this._publisherDomain=e},_priceGranularity:h.MEDIUM,set priceGranularity(e){u(e)&&("string"==typeof e?this._priceGranularity=c(e)?e:h.MEDIUM:(0,o.isPlainObject)(e)&&(this._customPriceBucket=e,this._priceGranularity=h.CUSTOM,(0,o.logMessage)("Using custom price granularity")))},get priceGranularity(){return this._priceGranularity},_customPriceBucket:{},get customPriceBucket(){return this._customPriceBucket},_mediaTypePriceGranularity:{},get mediaTypePriceGranularity(){return this._mediaTypePriceGranularity},set mediaTypePriceGranularity(e){var n=this;this._mediaTypePriceGranularity=Object.keys(e).reduce((function(t,r){return u(e[r])?"string"==typeof e?t[r]=c(e[r])?e[r]:n._priceGranularity:(0,o.isPlainObject)(e)&&(t[r]=e[r],(0,o.logMessage)("Using custom price granularity for ".concat(r))):(0,o.logWarn)("Invalid price granularity for media type: ".concat(r)),t}),{})},_sendAllBids:!0,get enableSendAllBids(){return this._sendAllBids},set enableSendAllBids(e){this._sendAllBids=e},_useBidCache:!1,get useBidCache(){return this._useBidCache},set useBidCache(e){this._useBidCache=e},_deviceAccess:!0,get deviceAccess(){return this._deviceAccess},set deviceAccess(e){this._deviceAccess=e},_bidderSequence:b,get bidderSequence(){return this._bidderSequence},set bidderSequence(e){y[e]?this._bidderSequence=e:(0,o.logWarn)("Invalid order: ".concat(e,". Bidder Sequence was not set."))},_timeoutBuffer:400,get timeoutBuffer(){return this._timeoutBuffer},set timeoutBuffer(e){this._timeoutBuffer=e},_disableAjaxTimeout:!1,get disableAjaxTimeout(){return this._disableAjaxTimeout},set disableAjaxTimeout(e){this._disableAjaxTimeout=e},_maxNestedIframes:10,get maxNestedIframes(){return this._maxNestedIframes},set maxNestedIframes(e){this._maxNestedIframes=e},_auctionOptions:{},get auctionOptions(){return this._auctionOptions},set auctionOptions(e){(function(e){if(!(0,o.isPlainObject)(e))return(0,o.logWarn)("Auction Options must be an object"),!1;for(var n=0,t=Object.keys(e);n<t.length;n++){var r=t[n];if("secondaryBidders"!==r&&"suppressStaleRender"!==r)return(0,o.logWarn)("Auction Options given an incorrect param: ".concat(r)),!1;if("secondaryBidders"===r){if(!(0,o.isArray)(e[r]))return(0,o.logWarn)("Auction Options ".concat(r," must be of type Array")),!1;if(!e[r].every(o.isStr))return(0,o.logWarn)("Auction Options ".concat(r," must be only string")),!1}else if("suppressStaleRender"===r&&!(0,o.isBoolean)(e[r]))return(0,o.logWarn)("Auction Options ".concat(r," must be of type boolean")),!1}return!0})(e)&&(this._auctionOptions=e)}};function c(e){return(0,i.sE)(Object.keys(h),(function(n){return e===h[n]}))}function u(e){if(!e)return(0,o.logError)("Prebid Error: no value passed to `setPriceGranularity()`"),!1;if("string"==typeof e)c(e)||(0,o.logWarn)("Prebid Warning: setPriceGranularity was called with invalid setting, using `medium` as default.");else if((0,o.isPlainObject)(e)&&!(0,r.t)(e))return(0,o.logError)("Invalid custom price value passed to `setPriceGranularity()`"),!1;return!0}n&&C(Object.keys(n).reduce((function(e,t){return n[t]!==a[t]&&(e[t]=a[t]||{}),e}),{})),n=a,t={}}function E(){if(v&&t&&(0,o.isPlainObject)(t[v])){var e=t[v],r=new Set(Object.keys(n).concat(Object.keys(e)));return(0,i.Oc)(r).reduce((function(t,r){return void 0===e[r]?t[r]=n[r]:void 0===n[r]?t[r]=e[r]:(0,o.isPlainObject)(e[r])?t[r]=(0,o.mergeDeep)({},n[r],e[r]):t[r]=e[r],t}),{})}return f({},n)}function S(e){var n={};return Object.keys(e).forEach((function(t){var r="context"===t?"site":t;n[r]="site"===r||"user"===r?Object.keys(e[t]).reduce((function(n,r){return"data"===r?(0,o.mergeDeep)(n,{ext:{data:e[t][r]}}):(0,o.mergeDeep)(n,s({},r,e[t][r])),n}),{}):e[t]})),n}function A(e){var n={};return Object.keys(e).filter((function(e){return"context"===e})).forEach((function(t){Object.keys(e[t]).forEach((function(r){"data"===r?(0,o.mergeDeep)(n,{ext:{data:e[t][r]}}):"object"!==d(e[t][r])||Array.isArray(e[t][r])?(0,o.mergeDeep)(n,{ext:{data:s({},r.toLowerCase(),e[t][r])}}):Object.keys(e[t][r]).forEach((function(i){(0,o.mergeDeep)(n,{ext:{data:s({},r.toLowerCase(),s({},i.toLowerCase(),e[t][r][i]))}})}))}))})),n}function T(t){if((0,o.isPlainObject)(t)){var r=Object.keys(t),i={};r.forEach((function(r){var a="fpd"===r?"ortb2":r,c="fpd"===r?S(t[r]):t[r];(0,o.isPlainObject)(e[a])&&(0,o.isPlainObject)(c)&&(c=f({},e[a],c)),i[a]=n[a]=c})),C(i)}else(0,o.logError)("setConfig options must be an object")}function I(e,n){var t=n;if("string"!=typeof e&&(t=e,e="*"),"function"==typeof t){var r={topic:e,callback:t};return l.push(r),function(){l.splice(l.indexOf(r),1)}}(0,o.logError)("listener must be a function")}function C(e){var n=Object.keys(e);l.filter((function(e){return(0,i.q9)(n,e.topic)})).forEach((function(n){n.callback(s({},n.topic,e[n.topic]))})),l.filter((function(e){return"*"===e.topic})).forEach((function(n){return n.callback(e)}))}function w(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{r(e),e.bidders.forEach((function(r){t[r]||(t[r]={}),Object.keys(e.config).forEach((function(i){var a="fpd"===i?"ortb2":i,c="fpd"===i?S(e.config[i]):e.config[i];if((0,o.isPlainObject)(c)){var u=n?o.mergeDeep:Object.assign;t[r][a]=u({},t[r][a]||{},c)}else t[r][a]=c}))}))}catch(e){(0,o.logError)(e)}function r(e){if(!(0,o.isPlainObject)(e))throw"setBidderConfig bidder options must be an object";if(!Array.isArray(e.bidders)||!e.bidders.length)throw"setBidderConfig bidder options must contain a bidders list with at least 1 bidder";if(!(0,o.isPlainObject)(e.config))throw"setBidderConfig bidder options must contain a config object"}}function O(e,n){v=e;try{return n()}finally{B()}}function B(){v=null}return m(),{getCurrentBidder:function(){return v},resetBidder:B,getConfig:function(){if(arguments.length<=1&&"function"!=typeof(arguments.length<=0?void 0:arguments[0])){var e=arguments.length<=0?void 0:arguments[0];return e?(0,a.Z)(E(),e):E()}return I.apply(void 0,arguments)},readConfig:function(){if(arguments.length<=1&&"function"!=typeof(arguments.length<=0?void 0:arguments[0])){var e=arguments.length<=0?void 0:arguments[0],n=(0,o.deepClone)(E());return e?(0,a.Z)(n,e):n}return I.apply(void 0,arguments)},setConfig:T,mergeConfig:function(e){if((0,o.isPlainObject)(e)){var n=Object.keys(e).reduce((function(n,t){var r=E()[t]||{};return n[t]=(0,o.mergeDeep)(r,e[t]),n}),{});return T(function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?u(Object(t),!0).forEach((function(n){s(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):u(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}({},n)),n}(0,o.logError)("mergeConfig input must be an object")},setDefaults:function(t){(0,o.isPlainObject)(e)?(f(e,t),f(n,t)):(0,o.logError)("defaults must be an object")},resetConfig:m,runWithBidder:O,callbackWithBidder:function(e){return function(n){return function(){if("function"==typeof n){for(var t=arguments.length,r=new Array(t),i=0;i<t;i++)r[i]=arguments[i];return O(e,o.bind.call.apply(o.bind,[n,this].concat(r)))}(0,o.logWarn)("config.callbackWithBidder callback is not a function")}}},setBidderConfig:w,getBidderConfig:function(){return t},mergeBidderConfig:function(e){return w(e,!0)},convertAdUnitFpd:function(e){var n=[];return e.forEach((function(e){var t;e.fpd?(e.ortb2Imp?(0,o.mergeDeep)(e.ortb2Imp,A(e.fpd)):e.ortb2Imp=A(e.fpd),n.push(((t=e).fpd,function(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}(t,c)))):n.push(e)})),n},getLegacyFpd:function(e){if("object"===d(e)){var n={};return Object.keys(e).forEach((function(t){var r="site"===t?"context":t;n[r]="context"===r||"user"===r?Object.keys(e[t]).filter((function(e){return"data"!==e})).reduce((function(n,r){return"ext"===r?(0,o.mergeDeep)(n,e[t][r]):(0,o.mergeDeep)(n,s({},r,e[t][r])),n}),{}):e[t]})),n}},getLegacyImpFpd:function(e){if("object"===d(e)){var n={};return(0,a.Z)(e,"ext.data")&&Object.keys(e.ext.data).forEach((function(t){"pbadslot"===t?(0,o.mergeDeep)(n,{context:{pbAdSlot:e.ext.data[t]}}):"adserver"===t?(0,o.mergeDeep)(n,{context:{adServer:e.ext.data[t]}}):(0,o.mergeDeep)(n,{context:{data:s({},t,e.ext.data[t])}})})),n}}}}()},5553:function(e,n,t){"use strict";t.d(n,{D:function(){return d},t:function(){return l}});var r=t(1879),i=t(9853),o={buckets:[{max:5,increment:.5}]},a={buckets:[{max:20,increment:.1}]},c={buckets:[{max:20,increment:.01}]},u={buckets:[{max:3,increment:.01},{max:8,increment:.05},{max:20,increment:.5}]},s={buckets:[{max:5,increment:.05},{max:10,increment:.1},{max:20,increment:.5}]};function d(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=parseFloat(e);return isNaN(r)&&(r=""),{low:""===r?"":f(e,o,t),med:""===r?"":f(e,a,t),high:""===r?"":f(e,c,t),auto:""===r?"":f(e,s,t),dense:""===r?"":f(e,u,t),custom:""===r?"":f(e,n,t)}}function f(e,n,t){var i="";if(!l(n))return i;var o=n.buckets.reduce((function(e,n){return e.max>n.max?e:n}),{max:0}),a=0,c=(0,r.sE)(n.buckets,(function(n){if(e>o.max*t){var r=n.precision;void 0===r&&(r=2),i=(n.max*t).toFixed(r)}else{if(e<=n.max*t&&e>=a*t)return n.min=a,n;a=n.max}}));return c&&(i=function(e,n,t){var r=void 0!==n.precision?n.precision:2,i=n.increment*t,o=n.min*t,a=Math.pow(10,r+2),c=(e*a-o*a)/(i*a),u=Math.floor(c)*i+o;return(u=Number(u.toFixed(10))).toFixed(r)}(e,c,t)),i}function l(e){if((0,i.isEmpty)(e)||!e.buckets||!Array.isArray(e.buckets))return!1;var n=!0;return e.buckets.forEach((function(e){e.max&&e.increment||(n=!1)})),n}},3636:function(e,n,t){"use strict";t.d(n,{$8:function(){return A},JI:function(){return l},gF:function(){return g},wt:function(){return T}});var r,i,o=t(8962),a=t(4892),c=t(3494),u=(0,t(9853).prefixLog)("DEBUG:"),s=u.logWarn,d=u.logMessage,f="pbjs:debugging",l=[function(e){p(),function(e){r=E.bind(e),a.Yt.before(r,5),i=S.bind(e),a.e0.before(i,5)}(e)}],g=[p];function p(){a.Yt.getHooks({hook:r}).remove(),a.e0.getHooks({hook:i}).remove()}function v(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];o.vc.setConfig({debug:!0}),l.forEach((function(n){return n(e)})),d("bidder overrides enabled".concat(n?" from session":""))}function y(){g.forEach((function(e){return e()})),d("bidder overrides disabled")}function b(e,n,t){return!(!e.bidder||e.bidder===n)||!(!e.adUnitCode||e.adUnitCode===t)}function h(e,n){return Array.isArray(e)&&-1===e.indexOf(n)}function m(e,n,t){return Object.keys(e).filter((function(e){return-1===["adUnitCode","bidder"].indexOf(e)})).reduce((function(n,r){return d("bidder overrides changed '".concat(n.adUnitCode,"/").concat(n.bidderCode,"' ").concat(t,".").concat(r," from '").concat(n[r],".js' to '").concat(e[r],"'")),n[r]=e[r],n.isDebug=!0,n}),n)}function E(e,n,t){var r=this;h(r.bidders,t.bidderCode)?s("bidder '".concat(t.bidderCode,"' excluded from auction by bidder overrides")):(Array.isArray(r.bids)&&r.bids.forEach((function(e){b(e,t.bidderCode,n)||m(e,t,"bidder")})),e(n,t))}function S(e,n){var t=this,r=n.filter((function(e){return!h(t.bidders,e.bidderCode)||(s("bidRequest '".concat(e.bidderCode,"' excluded from auction by bidder overrides")),!1)}));Array.isArray(t.bidRequests)&&r.forEach((function(e){t.bidRequests.forEach((function(n){e.bids.forEach((function(t){b(n,e.bidderCode,t.adUnitCode)||m(n,t,"bidRequest")}))}))})),e(r)}var A=(0,c.z3)("sync",(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.sessionStorage,r=void 0===t?window.sessionStorage:t;if(e.enabled)try{r.setItem(f,JSON.stringify(e))}catch(e){}else try{r.removeItem(f)}catch(e){}}));function T(e){var n;try{e=e||window.sessionStorage,n=JSON.parse(e.getItem(f))}catch(e){}n&&v(n,!0)}o.vc.getConfig("debugging",(function(e){return function(e){var n=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).sessionStorage,t=void 0===n?window.sessionStorage:n;A(e,{sessionStorage:t}),e.enabled?v(e):y()}(e.debugging)}))},2319:function(e,n,t){"use strict";function r(){return r=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},r.apply(this,arguments)}t.r(n),t.d(n,{emit:function(){return y},get:function(){return p},getEvents:function(){return v},off:function(){return g},on:function(){return l}});var i=t(9853),o=t(5644),a=Array.prototype.slice,c=Array.prototype.push,u=i._map(o.EVENTS,(function(e){return e})),s=o.EVENT_ID_PATHS,d=[],f=function(){var e={},n={};function t(n,t){i.logMessage("Emitting event for: "+n);var r=t[0]||{},o=r[s[n]],a=e[n]||{que:[]},u=i._map(a,(function(e,n){return n})),f=[];d.push({eventType:n,args:r,id:o,elapsedTime:i.getPerformanceNow()}),o&&i.contains(u,o)&&c.apply(f,a[o].que),c.apply(f,a.que),i._each(f,(function(e){if(e)try{e.apply(null,t)}catch(e){i.logError("Error executing handler:","events.js",e)}}))}return n.on=function(n,t,r){if(function(e){return i.contains(u,e)}(n)){var o=e[n]||{que:[]};r?(o[r]=o[r]||{que:[]},o[r].que.push(t)):o.que.push(t),e[n]=o}else i.logError("Wrong event name : "+n+" Valid event names :"+u)},n.emit=function(e){var n=a.call(arguments,1);t(e,n)},n.off=function(n,t,r){var o=e[n];i.isEmpty(o)||i.isEmpty(o.que)&&i.isEmpty(o[r])||r&&(i.isEmpty(o[r])||i.isEmpty(o[r].que))||(r?i._each(o[r].que,(function(e){var n=o[r].que;e===t&&n.splice(n.indexOf(e),1)})):i._each(o.que,(function(e){var n=o.que;e===t&&n.splice(n.indexOf(e),1)})),e[n]=o)},n.get=function(){return e},n.getEvents=function(){var e=[];return i._each(d,(function(n){var t=r({},n);e.push(t)})),e},n}(),l=f.on,g=f.off,p=f.get,v=f.getEvents,y=f.emit},3494:function(e,n,t){"use strict";t.d(n,{Bx:function(){return l},bA:function(){return f},o0:function(){return s},v5:function(){return u},z3:function(){return c}});var r=t(1432),i=t.n(r);function o(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return a(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?a(e,n):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var c=i()({ready:i().SYNC|i().ASYNC|i().QUEUE}),u=c.get;function s(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:15,r=e.getHooks({hook:n});0===r.length&&e.before(n,t)}var d={};function f(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=t.postInstallAllowed,i=void 0!==r&&r;c("async",(function(t){t.forEach((function(e){return n.apply(void 0,o(e))})),i&&(d[e]=n)}),e)([])}function l(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),r=1;r<n;r++)t[r-1]=arguments[r];var i=d[e];if(i)return i.apply(void 0,t);u(e).before((function(e,n){n.push(t),e(n)}))}},8265:function(e,n,t){"use strict";t.d(n,{B5:function(){return r},Mk:function(){return o},Oh:function(){return a},pX:function(){return i}});var r="native",i="video",o="banner",a="adpod"},9017:function(e,n,t){"use strict";t.d(n,{Fb:function(){return v},JL:function(){return E},Sg:function(){return l},Ur:function(){return h},e6:function(){return b},eK:function(){return m},r4:function(){return y},xc:function(){return g}});var r=t(265),i=t(9853),o=t(1879),a=t(4766);function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?u(Object(t),!0).forEach((function(n){d(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):u(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function d(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}var f=t(5644),l=[],g=Object.keys(f.NATIVE_KEYS).map((function(e){return f.NATIVE_KEYS[e]})),p={image:{image:{required:!0},title:{required:!0},sponsoredBy:{required:!0},clickUrl:{required:!0},body:{required:!1},icon:{required:!1}}};function v(e){e.forEach((function(e){var n,t,a=e.nativeParams||(0,r.Z)(e,"mediaTypes.native");a&&(e.nativeParams=(n=a)&&n.type&&((t=n.type)&&(0,o.q9)(Object.keys(p),t)||((0,i.logError)("".concat(t," nativeParam is not supported")),0))?p[n.type]:n)}))}function y(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.index,i=void 0===t?a.K.index:t;if(!(0,r.Z)(e,"native.clickUrl"))return!1;var c=i.getAdUnit(e).nativeParams;if(!c)return!0;var u=Object.keys(c).filter((function(e){return c[e].required})),s=Object.keys(e.native).filter((function(n){return e.native[n]}));return u.every((function(e){return(0,o.q9)(s,e)}))}function b(e,n){var t;return"click"===e.action?t=n.native&&n.native.clickTrackers:(t=n.native&&n.native.impressionTrackers,n.native&&n.native.javascriptTrackers&&(0,i.insertHtmlIntoIframe)(n.native.javascriptTrackers)),(t||[]).forEach(i.triggerPixel),e.action}function h(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.index,i=void 0===t?a.K.index:t,o={},c=i.getAdUnit(e);(0,r.Z)(c,"nativeParams.rendererUrl")?e.native.rendererUrl=S(c.nativeParams.rendererUrl):(0,r.Z)(c,"nativeParams.adTemplate")&&(e.native.adTemplate=S(c.nativeParams.adTemplate));var u=!1!==(0,r.Z)(c,"nativeParams.sendTargetingKeys"),d=A(c),f=s(s({},e.native),e.native.ext);return delete f.ext,Object.keys(f).forEach((function(n){var t=d[n],i=S(e.native[n])||S((0,r.Z)(e,"native.ext.".concat(n)));if("adTemplate"!==n&&t&&i){var a=(0,r.Z)(c,"nativeParams.".concat(n,".sendId"));"boolean"!=typeof a&&(a=(0,r.Z)(c,"nativeParams.ext.".concat(n,".sendId"))),a&&(i="".concat(t,":").concat(e.adId));var s=(0,r.Z)(c,"nativeParams.".concat(n,".sendTargetingKeys"));"boolean"!=typeof s&&(s=(0,r.Z)(c,"nativeParams.ext.".concat(n,".sendTargetingKeys"))),("boolean"==typeof s?s:u)&&(o[t]=i)}})),o}function m(e,n){var t={message:"assetResponse",adId:e.adId,assets:[]};return n.native.hasOwnProperty("adTemplate")&&(t.adTemplate=S(n.native.adTemplate)),n.native.hasOwnProperty("rendererUrl")&&(t.rendererUrl=S(n.native.rendererUrl)),e.assets.forEach((function(e){var r=(0,i.getKeyByValue)(f.NATIVE_KEYS,e),o=S(n.native[r]);t.assets.push({key:r,value:o})})),t}function E(e,n){var t={message:"assetResponse",adId:e.adId,assets:[]};return Object.keys(n.native).forEach((function(e,r){if("adTemplate"===e&&n.native[e])t.adTemplate=S(n.native[e]);else if("rendererUrl"===e&&n.native[e])t.rendererUrl=S(n.native[e]);else if("ext"===e)Object.keys(n.native[e]).forEach((function(r){if(n.native[e][r]){var i=S(n.native[e][r]);t.assets.push({key:r,value:i})}}));else if(n.native[e]&&f.NATIVE_KEYS.hasOwnProperty(e)){var i=S(n.native[e]);t.assets.push({key:e,value:i})}})),t}function S(e){return"object"===c(e)&&e.url?e.url:e}function A(e){var n={};return(0,r.Z)(e,"nativeParams.ext")&&Object.keys(e.nativeParams.ext).forEach((function(e){n[e]="hb_native_".concat(e)})),s(s({},f.NATIVE_KEYS),n)}},1879:function(e,n,t){"use strict";function r(e,n,t){return e&&e.includes(n,t)||!1}function i(){return Array.from.apply(Array,arguments)}function o(e,n,t){return e&&e.find(n,t)}function a(e,n,t){return e&&e.findIndex(n,t)}t.d(n,{Oc:function(){return i},cx:function(){return a},q9:function(){return r},sE:function(){return o}})},2786:function(e,n,t){"use strict";t.d(n,{zh:function(){return oe},O5:function(){return ae}});var r=t(2528),i=t(9853),o=t(265),a=t(2319),c=t(9017),u=t(5644),s=t(4766),d=t(1879),f=t(4877),l=t(8962),g=u.EVENTS,p=g.AD_RENDER_FAILED,v=g.AD_RENDER_SUCCEEDED;function y(e){var n=e.reason,t=e.message,r=e.bid,o=e.id,c={reason:n,message:t};r&&(c.bid=r),o&&(c.adId=o),(0,i.logError)(t),a.emit(p,c)}function b(e){var n=e.doc,t=e.bid,r=e.id,i={doc:n};t&&(i.bid=t),r&&(i.adId=r),a.emit(v,i)}var h=u.EVENTS.BID_WON,m=u.EVENTS.STALE_RENDER,E={"Prebid Request":function(e,n,t){if(null!=t){if(t.status!==u.BID_STATUS.RENDERED||((0,i.logWarn)("Ad id ".concat(t.adId," has been rendered before")),a.emit(m,t),!(0,o.Z)(l.vc.getConfig("auctionOptions"),"suppressStaleRender"))){try{!function(e,n){var t=e.adId,r=e.ad,o=e.adUrl,a=e.width,c=e.height,u=e.renderer,s=e.cpm,d=e.originalCpm;(0,f.Pd)(u)?(0,f._U)(u,e):t&&(A(e),n({message:"Prebid Response",ad:(0,i.replaceAuctionPrice)(r,d||s),adUrl:(0,i.replaceAuctionPrice)(o,d||s),adId:t,width:a,height:c}))}(t,e)}catch(e){return void y({reason:u.AD_RENDER_FAILED_REASON.EXCEPTION,message:e.message,id:n.adId,bid:t})}s.K.addWinningBid(t),a.emit(h,t)}}else y({reason:u.AD_RENDER_FAILED_REASON.CANNOT_FIND_AD,message:"Cannot find ad '".concat(n.adId,"' for cross-origin render request"),id:n.adId})},"Prebid Native":function(e,n,t){if(null!=t)switch(n.action){case"assetRequest":e((0,c.eK)(n,t));break;case"allAssetRequest":e((0,c.JL)(n,t));break;case"resizeNativeHeight":t.height=n.height,t.width=n.width,A(t);break;default:if("click"===(0,c.e6)(n,t))return;s.K.addWinningBid(t),a.emit(h,t)}else(0,i.logError)("Cannot find ad '".concat(n.adId,"' for x-origin event request"))},"Prebid Event":function(e,n,t){if(null!=t)if(t.status===u.BID_STATUS.RENDERED)switch(n.event){case u.EVENTS.AD_RENDER_FAILED:y({bid:t,id:n.adId,reason:n.info.reason,message:n.info.message});break;case u.EVENTS.AD_RENDER_SUCCEEDED:b({doc:null,bid:t,id:n.adId});break;default:(0,i.logError)("Received x-origin event request for unsupported event: '".concat(n.event,"' (adId: '").concat(n.adId,"')"))}else(0,i.logWarn)("Received x-origin event request without corresponding render request for ad '".concat(n.adId,"'"));else(0,i.logError)("Cannot find ad '".concat(n.adId,"' for x-origin event request"))}};function S(e){var n=e.message?"message":"data",t={};try{t=JSON.parse(e[n])}catch(e){return}if(t&&t.adId&&t.message){var r=(0,d.sE)(s.K.getBidsReceived(),(function(e){return e.adId===t.adId}));E.hasOwnProperty(t.message)&&E[t.message](function(e){return null==e.origin&&0===e.ports.length?function(){var e="Cannot post message to a frame with null origin. Please update creatives to use MessageChannel, see https://github.com/prebid/Prebid.js/issues/7870";throw(0,i.logError)(e),new Error(e)}:e.ports.length>0?function(n){e.ports[0].postMessage(JSON.stringify(n))}:function(n){e.source.postMessage(JSON.stringify(n),e.origin)}}(e),t,r)}}function A(e){var n=e.adId,t=e.adUnitCode,r=e.width,o=e.height;["div","iframe"].forEach((function(e){var a=function(e){var r=function(e,n){return(0,i.isGptPubadsDefined)()?function(e){var n=(0,d.sE)(window.googletag.pubads().getSlots(),(function(n){return(0,d.sE)(n.getTargetingKeys(),(function(t){return(0,d.q9)(n.getTargeting(t),e)}))}));return n?n.getSlotElementId():null}(e):(0,i.isApnGetTagDefined)()?function(e){var n=window.apntag.getTag(e);return n&&n.targetId}(n):n}(n,t),o=document.getElementById(r);return o&&o.querySelector(e)}(e+':not([style*="display: none"])');if(a){var c=a.style;c.width=r+"px",c.height=o+"px"}else(0,i.logWarn)("Unable to locate matching page element for adUnitCode ".concat(t,". Can't resize it to ad's dimensions. Please review setup."))}))}var T=t(7112),I=t(9742),C=t(3494),w=t(3636),O=t(7263),B=t(1477),_=t(5849),U=t(7602);function R(e){return function(e){if(Array.isArray(e))return D(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return D(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?D(e,n):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function D(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function k(){return k=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},k.apply(this,arguments)}var j=(0,r.R)(),N=t(5644),P=t(7602).ZP,x=t(2319),q=T.k_.triggerUserSyncs,M=N.EVENTS,G=M.ADD_AD_UNITS,W=M.BID_WON,F=M.REQUEST_BIDS,z=M.SET_TARGETING,L=M.STALE_RENDER,K=N.AD_RENDER_FAILED_REASON,V=K.PREVENT_WRITING_ON_MAIN_DOCUMENT,H=K.NO_AD,Z=K.EXCEPTION,Y=K.CANNOT_FIND_AD,J=K.MISSING_DOC_OR_ADID,Q={bidWon:function(e){var n=s.K.getBidsRequested().map((function(e){return e.bids.map((function(e){return e.adUnitCode}))})).reduce(i.flatten).filter(i.uniques);if((0,i.contains)(n,e))return!0;(0,i.logError)('The "'+e+'" placement is not defined.')}};function X(e,n,t){e.defaultView&&e.defaultView.frameElement&&(e.defaultView.frameElement.width=n,e.defaultView.frameElement.height=t)}function $(e,n){var t=[];return(0,i.isArray)(e)&&(n?e.length===n:e.length>0)&&(e.every((function(e){return(0,i.isArrayOfNums)(e,2)}))?t=e:(0,i.isArrayOfNums)(e,2)&&t.push(e)),t}function ee(e){var n=(0,i.deepClone)(e),t=n.mediaTypes.banner,r=$(t.sizes);return r.length>0?(t.sizes=r,n.sizes=r):((0,i.logError)("Detected a mediaTypes.banner object without a proper sizes field. Please ensure the sizes are listed like: [[300, 250], ...]. Removing invalid mediaTypes.banner object from request."),delete n.mediaTypes.banner),n}function ne(e){var n=(0,i.deepClone)(e),t=n.mediaTypes.video;if(t.playerSize){var r="number"==typeof t.playerSize[0]?2:1,o=$(t.playerSize,r);o.length>0?(2===r&&(0,i.logInfo)("Transforming video.playerSize from [640,480] to [[640,480]] so it's in the proper format."),t.playerSize=o,n.sizes=o):((0,i.logError)("Detected incorrect configuration of mediaTypes.video.playerSize. Please specify only one set of dimensions in a format like: [[640, 480]]. Removing invalid mediaTypes.video.playerSize property from request."),delete n.mediaTypes.video.playerSize)}return n}function te(e){var n=(0,i.deepClone)(e),t=n.mediaTypes.native;return t.image&&t.image.sizes&&!Array.isArray(t.image.sizes)&&((0,i.logError)("Please use an array of sizes for native.image.sizes field. Removing invalid mediaTypes.native.image.sizes property from request."),delete n.mediaTypes.native.image.sizes),t.image&&t.image.aspect_ratios&&!Array.isArray(t.image.aspect_ratios)&&((0,i.logError)("Please use an array of sizes for native.image.aspect_ratios field. Removing invalid mediaTypes.native.image.aspect_ratios property from request."),delete n.mediaTypes.native.image.aspect_ratios),t.icon&&t.icon.sizes&&!Array.isArray(t.icon.sizes)&&((0,i.logError)("Please use an array of sizes for native.icon.sizes field. Removing invalid mediaTypes.native.icon.sizes property from request."),delete n.mediaTypes.native.icon.sizes),n}function re(e,n){var t=(0,o.Z)(e,"mediaTypes.".concat(n,".pos"));if(!(0,i.isNumber)(t)||isNaN(t)||!isFinite(t)){var r="Value of property 'pos' on ad unit ".concat(e.code," should be of type: Number");(0,i.logWarn)(r),x.emit(N.EVENTS.AUCTION_DEBUG,{type:"WARNING",arguments:r}),delete e.mediaTypes[n].pos}return e}function ie(e){var n=function(n){return"adUnit.code '".concat(e.code,"' ").concat(n)},t=e.mediaTypes,r=e.bids;return null==r||(0,i.isArray)(r)?null==r&&null==e.ortb2Imp?((0,i.logError)(n("has no 'adUnit.bids' and no 'adUnit.ortb2Imp'. Removing adUnit from auction")),null):t&&0!==Object.keys(t).length?(null==e.ortb2Imp||null!=r&&0!==r.length||(e.bids=[{bidder:null}],(0,i.logMessage)(n("defines 'adUnit.ortb2Imp' with no 'adUnit.bids'; it will be seen only by S2S adapters"))),e):((0,i.logError)(n("does not define a 'mediaTypes' object. This is a required field for the auction, so this adUnit has been removed.")),null):((0,i.logError)(n("defines 'adUnit.bids' that is not an array. Removing adUnit from auction")),null)}(0,w.wt)(),j.bidderSettings=j.bidderSettings||{},j.libLoaded=!0,j.version="v6.23.0",(0,i.logInfo)("Prebid.js v6.23.0 loaded"),j.installedModules=j.installedModules||[],j.adUnits=j.adUnits||[],j.triggerUserSyncs=q;var oe={validateAdUnit:ie,validateBannerMediaType:ee,validateVideoMediaType:ne,validateNativeMediaType:te,validateSizes:$},ae=(0,C.z3)("sync",(function(e){var n=[];return e.forEach((function(e){if(null!=(e=ie(e))){var t,r,i,o=e.mediaTypes;o.banner&&(t=ee(e),o.banner.hasOwnProperty("pos")&&(t=re(t,"banner"))),o.video&&(r=ne(t||e),o.video.hasOwnProperty("pos")&&(r=re(r,"video"))),o.native&&(i=te(r||t||e));var a=k({},t,r,i);n.push(a)}})),n}),"checkAdUnitSetup");function ce(e){var n=s.K[e]().filter(i.bind.call(i.adUnitsFilter,this,s.K.getAdUnitCodes())),t=s.K.getLastAuctionId();return n.map((function(e){return e.adUnitCode})).filter(i.uniques).map((function(e){return n.filter((function(n){return n.auctionId===t&&n.adUnitCode===e}))})).filter((function(e){return e&&e[0]&&e[0].adUnitCode})).map((function(e){return n={},r={bids:e},(t=e[0].adUnitCode)in n?Object.defineProperty(n,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[t]=r,n;var n,t,r})).reduce((function(e,n){return k(e,n)}),{})}function ue(e,n,t){var r=n.querySelector(t);e.parentNode&&e.parentNode===r||(0,i.insertElement)(e,n,t)}j.getAdserverTargetingForAdUnitCodeStr=function(e){if((0,i.logInfo)("Invoking pbjs.getAdserverTargetingForAdUnitCodeStr",arguments),e){var n=j.getAdserverTargetingForAdUnitCode(e);return(0,i.transformAdServerTargetingObj)(n)}(0,i.logMessage)("Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode")},j.getHighestUnusedBidResponseForAdUnitCode=function(e){if(e){var n=s.K.getAllBidsForAdUnitCode(e).filter(I.u8.isUnusedBid).filter(I.u8.isBidNotExpired);return n.length?n.reduce(i.getHighestCpm):{}}(0,i.logMessage)("Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode")},j.getAdserverTargetingForAdUnitCode=function(e){return j.getAdserverTargeting(e)[e]},j.getAdserverTargeting=function(e){return(0,i.logInfo)("Invoking pbjs.getAdserverTargeting",arguments),I.q0.getAllTargeting(e)},j.getConsentMetadata=function(){return(0,i.logInfo)("Invoking pbjs.getConsentMetadata"),{gdpr:U.rp.getConsentMeta(),usp:U.nX.getConsentMeta(),coppa:!!l.vc.getConfig("coppa")}},j.getNoBids=function(){return(0,i.logInfo)("Invoking pbjs.getNoBids",arguments),ce("getNoBids")},j.getNoBidsForAdUnitCode=function(e){return{bids:s.K.getNoBids().filter((function(n){return n.adUnitCode===e}))}},j.getBidResponses=function(){return(0,i.logInfo)("Invoking pbjs.getBidResponses",arguments),ce("getBidsReceived")},j.getBidResponsesForAdUnitCode=function(e){return{bids:s.K.getBidsReceived().filter((function(n){return n.adUnitCode===e}))}},j.setTargetingForGPTAsync=function(e,n){if((0,i.logInfo)("Invoking pbjs.setTargetingForGPTAsync",arguments),(0,i.isGptPubadsDefined)()){var t=I.q0.getAllTargeting(e);I.q0.resetPresetTargeting(e,n),I.q0.setTargetingForGPT(t,n),Object.keys(t).forEach((function(e){Object.keys(t[e]).forEach((function(n){"hb_adid"===n&&s.K.setStatusForBids(t[e][n],N.BID_STATUS.BID_TARGETING_SET)}))})),x.emit(z,t)}else(0,i.logError)("window.googletag is not defined on the page")},j.setTargetingForAst=function(e){(0,i.logInfo)("Invoking pbjs.setTargetingForAn",arguments),I.q0.isApntagDefined()?(I.q0.setTargetingForAst(e),x.emit(z,I.q0.getAllTargeting())):(0,i.logError)("window.apntag is not defined on the page")},j.renderAd=(0,C.z3)("async",(function(e,n,t){if((0,i.logInfo)("Invoking pbjs.renderAd",arguments),(0,i.logMessage)("Calling renderAd with adId :"+n),e&&n)try{var r=s.K.findBidByAdId(n);if(r){var a=!0;if(r&&r.status===N.BID_STATUS.RENDERED&&((0,i.logWarn)("Ad id ".concat(r.adId," has been rendered before")),x.emit(L,r),(0,o.Z)(l.vc.getConfig("auctionOptions"),"suppressStaleRender")&&(a=!1)),a){if(r.ad=(0,i.replaceAuctionPrice)(r.ad,r.originalCpm||r.cpm),r.adUrl=(0,i.replaceAuctionPrice)(r.adUrl,r.originalCpm||r.cpm),t&&t.clickThrough){var c=t.clickThrough;r.ad=(0,i.replaceClickThrough)(r.ad,c),r.adUrl=(0,i.replaceClickThrough)(r.adUrl,c)}s.K.addWinningBid(r),x.emit(W,r);var u=r.height,d=r.width,g=r.ad,p=r.mediaType,v=r.adUrl,h=r.renderer,m=document.createComment("Creative ".concat(r.creativeId," served by ").concat(r.bidder," Prebid.js Header Bidding"));if((0,i.insertElement)(m,e,"html"),(0,f.Pd)(h))(0,f._U)(h,r,e),ue(m,e,"html"),b({doc:e,bid:r,id:n});else if(e===document&&!(0,i.inIframe)()||"video"===p){var E="Error trying to write ad. Ad render call ad id ".concat(n," was prevented from writing to the main document.");y({reason:V,message:E,bid:r,id:n})}else if(g)e.write(g),e.close(),X(e,d,u),ue(m,e,"html"),(0,i.callBurl)(r),b({doc:e,bid:r,id:n});else if(v){var S=(0,i.createInvisibleIframe)();S.height=u,S.width=d,S.style.display="inline",S.style.overflow="hidden",S.src=v,(0,i.insertElement)(S,e,"body"),X(e,d,u),ue(m,e,"html"),(0,i.callBurl)(r),b({doc:e,bid:r,id:n})}else{var A="Error trying to write ad. No ad for bid response id: ".concat(n);y({reason:H,message:A,bid:r,id:n})}}}else{var T="Error trying to write ad. Cannot find ad by given id : ".concat(n);y({reason:Y,message:T,id:n})}}catch(e){var I="Error trying to write ad Id :".concat(n," to the page:").concat(e.message);y({reason:Z,message:I,id:n})}else{var C="Error trying to write ad Id :".concat(n," to the page. Missing document or adId");y({reason:J,message:C,id:n})}})),j.removeAdUnit=function(e){(0,i.logInfo)("Invoking pbjs.removeAdUnit",arguments),e?((0,i.isArray)(e)?e:[e]).forEach((function(e){for(var n=j.adUnits.length-1;n>=0;n--)j.adUnits[n].code===e&&j.adUnits.splice(n,1)})):j.adUnits=[]},j.requestBids=(0,C.z3)("async",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.bidsBackHandler,t=e.timeout,r=e.adUnits,o=e.adUnitCodes,a=e.labels,c=e.auctionId;x.emit(F);var u=t||l.vc.getConfig("bidderTimeout");r=r&&l.vc.convertAdUnitFpd((0,i.isArray)(r)?r:[r])||j.adUnits,(0,i.logInfo)("Invoking pbjs.requestBids",arguments);var f=[],g=[];if(l.vc.getConfig("s2sConfig",(function(e){e&&e.s2sConfig&&(f=Array.isArray(e.s2sConfig)?e.s2sConfig:[e.s2sConfig])})),f.forEach((function(e){g.push.apply(g,R(e.bidders))})),r=ae(r),o&&o.length?r=r.filter((function(e){return(0,d.q9)(o,e.code)})):o=r&&r.map((function(e){return e.code})),r.forEach((function(e){var n=Object.keys(e.mediaTypes||{banner:"banner"}),t=e.bids.map((function(e){return e.bidder})),r=P.bidderRegistry,o=g?t.filter((function(e){return!(0,d.q9)(g,e)})):t;e.transactionId=(0,i.generateUUID)(),o.forEach((function(t){var o=r[t],a=o&&o.getSpec&&o.getSpec(),c=a&&a.supportedMediaTypes||["banner"];n.some((function(e){return(0,d.q9)(c,e)}))?O.f.incrementBidderRequestsCounter(e.code,t):((0,i.logWarn)((0,i.unsupportedBidderMessage)(e,t)),e.bids=e.bids.filter((function(e){return e.bidder!==t})))})),O.f.incrementRequestsCounter(e.code)})),r&&0!==r.length){var p=s.K.createAuction({adUnits:r,adUnitCodes:o,callback:n,cbTimeout:u,labels:a,auctionId:c}),v=r.length;v>15&&(0,i.logInfo)("Current auction ".concat(p.getAuctionId()," contains ").concat(v," adUnits."),r),o.forEach((function(e){return I.q0.setLatestAuctionForAdUnit(e,p.getAuctionId())})),p.callBids()}else if((0,i.logMessage)("No adUnits configured. No bids requested."),"function"==typeof n)try{n()}catch(e){(0,i.logError)("Error executing bidsBackHandler",null,e)}})),j.requestBids.before((function(e,n){function t(e){for(var n;n=e.shift();)n()}t(_.Ld),t(se),e.call(this,n)}),49),j.addAdUnits=function(e){(0,i.logInfo)("Invoking pbjs.addAdUnits",arguments),j.adUnits.push.apply(j.adUnits,l.vc.convertAdUnitFpd((0,i.isArray)(e)?e:[e])),x.emit(G)},j.onEvent=function(e,n,t){(0,i.logInfo)("Invoking pbjs.onEvent",arguments),(0,i.isFn)(n)?!t||Q[e].call(null,t)?x.on(e,n,t):(0,i.logError)('The id provided is not valid for event "'+e+'" and no handler was set.'):(0,i.logError)('The event handler provided is not a function and was not set on event "'+e+'".')},j.offEvent=function(e,n,t){(0,i.logInfo)("Invoking pbjs.offEvent",arguments),t&&!Q[e].call(null,t)||x.off(e,n,t)},j.getEvents=function(){return(0,i.logInfo)("Invoking pbjs.getEvents"),x.getEvents()},j.registerBidAdapter=function(e,n){(0,i.logInfo)("Invoking pbjs.registerBidAdapter",arguments);try{P.registerBidAdapter(e(),n)}catch(e){(0,i.logError)("Error registering bidder adapter : "+e.message)}},j.registerAnalyticsAdapter=function(e){(0,i.logInfo)("Invoking pbjs.registerAnalyticsAdapter",arguments);try{P.registerAnalyticsAdapter(e)}catch(e){(0,i.logError)("Error registering analytics adapter : "+e.message)}},j.createBid=function(e){return(0,i.logInfo)("Invoking pbjs.createBid",arguments),(0,B.m)(e)};var se=[],de=(0,C.z3)("async",(function(e){e&&!(0,i.isEmpty)(e)?((0,i.logInfo)("Invoking pbjs.enableAnalytics for: ",e),P.enableAnalytics(e)):(0,i.logError)("pbjs.enableAnalytics should be called with option {}")}),"enableAnalyticsCb");function fe(e){e.forEach((function(e){if(void 0===e.called)try{e.call(),e.called=!0}catch(e){(0,i.logError)("Error processing command :","prebid.js",e)}}))}j.enableAnalytics=function(e){se.push(de.bind(this,e))},j.aliasBidder=function(e,n,t){(0,i.logInfo)("Invoking pbjs.aliasBidder",arguments),e&&n?P.aliasBidAdapter(e,n,t):(0,i.logError)("bidderCode and alias must be passed as arguments","pbjs.aliasBidder")},j.getAllWinningBids=function(){return s.K.getAllWinningBids()},j.getAllPrebidWinningBids=function(){return s.K.getBidsReceived().filter((function(e){return e.status===N.BID_STATUS.BID_TARGETING_SET}))},j.getHighestCpmBids=function(e){return I.q0.getWinningBids(e)},j.markWinningBidAsUsed=function(e){var n=[];e.adUnitCode&&e.adId?n=s.K.getBidsReceived().filter((function(n){return n.adId===e.adId&&n.adUnitCode===e.adUnitCode})):e.adUnitCode?n=I.q0.getWinningBids(e.adUnitCode):e.adId?n=s.K.getBidsReceived().filter((function(n){return n.adId===e.adId})):(0,i.logWarn)("Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function."),n.length>0&&(n[0].status=N.BID_STATUS.RENDERED)},j.getConfig=l.vc.getConfig,j.readConfig=l.vc.readConfig,j.mergeConfig=l.vc.mergeConfig,j.mergeBidderConfig=l.vc.mergeBidderConfig,j.setConfig=l.vc.setConfig,j.setBidderConfig=l.vc.setBidderConfig,j.que.push((function(){window.addEventListener("message",S,!1)})),j.cmd.push=function(e){if("function"==typeof e)try{e.call()}catch(e){(0,i.logError)("Error processing command :",e.message,e.stack)}else(0,i.logError)("Commands written into pbjs.cmd.push must be wrapped in a function")},j.que.push=j.cmd.push,j.processQueue=function(){C.z3.ready(),fe(j.que),fe(j.cmd)}},2528:function(e,n,t){"use strict";function r(){return window.pbjs}t.d(n,{R:function(){return r}}),window.pbjs=window.pbjs||{},window.pbjs.cmd=window.pbjs.cmd||[],window.pbjs.que=window.pbjs.que||[],window._pbjsGlobals=window._pbjsGlobals||[],window._pbjsGlobals.push("pbjs")},2661:function(e,n,t){"use strict";t.d(n,{n:function(){return o}});var r=t(8962),i=t(9853),o=function(e){function n(e){var n=r.vc.getConfig("pageUrl");if(n)return n;try{var t=e.querySelector("link[rel='canonical']");if(null!==t)return t.href}catch(e){}return null}return function(){var t,o,a,c=[],u=function(e){try{if(!e.location.ancestorOrigins)return;return e.location.ancestorOrigins}catch(e){}}(e),s=r.vc.getConfig("maxNestedIframes"),d=!1,f=0,l=!1,g=!1;do{var p=t,v=g,y=void 0,b=!1,h=null;g=!1,t=t?t.parent:e;try{y=t.location.href||null}catch(e){b=!0}if(b)if(v){var m=p.context;try{o=h=m.sourceUrl,l=!0,t===e.top&&(d=!0),m.canonicalUrl&&(a=m.canonicalUrl)}catch(e){}}else{(0,i.logWarn)("Trying to access cross domain iframe. Continuing without referrer and location");try{var E=p.document.referrer;E&&(h=E,t===e.top&&(d=!0))}catch(e){}!h&&u&&u[f-1]&&(h=u[f-1]),h&&!l&&(o=h)}else{if(y&&(o=h=y,l=!1,t===e.top)){d=!0;var S=n(t.document);S&&(a=S)}t.context&&t.context.sourceUrl&&(g=!0)}c.push(h),f++}while(t!==e.top&&f<s);return c.reverse(),{referer:o||null,reachedTop:d,isAmp:l,numIframes:f-1,stack:c,canonicalUrl:a||null}}}(window)},1269:function(e,n,t){"use strict";t.d(n,{UB:function(){return g},lO:function(){return d}});var r=t(8962),i=t(9853),o=t(265),a=t(1879);function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}var u=[];function s(e,n){return e.labelAll?{labelAll:!0,labels:e.labelAll,activeLabels:n}:{labelAll:!1,labels:e.labelAny,activeLabels:n}}function d(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u,t=l(n);return!t.shouldFilter||!!t.sizesSupported[e]}function f(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.labels,t=void 0===n?[]:n,r=e.labelAll,c=void 0!==r&&r,s=e.activeLabels,d=void 0===s?[]:s,f=arguments.length>1?arguments[1]:void 0,g=arguments.length>2?arguments[2]:void 0,p=arguments.length>3&&void 0!==arguments[3]?arguments[3]:u,v=l(p);f=(0,i.isPlainObject)(f)?(0,i.deepClone)(f):g?{banner:{sizes:g}}:{};var y=(0,o.Z)(f,"banner.sizes");v.shouldFilter&&y&&(f.banner.sizes=y.filter((function(e){return v.sizesSupported[e]})));var b=Object.keys(f),h={active:b.every((function(e){return"banner"!==e}))||b.some((function(e){return"banner"===e}))&&(0,o.Z)(f,"banner.sizes.length")>0&&(0===t.length||!c&&(t.some((function(e){return v.labels[e]}))||t.some((function(e){return(0,a.q9)(d,e)})))||c&&t.reduce((function(e,n){return e?v.labels[n]||(0,a.q9)(d,n):e}),!0)),mediaTypes:f};return y&&y.length!==f.banner.sizes.length&&(h.filterResults={before:y,after:f.banner.sizes}),h}function l(e){return e.reduce((function(e,n){if("object"===c(n)&&"string"==typeof n.mediaQuery&&n.mediaQuery.length>0){var t=!1;try{t=(0,i.getWindowTop)().matchMedia(n.mediaQuery).matches}catch(e){(0,i.logWarn)("Unfriendly iFrame blocks sizeConfig from being correctly evaluated"),t=matchMedia(n.mediaQuery).matches}t&&(Array.isArray(n.sizesSupported)&&(e.shouldFilter=!0),["labels","sizesSupported"].forEach((function(t){return(n[t]||[]).forEach((function(n){return e[t][n]=!0}))})))}else(0,i.logWarn)('sizeConfig rule missing required property "mediaQuery"');return e}),{labels:{},sizesSupported:{},shouldFilter:!1})}function g(e,n){return e.reduce((function(e,t){var r=f(s(t,n),t.mediaTypes,t.sizes),o=r.active,a=r.mediaTypes,c=r.filterResults;return o?(c&&(0,i.logInfo)('Size mapping filtered adUnit "'.concat(t.code,'" banner sizes from '),c.before,"to ",c.after),t.mediaTypes=a,t.bids=t.bids.reduce((function(e,r){var o=f(s(r,n),t.mediaTypes),a=o.active,c=o.mediaTypes,u=o.filterResults;return a?(u&&((0,i.logInfo)('Size mapping filtered adUnit "'.concat(t.code,'" bidder "').concat(r.bidder,'" banner sizes from '),u.before,"to ",u.after),r.mediaTypes=c),e.push(r)):(0,i.logInfo)('Size mapping deactivated adUnit "'.concat(t.code,'" bidder "').concat(r.bidder,'"')),e}),[]),e.push(t)):(0,i.logInfo)('Size mapping disabled adUnit "'.concat(t.code,'"')),e}),[])}r.vc.getConfig("sizeConfig",(function(e){return function(e){u=e}(e.sizeConfig)}))},5849:function(e,n,t){"use strict";t.d(n,{Ld:function(){return u},S6:function(){return d},df:function(){return l},eA:function(){return f}});var r=t(3494),i=t(9853),o=t(1879),a=t(9624),c=["core","prebid-module"],u=[];function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.gvlid,t=e.moduleName,r=e.bidderCode,s=e.moduleType,f=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=f.bidderSettings,g=void 0===l?a.S:l;function p(){if(null==r)return!1;var e=g.get(r,"storageAllowed");return null!=e&&!e}function v(e){return(0,o.q9)(c,s)?e({valid:!0}):p()?((0,i.logInfo)("bidderSettings denied access to device storage for bidder '".concat(r,"'")),e({valid:!1})):(d(n,r||t,{hasEnforcementHook:!1},(function(n){if(n&&n.hasEnforcementHook)a=e(n);else{var t={hasEnforcementHook:!1,valid:(0,i.hasDeviceAccess)()};a=e(t)}})),a);var a}var y=function(e,n,t,r,i,o){var a=function(o){if(o&&o.valid){var a=i&&""!==i?" ;domain=".concat(encodeURIComponent(i)):"",c=t&&""!==t?" ;expires=".concat(t):"",u=null!=r&&"none"==r.toLowerCase()?"; Secure":"";document.cookie="".concat(e,"=").concat(encodeURIComponent(n)).concat(c,"; path=/").concat(a).concat(r?"; SameSite=".concat(r):"").concat(u)}};if(!o||"function"!=typeof o)return v(a);u.push((function(){var e=v(a);o(e)}))},b=function(e,n){var t=function(n){if(n&&n.valid){var t=window.document.cookie.match("(^|;)\\s*"+e+"\\s*=\\s*([^;]*)\\s*(;|$)");return t?decodeURIComponent(t[2]):null}return null};if(!n||"function"!=typeof n)return v(t);u.push((function(){var e=v(t);n(e)}))},h=function(e){var n=function(e){if(e&&e.valid)try{return localStorage.setItem("prebid.cookieTest","1"),"1"===localStorage.getItem("prebid.cookieTest")}catch(e){}finally{try{localStorage.removeItem("prebid.cookieTest")}catch(e){}}return!1};if(!e||"function"!=typeof e)return v(n);u.push((function(){var t=v(n);e(t)}))},m=function(e){var n=function(e){return!(!e||!e.valid||!(0,i.checkCookieSupport)()&&(window.document.cookie="prebid.cookieTest",-1===window.document.cookie.indexOf("prebid.cookieTest")))};if(!e||"function"!=typeof e)return v(n);u.push((function(){var t=v(n);e(t)}))},E=function(e,n,t){var r=function(t){t&&t.valid&&T()&&window.localStorage.setItem(e,n)};if(!t||"function"!=typeof t)return v(r);u.push((function(){var e=v(r);t(e)}))},S=function(e,n){var t=function(n){return n&&n.valid&&T()?window.localStorage.getItem(e):null};if(!n||"function"!=typeof n)return v(t);u.push((function(){var e=v(t);n(e)}))},A=function(e,n){var t=function(n){n&&n.valid&&T()&&window.localStorage.removeItem(e)};if(!n||"function"!=typeof n)return v(t);u.push((function(){var e=v(t);n(e)}))},T=function(e){var n=function(e){if(e&&e.valid)try{return!!window.localStorage}catch(e){(0,i.logError)("Local storage api disabled")}return!1};if(!e||"function"!=typeof e)return v(n);u.push((function(){var t=v(n);e(t)}))},I=function(e,n){var t=function(n){if(n&&n.valid){var t=[];if((0,i.hasDeviceAccess)())for(var r=document.cookie.split(";");r.length;){var o=r.pop(),a=o.indexOf("=");a=a<0?o.length:a,decodeURIComponent(o.slice(0,a).replace(/^\s+/,"")).indexOf(e)>=0&&t.push(decodeURIComponent(o.slice(a+1)))}return t}};if(!n||"function"!=typeof n)return v(t);u.push((function(){var e=v(t);n(e)}))};return{setCookie:y,getCookie:b,localStorageIsEnabled:h,cookiesAreEnabled:m,setDataInLocalStorage:E,getDataFromLocalStorage:S,removeDataFromLocalStorage:A,hasLocalStorage:T,findSimilarCookies:I}}var d=(0,r.z3)("async",(function(e,n,t,r){r(t)}),"validateStorageEnforcement");function f(e){return s({moduleName:e,moduleType:"core"})}function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.gvlid,t=e.moduleName,r=e.bidderCode;if(arguments.length>1||arguments.length>0&&!(0,i.isPlainObject)(arguments[0]))throw new Error("Invalid invocation for getStorageManager");return s({gvlid:n,moduleName:t,bidderCode:r})}},9742:function(e,n,t){"use strict";t.d(n,{bP:function(){return C},ol:function(){return I},q0:function(){return w},u8:function(){return T}});var r=t(9853),i=t(265),o=t(8962),a=t(9017),c=t(4766),u=t(1269),s=t(8265),d=t(3494),f=t(9624),l=t(1879);function g(){return g=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},g.apply(this,arguments)}function p(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function v(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return y(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?y(e,n):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}var b=t(5644),h=[],m="targetingControls.allowTargetingKeys",E="targetingControls.addTargetingKeys",S='Only one of "'.concat(m,'" or "').concat(E,'" can be set'),A=Object.keys(b.TARGETING_KEYS).map((function(e){return b.TARGETING_KEYS[e]})),T={isBidNotExpired:function(e){return e.responseTimestamp+1e3*e.ttl-1e3>(0,r.timestamp)()},isUnusedBid:function(e){return e&&(e.status&&!(0,l.q9)([b.BID_STATUS.RENDERED],e.status)||!e.status)}},I=(0,d.z3)("sync",(function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!i){var a=[],c=o.vc.getConfig("sendBidsControl.dealPrioritization"),u=(0,r.groupBy)(e,"adUnitCode");return Object.keys(u).forEach((function(e){var i=[],o=(0,r.groupBy)(u[e],"bidderCode");Object.keys(o).forEach((function(e){return i.push(o[e].reduce(n))})),t>0?(i=c?i.sort(C(!0)):i.sort((function(e,n){return n.cpm-e.cpm})),a.push.apply(a,v(i.slice(0,t)))):a.push.apply(a,v(i))})),a}return e}));function C(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return function(n,t){return void 0!==n.adserverTargeting.hb_deal&&void 0===t.adserverTargeting.hb_deal?-1:void 0===n.adserverTargeting.hb_deal&&void 0!==t.adserverTargeting.hb_deal?1:e?t.cpm-n.cpm:t.adserverTargeting.hb_pb-n.adserverTargeting.hb_pb}}var w=function(e){var n={},t={};function c(e,n){return e.adserverTargeting&&n&&((0,r.isArray)(n)&&(0,l.q9)(n,e.adUnitCode)||"string"==typeof n&&e.adUnitCode===n)}function d(e,n){if(!0===o.vc.getConfig("targetingControls.alwaysIncludeDeals")){var t=A.concat(a.xc);return I(n,r.getHighestCpm).map((function(n){if(n.dealId&&c(n,e))return p({},n.adUnitCode,x(n,t.filter((function(e){return void 0!==n.adserverTargeting[e]}))))})).filter((function(e){return e}))}return[]}function y(e,n){var t=g({},b.TARGETING_KEYS,b.NATIVE_KEYS),i=Object.keys(t),o={};(0,r.logInfo)("allowTargetingKeys - allowed keys [ ".concat(n.map((function(e){return t[e]})).join(", ")," ]")),e.map((function(e){var r=Object.keys(e)[0],a=e[r].filter((function(e){var r=Object.keys(e)[0],a=0===i.filter((function(e){return 0===r.indexOf(t[e])})).length||(0,l.sE)(n,(function(e){var n=t[e];return 0===r.indexOf(n)}));return o[r]=!a,a}));e[r]=a}));var a=Object.keys(o).filter((function(e){return o[e]}));return(0,r.logInfo)("allowTargetingKeys - removed keys [ ".concat(a.join(", ")," ]")),e.filter((function(e){return e[Object.keys(e)[0]].length>0}))}function w(e,n){var t=(0,r.deepClone)(e);return Object.keys(t).map((function(e){return{adUnitCode:e,adserverTargeting:t[e]}})).sort(C()).reduce((function(e,i,o,a){var c,u=(c=i.adserverTargeting,Object.keys(c).reduce((function(e,n){return e+"".concat(n,"%3d").concat(encodeURIComponent(c[n]),"%26")}),""));o+1===a.length&&(u=u.slice(0,-3));var s=i.adUnitCode,d=u.length;return d<=n?(n-=d,(0,r.logInfo)("AdUnit '".concat(s,"' auction keys comprised of ").concat(d," characters. Deducted from running threshold; new limit is ").concat(n),t[s]),e[s]=t[s]):(0,r.logWarn)("The following keys for adUnitCode '".concat(s,"' exceeded the current limit of the 'auctionKeyMaxChars' setting.\nThe key-set size was ").concat(d,", the current allotted amount was ").concat(n,".\n"),t[s]),o+1===a.length&&0===Object.keys(e).length&&(0,r.logError)("No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars). Please review setup and consider adjusting."),e}),{})}function O(e){var n=e.map((function(e){return p({},Object.keys(e)[0],e[Object.keys(e)[0]].map((function(e){return p({},Object.keys(e)[0],e[Object.keys(e)[0]].join(","))})).reduce((function(e,n){return g(n,e)}),{}))})).reduce((function(e,n){var t=Object.keys(n)[0];return e[t]=g({},e[t],n[t]),e}),{});return n}function B(n){return"string"==typeof n?[n]:(0,r.isArray)(n)?n:e.getAdUnitCodes()||[]}function _(){var n=e.getBidsReceived();if(o.vc.getConfig("useBidCache")){var a=o.vc.getConfig("bidCacheFilterFunction");"function"==typeof a&&(n=n.filter((function(e){return t[e.adUnitCode]===e.auctionId||!!a(e)})))}else n=n.filter((function(e){return t[e.adUnitCode]===e.auctionId}));return n=n.filter((function(e){return(0,i.Z)(e,"video.context")!==s.Oh})).filter((function(e){return"banner"!==e.mediaType||(0,u.lO)([e.width,e.height])})).filter(T.isUnusedBid).filter(T.isBidNotExpired),I(n,r.getOldestHighestCpmBid)}function U(e,t){var r=n.getWinningBids(e,t),i=R();return r=r.map((function(e){return p({},e.adUnitCode,Object.keys(e.adserverTargeting).filter((function(n){return void 0===e.sendStandardTargeting||e.sendStandardTargeting||-1===i.indexOf(n)})).reduce((function(n,t){var r=[e.adserverTargeting[t]],i=p({},t.substring(0,20),r);if(t===b.TARGETING_KEYS.DEAL){var o=p({},"".concat(t,"_").concat(e.bidderCode).substring(0,20),r);return[].concat(v(n),[i,o])}return[].concat(v(n),[i])}),[]))})),r}function R(){return e.getStandardBidderAdServerTargeting().map((function(e){return e.key})).concat(A).filter(r.uniques)}function D(e,n,t,i){return Object.keys(n.adserverTargeting).filter(k()).forEach((function(t){e.length&&e.filter(function(e){return function(t){return t.adUnitCode===n.adUnitCode&&t.adserverTargeting[e]}}(t)).forEach(function(e){return function(t){(0,r.isArray)(t.adserverTargeting[e])||(t.adserverTargeting[e]=[t.adserverTargeting[e]]),t.adserverTargeting[e]=t.adserverTargeting[e].concat(n.adserverTargeting[e]).filter(r.uniques),delete n.adserverTargeting[e]}}(t))})),e.push(n),e}function k(){var e=R().concat(a.xc);return function(n){return-1===e.indexOf(n)}}function j(e){return p({},e.adUnitCode,Object.keys(e.adserverTargeting).filter(k()).map((function(n){return p({},n.substring(0,20),[e.adserverTargeting[n]])})))}function N(e,n){return n.filter((function(n){return(0,l.q9)(e,n.adUnitCode)})).map((function(e){return g({},e)})).reduce(D,[]).map(j).filter((function(e){return e}))}function P(e,n){var t=A.concat(a.xc),i=o.vc.getConfig("sendBidsControl.bidLimit"),u=I(n,r.getHighestCpm,i),s=o.vc.getConfig("targetingControls.allowSendAllBidsTargetingKeys"),d=s?s.map((function(e){return b.TARGETING_KEYS[e]})):t;return u.map((function(n){if(c(n,e))return p({},n.adUnitCode,x(n,t.filter((function(e){return void 0!==n.adserverTargeting[e]&&-1!==d.indexOf(e)}))))})).filter((function(e){return e}))}function x(e,n){return n.map((function(n){return p({},"".concat(n,"_").concat(e.bidderCode).substring(0,20),[e.adserverTargeting[n]])}))}function q(n){function t(e){return(0,i.Z)(e,b.JSON_MAPPING.ADSERVER_TARGETING)}return e.getAdUnits().filter((function(e){return(0,l.q9)(n,e.code)&&t(e)})).map((function(e){return p({},e.code,function(e){var n=t(e);return Object.keys(n).map((function(e){return(0,r.isStr)(n[e])&&(n[e]=n[e].split(",").map((function(e){return e.trim()}))),(0,r.isArray)(n[e])||(n[e]=[n[e]]),p({},e,n[e])}))}(e))}))}return n.setLatestAuctionForAdUnit=function(e,n){t[e]=n},n.resetPresetTargeting=function(n,t){if((0,r.isGptPubadsDefined)()){var i=B(n),o=e.getAdUnits().filter((function(e){return(0,l.q9)(i,e.code)})),a=h.reduce((function(e,n){return e[n]=null,e}),{});window.googletag.pubads().getSlots().forEach((function(e){var n=(0,r.isFn)(t)&&t(e);o.forEach((function(t){(t.code===e.getAdUnitPath()||t.code===e.getSlotElementId()||(0,r.isFn)(n)&&n(t.code))&&e.updateTargetingFromMap(a)}))}))}},n.resetPresetTargetingAST=function(e){B(e).forEach((function(e){var n=window.apntag.getTag(e);if(n&&n.keywords){var t=Object.keys(n.keywords),r={};t.forEach((function(e){(0,l.q9)(h,e.toLowerCase())||(r[e]=n.keywords[e])})),window.apntag.modifyTag(e,{keywords:r})}}))},n.getAllTargeting=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_(),t=B(e),i=U(t,n).concat(N(t,n)).concat(o.vc.getConfig("enableSendAllBids")?P(t,n):d(t,n)).concat(q(t));i.map((function(e){Object.keys(e).map((function(n){e[n].map((function(e){-1===h.indexOf(Object.keys(e)[0])&&(h=Object.keys(e).concat(h))}))}))}));var a=Object.keys(g({},b.DEFAULT_TARGETING_KEYS,b.NATIVE_KEYS)),c=o.vc.getConfig(m),u=o.vc.getConfig(E);if(null!=u&&null!=c)throw new Error(S);c=null!=u?a.concat(u):c||a,Array.isArray(c)&&c.length>0&&(i=y(i,c)),i=O(i);var s=o.vc.getConfig("targetingControls.auctionKeyMaxChars");return s&&((0,r.logInfo)("Detected 'targetingControls.auctionKeyMaxChars' was active for this auction; set with a limit of ".concat(s," characters. Running checks on auction keys...")),i=w(i,s)),t.forEach((function(e){i[e]||(i[e]={})})),i},o.vc.getConfig("targetingControls",(function(e){null!=(0,i.Z)(e,m)&&null!=(0,i.Z)(e,E)&&(0,r.logError)(S)})),n.setTargetingForGPT=function(e,n){window.googletag.pubads().getSlots().forEach((function(t){Object.keys(e).filter(n?n(t):(0,r.isAdUnitCodeMatchingSlot)(t)).forEach((function(n){Object.keys(e[n]).forEach((function(t){var r=e[n][t];"string"==typeof r&&-1!==r.indexOf(",")&&(r=r.split(",")),e[n][t]=r})),(0,r.logMessage)("Attempting to set targeting-map for slot: ".concat(t.getSlotElementId()," with targeting-map:"),e[n]),t.updateTargetingFromMap(e[n])}))}))},n.getWinningBids=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_(),t=B(e);return n.filter((function(e){return(0,l.q9)(t,e.adUnitCode)})).filter((function(e){return!0===f.S.get(e.bidderCode,"allowZeroCpmBids")?e.cpm>=0:e.cpm>0})).map((function(e){return e.adUnitCode})).filter(r.uniques).map((function(e){return n.filter((function(n){return n.adUnitCode===e?n:null})).reduce(r.getHighestCpm)}))},n.setTargetingForAst=function(e){var t=n.getAllTargeting(e);try{n.resetPresetTargetingAST(e)}catch(e){(0,r.logError)("unable to reset targeting for AST"+e)}Object.keys(t).forEach((function(e){return Object.keys(t[e]).forEach((function(n){if((0,r.logMessage)("Attempting to set targeting for targetId: ".concat(e," key: ").concat(n," value: ").concat(t[e][n])),(0,r.isStr)(t[e][n])||(0,r.isArray)(t[e][n])){var i={};n.search(/pt[0-9]/)<0?i[n.toUpperCase()]=t[e][n]:i[n]=t[e][n],window.apntag.setKeywords(e,i,{overrideKeyValue:!0})}}))}))},n.isApntagDefined=function(){if(window.apntag&&(0,r.isFn)(window.apntag.setKeywords))return!0},n}(c.K)},7112:function(e,n,t){"use strict";t.d(n,{k_:function(){return l}});var r=t(9853),i=t(8962),o=t(1879),a=t(5849);function c(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,i,o=[],a=!0,c=!1;try{for(t=t.call(e);!(a=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);a=!0);}catch(e){c=!0,i=e}finally{try{a||null==t.return||t.return()}finally{if(c)throw i}}return o}}(e,n)||function(e,n){if(e){if("string"==typeof e)return u(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?u(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function s(){return s=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},s.apply(this,arguments)}i.vc.setDefaults({userSync:(0,r.deepClone)({syncEnabled:!0,filterSettings:{image:{bidders:"*",filter:"include"}},syncsPerBidder:5,syncDelay:3e3,auctionDelay:0})});var d=(0,a.eA)("usersync"),f=!(0,r.isSafariBrowser)()&&d.cookiesAreEnabled(),l=function(e){var n={},t={image:[],iframe:[]},a=new Set,u={},d={image:!0,iframe:!1},f=e.config;function l(){if(f.syncEnabled&&e.browserSupportsCookies){try{d.iframe&&g(t.iframe,(function(e){var n=c(e,2),i=n[0],o=n[1];(0,r.logMessage)("Invoking iframe user sync for bidder: ".concat(i)),(0,r.insertUserSyncIframe)(o),function(e,n){e.image=e.image.filter((function(e){return e[0]!==n}))}(t,i)})),d.image&&g(t.image,(function(e){var n=c(e,2),t=n[0],i=n[1];(0,r.logMessage)("Invoking image pixel user sync for bidder: ".concat(t)),(0,r.triggerPixel)(i)}))}catch(e){return(0,r.logError)("Error firing user syncs",e)}t={image:[],iframe:[]}}}function g(e,n){(0,r.shuffle)(e).forEach((function(e){n(e),a.add(e[0])}))}return i.vc.getConfig("userSync",(function(e){if(e.userSync){var n=e.userSync.filterSettings;(0,r.isPlainObject)(n)&&(n.image||n.all||(e.userSync.filterSettings.image={bidders:"*",filter:"include"}))}f=s(f,e.userSync)})),n.registerSync=function(e,i,o){return a.has(i)?(0,r.logMessage)('already fired syncs for "'.concat(i,'", ignoring registerSync call')):f.syncEnabled&&(0,r.isArray)(t[e])?i?0!==f.syncsPerBidder&&Number(u[i])>=f.syncsPerBidder?(0,r.logWarn)('Number of user syncs exceeded for "'.concat(i,'"')):n.canBidderRegisterSync(e,i)?(t[e].push([i,o]),void(u=function(e,n){return e[n]?e[n]+=1:e[n]=1,e}(u,i))):(0,r.logWarn)('Bidder "'.concat(i,'" not permitted to register their "').concat(e,'" userSync pixels.')):(0,r.logWarn)("Bidder is required for registering sync"):(0,r.logWarn)('User sync type "'.concat(e,'" not supported'))},n.syncUsers=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(e)return setTimeout(l,Number(e));l()},n.triggerUserSyncs=function(){f.enableOverride&&n.syncUsers()},n.canBidderRegisterSync=function(e,n){return!f.filterSettings||!function(e,n){var t=f.filterSettings;if(function(e,n){if(e.all&&e[n])return(0,r.logWarn)('Detected presence of the "filterSettings.all" and "filterSettings.'.concat(n,'" in userSync config. You cannot mix "all" with "iframe/image" configs; they are mutually exclusive.')),!1;var t=e.all?e.all:e[n],i=e.all?"all":n;if(!t)return!1;var o=t.filter,a=t.bidders;return o&&"include"!==o&&"exclude"!==o?((0,r.logWarn)('UserSync "filterSettings.'.concat(i,".filter\" setting '").concat(o,"' is not a valid option; use either 'include' or 'exclude'.")),!1):!!("*"===a||Array.isArray(a)&&a.length>0&&a.every((function(e){return(0,r.isStr)(e)&&"*"!==e})))||((0,r.logWarn)('Detected an invalid setup in userSync "filterSettings.'.concat(i,".bidders\"; use either '*' (to represent all bidders) or an array of bidders.")),!1)}(t,e)){d[e]=!0;var i=t.all?t.all:t[e],a="*"===i.bidders?[n]:i.bidders,c={include:function(e,n){return!(0,o.q9)(e,n)},exclude:function(e,n){return(0,o.q9)(e,n)}};return c[i.filter||"include"](a,n)}return!d[e]}(e,n)},n}({config:i.vc.getConfig("userSync"),browserSupportsCookies:f})},9853:function(e,n,t){"use strict";t.r(n),t.d(n,{_each:function(){return de},_map:function(){return le},adUnitsFilter:function(){return xe},bind:function(){return _},buildUrl:function(){return Sn},callBurl:function(){return be},checkCookieSupport:function(){return Ve},chunk:function(){return pn},cleanObj:function(){return un},compareOn:function(){return bn},contains:function(){return fe},convertCamelToUnderscore:function(){return cn},convertTypes:function(){return fn},createInvisibleIframe:function(){return $},createTrackPixelHtml:function(){return Ee},createTrackPixelIframeHtml:function(){return Se},cyrb53Hash:function(){return In},debugTurnedOn:function(){return X},deepAccess:function(){return c.Z},deepClone:function(){return qe},deepEqual:function(){return An},deepSetValue:function(){return u.Z},delayExecution:function(){return He},fill:function(){return gn},flatten:function(){return Ie},formatQS:function(){return mn},generateUUID:function(){return D},getAdUnitSizes:function(){return x},getBidIdParameter:function(){return k},getBidRequest:function(){return Ce},getBidderCodes:function(){return _e},getDNT:function(){return $e},getDefinedParams:function(){return Ye},getGptSlotInfoForAdUnitCode:function(){return rn},getHighestCpm:function(){return De},getKeyByValue:function(){return Be},getKeys:function(){return we},getLatestHighestCpmBid:function(){return je},getMaxValueFromArray:function(){return yn},getMinValueFromArray:function(){return vn},getOldestHighestCpmBid:function(){return ke},getOrigin:function(){return Xe},getParameterByName:function(){return ee},getPerformanceNow:function(){return Le},getPrebidInternal:function(){return w},getUniqueIdentifierStr:function(){return R},getUserConfiguredParams:function(){return Qe},getValue:function(){return Oe},getValueString:function(){return Ae},getWindowFromDocument:function(){return Cn},getWindowLocation:function(){return L},getWindowSelf:function(){return z},getWindowTop:function(){return F},groupBy:function(){return Ze},hasConsoleLogger:function(){return Q},hasDeviceAccess:function(){return Ke},hasOwn:function(){return ge},inIframe:function(){return Me},insertElement:function(){return pe},insertHtmlIntoIframe:function(){return he},insertUserSyncIframe:function(){return me},internal:function(){return I},isA:function(){return ne},isAdUnitCodeMatchingSlot:function(){return nn},isApnGetTagDefined:function(){return Re},isArray:function(){return ie},isArrayOfNums:function(){return ln},isBoolean:function(){return ce},isEmpty:function(){return ue},isEmptyStr:function(){return se},isFn:function(){return te},isGptPubadsDefined:function(){return Ue},isInteger:function(){return an},isNumber:function(){return oe},isPlainObject:function(){return ae},isSafariBrowser:function(){return Ge},isSlotMatchingAdUnitCode:function(){return tn},isStr:function(){return re},isValidMediaTypes:function(){return Je},logError:function(){return Z},logInfo:function(){return V},logMessage:function(){return K},logWarn:function(){return H},mergeDeep:function(){return Tn},parseGPTSingleSizeArray:function(){return M},parseGPTSingleSizeArrayToRtbSize:function(){return G},parseQS:function(){return hn},parseQueryStringParameters:function(){return N},parseSizesInput:function(){return q},parseUrl:function(){return En},pick:function(){return sn},prefixLog:function(){return Y},replaceAuctionPrice:function(){return We},replaceClickThrough:function(){return Fe},shuffle:function(){return Pe},timestamp:function(){return ze},transformAdServerTargetingObj:function(){return P},transformBidderParamKeywords:function(){return dn},triggerPixel:function(){return ye},tryAppendQueryString:function(){return j},uniques:function(){return Te},unsupportedBidderMessage:function(){return on},waitForElementToLoad:function(){return ve}});var r=t(8962),i=t(7079),o=t.n(i),a=t(1879),c=t(265),u=t(4806);function s(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,n){if(e){if("string"==typeof e)return f(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?f(e,n):void 0}}function f(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function g(){return g=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},g.apply(this,arguments)}function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}var v,y=t(5644),b=Object.prototype.toString,h=Boolean(window.console),m=Boolean(h&&window.console.log),E=Boolean(h&&window.console.info),S=Boolean(h&&window.console.warn),A=Boolean(h&&window.console.error),T=function(){return null==v&&(v=t(2319)),v.emit.apply(v,arguments)},I={checkCookieSupport:Ve,createTrackPixelIframeHtml:Se,getWindowSelf:z,getWindowTop:F,getWindowLocation:L,insertUserSyncIframe:me,insertElement:pe,isFn:te,triggerPixel:ye,logError:Z,logWarn:H,logMessage:K,logInfo:V,parseQS:hn,formatQS:mn,deepEqual:An},C={};function w(){return C}var O,B={},_=function(e,n){return n}.bind(null,1,B)()===B?Function.prototype.bind:function(e){var n=this,t=Array.prototype.slice.call(arguments,1);return function(){return n.apply(e,t.concat(Array.prototype.slice.call(arguments)))}},U=(O=0,function(){return++O});function R(){return U()+Math.random().toString(16).substr(2)}function D(e){return e?(e^(window&&window.crypto&&window.crypto.getRandomValues?crypto.getRandomValues(new Uint8Array(1))[0]%16:16*Math.random())>>e/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,D)}function k(e,n){return n&&n[e]?n[e]:""}function j(e,n,t){return t?e+n+"="+encodeURIComponent(t)+"&":e}function N(e){var n="";for(var t in e)e.hasOwnProperty(t)&&(n+=t+"="+encodeURIComponent(e[t])+"&");return n.replace(/&$/,"")}function P(e){return e&&Object.getOwnPropertyNames(e).length>0?we(e).map((function(n){return"".concat(n,"=").concat(encodeURIComponent(Oe(e,n)))})).join("&"):""}function x(e){if(e){var n=[];if(e.mediaTypes&&e.mediaTypes.banner&&Array.isArray(e.mediaTypes.banner.sizes)){var t=e.mediaTypes.banner.sizes;Array.isArray(t[0])?n=t:n.push(t)}else Array.isArray(e.sizes)&&(Array.isArray(e.sizes[0])?n=e.sizes:n.push(e.sizes));return n}}function q(e){var n=[];if("string"==typeof e){var t=e.split(","),r=/^(\d)+x(\d)+$/i;if(t)for(var i in t)ge(t,i)&&t[i].match(r)&&n.push(t[i])}else if("object"===p(e)){var o=e.length;if(o>0)if(2===o&&"number"==typeof e[0]&&"number"==typeof e[1])n.push(M(e));else for(var a=0;a<o;a++)n.push(M(e[a]))}return n}function M(e){if(W(e))return e[0]+"x"+e[1]}function G(e){if(W(e))return{w:e[0],h:e[1]}}function W(e){return ie(e)&&2===e.length&&!isNaN(e[0])&&!isNaN(e[1])}function F(){return window.top}function z(){return window.self}function L(){return window.location}function K(){X()&&m&&console.log.apply(console,J(arguments,"MESSAGE:"))}function V(){X()&&E&&console.info.apply(console,J(arguments,"INFO:"))}function H(){X()&&S&&console.warn.apply(console,J(arguments,"WARNING:")),T(y.EVENTS.AUCTION_DEBUG,{type:"WARNING",arguments:arguments})}function Z(){X()&&A&&console.error.apply(console,J(arguments,"ERROR:")),T(y.EVENTS.AUCTION_DEBUG,{type:"ERROR",arguments:arguments})}function Y(e){function n(n){return function(){for(var t=arguments.length,r=new Array(t),i=0;i<t;i++)r[i]=arguments[i];n.apply(void 0,[e].concat(r))}}return{logError:n(Z),logWarn:n(H),logMessage:n(K),logInfo:n(V)}}function J(e,n){e=[].slice.call(e);var t=r.vc.getCurrentBidder();return n&&e.unshift(n),t&&e.unshift(i("#aaa")),e.unshift(i("#3b88c3")),e.unshift("%cPrebid"+(t?"%c".concat(t):"")),e;function i(e){return"display: inline-block; color: #fff; background: ".concat(e,"; padding: 1px 4px; border-radius: 3px;")}}function Q(){return m}function X(){return!!r.vc.getConfig("debug")}function $(){var e=document.createElement("iframe");return e.id=R(),e.height=0,e.width=0,e.border="0px",e.hspace="0",e.vspace="0",e.marginWidth="0",e.marginHeight="0",e.style.border="0",e.scrolling="no",e.frameBorder="0",e.src="about:blank",e.style.display="none",e}function ee(e){return hn(L().search)[e]||""}function ne(e,n){return b.call(e)==="[object "+n+"]"}function te(e){return ne(e,"Function")}function re(e){return ne(e,"String")}function ie(e){return ne(e,"Array")}function oe(e){return ne(e,"Number")}function ae(e){return ne(e,"Object")}function ce(e){return ne(e,"Boolean")}function ue(e){if(!e)return!0;if(ie(e)||re(e))return!(e.length>0);for(var n in e)if(hasOwnProperty.call(e,n))return!1;return!0}function se(e){return re(e)&&(!e||0===e.length)}function de(e,n){if(!ue(e)){if(te(e.forEach))return e.forEach(n,this);var t=0,r=e.length;if(r>0)for(;t<r;t++)n(e[t],t,e);else for(t in e)hasOwnProperty.call(e,t)&&n.call(this,e[t],t)}}function fe(e,n){if(ue(e))return!1;if(te(e.indexOf))return-1!==e.indexOf(n);for(var t=e.length;t--;)if(e[t]===n)return!0;return!1}function le(e,n){if(ue(e))return[];if(te(e.map))return e.map(n);var t=[];return de(e,(function(r,i){t.push(n(r,i,e))})),t}function ge(e,n){return e.hasOwnProperty?e.hasOwnProperty(n):void 0!==e[n]&&e.constructor.prototype[n]!==e[n]}function pe(e,n,t,r){var i;n=n||document,i=t?n.getElementsByTagName(t):n.getElementsByTagName("head");try{if((i=i.length?i:n.getElementsByTagName("body")).length){i=i[0];var o=r?null:i.firstChild;return i.insertBefore(e,o)}}catch(e){}}function ve(e,n){var t=null;return new Promise((function(r){var i=function n(){e.removeEventListener("load",n),e.removeEventListener("error",n),null!=t&&window.clearTimeout(t),r()};e.addEventListener("load",i),e.addEventListener("error",i),null!=n&&(t=window.setTimeout(i,n))}))}function ye(e,n,t){var r=new Image;n&&I.isFn(n)&&ve(r,t).then(n),r.src=e}function be(e){var n=e.source,t=e.burl;n===y.S2S.SRC&&t&&I.triggerPixel(t)}function he(e){if(e){var n=document.createElement("iframe");n.id=R(),n.width=0,n.height=0,n.hspace="0",n.vspace="0",n.marginWidth="0",n.marginHeight="0",n.style.display="none",n.style.height="0px",n.style.width="0px",n.scrolling="no",n.frameBorder="0",n.allowtransparency="true",I.insertElement(n,document,"body"),n.contentWindow.document.open(),n.contentWindow.document.write(e),n.contentWindow.document.close()}}function me(e,n,t){var r=I.createTrackPixelIframeHtml(e,!1,"allow-scripts allow-same-origin"),i=document.createElement("div");i.innerHTML=r;var o=i.firstChild;n&&I.isFn(n)&&ve(o,t).then(n),I.insertElement(o,document,"html",!0)}function Ee(e){return e?'<div style="position:absolute;left:0px;top:0px;visibility:hidden;">'+'<img src="'+encodeURI(e)+'"></div>':""}function Se(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e?(n&&(e=encodeURI(e)),t&&(t='sandbox="'.concat(t,'"')),"<iframe ".concat(t,' id="').concat(R(),'"\n frameborder="0"\n allowtransparency="true"\n marginheight="0" marginwidth="0"\n width="0" hspace="0" vspace="0" height="0"\n style="height:0px;width:0px;display:none;"\n scrolling="no"\n src="').concat(e,'">\n </iframe>')):""}function Ae(e,n,t){return null==n?t:re(n)?n:oe(n)?n.toString():void I.logWarn("Unsuported type for param: "+e+" required type: String")}function Te(e,n,t){return t.indexOf(e)===n}function Ie(e,n){return e.concat(n)}function Ce(e,n){var t;if(e)return n.some((function(n){var r=(0,a.sE)(n.bids,(function(n){return["bidId","adId","bid_id"].some((function(t){return n[t]===e}))}));return r&&(t=r),r})),t}function we(e){return Object.keys(e)}function Oe(e,n){return e[n]}function Be(e,n){for(var t in e)if(e.hasOwnProperty(t)&&e[t]===n)return t}function _e(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:pbjs.adUnits;return e.map((function(e){return e.bids.map((function(e){return e.bidder})).reduce(Ie,[])})).reduce(Ie,[]).filter(Te)}function Ue(){if(window.googletag&&te(window.googletag.pubads)&&te(window.googletag.pubads().getSlots))return!0}function Re(){if(window.apntag&&te(window.apntag.getTag))return!0}var De=Ne("timeToRespond",(function(e,n){return e>n})),ke=Ne("responseTimestamp",(function(e,n){return e>n})),je=Ne("responseTimestamp",(function(e,n){return e<n}));function Ne(e,n){return function(t,r){return t.cpm===r.cpm?n(t[e],r[e])?r:t:t.cpm<r.cpm?r:t}}function Pe(e){for(var n=e.length;n>0;){var t=Math.floor(Math.random()*n),r=e[--n];e[n]=e[t],e[t]=r}return e}function xe(e,n){return(0,a.q9)(e,n&&n.adUnitCode)}function qe(e){return o()(e)}function Me(){try{return I.getWindowSelf()!==I.getWindowTop()}catch(e){return!0}}function Ge(){return/^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent)}function We(e,n){if(e)return e.replace(/\$\{AUCTION_PRICE\}/g,n)}function Fe(e,n){if(e&&n&&"string"==typeof n)return e.replace(/\${CLICKTHROUGH}/g,n)}function ze(){return(new Date).getTime()}function Le(){return window.performance&&window.performance.now&&window.performance.now()||0}function Ke(){return!1!==r.vc.getConfig("deviceAccess")}function Ve(){if(window.navigator.cookieEnabled||document.cookie.length)return!0}function He(e,n){if(n<1)throw new Error("numRequiredCalls must be a positive number. Got ".concat(n));var t=0;return function(){++t===n&&e.apply(this,arguments)}}function Ze(e,n){return e.reduce((function(e,t){return(e[t[n]]=e[t[n]]||[]).push(t),e}),{})}function Ye(e,n){return n.filter((function(n){return e[n]})).reduce((function(n,t){return g(n,l({},t,e[t]))}),{})}function Je(e){var n=["banner","native","video"];return!!Object.keys(e).every((function(e){return(0,a.q9)(n,e)}))&&(!e.video||!e.video.context||(0,a.q9)(["instream","outstream","adpod"],e.video.context))}function Qe(e,n,t){return e.filter((function(e){return e.code===n})).map((function(e){return e.bids})).reduce(Ie,[]).filter((function(e){return e.bidder===t})).map((function(e){return e.params||{}}))}function Xe(){return window.location.origin?window.location.origin:window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:"")}function $e(){return"1"===navigator.doNotTrack||"1"===window.doNotTrack||"1"===navigator.msDoNotTrack||"yes"===navigator.doNotTrack}var en=function(e,n){return e.getAdUnitPath()===n||e.getSlotElementId()===n};function nn(e){return function(n){return en(e,n)}}function tn(e){return function(n){return en(n,e)}}function rn(e){var n;return Ue()&&(n=(0,a.sE)(window.googletag.pubads().getSlots(),tn(e))),n?{gptSlot:n.getAdUnitPath(),divId:n.getSlotElementId()}:{}}function on(e,n){var t=Object.keys(e.mediaTypes||{banner:"banner"}).join(", ");return"\n ".concat(e.code," is a ").concat(t," ad unit\n containing bidders that don't support ").concat(t,": ").concat(n,".\n This bidder won't fetch demand.\n ")}function an(e){return Number.isInteger?Number.isInteger(e):"number"==typeof e&&isFinite(e)&&Math.floor(e)===e}function cn(e){return e.replace(/(?:^|\.?)([A-Z])/g,(function(e,n){return"_"+n.toLowerCase()})).replace(/^_/,"")}function un(e){return Object.keys(e).reduce((function(n,t){return void 0!==e[t]&&(n[t]=e[t]),n}),{})}function sn(e,n){return"object"!==p(e)?{}:n.reduce((function(t,r,i){if("function"==typeof r)return t;var o=r,a=r.match(/^(.+?)\sas\s(.+?)$/i);a&&(r=a[1],o=a[2]);var c=e[r];return"function"==typeof n[i+1]&&(c=n[i+1](c,t)),void 0!==c&&(t[o]=c),t}),{})}function dn(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"keywords",t=[];return de(e,(function(e,r){if(ie(e)){var i=[];de(e,(function(e){((e=Ae(n+"."+r,e))||""===e)&&i.push(e)})),e=i}else{if(!re(e=Ae(n+"."+r,e)))return;e=[e]}t.push({key:r,value:e})})),t}function fn(e,n){return Object.keys(e).forEach((function(t){var r,i;n[t]&&(te(e[t])?n[t]=e[t](n[t]):n[t]=(r=e[t],i=n[t],"string"===r?i&&i.toString():"number"===r?Number(i):i),isNaN(n[t])&&delete n.key)})),n}function ln(e,n){return ie(e)&&(!n||e.length===n)&&e.every((function(e){return an(e)}))}function gn(e,n){for(var t=[],r=0;r<n;r++){var i=ae(e)?qe(e):e;t.push(i)}return t}function pn(e,n){for(var t=[],r=0;r<Math.ceil(e.length/n);r++){var i=r*n,o=i+n;t.push(e.slice(i,o))}return t}function vn(e){return Math.min.apply(Math,s(e))}function yn(e){return Math.max.apply(Math,s(e))}function bn(e){return function(n,t){return n[e]<t[e]?1:n[e]>t[e]?-1:0}}function hn(e){return e?e.replace(/^\?/,"").split("&").reduce((function(e,n){var t,r,i=(t=n.split("="),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,i,o=[],a=!0,c=!1;try{for(t=t.call(e);!(a=(r=t.next()).done)&&(o.push(r.value),!n||o.length!==n);a=!0);}catch(e){c=!0,i=e}finally{try{a||null==t.return||t.return()}finally{if(c)throw i}}return o}}(t,r)||d(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=i[0],a=i[1];return/\[\]$/.test(o)?(e[o=o.replace("[]","")]=e[o]||[],e[o].push(a)):e[o]=a||"",e}),{}):{}}function mn(e){return Object.keys(e).map((function(n){return Array.isArray(e[n])?e[n].map((function(e){return"".concat(n,"[]=").concat(e)})).join("&"):"".concat(n,"=").concat(e[n])})).join("&")}function En(e,n){var t=document.createElement("a");n&&"noDecodeWholeURL"in n&&n.noDecodeWholeURL?t.href=e:t.href=decodeURIComponent(e);var r=n&&"decodeSearchAsString"in n&&n.decodeSearchAsString;return{href:t.href,protocol:(t.protocol||"").replace(/:$/,""),hostname:t.hostname,port:+t.port,pathname:t.pathname.replace(/^(?!\/)/,"/"),search:r?t.search:I.parseQS(t.search||""),hash:(t.hash||"").replace(/^#/,""),host:t.host||window.location.host}}function Sn(e){return(e.protocol||"http")+"://"+(e.host||e.hostname+(e.port?":".concat(e.port):""))+(e.pathname||"")+(e.search?"?".concat(I.formatQS(e.search||"")):"")+(e.hash?"#".concat(e.hash):"")}function An(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=t.checkTypes,i=void 0!==r&&r;if(e===n)return!0;if("object"!==p(e)||null===e||"object"!==p(n)||null===n||i&&e.constructor!==n.constructor)return!1;if(Object.keys(e).length!==Object.keys(n).length)return!1;for(var o in e){if(!n.hasOwnProperty(o))return!1;if(!An(e[o],n[o],{checkTypes:i}))return!1}return!0}function Tn(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),r=1;r<n;r++)t[r-1]=arguments[r];if(!t.length)return e;var i=t.shift();if(ae(e)&&ae(i)){var o=function(n){ae(i[n])?(e[n]||g(e,l({},n,{})),Tn(e[n],i[n])):ie(i[n])?e[n]?ie(e[n])&&i[n].forEach((function(t){for(var r=1,i=0;i<e[n].length;i++)if(An(e[n][i],t)){r=0;break}r&&e[n].push(t)})):g(e,l({},n,s(i[n]))):g(e,l({},n,i[n]))};for(var a in i)o(a)}return Tn.apply(void 0,[e].concat(t))}function In(e){for(var n,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=function(e,n){if(te(Math.imul))return Math.imul(e,n);var t=(4194303&e)*(n|=0);return 4290772992&e&&(t+=(4290772992&e)*n|0),0|t},i=3735928559^t,o=1103547991^t,a=0;a<e.length;a++)i=r(i^(n=e.charCodeAt(a)),2654435761),o=r(o^n,1597334677);return i=r(i^i>>>16,2246822507)^r(o^o>>>13,3266489909),(4294967296*(2097151&(o=r(o^o>>>16,2246822507)^r(i^i>>>13,3266489909)))+(i>>>0)).toString()}function Cn(e){return e?e.defaultView:null}},1929:function(e,n,t){"use strict";t.d(n,{Dn:function(){return d},LD:function(){return s},gZ:function(){return u},hD:function(){return f}});var r=t(265),i=t(9853),o=t(8962),a=t(3494),c=t(4766),u="outstream",s="instream";function d(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.index,i=void 0===t?c.K.index:t,o=(0,r.Z)(i.getMediaTypes(e),"video"),a=o&&(0,r.Z)(o,"context"),u=i.getAdUnit(e);return f(e,u,o,a)}var f=(0,a.z3)("sync",(function(e,n,t,r){return t&&r!==u?o.vc.getConfig("cache.url")||!e.vastXml||e.vastUrl?!(!e.vastUrl&&!e.vastXml):((0,i.logError)('\n This bid contains only vastXml and will not work when a prebid cache url is not specified.\n Try enabling prebid cache with pbjs.setConfig({ cache: {url: "..."} });\n '),!1):r!==u||!!(e.renderer||n&&n.renderer||t.renderer)}),"checkVideoBidSetup")},905:function(e,n,t){"use strict";t.d(n,{h:function(){return u},z:function(){return s}});var r=t(5755),i=t(8962),o=t(4766);function a(e,n){var t=n?"<![CDATA[".concat(n,"]]]]><![CDATA[>"):"";return'<VAST version="3.0">\n <Ad>\n <Wrapper>\n <AdSystem>prebid.org wrapper</AdSystem>\n <VASTAdTagURI><![CDATA['.concat(e,"]]]]><![CDATA[></VASTAdTagURI>\n <Impression>").concat(t,"</Impression>\n <Creatives></Creatives>\n </Wrapper>\n </Ad>\n </VAST>")}function c(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=n.index,r=void 0===t?o.K.index:t,c=e.vastXml?e.vastXml:a(e.vastUrl,e.vastImpUrl),u=r.getAuction(e),s={type:"xml",value:c,ttlseconds:Number(e.ttl)};return i.vc.getConfig("cache.vasttrack")&&(s.bidder=e.bidder,s.bidid=e.requestId,s.aid=e.auctionId),null!=u&&(s.timestamp=u.getAuctionStart()),"string"==typeof e.customCacheKey&&""!==e.customCacheKey&&(s.key=e.customCacheKey),s}function u(e,n){var t={puts:e.map(c)};(0,r.h)(i.vc.getConfig("cache.url"),function(e){return{success:function(n){var t;try{t=JSON.parse(n).responses}catch(n){return void e(n,[])}t?e(null,t):e(new Error("The cache server didn't respond with a responses property."),[])},error:function(n,t){e(new Error("Error storing video ad in the cache: ".concat(n,": ").concat(JSON.stringify(t))),[])}}}(n),JSON.stringify(t),{contentType:"text/plain",withCredentials:!0})}function s(e){return"".concat(i.vc.getConfig("cache.url"),"?uuid=").concat(e)}},265:function(e,n,t){"use strict";function r(e,n,t,r,i){for(n=n.split?n.split("."):n,r=0;r<n.length;r++)e=e?e[n[r]]:i;return e===i?t:e}t.d(n,{Z:function(){return r}})},4806:function(e,n,t){"use strict";function r(e,n,t){n.split&&(n=n.split("."));for(var r,i=0,o=n.length,a=e;i<o;++i)r=a[n[i]],a=a[n[i]]=i===o-1?t:null!=r?r:!~n[i+1].indexOf(".")&&+n[i+1]>-1?[]:{}}t.d(n,{Z:function(){return r}})},1432:function(e){a.SYNC=1,a.ASYNC=2,a.QUEUE=4;var n=Object.freeze({useProxy:!0,ready:0}),t=new WeakMap,r="2,1,0"===[1].reduce((function(e,n,t){return[e,n,t]}),2).toString()?Array.prototype.reduce:function(e,n){var t,r=Object(this),i=r.length>>>0,o=0;if(n)t=n;else{for(;o<i&&!(o in r);)o++;t=r[o++]}for(;o<i;)o in r&&(t=e(t,r[o],o,r)),o++;return t};function i(e,n){return Array.prototype.slice.call(e,n)}var o=Object.assign||function(e){return r.call(i(arguments,1),(function(e,n){return n&&Object.keys(n).forEach((function(t){e[t]=n[t]})),e}),e)};function a(e){var c,u={},s=[];function d(e,n){return"function"==typeof e?p.call(null,"sync",e,n):"string"==typeof e&&"function"==typeof n?p.apply(null,arguments):"object"==typeof e?f.apply(null,arguments):void 0}function f(e,n,t){var r=!0;void 0===n&&(n=Object.getOwnPropertyNames(e),r=!1);var i={},o=["constructor"];do{(n=n.filter((function(n){return!("function"!=typeof e[n]||-1!==o.indexOf(n)||n.match(/^_/))}))).forEach((function(n){var r=n.split(":"),o=r[0],a=r[1]||"sync";if(!i[o]){var c=e[o];i[o]=e[o]=p(a,c,t?[t,o]:void 0)}})),e=Object.getPrototypeOf(e)}while(r&&e);return i}function l(e){var n=Array.isArray(e)?e:e.split(".");return r.call(n,(function(t,r,i){var o=t[r],a=!1;return o||(i===n.length-1?(c||s.push((function(){a||console.warn("fun-hooks: referenced '"+e+"' but it was never created")})),t[r]=g((function(e){t[r]=e,a=!0}))):t[r]={})}),u)}function g(e){var n=[],r=[],i=function(){},a={before:function(e,t){return u.call(this,n,"before",e,t)},after:function(e,n){return u.call(this,r,"after",e,n)},getHooks:function(e){var t=n.concat(r);"object"==typeof e&&(t=t.filter((function(n){return Object.keys(e).every((function(t){return n[t]===e[t]}))})));try{o(t,{remove:function(){return t.forEach((function(e){e.remove()})),this}})}catch(e){console.error("error adding `remove` to array, did you modify Array.prototype?")}return t},removeAll:function(){return this.getHooks().remove()}},c={install:function(t,o,a){this.type=t,i=a,a(n,r),e&&e(o)}};return t.set(a.after,c),a;function u(e,t,o,a){var c={hook:o,type:t,priority:a||10,remove:function(){var t=e.indexOf(c);-1!==t&&(e.splice(t,1),i(n,r))}};return e.push(c),e.sort((function(e,n){return n.priority-e.priority})),i(n,r),this}}function p(n,r,u){var d=r.after&&t.get(r.after);if(d){if(d.type!==n)throw"fun-hooks: recreated hookable with different type";return r}var f,p,v=u?l(u):g(),y={get:function(e,n){return v[n]||Reflect.get.apply(Reflect,arguments)}};return c||s.push(b),e.useProxy&&"function"==typeof Proxy&&Proxy.revocable?p=new Proxy(r,y):(p=function(){return y.apply?y.apply(r,this,i(arguments)):r.apply(this,arguments)},o(p,v)),t.get(p.after).install(n,p,(function(e,t){var r,o=[];function a(e){o.push(e.hook)}e.length||t.length?(e.forEach(a),r=o.push(void 0)-1,t.forEach(a),f=function(e,t,a){var c,u=0,s="async"===n&&"function"==typeof a[a.length-1]&&a.pop();function d(e){"sync"===n?c=e:s&&s.apply(null,arguments)}function f(e){if(o[u]){var r=i(arguments);return f.bail=d,r.unshift(f),o[u++].apply(t,r)}"sync"===n?c=e:s&&s.apply(null,arguments)}return o[r]=function(){var r=i(arguments,1);"async"===n&&s&&(delete f.bail,r.push(f));var o=e.apply(t,r);"sync"===n&&f(o)},f.apply(null,a),c}):f=void 0,b()})),p;function b(){!c&&("sync"!==n||e.ready&a.SYNC)&&("async"!==n||e.ready&a.ASYNC)?"sync"!==n&&e.ready&a.QUEUE?y.apply=function(){var e=arguments;s.push((function(){p.apply(e[1],e[2])}))}:y.apply=function(){throw"fun-hooks: hooked function not ready"}:y.apply=f}}return(e=o({},n,e)).ready?d.ready=function(){c=!0,function(e){for(var n;n=e.shift();)n()}(s)}:c=!0,d.get=l,d}e.exports=a},7079:function(e){e.exports=function e(n){var t=Array.isArray(n)?[]:{};for(var r in n){var i=n[r];t[r]=i&&"object"==typeof i?e(i):i}return t}},5644:function(e){"use strict";e.exports=JSON.parse('{"JSON_MAPPING":{"PL_CODE":"code","PL_SIZE":"sizes","PL_BIDS":"bids","BD_BIDDER":"bidder","BD_ID":"paramsd","BD_PL_ID":"placementId","ADSERVER_TARGETING":"adserverTargeting","BD_SETTING_STANDARD":"standard"},"DEBUG_MODE":"pbjs_debug","STATUS":{"GOOD":1,"NO_BID":2},"CB":{"TYPE":{"ALL_BIDS_BACK":"allRequestedBidsBack","AD_UNIT_BIDS_BACK":"adUnitBidsBack","BID_WON":"bidWon","REQUEST_BIDS":"requestBids"}},"EVENTS":{"AUCTION_INIT":"auctionInit","AUCTION_END":"auctionEnd","BID_ADJUSTMENT":"bidAdjustment","BID_TIMEOUT":"bidTimeout","BID_REQUESTED":"bidRequested","BID_RESPONSE":"bidResponse","NO_BID":"noBid","BID_WON":"bidWon","BIDDER_DONE":"bidderDone","BIDDER_ERROR":"bidderError","SET_TARGETING":"setTargeting","BEFORE_REQUEST_BIDS":"beforeRequestBids","BEFORE_BIDDER_HTTP":"beforeBidderHttp","REQUEST_BIDS":"requestBids","ADD_AD_UNITS":"addAdUnits","AD_RENDER_FAILED":"adRenderFailed","AD_RENDER_SUCCEEDED":"adRenderSucceeded","TCF2_ENFORCEMENT":"tcf2Enforcement","AUCTION_DEBUG":"auctionDebug","BID_VIEWABLE":"bidViewable","STALE_RENDER":"staleRender","BILLABLE_EVENT":"billableEvent"},"AD_RENDER_FAILED_REASON":{"PREVENT_WRITING_ON_MAIN_DOCUMENT":"preventWritingOnMainDocument","NO_AD":"noAd","EXCEPTION":"exception","CANNOT_FIND_AD":"cannotFindAd","MISSING_DOC_OR_ADID":"missingDocOrAdid"},"EVENT_ID_PATHS":{"bidWon":"adUnitCode"},"GRANULARITY_OPTIONS":{"LOW":"low","MEDIUM":"medium","HIGH":"high","AUTO":"auto","DENSE":"dense","CUSTOM":"custom"},"TARGETING_KEYS":{"BIDDER":"hb_bidder","AD_ID":"hb_adid","PRICE_BUCKET":"hb_pb","SIZE":"hb_size","DEAL":"hb_deal","SOURCE":"hb_source","FORMAT":"hb_format","UUID":"hb_uuid","CACHE_ID":"hb_cache_id","CACHE_HOST":"hb_cache_host","ADOMAIN":"hb_adomain"},"DEFAULT_TARGETING_KEYS":{"BIDDER":"hb_bidder","AD_ID":"hb_adid","PRICE_BUCKET":"hb_pb","SIZE":"hb_size","DEAL":"hb_deal","FORMAT":"hb_format","UUID":"hb_uuid","CACHE_HOST":"hb_cache_host"},"NATIVE_KEYS":{"title":"hb_native_title","body":"hb_native_body","body2":"hb_native_body2","privacyLink":"hb_native_privacy","privacyIcon":"hb_native_privicon","sponsoredBy":"hb_native_brand","image":"hb_native_image","icon":"hb_native_icon","clickUrl":"hb_native_linkurl","displayUrl":"hb_native_displayurl","cta":"hb_native_cta","rating":"hb_native_rating","address":"hb_native_address","downloads":"hb_native_downloads","likes":"hb_native_likes","phone":"hb_native_phone","price":"hb_native_price","salePrice":"hb_native_saleprice","rendererUrl":"hb_renderer_url","adTemplate":"hb_adTemplate"},"S2S":{"SRC":"s2s","DEFAULT_ENDPOINT":"https://prebid.adnxs.com/pbs/v1/openrtb2/auction","SYNCED_BIDDERS_KEY":"pbjsSyncs"},"BID_STATUS":{"BID_TARGETING_SET":"targetingSet","RENDERED":"rendered","BID_REJECTED":"bidRejected"}}')}},t={};function r(e){var i=t[e];if(void 0!==i)return i.exports;var o=t[e]={exports:{}};return n[e].call(o.exports,o,o.exports,r),o.exports}r.m=n,e=[],r.O=function(n,t,i,o){if(!t){var a=1/0;for(d=0;d<e.length;d++){t=e[d][0],i=e[d][1],o=e[d][2];for(var c=!0,u=0;u<t.length;u++)(!1&o||a>=o)&&Object.keys(r.O).every((function(e){return r.O[e](t[u])}))?t.splice(u--,1):(c=!1,o<a&&(a=o));if(c){e.splice(d--,1);var s=i();void 0!==s&&(n=s)}}return n}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[t,i,o]},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,{a:n}),n},r.d=function(e,n){for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},function(){var e={5602:0};r.O.j=function(n){return 0===e[n]};var n=function(n,t){var i,o,a=t[0],c=t[1],u=t[2],s=0;if(a.some((function(n){return 0!==e[n]}))){for(i in c)r.o(c,i)&&(r.m[i]=c[i]);if(u)var d=u(r)}for(n&&n(t);s<a.length;s++)o=a[s],r.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return r.O(d)},t=self.pbjsChunk=self.pbjsChunk||[];t.forEach(n.bind(null,0)),t.push=n.bind(null,t.push.bind(t))}();var i=r(2786);i=r.O(i)}(); "use strict";(self.pbjsChunk=self.pbjsChunk||[]).push([[3188],{4475:function(e,t,n){var r=n(9853),o=n(1609),s=n(5849);function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}var i="concert",d={code:i,isBidRequestValid:function(e){return!!e.params.partnerId||((0,r.logWarn)("Missing partnerId bid parameter"),!1)},buildRequests:function(e,t){(0,r.logMessage)(e),(0,r.logMessage)(t);var n={meta:{prebidVersion:"6.23.0",pageUrl:t.refererInfo.referer,screen:[window.screen.width,window.screen.height].join("x"),debug:(0,r.debugTurnedOn)(),uid:u(t),optedOut:p(),adapterVersion:"1.1.1",uspConsent:t.uspConsent,gdprConsent:t.gdprConsent}};return n.slots=e.map((function(e){return{name:e.adUnitCode,bidId:e.bidId,transactionId:e.transactionId,sizes:e.params.sizes||e.sizes,partnerId:e.params.partnerId,slotType:e.params.slotType,adSlot:e.params.slot||e.adUnitCode,placementId:e.params.placementId||"",site:e.params.site||t.refererInfo.referer}})),(0,r.logMessage)(n),{method:"POST",url:"".concat("https://bids.concert.io","/bids/prebid"),data:JSON.stringify(n)}},interpretResponse:function(e,t){(0,r.logMessage)(e),(0,r.logMessage)(t);var n,o=e.body;return o&&"object"===a(o)?(n=o.bids.map((function(e){return{requestId:e.bidId,cpm:e.cpm,width:e.width,height:e.height,ad:e.ad,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},creativeId:e.creativeId,netRevenue:e.netRevenue,currency:e.currency}})),(0,r.debugTurnedOn)()&&o.debug&&(0,r.logMessage)("CONCERT",o.debug),(0,r.logMessage)(n),n):[]},getUserSyncs:function(e,t,n,r){var o=[];if(e.iframeEnabled&&!p()){var s=[];n&&"boolean"==typeof n.gdprApplies&&s.push("gdpr_applies=".concat(n.gdprApplies?"1":"0")),n&&"string"==typeof n.consentString&&s.push("gdpr_consent=".concat(n.consentString)),r&&"string"==typeof r&&s.push("usp_consent=".concat(r)),o.push({type:"iframe",url:"https://cdn.concert.io/lib/bids/sync.html"+(s.length>0?"?".concat(s.join("&")):"")})}return o},onTimeout:function(e){(0,r.logMessage)("concert bidder timed out"),(0,r.logMessage)(e)},onBidWon:function(e){(0,r.logMessage)("concert bidder won bid"),(0,r.logMessage)(e)}};(0,o.registerBidder)(d);var c=(0,s.df)({bidderCode:i});function u(e){if(p()||!function(e){return!("string"===e.uspConsent&&"1YY"===e.uspConsent.toUpperCase().substring(0,2))}(e))return!1;var t="c_uid",n=c.getDataFromLocalStorage(t);return n||(n=(0,r.generateUUID)(),c.setDataInLocalStorage(t,n)),n}function p(){return"true"===c.getDataFromLocalStorage("c_nap")}window.pbjs.installedModules.push("concertBidAdapter")}},function(e){e(e.s=4475)}]); "use strict";(self.pbjsChunk=self.pbjsChunk||[]).push([[1266],{1654:function(n,e,t){var o=t(9853),a=t(8962),r=t(7602),i=t(1879);function c(n){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},c(n)}function s(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,o)}return t}function l(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?s(Object(t),!0).forEach((function(e){d(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):s(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function d(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}var u,f,p,g,v,m={value:!0,definedInConfig:!1},b=0,C=!1,y={iab:function(n){var e=n.onSuccess,t=n.onError,a=n.width,r=n.height;function c(n,a){(0,o.logInfo)("Received a response from CMP",n),a?!1!==n.gdprApplies&&"tcloaded"!==n.eventStatus&&"useractioncomplete"!==n.eventStatus||D(n,{onSuccess:e,onError:t}):t("CMP unable to register callback function. Please check CMP setup.")}var s=function(){var n={};function a(){n.getConsentData&&n.getVendorConsents&&((0,o.logInfo)("Received all requested responses from CMP",n),D(n,{onSuccess:e,onError:t}))}return{consentDataCallback:function(e){n.getConsentData=e,a()},vendorConsentsCallback:function(e){n.getVendorConsents=e,a()}}}(),l={},u=function(){for(var n,e,t=window;!n;){try{if("function"==typeof t.__tcfapi||"function"==typeof t.__cmp){"function"==typeof t.__tcfapi?(b=2,e=t.__tcfapi):(b=1,e=t.__cmp),n=t;break}}catch(n){}try{if(t.frames.__tcfapiLocator){b=2,n=t;break}}catch(n){}try{if(t.frames.__cmpLocator){b=1,n=t;break}}catch(n){}if(t===window.top)break;t=t.parent}return{cmpFrame:n,cmpFunction:e}}(),f=u.cmpFrame,p=u.cmpFunction;if(!f)return t("CMP not found.");function g(n,e){window.$sf.ext.register(a,r,(function(t,o){if("cmpReturn"===t){var a="getConsentData"===n?o.vendorConsentData:o.vendorConsents;e(a)}})),window.$sf.ext.cmp(n)}function v(n,e,t){var o=2===b?"__tcfapi":"__cmp",a="".concat(o,"Call");function r(n){var e="".concat(o,"Return"),t="string"==typeof n.data&&(0,i.q9)(n.data,e)?JSON.parse(n.data):n.data;if(t[e]&&t[e].callId){var a=t[e];void 0!==l[a.callId]&&l[a.callId](a.returnValue,a.success)}}2===b?(window[o]=function(n,t,o,r){var i=Math.random()+"",c=d({},a,{command:n,version:t,parameter:r,callId:i});l[i]=o,e.postMessage(c,"*")},window.addEventListener("message",r,!1),window[o](n,b,t)):(window[o]=function(n,t,o){var r=Math.random()+"",i=d({},a,{command:n,parameter:t,callId:r});l[r]=o,e.postMessage(i,"*")},window.addEventListener("message",r,!1),window[o](n,void 0,t))}(0,o.isFn)(p)?((0,o.logInfo)("Detected CMP API is directly accessible, calling it now..."),1===b?(p("getConsentData",null,s.consentDataCallback),p("getVendorConsents",null,s.vendorConsentsCallback)):2===b&&p("addEventListener",b,c)):1===b&&window.$sf&&window.$sf.ext&&"function"==typeof window.$sf.ext.cmp?((0,o.logInfo)("Detected Prebid.js is encased in a SafeFrame and CMP is registered, calling it now..."),g("getConsentData",s.consentDataCallback),g("getVendorConsents",s.vendorConsentsCallback)):((0,o.logInfo)("Detected CMP is outside the current iframe where Prebid.js is located, calling it now..."),1===b?(v("getConsentData",f,s.consentDataCallback),v("getVendorConsents",f,s.vendorConsentsCallback)):2===b&&v("addEventListener",f,c))},static:function(n){var e=n.onSuccess,t=n.onError;D(g,{onSuccess:e,onError:t})}};function w(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o=!1,a=null;function c(e,t,i){if(null!=a&&clearTimeout(a),o=!0,r.rp.setConsentData(e),null!=n){for(var c=arguments.length,s=new Array(c>3?c-3:0),l=3;l<c;l++)s[l-3]=arguments[l];n.apply(void 0,[t,i].concat(s))}}if((0,i.q9)(Object.keys(y),u)){var s={onSuccess:function(n){return c(n,!1)},onError:function(n){var e=null,t=!0;m.value&&1===b&&(e=P(void 0),t=!1);for(var o=arguments.length,a=new Array(o>1?o-1:0),r=1;r<o;r++)a[r-1]=arguments[r];c.apply(void 0,[e,t,n].concat(a))}};y[u](l({width:e,height:t},s)),o||(0===f?D(void 0,s):a=setTimeout((function(){2===b?c(P(void 0),!1,"No response from CMP, continuing auction..."):s.onError("CMP workflow exceeded timeout threshold.")}),f))}else c(null,!1,"CMP framework (".concat(u,") is not a supported framework. Aborting consentManagement module and resuming auction."))}function h(n,e){!function(){if(v)return(0,o.logInfo)("User consent information already known. Pulling internally stored information..."),function(n){n(!1)};var n=e.adUnits||pbjs.adUnits,t=1,a=1;if(Array.isArray(n)&&n.length>0){var r,i,c=(0,o.getAdUnitSizes)(n[0]);t=(null==c||null===(r=c[0])||void 0===r?void 0:r[0])||1,a=(null==c||null===(i=c[0])||void 0===i?void 0:i[1])||1}return function(n){w(n,t,a)}}()((function(t,a){if(a){var r=o.logWarn;1!==b||t?t&&(r=o.logError,a="".concat(a," Canceling auction as per consentManagement config.")):a="".concat(a," 'allowAuctionWithoutConsent' activated.");for(var i=arguments.length,c=new Array(i>2?i-2:0),s=2;s<i;s++)c[s-2]=arguments[s];r.apply(void 0,[a].concat(c))}t?"function"==typeof e.bidsBackHandler?e.bidsBackHandler():(0,o.logError)("Error executing bidsBackHandler"):n.call(this,e)}))}function D(n,e){var t=e.onSuccess,a=e.onError;"static"===u&&2==(b=n.getConsentData?1:n.getTCData?2:0)&&(n=n.getTCData);var r=1===b?function(n){var e=n&&n.getConsentData&&n.getConsentData.gdprApplies;return!("boolean"==typeof e&&(!0!==e||(0,o.isStr)(n.getConsentData.consentData)&&(0,o.isPlainObject)(n.getVendorConsents)&&Object.keys(n.getVendorConsents).length>1))}:2===b?function(){var e=n&&"boolean"==typeof n.gdprApplies?n.gdprApplies:p,t=n&&n.tcString;return!("boolean"==typeof e&&(!0!==e||(0,o.isStr)(t)))}:null;(0,o.isFn)(r)?r(n)?a("CMP returned unexpected value during lookup process.",n):t(P(n)):a("Unable to derive CMP version to process data. Consent object does not conform to TCF v1 or v2 specs.",n)}function P(n){return 1===b?v={consentString:n?n.getConsentData.consentData:void 0,vendorData:n?n.getVendorConsents:void 0,gdprApplies:n?n.getConsentData.gdprApplies:p}:(v={consentString:n?n.tcString:void 0,vendorData:n||void 0,gdprApplies:n&&"boolean"==typeof n.gdprApplies?n.gdprApplies:p},n&&n.addtlConsent&&(0,o.isStr)(n.addtlConsent)&&(v.addtlConsent=n.addtlConsent)),v.apiVersion=b,v}a.vc.getConfig("consentManagement",(function(n){return function(n){(n=n&&(n.gdpr||n.usp?n.gdpr:n))&&"object"===c(n)?((0,o.isStr)(n.cmpApi)?u=n.cmpApi:(u="iab",(0,o.logInfo)("consentManagement config did not specify cmp. Using system default setting (".concat("iab",")."))),(0,o.isNumber)(n.timeout)?f=n.timeout:(f=1e4,(0,o.logInfo)("consentManagement config did not specify timeout. Using system default setting (".concat(1e4,")."))),"boolean"==typeof n.allowAuctionWithoutConsent&&(m.value=n.allowAuctionWithoutConsent,m.definedInConfig=!0),p=!0===n.defaultGdprScope,(0,o.logInfo)("consentManagement module has been activated..."),"static"===u&&((0,o.isPlainObject)(n.consentData)?(g=n.consentData,f=0):(0,o.logError)("consentManagement config with cmpApi: 'static' did not specify consentData. No consents will be available to adapters.")),C||pbjs.requestBids.before(h,50),C=!0,r.rp.enable(),w(),m.definedInConfig&&2===b?(0,o.logWarn)("'allowAuctionWithoutConsent' ignored for TCF 2"):m.definedInConfig||1!==b||(0,o.logInfo)("'allowAuctionWithoutConsent' using system default: (".concat(!0,")."))):(0,o.logWarn)("consentManagement config not defined, exiting consent manager")}(n.consentManagement)})),window.pbjs.installedModules.push("consentManagement")}},function(n){n(n.s=1654)}]); "use strict";(self.pbjsChunk=self.pbjsChunk||[]).push([[5160],{1366:function(n,t,e){var o=e(9853),a=e(8962),i=e(7602);function c(n){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},c(n)}var s,r,u,l,p=!1,f={iab:function(n){var t,e=n.onSuccess,a=n.onError,i=(t={},{consentDataCallback:function(n,o){o&&n.uspString&&(t.usPrivacy=n.uspString),t.usPrivacy?m(t,{onSuccess:e,onError:a}):a("Unable to get USP consent string.")}}),c={},s=function(){for(var n,t,e=window;!n;){try{if("function"==typeof e.__uspapi){t=e.__uspapi,n=e;break}}catch(n){}try{if(e.frames.__uspapiLocator){n=e;break}}catch(n){}if(e===window.top)break;e=e.parent}return{uspapiFrame:n,uspapiFunction:t}}(),r=s.uspapiFrame,u=s.uspapiFunction;if(!r)return a("USP CMP not found.");(0,o.isFn)(u)?((0,o.logInfo)("Detected USP CMP is directly accessible, calling it now..."),u("getUSPData",1,i.consentDataCallback)):((0,o.logInfo)("Detected USP CMP is outside the current iframe where Prebid.js is located, calling it now..."),function(n,t,e){window.__uspapi=function(n,e,o){var a=Math.random()+"",i={__uspapiCall:{command:n,version:e,callId:a}};c[a]=o,t.postMessage(i,"*")},window.addEventListener("message",(function(n){var t=n&&n.data&&n.data.__uspapiReturn;t&&t.callId&&void 0!==c[t.callId]&&(c[t.callId](t.returnValue,t.success),delete c[t.callId])}),!1),window.__uspapi("getUSPData",1,e)}(0,r,i.consentDataCallback))},static:function(n){var t=n.onSuccess,e=n.onError;m(u,{onSuccess:t,onError:e})}};function d(n){var t=null,e=!1;function o(o,a){if(null!=t&&clearTimeout(t),e=!0,i.nX.setConsentData(o),null!=n){for(var c=arguments.length,s=new Array(c>2?c-2:0),r=2;r<c;r++)s[r-2]=arguments[r];n.apply(void 0,[a].concat(s))}}if(f[s]){var a={onSuccess:o,onError:function(n){for(var t=arguments.length,e=new Array(t>1?t-1:0),a=1;a<t;a++)e[a-1]=arguments[a];o.apply(void 0,[null,"".concat(n," Resuming auction without consent data as per consentManagement config.")].concat(e))}};f[s](a),e||(0===r?m(void 0,a):t=setTimeout(a.onError.bind(null,"USPAPI workflow exceeded timeout threshold."),r))}else o(null,"USP framework (".concat(s,") is not a supported framework. Aborting consentManagement module and resuming auction."))}function g(n,t){var e=this;d((function(a){if(null!=a){for(var i=arguments.length,c=new Array(i>1?i-1:0),s=1;s<i;s++)c[s-1]=arguments[s];o.logWarn.apply(void 0,[a].concat(c))}n.call(e,t)}))}function m(n,t){var e=t.onSuccess,o=t.onError;n&&n.usPrivacy?(function(n){n&&n.usPrivacy&&(l=n.usPrivacy)}(n),e(l)):o("USPAPI returned unexpected value during lookup process.",n)}a.vc.getConfig("consentManagement",(function(n){return function(n){(n=n&&n.usp)&&"object"===c(n)?((0,o.isStr)(n.cmpApi)?s=n.cmpApi:(s="iab",(0,o.logInfo)("consentManagement.usp config did not specify cmpApi. Using system default setting (".concat("iab",")."))),(0,o.isNumber)(n.timeout)?r=n.timeout:(r=50,(0,o.logInfo)("consentManagement.usp config did not specify timeout. Using system default setting (".concat(50,")."))),(0,o.logInfo)("USPAPI consentManagement module has been activated..."),"static"===s&&((0,o.isPlainObject)(n.consentData)&&(0,o.isPlainObject)(n.consentData.getUSPData)?(n.consentData.getUSPData.uspString&&(u={usPrivacy:n.consentData.getUSPData.uspString}),r=0):(0,o.logError)("consentManagement config with cmpApi: 'static' did not specify consentData. No consents will be available to adapters.")),p||pbjs.requestBids.before(g,50),p=!0,i.nX.enable(),d()):(0,o.logWarn)("consentManagement.usp config not defined, exiting usp consent manager")}(n.consentManagement)})),window.pbjs.installedModules.push("consentManagementUsp")}},function(n){n(n.s=1366)}]); "use strict";(self.pbjsChunk=self.pbjsChunk||[]).push([[8806],{2235:function(e,n,t){var i=t(9853),o=t(3494),r=t(2661),c=t(5849),d={},a=window===window.top?window:window.top,m=(0,c.eA)("enrichmentFpd");function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.hostname;if(!m.cookiesAreEnabled())return e;var n,t,o=e.split(".");if(2==o.length)return e;var r=-2,c="_rdc".concat(Date.now()),d="writeable";do{n=o.slice(r).join(".");var a=new Date((0,i.timestamp)()+1e4).toUTCString();m.setCookie(c,d,a,"Lax",n,void 0);var u=m.getCookie(c,void 0);u===d?(t=!1,m.setCookie(c,"","Thu, 01 Jan 1970 00:00:01 GMT",void 0,n,void 0)):(r+=-1,t=Math.abs(r)<=o.length)}while(t);return n}var l={name:"enrichments",queue:2,init:function(e,n){return d={},e.skipEnrichments?n:(0,i.mergeDeep)(((0,r.n)().referer&&(0,i.mergeDeep)(d,{site:{ref:(0,r.n)().referer}}),(0,r.n)().canonicalUrl&&(0,i.mergeDeep)(d,{site:{page:(0,r.n)().canonicalUrl}}),(t=function(e){if(e&&"string"==typeof e&&0!==e.length){var n=e.match(/^(?:https?:\/\/)?(?:www\.)?(.*?(?=(\?|\#|\/|$)))/i);return n&&n[1]}}((0,r.n)().canonicalUrl))&&((0,i.mergeDeep)(d,{site:{domain:t}}),(0,i.mergeDeep)(d,{site:{publisher:{domain:u(t)}}})),function(){var e,n;try{e=a.innerWidth||a.document.documentElement.clientWidth||a.document.body.clientWidth,n=a.innerHeight||a.document.documentElement.clientHeight||a.document.body.clientHeight}catch(t){e=window.innerWidth||window.document.documentElement.clientWidth||window.document.body.clientWidth,n=window.innerHeight||window.document.documentElement.clientHeight||window.document.body.clientHeight}(0,i.mergeDeep)(d,{device:{w:e,h:n}})}(),function(){var e;try{e=a.document.querySelector("meta[name='keywords']")}catch(n){e=window.document.querySelector("meta[name='keywords']")}e&&e.content&&(0,i.mergeDeep)(d,{site:{keywords:e.content.replace(/\s/g,"")}})}(),d),n);var t}};(0,o.Bx)("firstPartyData",l),window.pbjs.installedModules.push("enrichmentFpdModule")}},function(e){e(e.s=2235)}]); "use strict";(self.pbjsChunk=self.pbjsChunk||[]).push([[7910],{8303:function(t,e,n){var o=n(8962),s=n(3494),u=n(2528),i=n(4892),f=[];function r(t,e){var n,s;n=o.vc.getConfig("firstPartyData")||{},s=o.vc.getConfig("ortb2")||{},f.sort((function(t,e){return(t.queue||1)-(e.queue||1)})).forEach((function(t){s=t.init(n,s)})),o.vc.setConfig({ortb2:s}),t.call(this,e),i.e0.getHooks({hook:r}).remove()}function c(){(0,s.v5)("addBidderRequests").before(r)}(0,s.bA)("firstPartyData",(function(t){f.push(t)})),c(),(0,u.R)().refreshFpd=c,window.pbjs.installedModules.push("fpdModule")}},function(t){t(t.s=8303)}]); "use strict";(self.pbjsChunk=self.pbjsChunk||[]).push([[7083],{1489:function(e,r,n){var t=n(265),o=n(9853),i=n(8962),a=n(7602),c=n(1879),s=n(1609),l=n(3494),p=n(5849),u=n(2319),f=n(5644);function d(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function v(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?d(Object(n),!0).forEach((function(r){g(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}function g(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function b(){return b=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e},b.apply(this,arguments)}function y(e){return y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y(e)}var h,m,O,E,P={purpose1:{id:1,name:"storage"},purpose2:{id:2,name:"basicAds"},purpose7:{id:7,name:"measurement"}},j=[{purpose:"storage",enforcePurpose:!0,enforceVendor:!0,vendorExceptions:[]},{purpose:"basicAds",enforcePurpose:!0,enforceVendor:!0,vendorExceptions:[]}],C=[],A=[],D=[],w=!1,S=function(e){var r=null;if(e=e||i.vc.getCurrentBidder()){var n=a.ZP.getBidAdapter(e);n&&n.getSpec&&(r=n.getSpec().gvlid)}return r},k=function(e){return"object"===y(e)?e.gvlid:null},V=function(e){return a.ZP.getAnalyticsAdapter(e)&&(a.ZP.getAnalyticsAdapter(e).gvlid||null)};function T(e){var r=null;if(e){var n=i.vc.getConfig("gvlMapping"),t="string"==typeof e?e:e.name;if(n&&n[t])return n[t];r=S(t)||k(e)||V(t)}return r}function B(e,r,n,o){var i=P[Object.keys(P).filter((function(r){return P[r].name===e.purpose}))[0]].id;if((0,c.q9)(e.vendorExceptions||[],n))return!0;var a=(0,t.Z)(r,"vendorData.purpose.consents.".concat(i)),s=(0,t.Z)(r,"vendorData.vendor.consents.".concat(o)),l=(0,t.Z)(r,"vendorData.purpose.legitimateInterests.".concat(i)),p=!1===e.enforcePurpose||!0===a,u=!1===e.enforceVendor||!0===s;return 2===i?p&&u||!0===l:p&&u}function Z(e,r,n,t){if(t=b({},{hasEnforcementHook:!0}),(0,o.hasDeviceAccess)()){var c=a.rp.getConsentData();if(c&&c.gdprApplies)if(2===c.apiVersion){var s=i.vc.getCurrentBidder();r=s&&s!=n&&a.ZP.aliasRegistry[s]===n?T(s):T(n)||r;var l=n||s;B(h,c,l,r)?(t.valid=!0,e.call(this,r,n,t)):(l&&(0,o.logWarn)("TCF2 denied device access for ".concat(l)),t.valid=!1,C.push(l),e.call(this,r,n,t))}else t.valid=!0,e.call(this,r,n,t);else t.valid=!0,e.call(this,r,n,t)}else(0,o.logWarn)("Device access is disabled by Publisher"),t.valid=!1,e.call(this,r,n,t)}function W(e){for(var r=a.rp.getConsentData(),n=arguments.length,t=new Array(n>1?n-1:0),c=1;c<n;c++)t[c-1]=arguments[c];if(r&&r.gdprApplies)if(2===r.apiVersion){var s=i.vc.getCurrentBidder(),l=T(s),p=B(h,r,s,l);p?e.call.apply(e,[this].concat(t)):((0,o.logWarn)("User sync not allowed for ".concat(s)),C.push(s))}else e.call.apply(e,[this].concat(t));else e.call.apply(e,[this].concat(t))}function F(e,r,n){if(n&&n.gdprApplies)if(2===n.apiVersion){var t=r.map((function(e){var r=T(e.submodule),t=e.submodule.name;if(B(h,n,t,r))return e;(0,o.logWarn)("User denied permission to fetch user id for ".concat(t," User id module")),C.push(t)})).filter((function(e){return e}));e.call(this,t,v(v({},n),{},{hasValidated:!0}))}else e.call(this,r,n);else e.call(this,r,n)}function N(e,r){for(var n=a.rp.getConsentData(),t=arguments.length,i=new Array(t>2?t-2:0),s=2;s<t;s++)i[s-2]=arguments[s];n&&n.gdprApplies&&2===n.apiVersion?(r.forEach((function(e){e.bids=e.bids.filter((function(e){var r=e.bidder,t=T(r);if((0,c.q9)(A,r))return!1;var i=!!B(m,n,r,t);return i||((0,o.logWarn)("TCF2 blocked auction for ".concat(r)),A.push(r)),i}))})),e.call.apply(e,[this,r].concat(i))):e.call.apply(e,[this,r].concat(i))}function M(e,r){var n=a.rp.getConsentData();n&&n.gdprApplies&&2===n.apiVersion?((0,o.isArray)(r)||(r=[r]),r=r.filter((function(e){var r=e.provider,t=T(r),i=!!B(O,n,r,t);return i||(D.push(r),(0,o.logWarn)("TCF2 blocked analytics adapter ".concat(e.provider))),i})),e.call(this,r)):e.call(this,r)}u.on(f.EVENTS.AUCTION_END,(function(){var e=function(e){return e.filter((function(r,n){return null!==r&&e.indexOf(r)===n}))},r={storageBlocked:e(C),biddersBlocked:e(A),analyticsBlocked:e(D)};u.emit(f.EVENTS.TCF2_ENFORCEMENT,r)}));var x=function(e){return e.purpose===P.purpose1.name},U=function(e){return e.purpose===P.purpose2.name},q=function(e){return e.purpose===P.purpose7.name};i.vc.getConfig("consentManagement",(function(e){return function(e){var r=(0,t.Z)(e,"gdpr.rules");r?E=r:((0,o.logWarn)("TCF2: enforcing P1 and P2 by default"),E=j),h=(0,c.sE)(E,x),m=(0,c.sE)(E,U),O=(0,c.sE)(E,q),h||(h=j[0]),m||(m=j[1]),h&&!w&&(w=!0,p.S6.before(Z,49),s.registerSyncInner.before(W,48),(0,l.v5)("validateGdprEnforcement").before(F,47)),m&&(0,l.v5)("makeBidRequests").before(N),O&&(0,l.v5)("enableAnalyticsCb").before(M)}(e.consentManagement)})),window.pbjs.installedModules.push("gdprEnforcement")}},function(e){e(e.s=1489)}]); "use strict";(self.pbjsChunk=self.pbjsChunk||[]).push([[5296],{7652:function(t,e,o){var n=o(9853),r=o(265),a=o(8962),d=o(3494),i=o(1879),u=void 0,c={},s=!1,f=function(t){var e=c.customGptSlotMatching;if((0,n.isGptPubadsDefined)()){var o=t.reduce((function(t,e){return t[e.code]=e,t}),{});window.googletag.pubads().getSlots().forEach((function(t){var r=(0,i.sE)(Object.keys(o),e?e(t):(0,n.isAdUnitCodeMatchingSlot)(t));if(r){var a=o[r];a.ortb2Imp=a.ortb2Imp||{},a.ortb2Imp.ext=a.ortb2Imp.ext||{},a.ortb2Imp.ext.data=a.ortb2Imp.ext.data||{};var d=a.ortb2Imp.ext.data;d.adserver=d.adserver||{},d.adserver.name="gam",d.adserver.adslot=p(t.getAdUnitPath())}}))}},p=function(t){return(a.vc.getConfig("gptPreAuction")||{}).mcmEnabled?t.replace(/(^\/\d*),\d*\//,"$1/"):t},l=function(t,e){var o=t.ortb2Imp.ext.data;if(o.pbadslot)return o.pbadslot;if((0,n.isGptPubadsDefined)()){var r=window.googletag.pubads().getSlots().filter((function(t){return t.getAdUnitPath()===e}));if(0!==r.length)return 1===r.length?e:"".concat(e,"#").concat(t.code)}},b=function(t){var e=t.ortb2Imp.ext.data,o=c.customPbAdSlot;if(!e.pbadslot)if(o)e.pbadslot=o(t.code,(0,r.Z)(e,"adserver.adslot"));else{try{var n=document.getElementById(t.code);if(n.dataset.adslotid)return void(e.pbadslot=n.dataset.adslotid)}catch(t){}if(!(0,r.Z)(e,"adserver.adslot"))return e.pbadslot=t.code,!0;e.pbadslot=e.adserver.adslot}},g=function(t,e){f(e);var o=c,n=o.useDefaultPreAuction,a=o.customPreAuction;e.forEach((function(t){t.ortb2Imp=t.ortb2Imp||{},t.ortb2Imp.ext=t.ortb2Imp.ext||{},t.ortb2Imp.ext.data=t.ortb2Imp.ext.data||{};var e=t.ortb2Imp.ext;if(a||n){var o,d=(0,r.Z)(e,"data.adserver.adslot");a?o=a(t,d):n&&(o=l(t,d)),o&&(e.gpid=e.data.pbadslot=o)}else{var i=b(t);e.gpid||i||(e.gpid=e.data.pbadslot)}}));for(var d=arguments.length,i=new Array(d>2?d-2:0),s=2;s<d;s++)i[s-2]=arguments[s];return t.call.apply(t,[u,e].concat(i))},m=function(t){(c=(0,n.pick)(t,["enabled",function(t){return!1!==t},"customGptSlotMatching",function(t){return"function"==typeof t&&t},"customPbAdSlot",function(t){return"function"==typeof t&&t},"customPreAuction",function(t){return"function"==typeof t&&t},"useDefaultPreAuction",function(t){return!0===t}])).enabled?s||((0,d.v5)("makeBidRequests").before(g),s=!0):((0,n.logInfo)("".concat("GPT Pre-Auction",": Turning off module")),c={},(0,d.v5)("makeBidRequests").getHooks({hook:g}).remove(),s=!1)};a.vc.getConfig("gptPreAuction",(function(t){return m(t.gptPreAuction)})),m({}),window.pbjs.installedModules.push("gptPreAuction")}},function(t){t(t.s=7652)}]); "use strict";(self.pbjsChunk=self.pbjsChunk||[]).push([[6312],{7890:function(e,t,r){var n=r(9853),o=r(265),i=r(1609),a=r(8962),u=r(8265),c=r(2224);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){y(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var f="sharethrough",m="https://btlr.sharethrough.com/universal/v1?supply_id=".concat("WYu2BXv1"),g=function(){return window.location.protocol},b={code:f,supportedMediaTypes:[u.pX,u.Mk],gvlid:80,isBidRequestValid:function(e){return!!e.params.pkey&&e.bidder===f},buildRequests:function(e,t){var r,i,u,s=a.vc.getConfig("bidderTimeout"),p=a.vc.getConfig("ortb2")||{},y=g().indexOf("http")<0||g().indexOf("https")>-1,f={id:(0,n.generateUUID)(),at:1,cur:["USD"],tmax:s,site:l({domain:window.location.hostname,page:window.location.href,ref:(0,o.Z)(t,"refererInfo.referer")},p.site),device:{ua:navigator.userAgent,language:navigator.language,js:1,dnt:"1"===navigator.doNotTrack?1:0,h:window.screen.height,w:window.screen.width},regs:{coppa:!0===a.vc.getConfig("coppa")?1:0,ext:{}},source:{ext:{version:"6.23.0",str:"4.1.0",schain:e[0].schain}},bcat:e[0].params.bcat||[],badv:e[0].params.badv||[],test:0};if(f.user=h(p.user,{}),f.user.ext||(f.user.ext={}),f.user.ext.eids=(r=e[0],i=(0,c.HQ)((0,o.Z)(r,"userId"))||[],(u=(0,o.Z)(r,"userId.flocId"))&&u.id&&u.version&&i.push({source:"chrome.com",uids:[{id:u.id,atype:1,ext:{ver:u.version}}]}),i),t.gdprConsent){var b=!0===t.gdprConsent.gdprApplies;f.regs.ext.gdpr=b?1:0,b&&(f.user.ext.consent=t.gdprConsent.consentString)}return t.uspConsent&&(f.regs.ext.us_privacy=t.uspConsent),e.map((function(e){var t={},r=(0,o.Z)(e,"ortb2Imp.ext.data.pbadslot");r&&(t.ext={gpid:r});var i,a,u,c,s,p,f=(0,o.Z)(e,"mediaTypes.video");if(f){var m=640,g=360;if(f.playerSize&&f.playerSize[0]&&f.playerSize[1]){var b=(s=f.playerSize,p=2,function(e){if(Array.isArray(e))return e}(s)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i=[],a=!0,u=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){u=!0,o=e}finally{try{a||null==r.return||r.return()}finally{if(u)throw o}}return i}}(s,p)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(s,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());m=b[0],g=b[1]}t.video={pos:h(f.pos,0),topframe:(0,n.inIframe)()?0:1,skip:h(f.skip,0),linearity:h(f.linearity,1),minduration:h(f.minduration,5),maxduration:h(f.maxduration,60),playbackmethod:f.playbackmethod||[2],api:(u=f,c=u.api,c&&Array.isArray(c)&&c.length>0?c:[2]),mimes:f.mimes||["video/mp4"],protocols:(i=f,a=i.protocols,a&&Array.isArray(a)&&a.length>0?a:[2,3,5,6,7,8]),w:m,h:g,startdelay:h(f.startdelay,0),skipmin:h(f.skipmin,0),skipafter:h(f.skipafter,0),placement:"instream"===f.context?1:+(0,o.Z)(f,"placement",4)},f.delivery&&(t.video.delivery=f.delivery),f.companiontype&&(t.video.companiontype=f.companiontype),f.companionad&&(t.video.companionad=f.companionad)}else t.banner={pos:(0,o.Z)(e,"mediaTypes.banner.pos",0),topframe:(0,n.inIframe)()?0:1,format:e.sizes.map((function(e){return{w:+e[0],h:+e[1]}}))};return l({id:e.bidId,tagid:String(e.params.pkey),secure:y?1:0,bidfloor:v(e)},t)})).filter((function(e){return!!e})).map((function(e){return{method:"POST",url:m,data:l(l({},f),{},{imp:[e]})}}))},interpretResponse:function(e,t){var r=e.body;return r&&r.seatbid&&0!==r.seatbid.length&&r.seatbid[0].bid&&0!==r.seatbid[0].bid.length?r.seatbid[0].bid.map((function(e){var n={requestId:e.impid,width:+e.w,height:+e.h,cpm:+e.price,creativeId:e.crid,dealId:e.dealid||null,mediaType:t.data.imp[0].video?u.pX:u.Mk,currency:r.cur||"USD",netRevenue:!0,ttl:360,ad:e.adm,nurl:e.nurl,meta:{advertiserDomains:e.adomain||[]}};return n.mediaType===u.pX&&(n.ttl=3600,n.vastXml=e.adm),n})):[]},getUserSyncs:function(e,t,r,n){var o=n?"&us_privacy=".concat(n):"",i=[];return e.pixelEnabled&&t.length>0&&t[0].body&&t[0].body.cookieSyncUrls&&t[0].body.cookieSyncUrls.forEach((function(e){i.push({type:"image",url:e+o})})),i},onTimeout:function(e){},onBidWon:function(e){},onSetTargeting:function(e){}};function v(e){var t=null;if("function"==typeof e.getFloor){var r=e.getFloor({currency:"USD",mediaType:e.mediaTypes&&e.mediaTypes.video?"video":"banner",size:e.sizes.map((function(e){return{w:e[0],h:e[1]}}))});"object"!==s(r)||"USD"!==r.currency||isNaN(parseFloat(r.floor))||(t=parseFloat(r.floor))}return null!==t?t:e.params.floor}function h(e,t){return null==e?t:e}(0,i.registerBidder)(b),window.pbjs.installedModules.push("sharethroughBidAdapter")},2224:function(e,t,r){r.d(t,{HQ:function(){return u},Pv:function(){return c},UR:function(){return i}});var n=r(9853),o=r(265),i={trustpid:{source:"trustpid.com",atype:1,getValue:function(e){return e}},intentIqId:{source:"intentiq.com",atype:1},naveggId:{source:"navegg.com",atype:1},justId:{source:"justtag.com",atype:1},pubcid:{source:"pubcid.org",atype:1},tdid:{source:"adserver.org",atype:1,getUidExt:function(){return{rtiPartner:"TDID"}}},id5id:{getValue:function(e){return e.uid},source:"id5-sync.com",atype:1,getUidExt:function(e){if(e.ext)return e.ext}},ftrackId:{source:"flashtalking.com",atype:1,getValue:function(e){return e.uid},getUidExt:function(e){if(e.ext)return e.ext}},parrableId:{source:"parrable.com",atype:1,getValue:function(e){return e.eid?e.eid:e.ccpaOptout?"":null},getUidExt:function(e){var t=(0,n.pick)(e,["ibaOptout","ccpaOptout"]);if(Object.keys(t).length)return t}},idl_env:{source:"liveramp.com",atype:3},lipb:{getValue:function(e){return e.lipbid},source:"liveintent.com",atype:3,getEidExt:function(e){if(Array.isArray(e.segments)&&e.segments.length)return{segments:e.segments}}},britepoolid:{source:"britepool.com",atype:3},dmdId:{source:"hcn.health",atype:3},lotamePanoramaId:{source:"crwdcntrl.net",atype:1},criteoId:{source:"criteo.com",atype:1},merkleId:{source:"merkleinc.com",atype:3,getValue:function(e){return e.id},getUidExt:function(e){return e&&e.keyID?{keyID:e.keyID}:void 0}},netId:{source:"netid.de",atype:1},IDP:{source:"zeotap.com",atype:1},hadronId:{source:"audigent.com",atype:1},haloId:{source:"audigent.com",atype:1},quantcastId:{source:"quantcast.com",atype:1},nextrollId:{source:"nextroll.com",atype:1},idx:{source:"idx.lat",atype:1},connectid:{source:"verizonmedia.com",atype:3},fabrickId:{source:"neustar.biz",atype:1},mwOpenLinkId:{source:"mediawallahscript.com",atype:1},tapadId:{source:"tapad.com",atype:1},novatiq:{getValue:function(e){return e.snowflake},source:"novatiq.com",atype:1},uid2:{source:"uidapi.com",atype:3,getValue:function(e){return e.id}},dapId:{source:"akamai.com",atype:1},deepintentId:{source:"deepintent.com",atype:3},admixerId:{source:"admixer.net",atype:3},adtelligentId:{source:"adtelligent.com",atype:3},amxId:{source:"amxrtb.com",atype:1},publinkId:{source:"epsilon.com",atype:3},kpuid:{source:"kpuid.com",atype:3},imuid:{source:"intimatemerger.com",atype:1},connectId:{source:"yahoo.com",atype:3},qid:{source:"adquery.io",atype:1},dacId:{source:"impact-ad.jp",atype:1},"33acrossId":{source:"33across.com",atype:1,getValue:function(e){return e.envelope}}};function a(e,t){var r=i[t];if(r&&e){var o={};o.source=r.source;var a=(0,n.isFn)(r.getValue)?r.getValue(e):e;if((0,n.isStr)(a)){var u={id:a,atype:r.atype};if((0,n.isFn)(r.getUidExt)){var c=r.getUidExt(e);c&&(u.ext=c)}if(o.uids=[u],(0,n.isFn)(r.getEidExt)){var s=r.getEidExt(e);s&&(o.ext=s)}return o}}return null}function u(e){var t=[];for(var r in e)if(e.hasOwnProperty(r))if("pubProvidedId"===r)t=t.concat(e.pubProvidedId);else{var n=a(e[r],r);n&&t.push(n)}return t}function c(e){var t=[];return e.filter((function(e){return(0,n.isPlainObject)(e.idObj)&&Object.keys(e.idObj).length})).forEach((function(e){Object.keys(e.idObj).forEach((function(r){(0,o.Z)(e,"config.bidders")&&Array.isArray(e.config.bidders)&&(0,o.Z)(i,r+".source")&&t.push({source:i[r].source,bidders:e.config.bidders})}))})),t}}},function(e){e(e.s=7890)}]); "use strict";(self.pbjsChunk=self.pbjsChunk||[]).push([[8029],{8973:function(e,r,t){var n=t(9853),i=t(265),a=t(1609),o=t(5849);function s(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function d(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?s(Object(t),!0).forEach((function(r){p(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):s(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function p(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var c="teads",u=(0,o.df)({gvlid:132,bidderCode:c}),f={code:c,gvlid:132,supportedMediaTypes:["video","banner"],isBidRequestValid:function(e){var r=!1;if(void 0!==e.params){var t=v((0,n.getValue)(e.params,"placementId")),i=v((0,n.getValue)(e.params,"pageId"));r=t&&i}return r||(0,n.logError)("Teads placementId and pageId parameters are required. Bid aborted."),r},buildRequests:function(e,r){var t,n,a=e.map(y),o=d(d(d({referrer:g(r),pageReferrer:document.referrer,networkBandwidth:(n=window.navigator,n&&n.connection&&n.connection.downlink>=0?n.connection.downlink.toString():""),timeToFirstByte:l(window),data:a,deviceWidth:screen.width,hb_version:"6.23.0"},function(e){if(!e)return{};var r=e.id?{cohortId:e.id}:{},t=e.version?{cohortVersion:e.version}:{};return d(d({},r),t)}((0,i.Z)(e,"0.userId.flocId"))),(t=(0,i.Z)(e,"0.userId.uid2"))?{unifiedId2:t.id}:{}),function(){if(!u.cookiesAreEnabled())return{};var e=u.getCookie("_tfpvi");return e?{firstPartyCookieTeadsId:e}:{}}());e[0].schain&&(o.schain=e[0].schain);var s=r.gdprConsent;if(r&&s){var p="boolean"==typeof s.gdprApplies,c="string"==typeof s.consentString,f=p?function(e,r,t){var n=12;return e?function(e,r){return e&&1===r?e.hasGlobalScope||e.hasGlobalConsent:!(!e||2!==r||e.isServiceSpecific)}(r,t)&&(n=11):n=0,n}(s.gdprApplies,s.vendorData,s.apiVersion):22;o.gdpr_iab={consent:c?s.consentString:"",status:f,apiVersion:s.apiVersion}}return r&&r.uspConsent&&(o.us_privacy=r.uspConsent),{method:"POST",url:"https://a.teads.tv/hb/bid-request",data:JSON.stringify(o)}},interpretResponse:function(e,r){var t=[];return(e=e.body).responses&&e.responses.forEach((function(e){var r={cpm:e.cpm,width:e.width,height:e.height,currency:e.currency,netRevenue:!0,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},ad:e.ad,requestId:e.bidId,creativeId:e.creativeId,placementId:e.placementId};e.dealId&&(r.dealId=e.dealId),t.push(r)})),t}};function g(e){var r="";return e&&e.refererInfo&&e.refererInfo.referer&&(r=e.refererInfo.referer),r}function l(e){var r=e.performance||e.webkitPerformance||e.msPerformance||e.mozPerformance,t=r&&"function"==typeof r.getEntriesByType&&"[object Function]"===Object.prototype.toString.call(r.getEntriesByType)&&r.getEntriesByType("navigation")[0]&&r.getEntriesByType("navigation")[0].responseStart&&r.getEntriesByType("navigation")[0].requestStart&&r.getEntriesByType("navigation")[0].responseStart>0&&r.getEntriesByType("navigation")[0].requestStart>0&&Math.round(r.getEntriesByType("navigation")[0].responseStart-r.getEntriesByType("navigation")[0].requestStart);if(t)return t.toString();var n=r&&r.timing.responseStart&&r.timing.requestStart&&r.timing.responseStart>0&&r.timing.requestStart>0&&r.timing.responseStart-r.timing.requestStart;return n?n.toString():""}function y(e){var r={},t=(0,n.getValue)(e.params,"placementId"),a=(0,n.getValue)(e.params,"pageId"),o=(0,i.Z)(e,"ortb2Imp.ext.gpid");return r.sizes=function(e){return(0,n.parseSizesInput)(function(e){var r=(0,i.Z)(e,"mediaTypes.video.playerSize"),t=(0,i.Z)(e,"mediaTypes.video.sizes"),a=(0,i.Z)(e,"mediaTypes.banner.sizes");return(0,n.isArray)(a)||(0,n.isArray)(r)||(0,n.isArray)(t)?[a,t,r].reduce((function(e,r){return(0,n.isArray)(r)&&((0,n.isArray)(r[0])?r.forEach((function(r){e.push(r)})):e.push(r)),e}),[]):e.sizes}(e))}(e),r.bidId=(0,n.getBidIdParameter)("bidId",e),r.bidderRequestId=(0,n.getBidIdParameter)("bidderRequestId",e),r.placementId=parseInt(t,10),r.pageId=parseInt(a,10),r.adUnitCode=(0,n.getBidIdParameter)("adUnitCode",e),r.auctionId=(0,n.getBidIdParameter)("auctionId",e),r.transactionId=(0,n.getBidIdParameter)("transactionId",e),o&&(r.gpid=o),r}function v(e){return parseInt(e)>0}(0,a.registerBidder)(f),window.pbjs.installedModules.push("teadsBidAdapter")}},function(e){e(e.s=8973)}]); pbjs.processQueue(); !function(){"use strict";var e={709:function(){var e=e||{};e.que=e.que||[]},427:function(){window.innerWidth>768&&(window.adUnits=[{code:"banner-1",mediaTypes:{banner:{sizes:[[728,90],[970,90],[970,250],[620,366]]}},bids:[{bidder:"concert",params:{partnerId:"phillymagazine"}},{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"teads",params:{placementId:110831,pageId:102392}}]},{code:"banner-2",mediaTypes:{banner:{sizes:[[728,90],[970,90],[970,250],[620,366]]}},bids:[{bidder:"concert",params:{partnerId:"phillymagazine"}},{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"teads",params:{placementId:110831,pageId:102392}}]},{code:"rail-1",mediaTypes:{banner:{sizes:[[300,250],[300,600],[620,366]]}},bids:[{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"concert",params:{partnerId:"phillymagazine"}}]},{code:"rail-2",mediaTypes:{banner:{sizes:[[300,250],[300,600],[620,366]]}},bids:[{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"concert",params:{partnerId:"phillymagazine"}}]},{code:"rail-3",mediaTypes:{banner:{sizes:[[300,250],[300,600],[620,366]]}},bids:[{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"concert",params:{partnerId:"phillymagazine"}}]}]),window.innerWidth>768&&"true"===window.mcAds.hasBannerThree&&window.adUnits.push({code:"banner-3",mediaTypes:{banner:{sizes:[[728,90],[970,90],[970,250],[620,366]]}},bids:[{bidder:"concert",params:{partnerId:"phillymagazine"}},{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"teads",params:{placementId:110831,pageId:102392}}]})},591:function(){window.innerWidth<=768&&(window.adUnits=[{code:"banner-1",mediaTypes:{banner:{sizes:[[320,50],[320,100]]}},bids:[{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"teads",params:{placementId:142225,pageId:129517}}]},{code:"banner-2",mediaTypes:{banner:{sizes:[[320,50],[320,100],[300,250],[325,204],[325,508],[325,204]]}},bids:[{bidder:"teads",params:{placementId:142225,pageId:129517}},{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"concert",params:{partnerId:"phillymagazine"}}]},{code:"rail-1",mediaTypes:{banner:{sizes:[[300,250],[300,600],[320,100],[320,50],[325,204],[325,508],[325,204]]}},bids:[{bidder:"concert",params:{partnerId:"phillymagazine"}},{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}}]},{code:"rail-2",mediaTypes:{banner:{sizes:[[300,250],[300,600],[320,100],[320,50],[325,204],[325,508],[325,204]]}},bids:[{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"concert",params:{partnerId:"phillymagazine"}}]},{code:"rail-3",mediaTypes:{banner:{sizes:[[300,250],[300,600],[320,100],[320,50],[325,204],[325,508],[325,204]]}},bids:[{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}},{bidder:"concert",params:{partnerId:"phillymagazine"}}]},{code:"mobile_sticky",mediaTypes:{banner:{sizes:[[320,50],[325,204],[1,2]]}},bids:[{bidder:"concert",params:{partnerId:"phillymagazine"}},{bidder:"sharethrough",params:{pkey:"kmKwq9T16wzAfZvjzoFhDLco"}}]}])}},r={};function a(d){var i=r[d];if(void 0!==i)return i.exports;var n=r[d]={exports:{}};return e[d](n,n.exports,a),n.exports}a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,{a:r}),r},a.d=function(e,r){for(var d in r)a.o(r,d)&&!a.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:r[d]})},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a(427),a(591),a(709)}(); /* ]]> */ </script> <script type="text/javascript" src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" id="gpt-js" async></script> <script type="text/javascript" id="gpt-js-after"> /* <![CDATA[ */ !function(){var e={909:function(){window.googletag=window.googletag||{},googletag.cmd=googletag.cmd||[],googletag.cmd.push((function(){mcAds.mapping={},mcAds.mapping.bannerOneMapping=googletag.sizeMapping().addSize([0,0],[[320,100],[320,50]]).addSize([768,200],[[728,90]]).addSize([1050,200],[[728,90],[970,90],[970,250]]).build(),mcAds.mapping.bannerMapping=googletag.sizeMapping().addSize([0,0],[[300,250],[320,100],[320,50]]).addSize([768,200],[[728,90]]).addSize([1050,200],[[728,90],[970,90],[970,250]]).build(),mcAds.mapping.railMapping=googletag.sizeMapping().addSize([0,0],[[300,250],[320,100],[320,50]]).addSize([768,200],[[300,250],[300,600]]).addSize([1050,200],[[300,250],[300,600]]).build(),mcAds.mapping.toprailMapping=googletag.sizeMapping().addSize([0,0],[[300,150],[300,90]]).addSize([768,200],[[300,150],[300,90]]).addSize([1050,200],[[300,150],[300,90]]).build(),mcAds.mapping.inlineMapping=googletag.sizeMapping().addSize([0,0],[[300,250],[320,50],[320,100]]).addSize([768,200],[[300,250],[320,50],[320,100]]).addSize([1050,200],[[300,250],[320,50],[320,100]]).build(),mcAds.mapping.searchMapping=googletag.sizeMapping().addSize([0,0],[[300,250],[320,100],[320,50]]).addSize([768,200],[[728,90],[300,250]]).addSize([1050,200],[[728,90],[970,90],[970,250],[300,250]]).build(),mcAds.mapping.adrevealMapping=googletag.sizeMapping().addSize([0,0],[[360,585]]).addSize([650,200],[[780,300]]).addSize([1050,200],[[1300,500]]).build()}))},786:function(){const e=parseInt(mcAds.prebidTimeout,10)||1e3,t=parseInt(mcAds.prebidFailsafeTimeout,10)||3e3;window.pbjs=window.pbjs||{},pbjs.que=pbjs.que||[],pbjs.que.push((function(){if("undefined"===typeof window.adUnits)return void(mcAds.debug&&console.log("Aborting prebid, window.adUnits is undefined."));const t=[];for(let e=window.adUnits.length-1;e>=0;e--)window.mcAds.slots.hasOwnProperty(window.adUnits[e].code)&&window.mcAds.slots[window.adUnits[e].code].hasOwnProperty("isPrebid")&&"true"===window.mcAds.slots[window.adUnits[e].code].isPrebid&&t.push(window.adUnits[e]);0!==t.length?(pbjs.addAdUnits(t),pbjs.requestBids({bidsBackHandler:i,timeout:e})):mcAds.debug&&console.log("Aborting prebid, filteredAdUnits is empty.")}));var i=function(){pbjs.adserverRequestSent||(pbjs.adserverRequestSent=!0,googletag.cmd.push((function(){pbjs.que.push((function(){window.gtpMaybeMoveRailOneSlot(),pbjs.setTargetingForGPTAsync();for(const e in mcAds.slotsFired)-1!==mcAds.slotsPrebid.indexOf(e)&&(googletag.display(e),mcAds.slots[e].isLazy&&"true"===mcAds.slots[e].isLazy||(googletag.pubads().refresh([mcAds.slotsFired[e]]),mcAds.debug&&console.log("Initial refresh for prebid slot:",e)))}))})))};setTimeout((function(){i()}),t)},90:function(){gtpMaybeMoveRailOneSlot=function(){if(!(window.innerWidth<=768)&&"undefined"!==typeof mcAds&&mcAds.isSingle){var e=document.querySelector(".sidebar");if(e){var t=document.getElementById("rail-1");if(t){var i=e.children.length;e.insertBefore(t,e.children[i]),window.stickyAds&&window.stickyAds.update()}}}},gptDirectoryMaybeRepositionBannerSlot=function(){if(!(window.innerWidth<=768)&&"undefined"!==typeof mcgdVars&&"isSingle"in mcgdVars&&"true"===mcgdVars.isSingle){var e=document.getElementById("banner-1"),t=document.getElementById("geodir-wrapper-content").querySelector(".listing-profile");e&&t&&t.insertBefore(e,t.lastChild.nextSibling)}}},547:function(){window.googletag=window.googletag||{},googletag.cmd=googletag.cmd||[],googletag.cmd.push((function(){if(mcAds.slots){window.gptDirectoryMaybeRepositionBannerSlot();var e=window.innerWidth<=768;if("targeting"in mcAds&&"object"===typeof mcAds.targeting&&null!==mcAds.targeting)for(var t in mcAds.targeting)googletag.pubads().setTargeting(t,mcAds.targeting[t]);for(var i in mcAds.slots){var s;if((!("isMobile"in mcAds.slots[i])||!mcAds.slots[i].isMobile||e)&&((!("isDesktop"in mcAds.slots[i]&&mcAds.slots[i].isDesktop&&e)||document.getElementById("bestof-nav-wrapper"))&&document.getElementById(i))){if("outOfPage"in mcAds.slots[i]&&mcAds.slots[i].outOfPage){var d=mcAds.slots[i].id;"outOfPageFormat"in mcAds.slots[i]&&(d=googletag.enums.OutOfPageFormat[mcAds.slots[i].outOfPageFormat]),s=googletag.defineOutOfPageSlot(mcAds.gptNetworkID+mcAds.slots[i].adUnit,d)}else{var o=mcAds.slots[i].adSizes;0===o.lastIndexOf("[",0)&&(o=JSON.parse(o)),s=googletag.defineSlot(mcAds.gptNetworkID+mcAds.slots[i].adUnit,o,mcAds.slots[i].id)}if("mapping"in mcAds&&"mapping"in mcAds.slots[i]&&mcAds.slots[i].mapping in mcAds.mapping&&s.defineSizeMapping(mcAds.mapping[mcAds.slots[i].mapping]),"targeting"in mcAds.slots[i]&&"object"===typeof mcAds.slots[i].targeting&&null!==mcAds.slots[i].targeting)for(var n in mcAds.slots[i].targeting)s.setTargeting(n,mcAds.slots[i].targeting[n]);s.addService(googletag.pubads()),"doPrebid"in mcAds&&"true"===mcAds.doPrebid&&"isPrebid"in mcAds.slots[i]&&"true"===mcAds.slots[i].isPrebid&&mcAds.slotsPrebid.push(mcAds.slots[i].id),mcAds.slotsFired[mcAds.slots[i].id]=s}}for(var a in googletag.pubads().enableAsyncRendering(),googletag.pubads().collapseEmptyDivs(),googletag.pubads().disableInitialLoad(),googletag.pubads().enableSingleRequest(),googletag.enableServices(),mcAds.slotsFired)-1===mcAds.slotsPrebid.indexOf(a)&&("undefined"===typeof mcAds.slots[a].outOfPageFormat&&googletag.display(a),mcAds.slots[a].isLazy&&"true"===mcAds.slots[a].isLazy||googletag.pubads().refresh([mcAds.slotsFired[a]]));document.addEventListener("lazybeforeunveil",(function(e){var t=e.target.getAttribute("data-ad");t&&mcAds.slotsFired[t]&&(googletag.pubads().refresh([mcAds.slotsFired[t]]),mcAds.debug&&console.log("Initial refreshing for lazy loaded slot:",t))})),googletag.pubads().addEventListener("slotRenderEnded",(function(t){var i=t.slot.getSlotElementId();t.isEmpty||(mcAds.debug&&console.log("Calling stickyAds.update() after slotRenderEnded:",i),window.stickyAds&&window.stickyAds.update());var s=String(t.size);if(!t.isEmpty&&"1,1"===s&&["banner-1","banner-3","adslot_0","adslot_1","adslot_2","native_related","rail-1","rail-2","rail-3","toprailsponsor-1"].indexOf(i)){var d=document.getElementById(i);if(d)if("banner-1"===i&&"true"===mcAds.isGeodir)d.style.visibility="hidden";else document.getElementById("bestof-nav-wrapper")||(d.style.height="1px",d.style.overflow="hidden",d.style.marginTop="-8px")}if(!t.isEmpty&&"ad-reveal"===i){document.body.classList.add("has-reveal");var o=document.getElementById("ad-reveal"),n=o.clientHeight,a=document.getElementsByTagName("body")[0],l=document.body,g=document.documentElement,r=Math.max(l.scrollHeight,l.offsetHeight,g.clientHeight,g.scrollHeight,g.offsetHeight),c=document.getElementById("under-reveal"),p=document.getElementById("wpadminbar");p&&(p.style.position="absolute",p.style.top=0),c.style.height=r+"px";var m=n,u=(m-0)/60,f=0,b=!1,A=setInterval((function(){if((f+=u)>=m)return clearInterval(A),a.style.marginTop=m+"px",c.style.top=m+"px",p&&(p.style.top=m+"px"),b=!0,void("undefined"!==window.stickyHeader&&window.mcStickyHeader.update());a.style.marginTop=f+"px",c.style.top=f+"px",p&&(p.style.top=f+"px")}),1e3/60);document.addEventListener("scroll",(function(t){if(b)if(window.pageYOffset>n){var i=document.getElementById("js-mobile-sticky");e&&(i.style.display="block"),p&&(p.style.position="fixed",p.style.top=0),o.style.visibility="hidden"}else p&&(p.style.position="absolute",p.style.top=m+"px"),o.style.visibility="visible"}))}}))}})),document.addEventListener("lazybeforeunveil",(function(e){var t=e.target.getAttribute("data-ad");t&&mcAds.slotsPrebid.indexOf(t)&&(mcAds.slots[t].isLazy=!1,mcAds.debug&&console.log("Ad slot unveiled early:",t))}))},193:function(){window.addEventListener("message",(function(e){if("initdfp"===e.data){if(!e.source)return;var t=window.innerWidth||document.body.clientWidth,i="tiny";t>=1400?i="x-large":t>=1024?i="large":t>=970?i="fullmenu":t>=768?i="medium":t>=560?i="small-medium":t>=320&&(i="small");var s="breakpoint:"+i+"-mc";e.source.postMessage(s,"*")}}),!1)}},t={};function i(s){var d=t[s];if(void 0!==d)return d.exports;var o=t[s]={exports:{}};return e[s](o,o.exports,i),o.exports}i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},i.d=function(e,t){for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";i(90),i(909),i(547),i(786),i(193)}()}(); /* ]]> */ </script> <script type="text/javascript" src="https://static.criteo.net/js/ld/publishertag.js?ver=6.4.3" id="criteo-js" async></script> <script type="text/javascript" src="https://s.ntv.io/serve/load.js" id="nativo-tracking-js" async></script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/themes/metrocorp-phillymag/countdown-clock/countdown.js?ver=0.4.37" id="phillymag-countdown-js-js" async></script> <link rel="https://api.w.org/" href="https://www.phillymag.com/wp-json/"><link rel="alternate" type="application/json" href="https://www.phillymag.com/wp-json/wp/v2/pages/4031020"><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.phillymag.com/xmlrpc.php?rsd"> <meta name="generator" content="WordPress 6.4.3"> <link rel="shortlink" href="https://www.phillymag.com/?p=4031020"> <meta property="og:published_time" content="2024-01-30T13:30:10+00:00"> <meta property="og:modified_time" content="2024-01-31T01:20:45+00:00"> <link rel="preload" href="https://www.phillymag.com/wp-content/themes/metrocorp/dist/fonts/noetext-regular-v11-woff-eot/Noe-Text-Regular.woff" as="font" type="font/woff" crossorigin> <link rel="preload" href="https://www.phillymag.com/wp-content/themes/metrocorp/dist/fonts/noetext-regularitalic-v11-woff-eot/Noe-Text-Regular-Italic.woff" as="font" type="font/woff" crossorigin> <link rel="preload" href="https://www.phillymag.com/wp-content/themes/metrocorp/dist/fonts/noetext-semibold-v11-woff-eot/Noe-Text-Semibold.woff" as="font" type="font/woff" crossorigin> <link rel="preload" href="https://www.phillymag.com/wp-content/themes/metrocorp/dist/fonts/noetext-semibolditalic-v11-woff-eot/Noe-Text-Semibold-Italic.woff" as="font" type="font/woff" crossorigin> <link rel="preload" href="https://cdn10.phillymag.com/wp-content/themes/metrocorp/dist/fonts/TypeTrustWebFonts17080803686/heroiccondweb-bold.ttf" as="font" type="font/ttf" crossorigin> <script type="application/ld+json">{ "@context": "http:\/\/schema.org", "@type": "NewsArticle", "publisher": { "@type": "Organization", "name": "Philadelphia Magazine", "logo": { "@type": "ImageObject", "url": "https:\/\/www.phillymag.com\/wp-content\/themes\/metrocorp-phillymag\/images\/logo-philadelphia.png" } }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https:\/\/www.phillymag.com\/foobooz\/50-best-restaurants\/" }, "headline": "50 Best Restaurants in Philadelphia", "datePublished": "2024-01-30T08:30:10-05:00", "dateModified": "2024-01-30T20:20:45-05:00", "author": [ { "@type": "Person", "name": "Kae Lani Palmisano" }, { "@type": "Person", "name": "Regan Fletcher Stephens" }, { "@type": "Person", "name": "Jason Sheehan" }, { "@type": "Person", "name": "Maddy Sweitzer-Lamm\u00e9" } ], "image": { "@type": "ImageObject", "url": "https:\/\/www.phillymag.com\/wp-content\/uploads\/sites\/3\/2024\/01\/900-50-best-24.jpg", "height": 600, "width": 900 }, "articleSection": "Guides" }</script><meta name="google-site-verification" content="jaT6k5odH6wQbrXb-WKQeHiEFFkfePsGXSELOChSybY"><link rel="icon" href="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2017/10/cropped-phillymag-favicon-32x32.png" sizes="32x32"> <link rel="icon" href="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2017/10/cropped-phillymag-favicon-192x192.png" sizes="192x192"> <link rel="apple-touch-icon" href="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2017/10/cropped-phillymag-favicon-180x180.png"> <meta name="msapplication-TileImage" content="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2017/10/cropped-phillymag-favicon-270x270.png"> <script>dataLayer = [{"post_id":4031020,"content_type":"blog","category":"guides","author":"Regan Fletcher Stephens"}];gtmLoaded=true;</script><!-- Google Tag Manager --> <noscript> &lt;iframe src="//www.googletagmanager.com/ns.html?id=GTM-PLKVN8" height="0" width="0" style="display:none;visibility:hidden"&gt;</noscript> <script> window.dataLayer = window.dataLayer || []; if ( typeof dataLayer[0].gaReferer === 'undefined' ) { var referrer = document.referrer, siteURL = window.location.origin; if ( ! referrer || referrer.indexOf( siteURL ) === 0 ) { dataLayer[0].gaReferer = null; } else { dataLayer[0].gaReferer = referrer; } } dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); </script> <script async type="text/javascript" src="https://www.googletagmanager.com/gtm.js?id=GTM-PLKVN8"></script><!-- End Google Tag Manager --> <!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '907137196060410'); fbq('track', 'PageView'); </script> <noscript>&lt;img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=907137196060410&amp;amp;ev=PageView&amp;amp;noscript=1"&gt;</noscript> <!-- End Facebook Pixel Code --> <!-- Facebook --> <script> (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> <!-- End Facebook Tag --> <!-- Start of HubSpot Embed Code --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/510637.js"></script> <!-- End of HubSpot Embed Code --> <!-- Start of Teads Embed Code --> <script async src="https://a.teads.tv/analytics/tag.js"></script> <script> window.teads_analytics = window.teads_analytics || {}; window.teads_analytics.analytics_tag_id = "PUB_14921"; window.teads_analytics.share = window.teads_analytics.share || function() { (window.teads_analytics.shared_data = window.teads_analytics.shared_data || []).push(arguments); }; </script> <!-- End of Teads Embed Code --> <script type="text/javascript"> _linkedin_partner_id = "1153130"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script><script type="text/javascript"> (function(){var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(); </script> <noscript> &lt;img height="1" width="1" style="display:none;" alt="" src="https://dc.ads.linkedin.com/collect/?pid=1153130&amp;amp;fmt=gif"&gt; </noscript> </head> <bod |
| 25 |
Error
On line 258, column 145 > </head> <body class="page-template page-template-template-full-width page-template-template-full-width-php page page-id-4031020 current-site-phillymag"> < |
| 26 |
Error
On line 958, column 88 hillymag"> <div id="ad-reveal" class="gpt-ad"></div><div id="under-reveal"></div><div class="header-navigation-spacer"></div> <div class="header-navigation js-header-menu-full" id="js-header-navigation"> <div class="container header-navigation-inner"> <div class="navigation-logo"> <a href="//www.phillymag.com"> <svg class="mc-icon phillymag-logo" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-logo"></use></svg> </a> </div> <button id="js-mobile-menu-toggle" class="mobile-menu-toggle" aria-hidden="true"> <svg class="mc-icon hamburger" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-hamburger"></use></svg> <svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-close"></use></svg> </button> <div class="header-menu-wrapper" id="js-header-navigation-wrapper"> <div class="header-menu"><ul id="menu-primary-menu" class="menu-header-main"><li id="menu-item-3441760" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-3441760"><a href="/find-it-philly-search/">Find It/Philly</a> <ul class="sub-menu"> <li id="menu-item-3441764" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441764"><a href="/find-a-doctor/">Doctors</a></li> <li id="menu-item-3441765" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441765"><a href="/dentists/">Dentists</a></li> <li id="menu-item-3556438" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3556438"><a href="/home-design/">Home Design Experts</a></li> <li id="menu-item-3441767" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441767"><a href="/senior-living/">Senior Living</a></li> <li id="menu-item-3441776" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441776"><a href="/weddings/">Wedding Experts</a></li> <li id="menu-item-3570068" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570068"><a href="/real-estate-agents/">Real Estate Agents</a></li> <li id="menu-item-3869015" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869015"><a href="/private-schools">Private Schools</a></li> <li id="menu-item-3869012" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869012"><a href="/mortgage-lenders">Mortgage Professionals</a></li> </ul> </li> <li id="menu-item-3357928" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357928"><a href="https://www.phillymag.com/news">City Life</a> <ul class="sub-menu"> <li id="menu-item-3701551" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3701551"><a href="https://www.phillymag.com/news">The Latest</a></li> </ul> </li> <li id="menu-item-3357931" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357931"><a href="https://www.phillymag.com/foobooz">Restaurants</a> <ul class="sub-menu"> <li id="menu-item-3358386" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358386"><a href="https://www.phillymag.com/foobooz">Foobooz</a></li> <li id="menu-item-3358357" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358357"><a href="https://www.phillymag.com/foobooz/50-best-restaurants/">50 Best Restaurants</a></li> <li id="menu-item-3357976" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357976"><a href="https://www.phillymag.com/restaurant-finder/">Restaurant Finder</a></li> <li id="menu-item-3358644" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358644"><a href="https://www.phillymag.com/foobooz/philadelphia-restaurant-jobs/">Jobs</a></li> </ul> </li> <li id="menu-item-3357934" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357934"><a href="https://www.phillymag.com/be-well-philly">Health</a> <ul class="sub-menu"> <li id="menu-item-3357978" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357978"><a href="https://www.phillymag.com/be-well-philly">Be Well Philly</a></li> <li id="menu-item-3357983" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357983"><a href="https://www.phillymag.com/dentists/">Find a Dentist</a></li> <li id="menu-item-3358174" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358174"><a href="https://www.phillymag.com/find-a-doctor/">Find a Doctor</a></li> <li id="menu-item-3357984" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357984"><a href="https://www.phillymag.com/senior-living/">Senior Living</a></li> </ul> </li> <li id="menu-item-3357987" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357987"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a> <ul class="sub-menu"> <li id="menu-item-3358017" class="hide-on-desktop menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358017"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a></li> </ul> </li> <li id="menu-item-3357997" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357997"><a href="https://www.phillymag.com/property">Real Estate &amp; Home</a> <ul class="sub-menu"> <li id="menu-item-3357998" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357998"><a href="https://www.phillymag.com/property">Properties &amp; News</a></li> <li id="menu-item-3358019" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358019"><a href="/home-design/">Find a Home &amp; Design Pro</a></li> <li id="menu-item-3570077" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570077"><a href="/real-estate-agents/">Find a Real Estate Agent</a></li> <li id="menu-item-3870342" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3870342"><a href="/mortgage-lenders">Find a Mortgage Professional</a></li> </ul> </li> <li id="menu-item-3358000" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358000"><a href="https://www.phillymag.com/things-to-do">Things To Do</a> <ul class="sub-menu"> <li id="menu-item-3357999" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357999"><a href="https://www.phillymag.com/things-to-do">Events in Philly</a></li> <li id="menu-item-3358002" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358002"><a href="https://www.phillymag.com/events">Philly Mag Events</a></li> </ul> </li> <li id="menu-item-3358004" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358004"><a href="https://www.phillymag.com/philadelphia-wedding">Wedding</a> <ul class="sub-menu"> <li id="menu-item-3358006" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358006"><a href="https://www.phillymag.com/philadelphia-wedding">Guides &amp; Advice</a></li> <li id="menu-item-3358022" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358022"><a href="https://www.phillymag.com/weddings/">Find a Wedding Expert</a></li> <li id="menu-item-4031702" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-4031702"><a href="/bubblybrunch">Bubbly Brunch Event</a></li> </ul> </li> <li id="menu-item-3358008" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358008"><a href="https://www.phillymag.com/best-of-philly/">Best of Philly</a></li> </ul></div> <div class="header-tablet-elements"> <div class="header-subscribe"> <div class="thin-line"> <span class="screen-reader-text">Subscribe</span> <svg class="mc-icon phillymag-subscribe" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-subscribe"></use></svg> </div> <ul id="menu-sitenav_left" class="menu-header-subscribe js-menu-zephr"><li id="menu-item-921051" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-921051"><a href="/all-access/">All Access</a></li> <li id="menu-item-3821020" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3821020"><a href="/newsletters">Newsletters</a></li> <li id="menu-item-3703713" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3703713"><a href="/loginphilly">Sign In</a></li> </ul> </div> <div class="header-social"> <div class="thin-line"> <span class="screen-reader-text">Follow</span> <svg class="mc-icon phillymag-follow" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-follow"></use></svg> </div> <ul id="menu-social-menu" class="menu-header-social"><li id="menu-item-3357935" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357935"><a target="_blank" rel="noopener" href="https://www.facebook.com/foobooz"><span class="screen-reader-text">Facebook</span></a></li> <li id="menu-item-3357936" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357936"><a target="_blank" rel="noopener" href="https://www.instagram.com/foobooz/?hl=en/"><span class="screen-reader-text">Instagram</span></a></li> </ul> </div> </div> </div> <div class="header-search"> <div class="search-form-wrapper" id="js-search-form-wrapper" aria-hidden="true"> <form role="search" method="get" class="search-form" action="https://www.phillymag.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search …" value="" name="s" title="Search for:"> </label> <button type="submit"> <svg class="mc-icon icon-search" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-icon-search"></use></svg> <span class="screen-reader-text">Search</span> </button> </form> </div> <button id="js-toggle-search" aria-expanded="false" aria-controls="js-search-form-wrapper"> <svg class="mc-icon icon-search" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-icon-search"></use></svg> <svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-close"></use></svg> </button> </div> </div> </div> <header class="site-header" role="banner" id="js-header"> <div class="site-header-inner container"> <div class="header-social"> <div class="thin-line"> <span class="screen-reader-text">Follow</span> <svg class="mc-icon phillymag-follow" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-follow"></use></svg> </div> <ul id="menu-social-menu-1" class="menu-header-social"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357935"><a target="_blank" rel="noopener" href="https://www.facebook.com/foobooz"><span class="screen-reader-text">Facebook</span></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357936"><a target="_blank" rel="noopener" href="https://www.instagram.com/foobooz/?hl=en/"><span class="screen-reader-text">Instagram</span></a></li> </ul> </div> <div class="header-logo"> <div itemscope itemtype="https://schema.org/Organization"> <a href="https://www.phillymag.com/foobooz"> <svg class="mc-icon phillymag-section-restaurants-branded" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-section-restaurants-branded"></use></svg> <span class="screen-reader-text">Philadelphia Magazine</span> </a> <span class="section-front-tagline"></span></div> </div> <div class="header-subscribe"> <div class="thin-line"> <span class="screen-reader-text">Subscribe</span> <svg class="mc-icon phillymag-subscribe" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-subscribe"></use></svg> </div> <ul id="menu-sitenav_left-1" class="menu-header-subscribe js-menu-zephr"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-921051"><a href="/all-access/">All Access</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3821020"><a href="/newsletters">Newsletters</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3703713"><a href="/loginphilly">Sign In</a></li> </ul> </div> </div> </header> <div class="header-navigation-secondary container"><ul id="menu-primary-menu-1" class="menu-topics"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-3441760"><a href="/find-it-philly-search/">Find It/Philly</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441764"><a href="/find-a-doctor/">Doctors</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441765"><a href="/dentists/">Dentists</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3556438"><a href="/home-design/">Home Design Experts</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441767"><a href="/senior-living/">Senior Living</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441776"><a href="/weddings/">Wedding Experts</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570068"><a href="/real-estate-agents/">Real Estate Agents</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869015"><a href="/private-schools">Private Schools</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869012"><a href="/mortgage-lenders">Mortgage Professionals</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357928"><a href="https://www.phillymag.com/news">City Life</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3701551"><a href="https://www.phillymag.com/news">The Latest</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357931"><a href="https://www.phillymag.com/foobooz">Restaurants</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358386"><a href="https://www.phillymag.com/foobooz">Foobooz</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358357"><a href="https://www.phillymag.com/foobooz/50-best-restaurants/">50 Best Restaurants</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357976"><a href="https://www.phillymag.com/restaurant-finder/">Restaurant Finder</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358644"><a href="https://www.phillymag.com/foobooz/philadelphia-restaurant-jobs/">Jobs</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357934"><a href="https://www.phillymag.com/be-well-philly">Health</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357978"><a href="https://www.phillymag.com/be-well-philly">Be Well Philly</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357983"><a href="https://www.phillymag.com/dentists/">Find a Dentist</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358174"><a href="https://www.phillymag.com/find-a-doctor/">Find a Doctor</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357984"><a href="https://www.phillymag.com/senior-living/">Senior Living</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357987"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a> <ul class="sub-menu"> <li class="hide-on-desktop menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358017"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357997"><a href="https://www.phillymag.com/property">Real Estate &amp; Home</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357998"><a href="https://www.phillymag.com/property">Properties &amp; News</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358019"><a href="/home-design/">Find a Home &amp; Design Pro</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570077"><a href="/real-estate-agents/">Find a Real Estate Agent</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3870342"><a href="/mortgage-lenders">Find a Mortgage Professional</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358000"><a href="https://www.phillymag.com/things-to-do">Things To Do</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357999"><a href="https://www.phillymag.com/things-to-do">Events in Philly</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358002"><a href="https://www.phillymag.com/events">Philly Mag Events</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358004"><a href="https://www.phillymag.com/philadelphia-wedding">Wedding</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358006"><a href="https://www.phillymag.com/philadelphia-wedding">Guides &amp; Advice</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358022"><a href="https://www.phillymag.com/weddings/">Find a Wedding Expert</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-4031702"><a href="/bubblybrunch">Bubbly Brunch Event</a></li> </ul> </li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358008"><a href="https://www.phillymag.com/best-of-philly/">Best of Philly</a></li> </ul></div> <div style="width:1px;height:1px;margin:-1px 0 0 0;padding:0;display:block;"> </div> <div id="teads-video-oop" class="gpt-ad out-of-page"></div><div id="bottom-anchor" class="gpt-ad out-of-page"></div> <div id="banner-1" class="gpt-ad advertisement container"></div> <div class="container" role="main"> <div class="list-post" style="display:none"> <a href="https://www.phillymag.com/scrapertrap" class="post-image-link"><img width="400" height="250" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" class="attachment-image-list size-image-list wp-post-image" alt=""></a> <div class="list-post-card"> <a href="https://www.phillymag.com/scrapertrap" class="post-slug">I'm a scraper</a> <div class="post-title"> <a href="https://www.phillymag.com/scrapertrap">This search result is here to prevent scraping</a> </div> <div class="post-excerpt"> <p>If you're a human and see this, please ignore it. If you're a scraper, please click the link below :-) Note that clicking the link below will block access to this site for 24 hours.</p> </div> <span class="byline-wrapper">By <a href="https://www.phillymag.com/scrapertrap" class="byline">I'm a scraper</a></span> </div> </div> <div class="wysiwyg"> <h1 class="post-title">50 Best Restaurants in Philadelphia</h1> <div class="byline-wrapper">By <span itemprop="author"><a href="https://www.phillymag.com/author/kae-lani-palmisano/" class="byline" itemprop="url"><span itemprop="name">Kae Lani Palmisano</span></a></span>, <span itemprop="author"><a href="https://www.phillymag.com/author/regan-fletcher-stephens/" class="byline" itemprop="url"><span itemprop="name">Regan Fletcher Stephens</span></a></span>, <span itemprop="author"><a href="https://www.phillymag.com/author/jason-sheehan/" class="byline" itemprop="url"><span itemprop="name">Jason Sheehan</span></a></span>, and <span itemprop="author"><a href="https://www.phillymag.com/author/maddy-sweitzer-lamme/" class="byline" itemprop="url"><span itemprop="name">Maddy Sweitzer-Lammé</span></a></span><span id="byline-dot">·</span></div> <style type="text/css"> .page-template .wysiwyg .post-title { text-align: center; padding-top: 50px; } .shorenumbers { color: #d2232a; font-size: 50px; font-weight: 100; } .graphpadding { padding: 0 70px; } .wysiwyg p { max-width: 750px; margin: 25px auto; } .wysiwyg h2 { max-width: 750px; margin: 40px auto 20px; text-align: center; line-height: 50px; } .wysiwyg h3 { max-width: 750px; margin: 40px auto 40px; } .wysiwyg h4 { max-width: 750px; margin: 40px auto 40px; } .wysiwyg .wp-caption-text { width: 100%; max-width: 100%; } hr { max-width: 750px; } @media only screen and (max-width: 700px) { .shorenumbers {font-size: 36px;} .break {display: none;} .null.left{margin-left:0px;} .null.right{margin-right:60px;} .wysiwyg h2 { margin: 30px auto 10px; text-align: center; line-height: 40px; } .wysiwyg p {margin: 10px auto 20px;} } @media only screen and (min-width: 700px) { .null.left{margin-left:100px;} .null.right{margin-right:100px;} } .mbotneg15{margin-bottom:-15px;} </style> <div class="post-excerpt">Our annual list of the most intriguing, clever, unconventional — and, dare we say, groundbreaking — experiences taking Philly’s nationally celebrated dining scene to ever greater heights </div> <div id="attachment_4031900" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031900" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-960x640.jpg" alt="50 best restaurants philadelphia Friday Saturday Sunday" width="960" height="640" class="size-large wp-image-4031900 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-960x640.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-605x403.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-300x200.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-115x77.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-600x400.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031900" class="wp-caption-text">The downstairs bar at Friday Saturday­ Sunday / Photography by Michael Persico</p></div> <p>The quest for “the best” restaurants is never-ending. But what’s most exciting about the search is that everyone’s formula is different.</p> <p>For some people, the best restaurant is the white-linen fine-dining establishment where Ossetra caviar finds its way atop nearly every dish. For others, it’s the sushi spot where they had their first date or the corner restaurant that perfectly captures their culture’s cuisine despite being thousands of miles from home. All definitions are valid. And over the years, as I’ve collected stories of what “the best” means to people, I’ve expanded my own ideas of what it could mean. </p> <p>Restaurants create their own versions of “best” by demonstrating a command of their cuisines, experimenting with their craft, and developing menus that push the boundaries of what we’d expect. But beyond the food, the roles these restaurants play in our lives — what they mean to us as individuals and as a community — are among the most important factors. </p> <p>Over the past few years, restaurants had to adapt to unprecedented circumstances. We saw a rise of pop-ups, collaborations, chef-driven markets, takeout offerings and more. And our 50 Best Restaurants list adapted, too, highlighting these outstanding initiatives. This year, to capture how much our dining scene has expanded beyond just restaurants, we’ve decided to expand our list as well. In addition to the 50 Best Restaurants, you’ll find 25 more dining experiences — <a href="https://www.phillymag.com/foobooz/5-best-markets/" target="_blank" rel="noopener">best markets</a>, <a href="https://www.phillymag.com/foobooz/best-chef-pop-ups-philly/" target="_blank" rel="noopener">promising pop-ups</a>, <a href="https://www.phillymag.com/foobooz/classic-philly-restaurants/" target="_blank" rel="noopener">neighborhood classics</a>, and <a href="https://www.phillymag.com/foobooz/10-best-casual-bites/" target="_blank" rel="noopener">casual bites</a> — that we needed to recognize for their unique contributions to our community. There are many ways to be the best, and all the places listed here prove it in their own amazing ways.<em> — Kae Lani Palmisano</em></p> <p></p> <div><strong><span id="top"><a href="#list">See the list at a glance here!</a></span></strong><p></p> <hr> <div id="attachment_4031901" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031901" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-960x627.jpg" alt="50 best restaurants philadelphia Friday Saturday Sunday" width="960" height="627" class="size-large wp-image-4031901 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-960x627.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-605x395.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-300x196.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-115x75.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-600x392.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031901" class="wp-caption-text">From left: A specialty cocktail; jerk-spiced quail with curried liver pâté from Friday­ Saturday Sunday.­<br></p></div> <h2><span class="shorenumbers">1. <a href="https://www.fridaysaturdaysunday.com/" target="_blank" rel="noopener">Friday Saturday Sunday</a></span></h2> <p>There are two ways to do Friday Saturday Sunday. There’s downstairs at the bar, where you can kick back a few briny oysters and an Orange Catholic cocktail in the company of regulars and destination diners — folks who have traveled just to get a taste of what constitutes an Outstanding Restaurant by James Beard’s standards. And then there’s upstairs, where the eight-course menu is a cohesive narrative of what American fine dining can be — a blend of cultural influences seamlessly presented in a paced procession of ambitious dishes that demonstrate Chad Williams’s culinary fluency. From the crudo to the sweetbreads and jerk-spiced quail with curried liver pâté all the way to the New York strip with braised oxtail, Williams takes adventurous risks that really pay off. It’s proof that fine dining can be approachable, inviting, fun and even relaxing.</p> <p><strong>Rittenhouse&nbsp;|&nbsp;New American</strong><br> <em>261 South 21st Street</em><br> <a href="https://www.fridaysaturdaysunday.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/06/01/friday-saturday-sunday-philadelphia-chef/">More about Friday Saturday Sunday</a></p> <h2><span class="shorenumbers">2. <a href="https://kalayaphilly.com/" target="_blank" rel="noopener">Kalaya</a></span></h2> <p>The transition between the original­ Kalaya and Kalaya 2.0 couldn’t have been more flawless. From day one, you’d think this old warehouse on Palmer Street was always the sleek, sexy and James Beard Award-winning­ (yes, another one; Philadelphia is just that good) Thai restaurant where the tom yum and shaw muang flower dumpling are works of art. <a href="https://www.phillymag.com/foobooz/2022/10/15/nok-suntaranon-kalaya-fishtown/">Chutatip “Nok” Suntaranon</a>’s mission has always been to be true to herself and her culture, and because of that unabashed authenticity, Philly is blessed with dishes that are difficult to find outside of Thailand. Variety is the spice of life at Kalaya. Build heat with the nua pad prik noom (stir-fried peppercorn beef), balance it out with gai yaang naa por (charcoal-grilled chicken),­ and throw in a curry for good measure. Whatever you do, don’t settle into a routine with this menu. Suntaranon is constantly bringing new and exciting options to the table, so come with an open mind and an empty stomach.</p> <p><strong>Fishtown&nbsp;|&nbsp;Thai</strong><br> <em>4 West Palmer Street</em><br> <a href="https://kalayaphilly.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/03/23/kalaya-fishtown-review/">Review</a></p> <div id="attachment_4031906" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031906" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-960x873.jpg" alt="50 best restaurants philadelphia" width="960" height="873" class="size-large wp-image-4031906 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-960x873.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-605x550.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-300x273.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-496x451.jpg 496w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-115x105.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-600x546.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031906" class="wp-caption-text">Tom yum from Kalaya</p></div> <h2><span class="shorenumbers">3. <a href="http://royalsushiandizakaya.com/" target="_blank" rel="noopener">Royal Izakaya</a></span></h2> <p>Royal Izakaya is the culmination of a lifetime dedicated to the art of sushi. Jesse Ito, the chef behind the hard-to-reserve omakase, has been honing his craft since he was 14, working alongside his father, Masaharu Ito, at Fuji in Haddonfield. The front room is where you go to hang out with friends over cocktails, chashu buns and fried karaage wings. The back room, however, is where Ito takes the stage with a 17-piece tasting menu that showcases dry-aged Spanish bluefin tuna, New Zealand salmon belly, Kumamoto oysters, and more.</p> <p><strong>Queen Village&nbsp;|&nbsp;Japanese</strong><br> <em>780 South 2nd Street</em><br> <a href="http://royalsushiandizakaya.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2022/09/22/behind-the-line-jesse-ito-royal-sushi-izakaya/">More about Royal Izakaya</a></p> <h2><span class="shorenumbers">4. <a href="https://www.herplacephilly.com/" target="_blank" rel="noopener">Her Place Supper Club</a></span></h2> <p>After all the attention, press, and rightfully earned national fawning over Amanda Shulman’s supper-club-style restaurant, you might start to feel like Her Place isn’t really Philly’s anymore. But when Shulman and her team turn down the music to introduce the night’s dinner, when they circulate through the dining room shaving truffles over the crispy-skinned chicken and present you with a crab salad under a mountain of caviar, you’ll be reminded that Philly’s sense of casual hospitality is inextricably linked to the magic of this restaurant. </p> <p><strong>Rittenhouse&nbsp;|&nbsp;New American</strong><br> <em>1740 Sansom Street</em><br> <a href="https://www.herplacephilly.com/" target="_blank" rel="noopener">Website</a><br> </p><div id="attachment_4031907" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031907" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-960x717.jpg" alt="50 best restaurants philadelphia" width="960" height="717" class="size-large wp-image-4031907 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-960x717.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-605x451.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-300x224.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-96x72.jpg 96w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-115x86.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-600x448.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031907" class="wp-caption-text">From left: A variety of tacos and chef Dionicio Jimenez at his barbacoa pit at Cantina La Martina</p></div><p></p> <h2><span class="shorenumbers">5. <a href="https://www.cantinalamartinapa.com/" target="_blank" rel="noopener">Cantina La Martina</a></span></h2> <p>Somewhere between the spicy heat of the pozole verde and the earthy huitlacoche trufa ravioli, you’ll find expressions of chef Dionicio Jiminez’s personal life story, from his Pueblo roots to his roughly two decades cooking through Philly kitchens (including Vetri). Though you can’t go wrong with anything on the menu, we implore you to stop by on weekends for the tangy barbacoa roasted in pits that Jiminez dug in the restaurant’s garden.</p> <p><strong>Kensington&nbsp;|&nbsp;Mexican</strong><br> <em>2800 D Street</em><br> <a href="https://www.cantinalamartinapa.com/" target="_blank" rel="noopener">Website</a></p> <p></p><div id="banner-2" class="gpt-ad lazyload advertisement container" data-ad="banner-2"></div><p></p> <h2><span class="shorenumbers">6. <a href="https://www.zahavrestaurant.com/" target="_blank" rel="noopener">Zahav</a></span></h2> <p>In many ways, 2023 was a banner year for Philadelphia. The Eagles won the NFC championship; both Taylor Swift and Beyoncé graced us with life-changing concerts; and Zahav — almost 16 years in and still one of the city’s toughest reservations to score — opened 56 additional seats (walk-in only, and with an à la carte menu) on a glorious new outdoor patio. That means 56 more chances each night to tuck into tangy twice-cooked eggplant, irresistibly fluffy pita, and Turkish hummus (served hot, only in the cooler months). And one more reason this is still an all-time-favorite place to eat dinner.</p> <p><strong>Society Hill&nbsp;|&nbsp;Israeli</strong><br> <em>237 St. James Place</em><br> <a href="https://www.zahavrestaurant.com/" target="_blank" rel="noopener">Website</a><br> </p><div id="attachment_4031933" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031933" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/50-best-hummus-960x1050.jpg" alt="50 best restaurants philadelphia" width="960" height="1050" class="size-large wp-image-4031933 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/50-best-hummus-960x1050.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/50-best-hummus-605x662.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/50-best-hummus-300x328.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/50-best-hummus-412x451.jpg 412w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/50-best-hummus-115x126.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/50-best-hummus-600x656.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031933" class="wp-caption-text">A spread at Zahav</p></div><p></p> <h2><span class="shorenumbers">7. <a href="https://www.groundprovisionspa.com/" target="_blank" rel="noopener">Ground Provisions</a></span></h2> <p>Some restaurants grow into greatness. Some are just born that way. Ground Provisions, the newest operation from Rich Landau and Kate Jacoby of Vedge, is the second kind. It’s a retreat of sorts, tucked away in the old Inn Keeper’s Kitchen — a combination cafe/gourmet country store/vegan restaurant with a prix-fixe menu featuring some of the most remarkable things ever done to vegetables. There are callbacks to Vedge and V Street, but most of what’s being done here is brand-new, visionary, and, like summer’s roasted peach gazpacho or an early-autumn polenta cornbread with caponata and pumpkin shoots, absolutely delicious.</p> <p><strong>West Chester&nbsp;|&nbsp;Vegan/New American</strong><br> <em>1388 Old Wilmington Pike</em><br> <a href="https://www.groundprovisionspa.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/08/16/ground-provisions-vegan-west-chester/">Review</a><br> </p><div id="attachment_4031915" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031915" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_08-960x1166.jpg" alt="" width="960" height="1166" class="size-large wp-image-4031915 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_08-960x1166.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_08-605x735.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_08-300x364.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_08-371x451.jpg 371w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_08-115x140.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_08-600x729.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031915" class="wp-caption-text">Chef Chance Anies serving diners at Tabachoy</p></div><p></p> <h2><span class="shorenumbers">8. <a href="https://www.tabachoyphilly.com/" target="_blank" rel="noopener">Tabachoy</a></span></h2> <p>Everything about Tabachoy is endearing, from its food-cart-to-brick-and-mortar origin story to the menu of comforting Filipino dishes that embody the loving nickname “Tabachoy,” Tagalog for “chubby.” It’s an intimate space, and chef-owner Chance Anies makes the meal even more personable by serving up stories with satisfyingly salty, savory, vinegar-forward delights — crispy pork belly sisig, pancit palabok with a shrimp and pork ragu, and succulent pork adobo, a recipe he got from his father. Go for date night, casual friend hangouts, birthdays, or anytime you need a treat-yourself dinner. </p> <p><strong>Bella Vista&nbsp;|&nbsp;Filipino</strong><br> <em>932 South 10th Street</em><br> <a href="https://www.tabachoyphilly.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/05/22/tabachoy-review-philly/">Review</a></p> <h2><span class="shorenumbers">9. <a href="https://www.ambraphilly.com/" target="_blank" rel="noopener">Ambra</a></span></h2> <p>There are open-concept restaurants where you can see the kitchen from your table, but when was the last time you ate inside a working kitchen? Chris D’Ambro and Marina de Oliveira’s Ambra is less a restaurant and more an immersive dinner-and-a-show event. From a little counter, you can watch D’Ambro and his team bring dishes like wild venison chop and braciole with matsutake mushroom and house-made tortellini to life, surrounded by vases of fresh-cut flowers arranged by de Oliveira. It’s an uncommonly intimate meal, and thanks to a constantly changing menu, every show is one-night-only.</p> <p><strong>Queen Village&nbsp;|&nbsp;Italian</strong><br> <em>705 South 4th Street</em><br> <a href="https://www.ambraphilly.com/" target="_blank" rel="noopener">Website</a><br> </p><div id="attachment_4031912" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031912" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_07-960x616.jpg" alt="" width="960" height="616" class="size-large wp-image-4031912 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_07-960x616.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_07-605x388.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_07-300x193.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_07-115x74.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_07-600x385.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031912" class="wp-caption-text">The counter in Ambra’s kitchen</p></div><p></p> <h2><span class="shorenumbers">10. <a href="https://www.myloupphl.com/" target="_blank" rel="noopener">My Loup</a></span></h2> <p>There’s a temptation with a restaurant like this to identify a single signifying dish — something that encapsulates the vibe and intent of the place in one neat package. So, is it the unpretentious yet luxurious pickled shrimp served with a fan of saltines? Or maybe the bone marrow and boquerones? The slabs of foie and thin-sliced beef tongue? Honestly, there isn’t just one, because it takes all of what’s on the menu today and all of what’s been on the menu before to explain what head chef Alex Kemp and co-owner Amanda Shulman are creating. It’s simultaneously modern and classic, French and Italian but with a hot spike of Philly-ness, goofy-cool and studiously unserious. Most of all, it’s just really, <em>really</em> good. </p> <p><strong>Rittenhouse&nbsp;|&nbsp;Modern French</strong><br> <em>2005 Walnut Street</em><br> <a href="https://www.myloupphl.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/12/06/my-loup-review/">Review</a></p> <p></p><div id="banner-3" class="gpt-ad lazyload advertisement container" data-ad="banner-3"></div><p></p> <h2><span class="shorenumbers">11. <a href="https://www.elchingonphilly.com/" target="_blank" rel="noopener">El Chingon</a></span></h2> <p>As a veteran baker, Juan Carlos Aparicio takes his cemitas seriously. The chef and owner of El Chingon uses two kinds of flour to make each soft, crispy-shelled roll the perfect vehicle for fillings like punchy al pastor pork or herby mushrooms. But beyond the stellar Pueblan sandwiches, the rest of the menu — vegan aguachile and tropical, mango-laced salmon ceviche, heaping plates of fries gooey with cheese and guac, and the tacos, with house-made pork chorizo and sourdough flour tortillas — deserves your attention. Bring friends; order liberally.</p> <p><strong>East Passyunk&nbsp;|&nbsp;Mexican</strong><br> <em>1524 South 10th Street</em><br> <a href="https://www.elchingonphilly.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/02/21/el-chingon-review/">Review</a></p> <h2><span class="shorenumbers">12. <a href="https://www.vernickfish.com/" target="_blank" rel="noopener">Vernick Fish</a></span></h2> <p>Despite its location inside the Comcast Center, Vernick Fish is one of the city’s best seafood destinations — a restaurant worth going out of your way to luxuriate in. The food plays on nostalgia, broiling oysters with salami and provolone for oysters Philadelphia or topping scallops with rich brown butter sauce that you’ll want to swipe up with a finger. At the recently added lunch service, go for spicy-crunchy tuna tartare in lettuce cups and a guajillo chili-roasted branzino that’s worth playing hooky from your workday to enjoy. </p> <p><strong>Logan Circle&nbsp;|&nbsp;American/Seafood</strong><br> <em>1 North 19th Street</em><br> <a href="https://www.vernickfish.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">13. <a href="https://mawnphilly.com/" target="_blank" rel="noopener">Mawn</a></span></h2> <p>To understand Mawn, you need to know that chef-owner Phila Lorn was born in Philadelphia to Cambodian parents, who named him in tribute to their adoptive city. This captures the essence of the food at Mawn, a Cambodian-leaning restaurant that still captures Philly’s freewheeling spirit — where Thai crab fried rice comes packed with crabmeat and crowned with a whole fried softie, and the Mawn noodle soup is rich with schmaltz and silky poached chicken. It’s a restaurant that feels like it could only exist here, and that’s its magic. </p> <p><strong>Bella Vista&nbsp;|&nbsp;Cambodian</strong><br> <em>764 South 9th Street</em><br> <a href="https://mawnphilly.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/10/24/mawn-noodle-house-review/">Review</a></p> <h2><span class="shorenumbers">14. <a href="https://vetricucina.com/" target="_blank" rel="noopener">Vetri</a></span></h2> <p>You can get a taste of Marc Vetri’s legendary pasta at Fiorella, the more laid-back Vetri Cucina cousin. But don’t think because you’ve eaten a few bowls of rigatoni with house-made sausage ragu and some impossibly fluffy ricotta gnocchi — heavenly as they are — that you’ve had the Full Vetri Experience. For that, you need to be sitting in this elegant townhouse, surrounded by a team of highly adept servers who shepherd you, unhurried, through the meal. It must start with an amuse-bouche, like a teeny cacio e pepe suppli, and end with a plate of petits fours thoughtfully executed by pastry chef Michal Shelkowitz. And yes, of course it needs to include the pasta. </p> <p><strong>Midtown Village&nbsp;|&nbsp;Italian</strong><br> <em>1312 Spruce Street</em><br> <a href="https://vetricucina.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/07/25/marc-vetri-jeff-benjamin/">More about Vetri</a></p> <h2><span class="shorenumbers">15. <a href="https://zeppolirestaurant.com/" target="_blank" rel="noopener">Zeppoli</a></span></h2> <p>It’s always hard to sell people on crossing the bridge to eat at Zeppoli. But once you’re ensconced in the small, dark dining room and eating family-style portions of fennel salad, Sicilian-style fusilli slicked with pesto Trapanese, and rabbit stewed in tomatoes and fresh oregano over tender roasted potatoes, all trepidation is gone. By the time you’re headed back over the bridge, you’ll be planning your next visit.</p> <p><strong>Collingswood&nbsp;|&nbsp;Italian</strong><br> <em>618 West Collings Avenue</em><br> <a href="https://zeppolirestaurant.com/" target="_blank" rel="noopener">Website</a><br> </p><div id="attachment_4031920" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031920" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_10-960x626.jpg" alt="" width="960" height="626" class="size-large wp-image-4031920 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_10-960x626.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_10-605x394.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_10-300x196.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_10-115x75.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_10-600x391.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031920" class="wp-caption-text">Chef Thanh Nguyen at Gabriella’s Vietnam</p></div><p></p> <h2><span class="shorenumbers">16. <a href="https://gabriellasvietnam.com/" target="_blank" rel="noopener">Gabriella’s Vietnam</a></span></h2> <p>All those who go to Gabriella’s feel like they’re being let in on a secret. It’s a neighborhood spot where you can somehow always get a table — one where servers recognize regulars and freely offer tips about how best to wrap your banh xeo mien trung in perfect­ bites of lettuce and herbs. But it’s also a destination-worthy restaurant that impresses everyone, from your suburban extended family to your food-obsessed friends who are visiting from Brooklyn. </p> <p><strong>East Passyunk&nbsp;|&nbsp;Vietnamese</strong><br> <em>1837 East Passyunk Avenue</em><br> <a href="https://gabriellasvietnam.com/" target="_blank" rel="noopener">Website</a></p> <p></p><div id="banner-4" class="gpt-ad lazyload advertisement container" data-ad="banner-4"></div><p></p> <h2><span class="shorenumbers">17. <a href="https://www.restaurantlaurel.com/" target="_blank" rel="noopener">Laurel</a></span></h2> <p>When Nicholas Elmi and Fia Berisha opened Lark in the ’burbs, city-dwelling Elmi enthusiasts were a little envious. Of course, Laurel was always an exquisite culinary escapade, but you couldn’t just come on a (<em>ahem</em>) lark. That changed last spring, when Laurel shed its multi-course tasting menu for a more freewheeling à la carte menu. It’s a place where you can have a romantic meal, gather with friends for a Friday dinner, or sit at the bar for plates of oysters and Parisian gnocchi paired with a glass of Galen Glen grüner.</p> <p><strong>East Passyunk&nbsp;|&nbsp;Modern French</strong><br> <em>1617 East Passyunk Avenue</em><br> <a href="https://www.restaurantlaurel.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">18. <a href="http://www.laserwolfphilly.com/" target="_blank" rel="noopener">Laser Wolf</a></span></h2> <p>If Zahav is where you go for an anniversary or date night, Laser Wolf is where you go for your birthday bash. Even if the novelty of the set menu has worn off a bit since this place opened in February 2020, the magic of plowing through an endless platter of seasonal salatim, then diving into whole grilled fish, an herb-topped cauliflower head, and an epic steak has certainly not dimmed. And no matter how full we find ourselves after all of that, we always make room for a few bites of soft-serve in the glow of Laser Wolf’s friendly, attentive hospitality.</p> <p><strong>Kensington&nbsp;|&nbsp;Israeli</strong><br> <em>1301 North Howard Street</em><br> <a href="http://www.laserwolfphilly.com/" target="_blank" rel="noopener">Website</a></p> <h2><span class="shorenumbers">19. <a href="https://www.exploretock.com/roxannebyob/" target="_blank" rel="noopener">Roxanne</a></span></h2> <p>Chef Alexandra Holt makes food personal. She makes food political. She makes food delicious and weird and stunningly beautiful and deliberately blobby. But the most incredible thing about her is that she also makes every single dish at Roxanne herself. Roxanne­ is both a high-wire experiment and a place you go to get your worldview turned upside down by ice-cream cake with caviar, entrées in the shape of brains or bullets, or desserts made from Sungold tomatoes and brown butter.­ It’s one of the most experimental restaurants in the history of Philly dining, so if you’re down, grab whatever reservations you can, because there’s never any guarantee that Roxanne will be here tomorrow. </p> <p><strong>Bella Vista&nbsp;|&nbsp;New American</strong><br> <em>912 Christian Street</em><br> <a href="https://www.exploretock.com/roxannebyob/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/05/13/alexandra-holt-roxanne/">More about Roxanne</a></p> <h2><span class="shorenumbers">20. <a href="https://andiario.com/" target="_blank" rel="noopener">Andiario</a></span></h2> <p>Andiario operates the way a serious rock star might after moving back to his hometown and starting his own garage band. There’s incredible talent here, and an absolute passion for seasonal ingredients showcased in prix-fixe menus that change weekly, sometimes daily. Anthony Andiario approaches this business with an artist’s eye and an academic’s heart. And it’s not only about cooking dinner, but about using food to work out the complicated ideas of what being a cook, a chef or an owner even means right now. </p> <p><strong>West Chester&nbsp;|&nbsp;New American</strong><br> <em>106 West Gay Street</em><br> <a href="https://andiario.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2021/06/19/anthony-andiario-chef/">More about Andiaro</a></p> <h2><span class="shorenumbers">21. <a href="https://www.instagram.com/hardenaphilly/" target="_blank" rel="noopener">Hardena</a></span></h2> <p>Since Hardena opened in 2001, it’s walked the line between neighborhood staple that locals feel lucky to frequent­ and the kind of spot that’s worth coming­ to from anywhere in the city. The Widjojo family cooks Indonesian classics­ like beef rendang,­ coconut collards­ and corn fritters, piling generous portions of rice with sweet and savory eggplant in red pepper sauce, goat curry, or fish in turmeric­ coconut curry, along with an ever-changing selection of specials for guests who eagerly return time and again. </p> <p><strong>Point Breeze&nbsp;|&nbsp;Indonesian</strong><br> <em>1754 South Hicks Street</em><br> <a href="https://www.instagram.com/hardenaphilly/" target="_blank" rel="noopener">Website</a><br> </p><div id="attachment_4031922" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031922" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_11-960x1081.jpg" alt="50 best restaurants philadelphia" width="960" height="1081" class="size-large wp-image-4031922 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_11-960x1081.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_11-605x681.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_11-300x338.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_11-401x451.jpg 401w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_11-115x129.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_11-600x676.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031922" class="wp-caption-text">Sicilian-style braised beef with onion glaze and roasted root vegetables from Heavy Metal Sausage Co.</p></div><p></p> <h2><span class="shorenumbers">22. <a href="https://www.heavymetalsausage.com/" target="_blank" rel="noopener">Heavy Metal Sausage Co.</a></span></h2> <p>From the outside, Heavy Metal Sausage looks like your neighborhood butchery. But through the doors, you’ll find a culinary playground where Patrick Alfiero, a maestro of meats, crafts some of the finest pâtés, sausages and other deli goods found in Philadelphia, all made from ingredients sourced from local producers. Alfiero’s talents are on full display during the intimate trattoria dinners on Thursday and Friday nights. The handwritten menu is a regularly changing playlist of Italian-inspired dishes, featuring pastas made from flour milled in-house, cured meats and butchered specialties.&nbsp;</p> <p><strong>South Philly&nbsp;|&nbsp;Italian</strong><br> <em>1527 West Porter Street</em><br> <a href="https://www.heavymetalsausage.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">23. <a href="https://junebyob.com/" target="_blank" rel="noopener">June BYOB</a></span></h2> <p>An evening at June BYOB is filled with little moments of whimsy that you’ll catch between bites of escargot and impeccably seared Basque scallops. The canard à la presse voyage is the pinnacle of the menu: They carve a duck tableside and crush its bones in an antique duck press to extract extra juices that are then added to a flambéed sauce. It’s a delectable spectacle. You know that bottle of wine you’ve been saving for a special occasion? This is where you bring it.</p> <p><strong>Collingswood&nbsp;|&nbsp;French</strong><br> <em>690 Haddon Avenue</em><br> <a href="https://junebyob.com/" target="_blank" rel="noopener">Website</a><br> </p><div id="attachment_4031923" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031923" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_12-960x1140.jpg" alt="" width="960" height="1140" class="size-large wp-image-4031923 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_12-960x1140.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_12-605x718.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_12-300x356.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_12-380x451.jpg 380w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_12-115x137.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_12-600x712.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031923" class="wp-caption-text">Canard à la presse voyage at June BYOB</p></div><p></p> <h2><span class="shorenumbers">24. <a href="https://www.autanapa.com/" target="_blank" rel="noopener">Autana</a></span></h2> <p>Autana has evolved considerably over the years, growing from a pandemic pop-up to a full-fledged restaurant. Every arepa and pernil sandwich is beautifully executed and presented yet still has a comforting energy to it, like you’re eating a home-cooked meal prepared lovingly just for you. It makes sense considering that all along, Autana has been a family affair where a father and daughter share their Venezuelan cuisine with diners one tequeño at a time.</p> <p><strong>Ardmore&nbsp;|&nbsp;Venezuelan</strong><br> <em>4 Station Road</em><br> <a href="https://www.autanapa.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2022/04/18/ardmores-autana-is-a-pandemic-success-story-told-in-arepas-and-patacones/">Review</a></p> <h2><span class="shorenumbers">25. <a href="https://www.rivertwicerestaurant.com/" target="_blank" rel="noopener">River Twice</a></span></h2> <p>After several format tweaks over the past few years, the menu at Amanda and chef Randy Rucker’s refined East Passyunk restaurant feels exactly right. Nothing is extraneous; each bite from the pared-down four-course tasting — like the rice porridge flecked with hunks of blue crab — shines. It’s also fleeting, changing each season. Of course, we can’t talk about River Twice without mentioning the Mother Rucker­ burger. It graces the menu from time to time, and when it does, get it.</p> <p><strong>East Passyunk&nbsp;|&nbsp;New American</strong><br> <em>1601 East Passyunk Avenue</em><br> <a href="https://www.rivertwicerestaurant.com/" target="_blank" rel="noopener">Website</a></p> <h2><span class="shorenumbers">26. <a href="https://www.southjazzkitchen.com/" target="_blank" rel="noopener">South Restaurant &amp; Jazz Club</a></span></h2> <p>The Bynum family have been stewards of jazz in Philadelphia since 1965, when Benjamin Sr. founded the Cadillac Club, hosting acts like B.B. King, Gladys Knight and Aretha Franklin. Now his sons, Benjamin and Robert Bynum, are carrying on that legacy at South Restaurant &amp; Jazz Club. Hot-honey-drizzled fried chicken, Low Country fried catfish and Gulf shrimp, and the skillet of cornbread are accompanied by soulful performances and unparalleled Southern hospitality.&nbsp;</p> <p><strong>Spring Garden&nbsp;|&nbsp;Southern Fare</strong><br> <em>600 North Broad Street</em><br> <a href="https://www.southjazzkitchen.com/" target="_blank" rel="noopener">Website</a><br> </p><div id="attachment_4031926" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031926" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_13-960x1308.jpg" alt="50 best restaurants philadelphia" width="960" height="1308" class="size-large wp-image-4031926 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_13-960x1308.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_13-605x824.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_13-300x409.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_13-331x451.jpg 331w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_13-115x157.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_13-600x817.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031926" class="wp-caption-text">Cornbread, Low Country catfish and Gulf shrimp, and butter­milk fried chicken, all from South</p></div><p></p> <h2><span class="shorenumbers">27. <a href="https://middlechildphilly.com/clubhouse/visit/" target="_blank" rel="noopener">Middle Child Clubhouse</a></span></h2> <p>Under the direction of Edwin De La Rosa during the day and Sam Henzy at night, Middle Child Clubhouse has blossomed into a spot that’s ready to serve joyfully adapted versions of classic American food of all kinds: a giant pancake and a duck-fat-braised Cubano during the day, crabby gravy and a perfect cheeseburger at night. Just don’t skip the drinks, which are thoughtfully developed using small-batch liquor and far more consideration than you might realize as you down them faster than you meant to. </p> <p><strong>Fishtown&nbsp;|&nbsp;New American</strong><br> <em>1232 North Front Street</em><br> <a href="https://middlechildphilly.com/clubhouse/visit/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2022/03/01/middle-child-clubhouse-review/">Review</a></p> <h2><span class="shorenumbers">28. <a href="https://www.irwinsupstairs.com/" target="_blank" rel="noopener">Irwin’s</a></span></h2> <p>At Irwin’s, on the top floor of the Bok Building, it’s not just the soulful Sicilian dishes, like pistachio-studded swordfish or the caponata — smoky and a little sweet, chef Michael Vincent Ferreri’s great-grandmother’s recipe — or the warm service. It’s all that coupled with the dramatic views from the top of the Bok. On a warm night, with the lofty breeze and twinkling fairy lights and South Philly sprawling out before you, there’s nowhere else like it in the city.</p> <p><strong>East Passyunk&nbsp;|&nbsp;Italian</strong><br> <em>800 Mifflin Street</em><br> <a href="https://www.irwinsupstairs.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">29. <a href="https://www.mishmishphilly.com/" target="_blank" rel="noopener">Mish Mish</a></span></h2> <p>Even if it’s your first time, the moment you settle at a table in Mish Mish’s low-lit dining room, you’ll get the warm, heady feeling that you’re a longtime regular. It comes from the observant staff, who are far from pushy but also genuinely <em>want</em> you to have a memorable night. It also comes from the perfect little menu filled with Portuguese wine, cherry spritzes, and food that’s a pleasure to eat. Chef Kyle McCormick dreams up bites like cold melon hunks in a salad of torn herbs and olives, and thinly sliced pork loin with paper-thin shavings of horseradish scattered on top. It adds up to a place that makes you want to stay all night — and come back often.</p> <p><strong>East Passyunk&nbsp;|&nbsp;Mediterranean</strong><br> <em>1046 Tasker Street</em><br> <a href="https://www.mishmishphilly.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2022/06/14/mish-mish-philly-restaurant-review/">Review</a></p> <h2><span class="shorenumbers">30. <a href="TKLINK" target="_blank" rel="noopener">China Gourmet</a></span></h2> <p>If you ever need a place where you and 300 of your closest friends can all eat dim sum together on a Tuesday afternoon, China Gourmet is there for you. Crispy shrimp balls, shu mai, pork buns the size of baseballs, gorgeous egg tarts and a universe of dumplings — the carts working the floor have all of that and more. And while dim sum time (daily, from 9:30 a.m. to 3 p.m.) is where China Gourmet truly shines, the kitchen also bangs out excellent Cantonese food all day long. Have a party here, have your wedding here — invite everyone you’ve ever known or might know. There’ll still be space. And plenty of shu mai for everyone.</p> <p><strong>Northeast Philly&nbsp;|&nbsp;Chinese</strong><br> <em>2842 St. Vincent Street</em><br> <a href="https://phillychinagourmet.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2022/08/09/just-one-dish-salt-pepper-squid-at-china-gourmet/">More about China Gourmet</a><br> </p><div id="attachment_4031927" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031927" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_14-960x640.jpg" alt="50 best restaurants philadelphia" width="960" height="640" class="size-large wp-image-4031927 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_14-960x640.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_14-605x403.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_14-300x200.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_14-115x77.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/24-50Best_14-600x400.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031927" class="wp-caption-text">Chicken feet, shu mai, and an assortment of buns at China Gourmet</p></div><p></p> <h2><span class="shorenumbers">31. <a href="https://www.tulippasta.com/" target="_blank" rel="noopener">Tulip Pasta &amp; Wine Bar</a></span></h2> <p>When Tulip opened in the fall of 2022, Philadelphia was seemingly at Italian-restaurant capacity. But one step inside Tulip and you can tell it’s different. You feel it in the dining room, bright and buzzing, and see it on the drink menu, which spotlights local Wayvine wines. Most importantly, you can taste it in dishes like cacio e pepperoncini, made using a mash-up of chili peppers in place of the traditional­ black peppercorn,­ with local flour from chef and owner Alex Beninato’s Philly Milled. Tulip is proof that so long as there’s a fresh perspective, there’s always room for one more.</p> <p><strong>Fishtown&nbsp;|&nbsp;Italian</strong><br> <em>2302 East Norris Street</em><br> <a href="https://www.tulippasta.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">32. <a href="https://www.honeysuckleprovisions.com/" target="_blank" rel="noopener">Honeysuckle Provisions</a></span></h2> <p>Chefs <a href="https://www.phillymag.com/foobooz/chef-omar-tate-philadelphia/">Omar Tate</a> and <a href="https://www.phillymag.com/foobooz/2022/08/23/cybille-st-aude-tate-honeysuckle-provisions-behind-the-line-interview/">Cybille St. Aude-Tate</a> have already created an indispensable neighborhood café and grocery. Along with knocking out delicious breakfast sandwiches, homemade mini Pop Tarts, spicy West Indian beef patties, and hoagies stuffed with almost as much memory as meat and veggies, Honeysuckle Provisions serves as a repository where Black cultural ancestry and foodways are preserved. They’ve got Black farmer CSA boxes and wild collaboration sandwiches, and they do game-day pre-orders whenever the Birds are playing. But as much as we love Honeysuckle for what it is, we’re even more excited for what it can be as the Tates move forward with various plans to expand their offerings.</p> <p><strong>University City&nbsp;|&nbsp;African Diaspora</strong><br> <em>310 South 48th Street</em><br> <a href="https://www.honeysuckleprovisions.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/02/23/honeysuckle-provisions-restaurant-review/">Review</a></p> <h2><span class="shorenumbers">33. <a href="https://www.superfoliephl.com/" target="_blank" rel="noopener">Superfolie</a></span></h2> <p>It feels uniquely French to make something that’s objectively challenging seem effortless — like, say, riding a bike with an armload of baguettes, or pulling off a red lip. Chloe Grigri did just that at Superfolie when she, with husband Vince Stipo, transformed a largely nondescript bi-level room on Spruce Street into a glittering gem. It’s got natural wine and ice-cold martinis flowing, exquisite offerings like steak tartare with house-made chips and seasonally rotating sourdough tartine, and — the real feat — an utterly magnetic vibe. On Wednesdays, sommelier Kaitlyn Caruke opens a special bottle and sells glasses at cost. <em>C’est magnifique</em>. </p> <p><strong>Rittenhouse&nbsp;|&nbsp;French</strong><br> <em>1602 Spruce Street</em><br> <a href="https://www.superfoliephl.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">34. <a href="https://www.grandmasphilly.com/" target="_blank" rel="noopener">Grandma’s Philly</a></span></h2> <p>Grandma’s was a great restaurant when it was this little upstart BYOB on Walnut Street, serving tom kha, papaya salad and chicken satay and trying to make “Thai Tapas” a thing. It was casual, fun, and so full of love that you could feel it like a beating heart. Now, with a year of service behind it (and a brand-new liquor license), Grandma’s is a better, more confident restaurant. And while age and practice may have smoothed some of the rough spots that made the place so endearing, it still serves amazing curry puffs and the best meatballs in a city built on meatballs. </p> <p><strong>Midtown Village&nbsp;|&nbsp;Thai</strong><br> <em>1304 Walnut Street</em><br> <a href="https://www.grandmasphilly.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/01/27/grandmas-philly-thai-review/">Review</a></p> <h2><span class="shorenumbers">35. <a href="https://casamexicophl.com/" target="_blank" rel="noopener">Casa Mexico</a></span></h2> <p>Steps away from South Philly Barbacoa,­ chef Cristina Martinez’s iconic corner taqueria, her Casa Mexico offers up an expanded menu of traditional Mexican dishes. The larger space lets you linger longer, whether it be with friends over margaritas or over a plate of enmoladas chicken — earthy corn tortillas stuffed with an amalgamation of chicken and cheese and drenched in a rich, slightly spiced mole sauce that has a hint of chocolate.</p> <p><strong>East Passyunk&nbsp;|&nbsp;Mexican</strong><br> <em>1134 South 9th Street</em><br> <a href="https://casamexicophl.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">36. <a href="https://www.larkpa.com/" target="_blank" rel="noopener">Lark</a></span></h2> <p>At Lark, the menus are so comforting that they might as well be written on pillows. Marinated olives and focaccia. Escargots in vichyssoise butter with potato confit. Pastas with corn, blue crab or thyme honey. Grilled fish with raisins. Under the command of chefs Nicholas Elmi and Michael Millon, this kitchen offers a kind of recognizable international cuisine that’s like New American with a half-dozen stamps on its passport, cooked with precision and competence that are becoming more and more rare in the industry.</p> <p><strong>Bala Cynwyd&nbsp;|&nbsp;New American</strong><br> <em>611 Righters Ferry Road</em><br> <a href="https://www.larkpa.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2022/03/29/lark-bala-cynwyd-review/">Review</a></p> <h2><span class="shorenumbers">37. <a href="https://www.littlefishbyob.com/" target="_blank" rel="noopener">Little Fish</a></span></h2> <p>There was a time not so long ago when Philly felt woefully short on actual seafood restaurants, and Little Fish — with its tiny dining room and handwritten menus — seemed like deliverance from endless red sauce and steakhouses. Now, Philly has lots of seafood restaurants, and this spot still feels like something special, rare and valuable. Dinner here is an intimate and unforgettable experience. </p> <p><strong>Queen Village&nbsp;|&nbsp;Seafood</strong><br> <em>746 South 6th Street</em><br> <a href="https://www.littlefishbyob.com/" target="_blank" rel="noopener">Website</a><br> </p><div id="attachment_4031932" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031932" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/stina-50Best_17-960x529.jpg" alt="50 best restaurants philadelphia" width="960" height="529" class="size-large wp-image-4031932 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/stina-50Best_17-960x529.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/stina-50Best_17-605x333.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/stina-50Best_17-300x165.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/stina-50Best_17-115x63.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/stina-50Best_17-600x331.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031932" class="wp-caption-text">From left: Merguez pide, and chef Bobby Saitsoglou, at Stina.</p></div><p></p> <h2><span class="shorenumbers">38. <a href="https://www.stinapizzeria.com/" target="_blank" rel="noopener">Stina Pizzeria</a></span></h2> <p>Bobby Saritsoglou and his wife, Christina Kallas-Saritsoglou, pull from culinary influences around the Mediterranean to create appetizing wood-fire-kissed dishes. Yes, there’s pizza with chewy, leopard-spotted crust, but you’ll be missing out if you don’t try the slow-cooked Spanish octopus — a dish Saritsoglou has been perfecting for over 20 years. And if you’re in the mood for something akin to pizza, go for the Turkish merguez pide, a doughy boat-shaped dish filled with melted mozzarella and spiced lamb sausage.</p> <p><strong>West Passyunk&nbsp;|&nbsp;Mediterranean</strong><br> <em>1705 Snyder Avenue</em><br> <a href="https://www.stinapizzeria.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2019/10/10/stina-pizzeria-restaurant-review/">Review</a></p> <h2><span class="shorenumbers">39. <a href="https://parc-restaurant.com/" target="_blank" rel="noopener">Parc</a></span></h2> <p>There’s a certain je ne sais quoi to sitting at Parc, drinking in views of Rittenhouse Square with a glass of champagne in hand. This French-style bistro is an all-day hit, from the smoky bacon and gruyère quiche Lorraine­ at breakfast to the steak frites topped with a slab of maître d’ butter­ for dinner. Parc is so many things to so many people. It’s where you go when you need a Center City restaurant for light bites and drinks with friends, the go-to for a deal-making power lunch, <em>the</em> place for people-watching, and the spot to impress your in-laws at brunch before going to the Rittenhouse Farmers’ Market. </p> <p><strong>Rittenhouse&nbsp;|&nbsp;French</strong><br> <em>227 South 18th Street</em><br> <a href="https://parc-restaurant.com/" target="_blank" rel="noopener">Website</a></p> <h2><span class="shorenumbers">40. <a href="https://akitchenandbar.com/" target="_blank" rel="noopener">A.Kitchen + Bar</a></span></h2> <p>A.Kitchen is an oasis, smack in the middle of the city, where you can pop in any time of day or night for a top-notch dining experience. Try the cornmeal pancakes with house-made lemon curd for breakfast. At lunchtime, there’s red curry chicken liver toast and French omelets with local Jimmy Nardello peppers. For dinner, in the dimly lit dining room, order up comforting roasted chicken or chef Eli Collins’s legendary burger. And sure, any of it can be paired with a baller bottle of wine.</p> <p><strong>Rittenhouse&nbsp;|&nbsp;New American</strong><br> <em>135 South 18th Street</em><br> <a href="https://akitchenandbar.com/" target="_blank" rel="noopener">Website</a></p> <h2><span class="shorenumbers">41. <a href="https://www.illataphl.com/" target="_blank" rel="noopener">Illata</a></span></h2> <p>Ambitious BYOBs have seemed to dwindle in recent years, thanks in part to notoriously slim profit margins and a global pandemic. But chef Aaron Randi revived the scene in May when he opened Illata, where, in the pocket-size dining room, a happy crowd hums over bowls of silky pasta alla vongole and fried oysters still crisp under translucent slices of vinegar-punched tomatoes. A table of four can easily order the whole menu, which includes thick-crusted sourdough boules baked daily by the GM, Sophie Wieber. </p> <p><strong>Grad Hospital&nbsp;|&nbsp;New American</strong><br> <em>2241 Grays Ferry Avenue</em><br> <a href="https://www.illataphl.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">42. <a href="https://www.corinnesplace.com/" target="_blank" rel="noopener">Corinne’s Place</a></span></h2> <p>The crispy fried chicken, Cajun turkey wings, and BBQ pork ribs dripping in sauce at Corinne’s Place got the attention of the James Beard Foundation, which deemed this an American Classic in 2022. But Camden locals have known this soul-food spot as a community staple since it opened in 1989. The only way you can go wrong here is if you skimp on the sides, so fix your plate with mac-and-cheese, cornbread and collard greens.</p> <p><strong>Camden&nbsp;|&nbsp;Soul Food</strong><br> <em>1254 Haddon Avenue</em><br> <a href="https://www.corinnesplace.com/" target="_blank" rel="noopener">Website</a></p> <h2><span class="shorenumbers">43. <a href="https://juana-tamale.square.site/" target="_blank" rel="noopener">Juana Tamale</a></span></h2> <p>Over the past year, <a href="https://www.phillymag.com/foobooz/2023/10/16/jennifer-zavala-juana-tamale/">Jen Zavala</a> has expanded the offerings at her East Passyunk neon fever dream of a restaurant, adding a $6 chili-topped burger to the menu along with nachos that are some of the best in the city and lime-infused tres leches cake. The core offerings — drippy beef birria tacos served with cups of meaty ramen, vegan birria tacos, Cali burritos stuffed with fries, and Mexican pizzas that rival the fast-food original — remain for all your Juana Tamale cravings.</p> <p><strong>East Passyunk&nbsp;|&nbsp;Mexican</strong><br> <em>1941 East Passyunk Avenue</em><br> <a href="https://juana-tamale.square.site/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2022/02/01/juana-tamale-review/">Review</a></p> <h2><span class="shorenumbers">44. <a href="https://www.whiteyakrestaurant.com/" target="_blank" rel="noopener">White Yak</a></span></h2> <p>Go for momo and banana tempura. Go for steamed buns and rich beef curry. Go for shoko khatsa and momo soup. Just <em>go</em>. This small, always-crowded Tibetan restaurant gets better and better the more often you visit, but everyone has to have a <em>first</em> visit, and if you’ve never been, you should absolutely make that tonight.</p> <p><strong>Roxborough&nbsp;|&nbsp;Tibetan</strong><br> <em>6118 Ridge Avenue</em><br> <a href="https://www.whiteyakrestaurant.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2022/05/16/white-yak-roxborough-tibetan-restaurant-review/">Review</a></p> <h2><span class="shorenumbers">45. <a href="https://www.alifamilyrestaurants.com/doro-bet" target="_blank" rel="noopener">Doro Bet</a></span></h2> <p>where to find the best fried chicken in town. Now, we don’t have to do that anymore, because it’s at Doro Bet. This Ethiopian-inspired, long-marinated,­ teff-flour-battered fried chicken is as good as it gets — and, remarkably, even better with the addition of any of the house-made sauces.</p> <p><strong>University&nbsp;|&nbsp;Ethiopian</strong><br> <em>4533 Baltimore Avenue</em><br> <a href="https://www.alifamilyrestaurants.com/doro-bet" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/05/16/doro-bet-review/">Review</a></p> <h2><span class="shorenumbers">46. <a href="https://www.emeiphilly.com/" target="_blank" rel="noopener">EMei</a></span></h2> <p>EMei is there for you on rainy nights when nothing but salty, spicy mapo tofu will do. It’s there for you when you gather a group for a late-night spread of inside-out sea bass in sticky sauce, crispy-fried Chongqing chicken, and bowls of cold sesame noodles. It’s even there for you as you’re tipping the last of your leftovers into your mouth, still cold from the fridge, and considering another visit, just to re-up on tea-smoked duck and Sichuan lamb chops. Like a trusty friend, once EMei enters your life, it’s there to stay.</p> <p><strong>Chinatown&nbsp;|&nbsp;Sichuan</strong><br> <em>915 Arch Street</em><br> <a href="https://www.emeiphilly.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">47. <a href="https://www.surayaphilly.com/" target="_blank" rel="noopener">Suraya</a></span></h2> <p>Suraya is a stylish Lebanese enclave where the anise notes of arak and the nuttiness of tahini will make you forget you’re dining on Frankford Avenue. A Taste of Suraya is the best way to enjoy the gamut of flavors indicative of Middle Eastern cuisine, but you must indulge in the earthy sweetness of the djej meshwi, which remains one of the greatest marinated and roasted chickens in the city.</p> <p><strong>Fishtown&nbsp;|&nbsp;Lebanese</strong><br> <em>1528 Frankford Avenue</em><br> <a href="https://www.surayaphilly.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2018/06/14/suraya-restaurant-review/">Review</a></p> <h2><span class="shorenumbers">48. <a href="https://www.sagamirestaurant.com/" target="_blank" rel="noopener">Sagami</a></span></h2> <p>In the pantheon of sushi restaurants, chef Shigeru Fukuyoshi is a legend, and the precision of his knifework can be experienced in the impossibly buttery texture of every piece of sashimi and nigiri here. Each bites gives way to the subtle flavors of exquisitely fresh fish. Die-hard sushi lovers need to get the chirashi bowl, a beautiful arrangement of raw fish, tamagoyaki egg omelet, and flying fish roe on a bed of rice.&nbsp;</p> <p><strong>Collingswood&nbsp;|&nbsp;Japanese</strong><br> <em>37 Crescent Boulevard</em><br> <a href="https://www.sagamirestaurant.com/" target="_blank" rel="noopener">Website</a> </p> <h2><span class="shorenumbers">49. <a href="https://www.facebook.com/pages/Kims-BBQ-Restaurant/121801967878515" target="_blank" rel="noopener">Kim’s BBQ</a></span></h2> <p>This longtime anchor of Olney’s Korean food scene serves some of the best Korean barbecue in the tri-state area. The key is the live coals, which get delivered to each table by servers wearing heat-proof gloves. They let the heat from those coals kiss each hunk of galbi or pork belly before nudging it into your bowl and encouraging you to eat. Go with a group, and order the special combo for the table; it includes endless banchan, rice and lettuce for building crisp, meaty bites.</p> <p><strong>North Philly&nbsp;|&nbsp;Korean</strong><br> <em>5955 North 5th Street</em></p> <h2><span class="shorenumbers">50. <a href="https://georgianbread.business.site/" target="_blank" rel="noopener">Georgian Bread</a></span></h2> <p>Everyone will tell you to go to this combination bakery/restaurant for the khachapuri, and they’re not wrong. It’s very good khachapuri. Those who know will say that you have to try the khinkali dumplings, and that’s fine advice, too. But anyone who really knows Georgian Bread will tell you that the regular menu, with its cold chicken in walnut sauce, pork shashlik, fried potatoes and kebabs, is where the real winners are to be found. We’re here to tell you that all three are right. And that the bread is some of the best in the city, too. </p> <p><strong>Northeast Philly&nbsp;|&nbsp;Georgian</strong><br> <em>10865 Bustleton Avenue</em><br> <a href="https://georgianbread.business.site/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2017/11/02/georgian-bread-and-cuisine-review/">Review</a></p> <hr> <p><span id="list">&nbsp;</span></p> <h2 style="text-align: center;">50 Best Restaurants in Philadelphia at a Glance</h2> <div class="null left" style="width: 300px; float: left;"> <ol> <li><strong>Friday Saturday Sunday</strong><br> Rittenhouse&nbsp;|&nbsp;New American</li> <li><strong>Kalaya</strong><br> Fishtown&nbsp;|&nbsp;Thai</li> <li><strong>Royal Izakaya</strong><br> Queen Village&nbsp;|&nbsp;Japanese</li> <li><strong>Her Place Supper Club</strong><br> Rittenhouse&nbsp;|&nbsp;New American</li> <li><strong>Cantina La Martina</strong><br> Kensington&nbsp;|&nbsp;Mexican</li> <li><strong>Zahav</strong><br> Society Hill&nbsp;|&nbsp;Israeli</li> <li><strong>Ground Provisions</strong><br> West Chester&nbsp;|&nbsp;Vegan/New American</li> <li><strong>Tabachoy</strong><br> Bella Vista&nbsp;|&nbsp;Filipino</li> <li><strong>Ambra</strong><br> Queen Village |&nbsp;Italian</li> <li><strong>My Loup</strong><br> Rittenhouse&nbsp;|&nbsp;Modern French</li> <li><strong>El Chingon</strong><br> East Passyunk&nbsp;|&nbsp;Mexican</li> <li><strong>Vernick Fish</strong><br> Logan Circle&nbsp;|&nbsp;American/Seafood</li> <li><strong>Mawn</strong><br> Bella Vista&nbsp;|&nbsp;Cambodian</li> <li><strong>Vetri</strong><br> Midtown Village&nbsp;|&nbsp;Italian</li> <li><strong>Zeppoli</strong><br> Collingswood&nbsp;|&nbsp;Italian</li> <li><strong>Gabriella’s Vietnam</strong><br> East Passyunk&nbsp;|&nbsp;Vietnamese</li> <li><strong>Laurel</strong><br> East Passyunk&nbsp;|&nbsp;Modern French</li> <li><strong>Laser Wolf</strong><br> Kensington | Israeli</li> <li><strong>Roxanne</strong><br> Bella Vista&nbsp;|&nbsp;New American</li> <li><strong>Andiario</strong><br> West Chester&nbsp;|&nbsp;New American</li> <li><strong>Hardena</strong><br> Point Breeze&nbsp;|&nbsp;Indonesian</li> <li><strong>Heavy Metal Sausage Co.</strong><br> South Philly&nbsp;|&nbsp;Italian</li> <li><strong>June BYOB</strong><br> Collingswood&nbsp;|&nbsp;French</li> <li><strong>Autana</strong><br> Ardmore | Venezuelan</li> <li><strong>River Twice</strong><br> East Passyunk | New American</li> </ol> </div> <div class="null right" style="width: 300px; float: right;"> <ol style="z-index: -1;" start="26"> <li><strong>South Restaurant &amp; Jazz Club</strong><br> Spring Garden&nbsp;|&nbsp;Southern Fare</li> <li><strong>Middle Child Clubhouse</strong><br> Fishtown&nbsp;|&nbsp;New American</li> <li><strong>Irwin’s</strong><br> East Passyunk&nbsp;|&nbsp;Italian</li> <li><strong>Mish Mish</strong><br> East Passyunk&nbsp;|&nbsp;Mediterranean</li> <li><strong>China Gourmet</strong><br> Northeast Philly&nbsp;|&nbsp;Chinese</li> <li><strong>Tulip Pasta &amp; Wine Bar</strong><br> Fishtown&nbsp;|&nbsp;Italian</li> <li><strong>Honeysuckle Provisions</strong><br> University City&nbsp;|&nbsp;African Diaspora</li> <li><strong>Superfolie</strong><br> Rittenhouse&nbsp;|&nbsp;French</li> <li><strong>Grandma’s Philly</strong><br> Midtown Village&nbsp;|&nbsp;Thai</li> <li><strong>Casa Mexico</strong><br> East Passyunk&nbsp;|&nbsp;Mexican</li> <li><strong>Lark</strong><br> Bala Cynwyd&nbsp;|&nbsp;New American</li> <li><strong>Little Fish</strong><br> Queen Village&nbsp;|&nbsp;Seafood</li> <li><strong>Stina Pizzeria</strong><br> West Passyunk&nbsp;|&nbsp;Mediterranean</li> <li><strong>Parc</strong><br> Rittenhouse&nbsp;|&nbsp;French</li> <li><strong>A.Kitchen + Bar</strong><br> Rittenhouse&nbsp;|&nbsp;New American</li> <li><strong>Illata</strong><br> Grad Hospital&nbsp;|&nbsp;New American</li> <li><strong>Corinne’s Place</strong><br> Camden&nbsp;|&nbsp;Soul Food</li> <li><strong>Juana Tamale</strong><br> East Passyunk&nbsp;|&nbsp;Mexican</li> <li><strong>White Yak</strong><br> Roxborough&nbsp;|&nbsp;Tibetan</li> <li><strong>Doro Bet</strong><br> University City&nbsp;|&nbsp;Ethiopian</li> <li><strong>EMei</strong><br> Chinatown&nbsp;|&nbsp;Sichuan</li> <li><strong>Suraya</strong><br> Fishtown | Lebanese</li> <li><strong>Sagami</strong><br> Collingswood | Japanese</li> <li><strong>Kim’s BBQ</strong><br> North Philly&nbsp;|&nbsp;Korean</li> <li><strong>Georgian Bread</strong><br> Northeast Philly | Georgian</li> </ol> </div> <div style="text-align: center;"><strong><a href="#top">Return to the listings</a></strong></div> </div> <p></p> <script type="text/javascript"> if (!window.Zephr) window.Zephr = {}; if (!window.Zephr.outcomes) window.Zephr.outcomes = {}; window.Zephr.outcomes['article'] = { featureLabel: 'Philly/Boston Paywall Experience', outcomeId: 'transformation/5', outcomeLabel: 'show article' }; </script> </div><script type="text/javascript"> if (!window.Zephr) window.Zephr = {}; if (!window.Zephr.outcomes) window.Zephr.outcomes = {}; window.Zephr.outcomes['all-access-page'] = { featureLabel: 'All Access Pages', outcomeId: 'transformation/3', outcomeLabel: 'Remove' }; </script> <!-- .entry-content --> </div><!-- .container --> <div id="banner-2" class="gpt-ad lazyload advertisement container" data-ad="banner-2"></div> |
| 27 |
Info
On line 583, column 94 hillymag"> <div id="ad-reveal" class="gpt-ad"></div><div id="under-reveal"></div><div class="header-navigation-spacer"></div> <div class="header-navigation js-header-menu-full" id="js-header-navigation"> <div class="container header-navigation-inner"> <div class="navigation-logo"> <a href="//www.phillymag.com"> <svg class="mc-icon phillymag-logo" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-logo"></use></svg> </a> </div> <button id="js-mobile-menu-toggle" class="mobile-menu-toggle" aria-hidden="true"> <svg class="mc-icon hamburger" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-hamburger"></use></svg> <svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-close"></use></svg> </button> <div class="header-menu-wrapper" id="js-header-navigation-wrapper"> <div class="header-menu"><ul id="menu-primary-menu" class="menu-header-main"><li id="menu-item-3441760" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-3441760"><a href="/find-it-philly-search/">Find It/Philly</a> <ul class="sub-menu"> <li id="menu-item-3441764" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441764"><a href="/find-a-doctor/">Doctors</a></li> <li id="menu-item-3441765" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441765"><a href="/dentists/">Dentists</a></li> <li id="menu-item-3556438" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3556438"><a href="/home-design/">Home Design Experts</a></li> <li id="menu-item-3441767" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441767"><a href="/senior-living/">Senior Living</a></li> <li id="menu-item-3441776" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441776"><a href="/weddings/">Wedding Experts</a></li> <li id="menu-item-3570068" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570068"><a href="/real-estate-agents/">Real Estate Agents</a></li> <li id="menu-item-3869015" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869015"><a href="/private-schools">Private Schools</a></li> <li id="menu-item-3869012" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869012"><a href="/mortgage-lenders">Mortgage Professionals</a></li> </ul> </li> <li id="menu-item-3357928" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357928"><a href="https://www.phillymag.com/news">City Life</a> <ul class="sub-menu"> <li id="menu-item-3701551" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3701551"><a href="https://www.phillymag.com/news">The Latest</a></li> </ul> </li> <li id="menu-item-3357931" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357931"><a href="https://www.phillymag.com/foobooz">Restaurants</a> <ul class="sub-menu"> <li id="menu-item-3358386" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358386"><a href="https://www.phillymag.com/foobooz">Foobooz</a></li> <li id="menu-item-3358357" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358357"><a href="https://www.phillymag.com/foobooz/50-best-restaurants/">50 Best Restaurants</a></li> <li id="menu-item-3357976" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357976"><a href="https://www.phillymag.com/restaurant-finder/">Restaurant Finder</a></li> <li id="menu-item-3358644" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358644"><a href="https://www.phillymag.com/foobooz/philadelphia-restaurant-jobs/">Jobs</a></li> </ul> </li> <li id="menu-item-3357934" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357934"><a href="https://www.phillymag.com/be-well-philly">Health</a> <ul class="sub-menu"> <li id="menu-item-3357978" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357978"><a href="https://www.phillymag.com/be-well-philly">Be Well Philly</a></li> <li id="menu-item-3357983" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357983"><a href="https://www.phillymag.com/dentists/">Find a Dentist</a></li> <li id="menu-item-3358174" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358174"><a href="https://www.phillymag.com/find-a-doctor/">Find a Doctor</a></li> <li id="menu-item-3357984" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357984"><a href="https://www.phillymag.com/senior-living/">Senior Living</a></li> </ul> </li> <li id="menu-item-3357987" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357987"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a> <ul class="sub-menu"> <li id="menu-item-3358017" class="hide-on-desktop menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358017"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a></li> </ul> </li> <li id="menu-item-3357997" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357997"><a href="https://www.phillymag.com/property">Real Estate &amp; Home</a> <ul class="sub-menu"> <li id="menu-item-3357998" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357998"><a href="https://www.phillymag.com/property">Properties &amp; News</a></li> <li id="menu-item-3358019" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358019"><a href="/home-design/">Find a Home &amp; Design Pro</a></li> <li id="menu-item-3570077" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570077"><a href="/real-estate-agents/">Find a Real Estate Agent</a></li> <li id="menu-item-3870342" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3870342"><a href="/mortgage-lenders">Find a Mortgage Professional</a></li> </ul> </li> <li id="menu-item-3358000" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358000"><a href="https://www.phillymag.com/things-to-do">Things To Do</a> <ul class="sub-menu"> <li id="menu-item-3357999" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357999"><a href="https://www.phillymag.com/things-to-do">Events in Philly</a></li> <li id="menu-item-3358002" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358002"><a href="https://www.phillymag.com/events">Philly Mag Events</a></li> </ul> </li> <li id="menu-item-3358004" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358004"><a href="https://www.phillymag.com/philadelphia-wedding">Wedding</a> <ul class="sub-menu"> <li id="menu-item-3358006" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358006"><a href="https://www.phillymag.com/philadelphia-wedding">Guides &amp; Advice</a></li> <li id="menu-item-3358022" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358022"><a href="https://www.phillymag.com/weddings/">Find a Wedding Expert</a></li> <li id="menu-item-4031702" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-4031702"><a href="/bubblybrunch">Bubbly Brunch Event</a></li> </ul> </li> <li id="menu-item-3358008" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358008"><a href="https://www.phillymag.com/best-of-philly/">Best of Philly</a></li> </ul></div> <div class="header-tablet-elements"> <div class="header-subscribe"> <div class="thin-line"> <span class="screen-reader-text">Subscribe</span> <svg class="mc-icon phillymag-subscribe" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-subscribe"></use></svg> </div> <ul id="menu-sitenav_left" class="menu-header-subscribe js-menu-zephr"><li id="menu-item-921051" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-921051"><a href="/all-access/">All Access</a></li> <li id="menu-item-3821020" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3821020"><a href="/newsletters">Newsletters</a></li> <li id="menu-item-3703713" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3703713"><a href="/loginphilly">Sign In</a></li> </ul> </div> <div class="header-social"> <div class="thin-line"> <span class="screen-reader-text">Follow</span> <svg class="mc-icon phillymag-follow" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-follow"></use></svg> </div> <ul id="menu-social-menu" class="menu-header-social"><li id="menu-item-3357935" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357935"><a target="_blank" rel="noopener" href="https://www.facebook.com/foobooz"><span class="screen-reader-text">Facebook</span></a></li> <li id="menu-item-3357936" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357936"><a target="_blank" rel="noopener" href="https://www.instagram.com/foobooz/?hl=en/"><span class="screen-reader-text">Instagram</span></a></li> </ul> </div> </div> </div> <div class="header-search"> <div class="search-form-wrapper" id="js-search-form-wrapper" aria-hidden="true"> <form role="search" method="get" class="search-form" action="https://www.phillymag.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search …" value="" name="s" title="Search for:"> </label> <button type="submit"> <svg class="mc-icon icon-search" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-icon-search"></use></svg> <span class="screen-reader-text">Search</span> </button> </form> </div> <button id="js-toggle-search" aria-expanded="false" aria-controls="js-search-form-wrapper"> <svg class="mc-icon icon-search" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-icon-search"></use></svg> <svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-close"></use></svg> </button> </div> </div> </div> <header class="site-header" role="banner" id="js-header"> <div class="site-header-inner container"> <div class="header-social"> <div class="thin-line"> <span class="screen-reader-text">Follow</span> <svg class="mc-icon phillymag-follow" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-follow"></use></svg> </div> <ul id="menu-social-menu-1" class="menu-header-social"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357935"><a target="_blank" rel="noopener" href="https://www.facebook.com/foobooz"><span class="screen-reader-text">Facebook</span></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357936"><a target="_blank" rel="noopener" href="https://www.instagram.com/foobooz/?hl=en/"><span class="screen-reader-text">Instagram</span></a></li> </ul> </div> <div class="header-logo"> <div itemscope itemtype="https://schema.org/Organization"> <a href="https://www.phillymag.com/foobooz"> <svg class="mc-icon phillymag-section-restaurants-branded" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-section-restaurants-branded"></use></svg> <span class="screen-reader-text">Philadelphia Magazine</span> </a> <span class="section-front-tagline"></span></div> </div> <div class="header-subscribe"> <div class="thin-line"> <span class="screen-reader-text">Subscribe</span> <svg class="mc-icon phillymag-subscribe" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-subscribe"></use></svg> </div> <ul id="menu-sitenav_left-1" class="menu-header-subscribe js-menu-zephr"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-921051"><a href="/all-access/">All Access</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3821020"><a href="/newsletters">Newsletters</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3703713"><a href="/loginphilly">Sign In</a></li> </ul> </div> </div> </header> <div class="header-navigation-secondary container"><ul id="menu-primary-menu-1" class="menu-topics"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-3441760"><a href="/find-it-philly-search/">Find It/Philly</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441764"><a href="/find-a-doctor/">Doctors</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441765"><a href="/dentists/">Dentists</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3556438"><a href="/home-design/">Home Design Experts</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441767"><a href="/senior-living/">Senior Living</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441776"><a href="/weddings/">Wedding Experts</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570068"><a href="/real-estate-agents/">Real Estate Agents</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869015"><a href="/private-schools">Private Schools</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869012"><a href="/mortgage-lenders">Mortgage Professionals</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357928"><a href="https://www.phillymag.com/news">City Life</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3701551"><a href="https://www.phillymag.com/news">The Latest</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357931"><a href="https://www.phillymag.com/foobooz">Restaurants</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358386"><a href="https://www.phillymag.com/foobooz">Foobooz</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358357"><a href="https://www.phillymag.com/foobooz/50-best-restaurants/">50 Best Restaurants</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357976"><a href="https://www.phillymag.com/restaurant-finder/">Restaurant Finder</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358644"><a href="https://www.phillymag.com/foobooz/philadelphia-restaurant-jobs/">Jobs</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357934"><a href="https://www.phillymag.com/be-well-philly">Health</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357978"><a href="https://www.phillymag.com/be-well-philly">Be Well Philly</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357983"><a href="https://www.phillymag.com/dentists/">Find a Dentist</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358174"><a href="https://www.phillymag.com/find-a-doctor/">Find a Doctor</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357984"><a href="https://www.phillymag.com/senior-living/">Senior Living</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357987"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a> <ul class="sub-menu"> <li class="hide-on-desktop menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358017"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357997"><a href="https://www.phillymag.com/property">Real Estate &amp; Home</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357998"><a href="https://www.phillymag.com/property">Properties &amp; News</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358019"><a href="/home-design/">Find a Home &amp; Design Pro</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570077"><a href="/real-estate-agents/">Find a Real Estate Agent</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3870342"><a href="/mortgage-lenders">Find a Mortgage Professional</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358000"><a href="https://www.phillymag.com/things-to-do">Things To Do</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357999"><a href="https://www.phillymag.com/things-to-do">Events in Philly</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358002"><a href="https://www.phillymag.com/events">Philly Mag Events</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358004"><a href="https://www.phillymag.com/philadelphia-wedding">Wedding</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358006"><a href="https://www.phillymag.com/philadelphia-wedding">Guides &amp; Advice</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358022"><a href="https://www.phillymag.com/weddings/">Find a Wedding Expert</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-4031702"><a href="/bubblybrunch">Bubbly Brunch Event</a></li> </ul> </li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358008"><a href="https://www.phillymag.com/best-of-philly/">Best of Philly</a></li> </ul></div> <div style="width:1px;height:1px;margin:-1px 0 0 0;padding:0;display:block;"> </div> <div id="teads-video-oop" class="gpt-ad out-of-page"></div><div id="bottom-anchor" class="gpt-ad out-of-page"></div> <div id="banner-1" class="gpt-ad advertisement container"></div> <div class="container" role="main"> <div class="list-post" style="display:none"> <a href="https://www.phillymag.com/scrapertrap" class="post-image-link"><img width="400" height="250" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" class="attachment-image-list size-image-list wp-post-image" alt=""></a> <div class="list-post-card"> <a href="https://www.phillymag.com/scrapertrap" class="post-slug">I'm a scraper</a> <div class="post-title"> <a href="https://www.phillymag.com/scrapertrap">This search result is here to prevent scraping</a> </div> <div class="post-excerpt"> <p>If you're a human and see this, please ignore it. If you're a scraper, please click the link below :-) Note that clicking the link below will block access to this site for 24 hours.</p> </div> <span class="byline-wrapper">By <a href="https://www.phillymag.com/scrapertrap" class="byline">I'm a scraper</a></span> </div> </div> <div class="wysiwyg"> <h1 class="post-title">50 Best Restaurants in Philadelphia</h1> <div class="byline-wrapper">By <span itemprop="author"><a href="https://www.phillymag.com/author/kae-lani-palmisano/" class="byline" itemprop="url"><span itemprop="name">Kae Lani Palmisano</span></a></span>, <span itemprop="author"><a href="https://www.phillymag.com/author/regan-fletcher-stephens/" class="byline" itemprop="url"><span itemprop="name">Regan Fletcher Stephens</span></a></span>, <span itemprop="author"><a href="https://www.phillymag.com/author/jason-sheehan/" class="byline" itemprop="url"><span itemprop="name">Jason Sheehan</span></a></span>, and <span itemprop="author"><a href="https://www.phillymag.com/author/maddy-sweitzer-lamme/" class="byline" itemprop="url"><span itemprop="name">Maddy Sweitzer-Lammé</span></a></span><span id="byline-dot">·</span></div> <style type="text/css"> .page-template .wysiwyg .post-title { text-align: center; padding-top: 50px; } .shorenumbers { color: #d2232a; font-size: 50px; font-weight: 100; } .graphpadding { padding: 0 70px; } .wysiwyg p { max-width: 750px; margin: 25px auto; } .wysiwyg h2 { max-width: 750px; margin: 40px auto 20px; text-align: center; line-height: 50px; } .wysiwyg h3 { max-width: 750px; margin: 40px auto 40px; } .wysiwyg h4 { max-width: 750px; margin: 40px auto 40px; } .wysiwyg .wp-caption-text { width: 100%; max-width: 100%; } hr { max-width: 750px; } @media only screen and (max-width: 700px) { .shorenumbers {font-size: 36px;} .break {display: none;} .null.left{margin-left:0px;} .null.right{margin-right:60px;} .wysiwyg h2 { margin: 30px auto 10px; text-align: center; line-height: 40px; } .wysiwyg p {margin: 10px auto 20px;} } @media only screen and (min-width: 700px) { .null.left{margin-left:100px;} .null.right{margin-right:100px;} } .mbotneg15{margin-bottom:-15px;} </style> <div class="post-excerpt">Our annual list of the most intriguing, clever, unconventional — and, dare we say, groundbreaking — experiences taking Philly’s nationally celebrated dining scene to ever greater heights </div> <div id="attachment_4031900" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031900" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-960x640.jpg" alt="50 best restaurants philadelphia Friday Saturday Sunday" width="960" height="640" class="size-large wp-image-4031900 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-960x640.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-605x403.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-300x200.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-115x77.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_OpenerREV-600x400.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031900" class="wp-caption-text">The downstairs bar at Friday Saturday­ Sunday / Photography by Michael Persico</p></div> <p>The quest for “the best” restaurants is never-ending. But what’s most exciting about the search is that everyone’s formula is different.</p> <p>For some people, the best restaurant is the white-linen fine-dining establishment where Ossetra caviar finds its way atop nearly every dish. For others, it’s the sushi spot where they had their first date or the corner restaurant that perfectly captures their culture’s cuisine despite being thousands of miles from home. All definitions are valid. And over the years, as I’ve collected stories of what “the best” means to people, I’ve expanded my own ideas of what it could mean. </p> <p>Restaurants create their own versions of “best” by demonstrating a command of their cuisines, experimenting with their craft, and developing menus that push the boundaries of what we’d expect. But beyond the food, the roles these restaurants play in our lives — what they mean to us as individuals and as a community — are among the most important factors. </p> <p>Over the past few years, restaurants had to adapt to unprecedented circumstances. We saw a rise of pop-ups, collaborations, chef-driven markets, takeout offerings and more. And our 50 Best Restaurants list adapted, too, highlighting these outstanding initiatives. This year, to capture how much our dining scene has expanded beyond just restaurants, we’ve decided to expand our list as well. In addition to the 50 Best Restaurants, you’ll find 25 more dining experiences — <a href="https://www.phillymag.com/foobooz/5-best-markets/" target="_blank" rel="noopener">best markets</a>, <a href="https://www.phillymag.com/foobooz/best-chef-pop-ups-philly/" target="_blank" rel="noopener">promising pop-ups</a>, <a href="https://www.phillymag.com/foobooz/classic-philly-restaurants/" target="_blank" rel="noopener">neighborhood classics</a>, and <a href="https://www.phillymag.com/foobooz/10-best-casual-bites/" target="_blank" rel="noopener">casual bites</a> — that we needed to recognize for their unique contributions to our community. There are many ways to be the best, and all the places listed here prove it in their own amazing ways.<em> — Kae Lani Palmisano</em></p> <p></p> <div><strong><span id="top"><a href="#list">See the list at a glance here!</a></span></strong><p></p> <hr> <div id="attachment_4031901" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031901" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-960x627.jpg" alt="50 best restaurants philadelphia Friday Saturday Sunday" width="960" height="627" class="size-large wp-image-4031901 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-960x627.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-605x395.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-300x196.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-115x75.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_FSS-600x392.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031901" class="wp-caption-text">From left: A specialty cocktail; jerk-spiced quail with curried liver pâté from Friday­ Saturday Sunday.­<br></p></div> <h2><span class="shorenumbers">1. <a href="https://www.fridaysaturdaysunday.com/" target="_blank" rel="noopener">Friday Saturday Sunday</a></span></h2> <p>There are two ways to do Friday Saturday Sunday. There’s downstairs at the bar, where you can kick back a few briny oysters and an Orange Catholic cocktail in the company of regulars and destination diners — folks who have traveled just to get a taste of what constitutes an Outstanding Restaurant by James Beard’s standards. And then there’s upstairs, where the eight-course menu is a cohesive narrative of what American fine dining can be — a blend of cultural influences seamlessly presented in a paced procession of ambitious dishes that demonstrate Chad Williams’s culinary fluency. From the crudo to the sweetbreads and jerk-spiced quail with curried liver pâté all the way to the New York strip with braised oxtail, Williams takes adventurous risks that really pay off. It’s proof that fine dining can be approachable, inviting, fun and even relaxing.</p> <p><strong>Rittenhouse&nbsp;|&nbsp;New American</strong><br> <em>261 South 21st Street</em><br> <a href="https://www.fridaysaturdaysunday.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/06/01/friday-saturday-sunday-philadelphia-chef/">More about Friday Saturday Sunday</a></p> <h2><span class="shorenumbers">2. <a href="https://kalayaphilly.com/" target="_blank" rel="noopener">Kalaya</a></span></h2> <p>The transition between the original­ Kalaya and Kalaya 2.0 couldn’t have been more flawless. From day one, you’d think this old warehouse on Palmer Street was always the sleek, sexy and James Beard Award-winning­ (yes, another one; Philadelphia is just that good) Thai restaurant where the tom yum and shaw muang flower dumpling are works of art. <a href="https://www.phillymag.com/foobooz/2022/10/15/nok-suntaranon-kalaya-fishtown/">Chutatip “Nok” Suntaranon</a>’s mission has always been to be true to herself and her culture, and because of that unabashed authenticity, Philly is blessed with dishes that are difficult to find outside of Thailand. Variety is the spice of life at Kalaya. Build heat with the nua pad prik noom (stir-fried peppercorn beef), balance it out with gai yaang naa por (charcoal-grilled chicken),­ and throw in a curry for good measure. Whatever you do, don’t settle into a routine with this menu. Suntaranon is constantly bringing new and exciting options to the table, so come with an open mind and an empty stomach.</p> <p><strong>Fishtown&nbsp;|&nbsp;Thai</strong><br> <em>4 West Palmer Street</em><br> <a href="https://kalayaphilly.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2023/03/23/kalaya-fishtown-review/">Review</a></p> <div id="attachment_4031906" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031906" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-960x873.jpg" alt="50 best restaurants philadelphia" width="960" height="873" class="size-large wp-image-4031906 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-960x873.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-605x550.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-300x273.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-496x451.jpg 496w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-115x105.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/F-50Best_03REV-600x546.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031906" class="wp-caption-text">Tom yum from Kalaya</p></div> <h2><span class="shorenumbers">3. <a href="http://royalsushiandizakaya.com/" target="_blank" rel="noopener">Royal Izakaya</a></span></h2> <p>Royal Izakaya is the culmination of a lifetime dedicated to the art of sushi. Jesse Ito, the chef behind the hard-to-reserve omakase, has been honing his craft since he was 14, working alongside his father, Masaharu Ito, at Fuji in Haddonfield. The front room is where you go to hang out with friends over cocktails, chashu buns and fried karaage wings. The back room, however, is where Ito takes the stage with a 17-piece tasting menu that showcases dry-aged Spanish bluefin tuna, New Zealand salmon belly, Kumamoto oysters, and more.</p> <p><strong>Queen Village&nbsp;|&nbsp;Japanese</strong><br> <em>780 South 2nd Street</em><br> <a href="http://royalsushiandizakaya.com/" target="_blank" rel="noopener">Website</a> |&nbsp;<a href="https://www.phillymag.com/foobooz/2022/09/22/behind-the-line-jesse-ito-royal-sushi-izakaya/">More about Royal Izakaya</a></p> <h2><span class="shorenumbers">4. <a href="https://www.herplacephilly.com/" target="_blank" rel="noopener">Her Place Supper Club</a></span></h2> <p>After all the attention, press, and rightfully earned national fawning over Amanda Shulman’s supper-club-style restaurant, you might start to feel like Her Place isn’t really Philly’s anymore. But when Shulman and her team turn down the music to introduce the night’s dinner, when they circulate through the dining room shaving truffles over the crispy-skinned chicken and present you with a crab salad under a mountain of caviar, you’ll be reminded that Philly’s sense of casual hospitality is inextricably linked to the magic of this restaurant. </p> <p><strong>Rittenhouse&nbsp;|&nbsp;New American</strong><br> <em>1740 Sansom Street</em><br> <a href="https://www.herplacephilly.com/" target="_blank" rel="noopener">Website</a><br> </p><div id="attachment_4031907" style="width: 970px" class="wp-caption aligncenter"><img aria-describedby="caption-attachment-4031907" data-src="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-960x717.jpg" alt="50 best restaurants philadelphia" width="960" height="717" class="size-large wp-image-4031907 lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload lazyload" srcset="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-960x717.jpg 960w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-605x451.jpg 605w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-300x224.jpg 300w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-96x72.jpg 96w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-115x86.jpg 115w, https://cdn10.phillymag.com/wp-content/uploads/sites/3/2024/01/cantinaLM-50Best_05-600x448.jpg 600w" sizes="(max-width: 960px) 100vw, 960px"><p id="caption-attachment-4031907" class="wp-caption-text">From left: A variety of tacos and chef Dionicio Jimenez at his barbacoa pit at Cantina La Martina</p></div><p></p> <h2><span class="shorenumbers">5. <a href="https://www.cantinalamartinapa.com/" target="_blank" rel="noopener">Cantina La Martina</a></span></h2> <p>Somewhere between the spicy heat of the pozole verde and the earthy huitlacoche trufa ravioli, you’ll find expressions of chef Dionicio Jiminez’s personal life story, from his Pueblo roots to his roughly two decades cooking through Philly kitchens (including Vetri). Though you can’t go wrong with anything on the menu, we implore you to stop by on weekends for the tangy barbacoa roasted in pits that Jiminez dug in the restaurant’s garden.</p> <p><strong>Kensington&nbsp;|&nbsp;Mexican</strong><br> <em>2800 D Street</em><br> <a href="https://www.cantinalamartinapa.com/" target="_blank" rel="noopener">Website</a></p> <p></p><div id="banner-2" class="gpt-ad lazyload advertisement container" data-ad="banner-2"></div> |
| 28 |
Error
On line 1012, column 40 banner-2"></div> <footer class="site-footer" role="contentinfo" id="js-footer"> <div class="footer-navigation"><ul id="menu-footer" class="menu-footer-main container"><li id="menu-item-1312111" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1312111"><a href="https://www.phillymag.com/about-philadelphia-magazine/">About</a></li> <li id="menu-item-1172051" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1172051"><a href="https://phillymag.com/contact/">Contact</a></li> <li id="menu-item-3545622" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3545622"><a href="https://www.phillymag.com/issues/">Magazine</a></li> <li id="menu-item-1359951" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1359951"><a href="https://www.phillymag.com/subscribe-to-philadelphia/">Subscribe</a></li> <li id="menu-item-900141" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-900141"><a href="/philadelphia-magazine-media-kit/">Advertise</a></li> <li id="menu-item-3966784" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3966784"><a href="https://metrocorp.cloud.buysub.com/login">Customer Service</a></li> <li id="menu-item-3358026" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358026"><a href="https://www.phillymag.com/careers/">Careers</a></li> <li id="menu-item-3358028" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358028"><a href="https://www.phillymag.com/privacy-policy/">Privacy Policy</a></li> </ul></div> <div class="site-footer-inner container"> <a href="https://www.phillymag.com" class="footer-logo"> <span><svg class="mc-icon phillymag-logo" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-logo"></use></svg></span> <span class="screen-reader-text">Philadelphia Magazine</span> </a> <ul id="menu-social-menu-2" class="menu-footer-social"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357935"><a target="_blank" rel="noopener" href="https://www.facebook.com/foobooz"><span class="screen-reader-text">Facebook</span></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357936"><a target="_blank" rel="noopener" href="https://www.instagram.com/foobooz/?hl=en/"><span class="screen-reader-text">Instagram</span></a></li> </ul> <p class="footer-copyright">2024 © Metro Corp. All Rights Reserved.</p> </div> </footer> <div class="container" id="gutter-container"></div> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-zephr/js/blaize-front-end-sdk.min.js?ver=1.0.4" id="blaize-sdk-js" defer></script> <script type="text/javascript" id="metrocorp-zephr-js-extra"> /* <![CDATA[ */ var mcZephr = {"ajaxurl":"https:\/\/www.phillymag.com\/wp-admin\/admin-ajax.php","pageslug":"50-best-restaurants","hbpageurl":"https:\/\/www.phillymag.com\/foobooz\/50-best-restaurants\/","hbpagename":"50 Best Restaurants in Philadelphia","hbportalid":"510637","formId":{"register":"bcb5c500-550a-47a6-bd37-ca98e1557872","meter":"5abdf84d-a6ba-444c-bdc7-8ce82290ccae"},"nonce":{"register":"c2b9b6612d","meter":"5fd0d64bac"},"pushArray":"[]"}; /* ]]> */ </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-zephr/js/metrocorp-zephr.js?ver=1.0.4" id="metrocorp-zephr-js" defer></script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-breakingnewsbanner/assets/js/breaking-news-bar.js?ver=1" id="mc-breaking-news-banner-script-js"></script> <script type="text/javascript" id="metrocorp-js-extra"> /* <![CDATA[ */ var mcGlobal = {"isSingle":"1","directoryName":"Philadelphia Magazine"}; /* ]]> */ </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/themes/metrocorp/dist/js/metrocorp.min.js?ver=87" id="metrocorp-js" defer></script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/themes/metrocorp/dist/js/metrocorp-secondary.min.js?ver=87" id="metrocorp-secondary-js" defer></script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-google-tag-manager/assets/js/datalayer-philly-best-restaurants.js?ver=1.0.0" id="mc-datalayer-js" defer></script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-google-tag-manager/assets/js/datalayer-yaml.js?ver=1.0.0" id="mc-datalayer-yaml-js"></script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-ads//dist/js/metrocorp-ads-secondary.js?ver=842a0c154e5d9bc4a95b" id="metrocorp-ads-secondary-js" defer></script> <!-- Start of AdCellerant Embed Code --> <script src="https://js.adsrvr.org/up_loader.1.1.0.js" type="text/javascript"></script> <script type="text/javascript"> ttd_dom_ready( function() { if (typeof TTDUniversalPixelApi === 'function') { var universalPixelApi = new TTDUniversalPixelApi(); universalPixelApi.init("1qqfa0h", ["g7kke2y"], "https://insight.adsrvr.org/track/up"); } }); </script> <!-- End of AdCellerant Embed Code --> <link rel="stylesheet" href="//cloud.typography.com/6851996/6329192/css/fonts.css" type="text/css" media="print" onload="this.media='all'"> <div id="bottom-anchor" class="gpt-ad"></div> |
| 29 |
Info
On line 465, column 111 hillymag"> <div id="ad-reveal" class="gpt-ad"></div><div id="under-reveal"></div><div class="header-navigation-spacer"></div> <div class="header-navigation js-header-menu-full" id="js-header-navigation"> <div class="container header-navigation-inner"> <div class="navigation-logo"> <a href="//www.phillymag.com"> <svg class="mc-icon phillymag-logo" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-logo"></use></svg> </a> </div> <button id="js-mobile-menu-toggle" class="mobile-menu-toggle" aria-hidden="true"> <svg class="mc-icon hamburger" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-hamburger"></use></svg> <svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-close"></use></svg> </button> <div class="header-menu-wrapper" id="js-header-navigation-wrapper"> <div class="header-menu"><ul id="menu-primary-menu" class="menu-header-main"><li id="menu-item-3441760" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-3441760"><a href="/find-it-philly-search/">Find It/Philly</a> <ul class="sub-menu"> <li id="menu-item-3441764" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441764"><a href="/find-a-doctor/">Doctors</a></li> <li id="menu-item-3441765" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441765"><a href="/dentists/">Dentists</a></li> <li id="menu-item-3556438" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3556438"><a href="/home-design/">Home Design Experts</a></li> <li id="menu-item-3441767" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441767"><a href="/senior-living/">Senior Living</a></li> <li id="menu-item-3441776" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441776"><a href="/weddings/">Wedding Experts</a></li> <li id="menu-item-3570068" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570068"><a href="/real-estate-agents/">Real Estate Agents</a></li> <li id="menu-item-3869015" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869015"><a href="/private-schools">Private Schools</a></li> <li id="menu-item-3869012" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869012"><a href="/mortgage-lenders">Mortgage Professionals</a></li> </ul> </li> <li id="menu-item-3357928" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357928"><a href="https://www.phillymag.com/news">City Life</a> <ul class="sub-menu"> <li id="menu-item-3701551" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3701551"><a href="https://www.phillymag.com/news">The Latest</a></li> </ul> </li> <li id="menu-item-3357931" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357931"><a href="https://www.phillymag.com/foobooz">Restaurants</a> <ul class="sub-menu"> <li id="menu-item-3358386" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358386"><a href="https://www.phillymag.com/foobooz">Foobooz</a></li> <li id="menu-item-3358357" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358357"><a href="https://www.phillymag.com/foobooz/50-best-restaurants/">50 Best Restaurants</a></li> <li id="menu-item-3357976" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357976"><a href="https://www.phillymag.com/restaurant-finder/">Restaurant Finder</a></li> <li id="menu-item-3358644" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358644"><a href="https://www.phillymag.com/foobooz/philadelphia-restaurant-jobs/">Jobs</a></li> </ul> </li> <li id="menu-item-3357934" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357934"><a href="https://www.phillymag.com/be-well-philly">Health</a> <ul class="sub-menu"> <li id="menu-item-3357978" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357978"><a href="https://www.phillymag.com/be-well-philly">Be Well Philly</a></li> <li id="menu-item-3357983" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357983"><a href="https://www.phillymag.com/dentists/">Find a Dentist</a></li> <li id="menu-item-3358174" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358174"><a href="https://www.phillymag.com/find-a-doctor/">Find a Doctor</a></li> <li id="menu-item-3357984" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357984"><a href="https://www.phillymag.com/senior-living/">Senior Living</a></li> </ul> </li> <li id="menu-item-3357987" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357987"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a> <ul class="sub-menu"> <li id="menu-item-3358017" class="hide-on-desktop menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358017"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a></li> </ul> </li> <li id="menu-item-3357997" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357997"><a href="https://www.phillymag.com/property">Real Estate &amp; Home</a> <ul class="sub-menu"> <li id="menu-item-3357998" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357998"><a href="https://www.phillymag.com/property">Properties &amp; News</a></li> <li id="menu-item-3358019" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358019"><a href="/home-design/">Find a Home &amp; Design Pro</a></li> <li id="menu-item-3570077" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570077"><a href="/real-estate-agents/">Find a Real Estate Agent</a></li> <li id="menu-item-3870342" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3870342"><a href="/mortgage-lenders">Find a Mortgage Professional</a></li> </ul> </li> <li id="menu-item-3358000" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358000"><a href="https://www.phillymag.com/things-to-do">Things To Do</a> <ul class="sub-menu"> <li id="menu-item-3357999" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357999"><a href="https://www.phillymag.com/things-to-do">Events in Philly</a></li> <li id="menu-item-3358002" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358002"><a href="https://www.phillymag.com/events">Philly Mag Events</a></li> </ul> </li> <li id="menu-item-3358004" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358004"><a href="https://www.phillymag.com/philadelphia-wedding">Wedding</a> <ul class="sub-menu"> <li id="menu-item-3358006" class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358006"><a href="https://www.phillymag.com/philadelphia-wedding">Guides &amp; Advice</a></li> <li id="menu-item-3358022" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358022"><a href="https://www.phillymag.com/weddings/">Find a Wedding Expert</a></li> <li id="menu-item-4031702" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-4031702"><a href="/bubblybrunch">Bubbly Brunch Event</a></li> </ul> </li> <li id="menu-item-3358008" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358008"><a href="https://www.phillymag.com/best-of-philly/">Best of Philly</a></li> </ul></div> <div class="header-tablet-elements"> <div class="header-subscribe"> <div class="thin-line"> <span class="screen-reader-text">Subscribe</span> <svg class="mc-icon phillymag-subscribe" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-subscribe"></use></svg> </div> <ul id="menu-sitenav_left" class="menu-header-subscribe js-menu-zephr"><li id="menu-item-921051" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-921051"><a href="/all-access/">All Access</a></li> <li id="menu-item-3821020" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3821020"><a href="/newsletters">Newsletters</a></li> <li id="menu-item-3703713" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3703713"><a href="/loginphilly">Sign In</a></li> </ul> </div> <div class="header-social"> <div class="thin-line"> <span class="screen-reader-text">Follow</span> <svg class="mc-icon phillymag-follow" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-follow"></use></svg> </div> <ul id="menu-social-menu" class="menu-header-social"><li id="menu-item-3357935" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357935"><a target="_blank" rel="noopener" href="https://www.facebook.com/foobooz"><span class="screen-reader-text">Facebook</span></a></li> <li id="menu-item-3357936" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357936"><a target="_blank" rel="noopener" href="https://www.instagram.com/foobooz/?hl=en/"><span class="screen-reader-text">Instagram</span></a></li> </ul> </div> </div> </div> <div class="header-search"> <div class="search-form-wrapper" id="js-search-form-wrapper" aria-hidden="true"> <form role="search" method="get" class="search-form" action="https://www.phillymag.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search …" value="" name="s" title="Search for:"> </label> <button type="submit"> <svg class="mc-icon icon-search" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-icon-search"></use></svg> <span class="screen-reader-text">Search</span> </button> </form> </div> <button id="js-toggle-search" aria-expanded="false" aria-controls="js-search-form-wrapper"> <svg class="mc-icon icon-search" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-icon-search"></use></svg> <svg class="mc-icon close" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-close"></use></svg> </button> </div> </div> </div> <header class="site-header" role="banner" id="js-header"> <div class="site-header-inner container"> <div class="header-social"> <div class="thin-line"> <span class="screen-reader-text">Follow</span> <svg class="mc-icon phillymag-follow" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-follow"></use></svg> </div> <ul id="menu-social-menu-1" class="menu-header-social"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357935"><a target="_blank" rel="noopener" href="https://www.facebook.com/foobooz"><span class="screen-reader-text">Facebook</span></a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357936"><a target="_blank" rel="noopener" href="https://www.instagram.com/foobooz/?hl=en/"><span class="screen-reader-text">Instagram</span></a></li> </ul> </div> <div class="header-logo"> <div itemscope itemtype="https://schema.org/Organization"> <a href="https://www.phillymag.com/foobooz"> <svg class="mc-icon phillymag-section-restaurants-branded" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-section-restaurants-branded"></use></svg> <span class="screen-reader-text">Philadelphia Magazine</span> </a> <span class="section-front-tagline"></span></div> </div> <div class="header-subscribe"> <div class="thin-line"> <span class="screen-reader-text">Subscribe</span> <svg class="mc-icon phillymag-subscribe" aria-hidden="true"><use xlink:href="/wp-content/themes/metrocorp/images/sprite.svg?ver=87#mc-icon-phillymag-subscribe"></use></svg> </div> <ul id="menu-sitenav_left-1" class="menu-header-subscribe js-menu-zephr"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-921051"><a href="/all-access/">All Access</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3821020"><a href="/newsletters">Newsletters</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3703713"><a href="/loginphilly">Sign In</a></li> </ul> </div> </div> </header> <div class="header-navigation-secondary container"><ul id="menu-primary-menu-1" class="menu-topics"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-3441760"><a href="/find-it-philly-search/">Find It/Philly</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441764"><a href="/find-a-doctor/">Doctors</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441765"><a href="/dentists/">Dentists</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3556438"><a href="/home-design/">Home Design Experts</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441767"><a href="/senior-living/">Senior Living</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3441776"><a href="/weddings/">Wedding Experts</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570068"><a href="/real-estate-agents/">Real Estate Agents</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869015"><a href="/private-schools">Private Schools</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3869012"><a href="/mortgage-lenders">Mortgage Professionals</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357928"><a href="https://www.phillymag.com/news">City Life</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3701551"><a href="https://www.phillymag.com/news">The Latest</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357931"><a href="https://www.phillymag.com/foobooz">Restaurants</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358386"><a href="https://www.phillymag.com/foobooz">Foobooz</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358357"><a href="https://www.phillymag.com/foobooz/50-best-restaurants/">50 Best Restaurants</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357976"><a href="https://www.phillymag.com/restaurant-finder/">Restaurant Finder</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358644"><a href="https://www.phillymag.com/foobooz/philadelphia-restaurant-jobs/">Jobs</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357934"><a href="https://www.phillymag.com/be-well-philly">Health</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357978"><a href="https://www.phillymag.com/be-well-philly">Be Well Philly</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357983"><a href="https://www.phillymag.com/dentists/">Find a Dentist</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358174"><a href="https://www.phillymag.com/find-a-doctor/">Find a Doctor</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3357984"><a href="https://www.phillymag.com/senior-living/">Senior Living</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357987"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a> <ul class="sub-menu"> <li class="hide-on-desktop menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358017"><a href="https://www.phillymag.com/life-style">Life &amp; Style</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3357997"><a href="https://www.phillymag.com/property">Real Estate &amp; Home</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357998"><a href="https://www.phillymag.com/property">Properties &amp; News</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358019"><a href="/home-design/">Find a Home &amp; Design Pro</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3570077"><a href="/real-estate-agents/">Find a Real Estate Agent</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3870342"><a href="/mortgage-lenders">Find a Mortgage Professional</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358000"><a href="https://www.phillymag.com/things-to-do">Things To Do</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3357999"><a href="https://www.phillymag.com/things-to-do">Events in Philly</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358002"><a href="https://www.phillymag.com/events">Philly Mag Events</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-has-children menu-item-3358004"><a href="https://www.phillymag.com/philadelphia-wedding">Wedding</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-mc-tax-vertical menu-item-3358006"><a href="https://www.phillymag.com/philadelphia-wedding">Guides &amp; Advice</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358022"><a href="https://www.phillymag.com/weddings/">Find a Wedding Expert</a></li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-4031702"><a href="/bubblybrunch">Bubbly Brunch Event</a></li> </ul> </li> <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3358008"><a href="https://www.phillymag.com/best-of-philly/">Best of Philly</a></li> </ul></div> <div style="width:1px;height:1px;margin:-1px 0 0 0;padding:0;display:block;"> </div> <div id="teads-video-oop" class="gpt-ad out-of-page"></div><div id="bottom-anchor" class="gpt-ad out-of-page"></div> |
| 30 |
Error
On line 1138, column 7 ="gpt-ad"></div> <script type="text/javascript"> window.Zephr = window.Zephr || {}; window.Zephr.includeOutcomes = true; window.Zephr.outcomesAsEvents = true; window.Zephr.groupFields = false; (function() { var xhr = new(XMLHttpRequest || ActiveXObject)('MSXML2.XMLHTTP.3.0'); xhr.open('GET', '/blaize/datalayer', true); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { var response; try { response = JSON.parse(xhr.response); } catch (e) { response = xhr.response; } if (xhr.status === 200) { for (var dataLayerFieldName in response) { if (!(dataLayerFieldName in window)) window[dataLayerFieldName] = []; var pageView = response[dataLayerFieldName]; var events = []; if (window.Zephr && window.Zephr.includeOutcomes && window.Zephr.outcomes) { pageView.zephrOutcomes = window.Zephr.outcomes; if (window.Zephr.outcomesAsEvents) { Object.keys(window.Zephr.outcomes || []).forEach(function(outcomeKey) { var outcomeEvent = { event: "zephr-outcome-" + outcomeKey, featureId: outcomeKey, featureLabel: window.Zephr.outcomes[outcomeKey].featureLabel, outcomeId: window.Zephr.outcomes[outcomeKey].outcomeId, outcomeLabel: window.Zephr.outcomes[outcomeKey].outcomeLabel, }; events.push(outcomeEvent); }); } } if (window.Zephr && window.Zephr.accessDetails) { Object.keys((window.Zephr.accessDetails.trials || {})).forEach(function(trialId){ var trial = window.Zephr.accessDetails.trials[trialId] if(trial.reportInDataLayer){ var usedCredits = trial.totalCredits - trial.remainingCredits if (window.Zephr.groupFields && !pageView.zephrTrials) pageView.zephrTrials = {}; var target = window.Zephr.groupFields ? pageView.zephrTrials : pageView if (trial.dataLayerCreditsUsedKey) { target[trial.dataLayerCreditsUsedKey] = usedCredits; } if (trial.dataLayerCreditsRemainingKey) { target[trial.dataLayerCreditsRemainingKey] = trial.remainingCredits; } } }); (window.Zephr.accessDetails.trialTrackingDetails || []).forEach(function(details) { var type = details.entitlementType === 'credits' ? 'credits' : 'meters'; var trial = (window.Zephr.accessDetails[type] || {})[details.entitlementId]; if (!trial) return; if (window.Zephr.groupFields && !pageView.zephrTrials) pageView.zephrTrials = {}; if (details.creditsRemainingKey) { if (window.Zephr.groupFields) { pageView.zephrTrials[details.creditsRemainingKey] = trial.remainingCredits; } else { pageView[details.creditsRemainingKey] = trial.remainingCredits; } } if (details.creditsUsedKey) { if (window.Zephr.groupFields) { pageView.zephrTrials[details.creditsUsedKey] = trial.totalCredits - trial.remainingCredits; } else { pageView[details.creditsUsedKey] = trial.totalCredits - trial.remainingCredits; } } }); try { (Object.keys(window.Zephr.accessDetails.timeTrials || {})).forEach(function(timeTrialId) { var timeTrial = window.Zephr.accessDetails.timeTrials[timeTrialId] if(timeTrial.reportInDataLayer){ if (window.Zephr.groupFields && !pageView.zephrTrials) pageView.zephrTrials = {}; var target = window.Zephr.groupFields ? pageView.zephrTrials : pageView if (timeTrial.dataLayerTrialDurationKey) { target[timeTrial.dataLayerTrialDurationKey] = timeTrial.trialDuration; } if (timeTrial.dataLayerTrialDurationUnitsKey) { target[timeTrial.dataLayerTrialDurationUnitsKey] = timeTrial.trialDurationUnits; } if (timeTrial.dataLayerTrackerEntryTimeKey) { target[timeTrial.dataLayerTrackerEntryTimeKey] = timeTrial.entryTime; } if (timeTrial.dataLayerTrackerHitsKey) { target[timeTrial.dataLayerTrackerHitsKey] = timeTrial.trackerHits; } if (timeTrial.dataLayerTrialTimeRemainingKey) { target[timeTrial.dataLayerTrialTimeRemainingKey] = timeTrial.timeRemainingInTrial; } } }); } catch (err) { console.error("Error aggregating Zephr time trials", err); } } if (Object.keys(pageView).length) { pageView.event = "zephr-pageview"; events.unshift(pageView); } if (!events.length) continue; events.forEach(function(event) { window[dataLayerFieldName].push(event); }); } var readyEvent = document.createEvent('Event'); readyEvent.initEvent('zephr.dataLayerReady', true, true); document.dispatchEvent(readyEvent); } } } xhr.send({}); })(); </script> <script type="text/javascript"> if (!window.Zephr) window.Zephr = {}; window.Zephr.accessDetails = {"isAuthenticated":false,"accessDecisions":{"M3A9uZ":true},"entitlements":{},"credits":{},"meters":{"M3A9uZ":{"isUsedInDecision":true,"isDecrementedInDecision":true,"totalCredits":3,"remainingCredits":2},"yd5xCQ":{"isUsedInDecision":false,"isDecrementedInDecision":false,"totalCredits":3,"remainingCredits":3}},"trials":{},"timeTrials":{},"trialTrackingDetails":[{"creditsUsedKey":"BOSregisteredTrialUsed","creditsRemainingKey":"BOSregisteredTrialRemaining","entitlementId":"8PkFKn","entitlementType":"meter"},{"creditsUsedKey":"PHIunRegisteredTrialUsed","creditsRemainingKey":"PHIunRegisteredTrialRemaining","entitlementId":"M3A9uZ","entitlementType":"meter"},{"creditsUsedKey":"PHIregisteredTrialUsed","creditsRemainingKey":"PHIregisteredTrialRemaining","entitlementId":"X8GVUi","entitlementType":"meter"},{"creditsUsedKey":"BOSunRegisteredTrialUsed","creditsRemainingKey":"BOSunRegisteredTrialRemaining","entitlementId":"yd5xCQ","entitlementType":"meter"}],"testGroups":{"a92a3049-5eae-42b9-a584-32c777aeb20f":"B","3b01d163-59e0-4572-93b2-2ccaee467b4c":"A","a866aafc-5caa-4bfc-968d-3be9056b2733":"B","e00c1d35-cbaa-4515-bdea-241356f6f120":"B"},"activeProducts":[]}; </script> </body> </htm |
| 31 |
Error
On line 3, column 44 ymag.com/?p=4031020>; rel= |
| 32 |
Error
On line 2, column 61 v2/pages/4031020>; rel= |
| 33 |
Error
On line 1, column 36 ymag.com/wp-json/>; rel= |
| 34 |
Error
On line 1, column 36 ymag.com/wp-json/>; rel= |
| 35 |
Error
On line 1, column 36 ymag.com/wp-json/>; rel= |
| 36 |
Error
On line 31, column 85 eights"> <link rel="canonical" href="https://www.phillymag.com/foobooz/50-best-restaurants/"> <met |
| 37 |
Info
On line 58, column 31 phy.com"> <script type="text/javascript"> /* <! |
| 38 |
Info
On line 65, column 55 </script> <style id="wp-emoji-styles-inline-css" style="background-color: #ffff80;">type="text/css"> img |
| 39 |
Info
On line 79, column 60 </style> <style id="classic-theme-styles-inline-css" style="background-color: #ffff80;">type="text/css"> /*! T |
| 40 |
Info
On line 83, column 53 </style> <style id="global-styles-inline-css" style="background-color: #ffff80;">type="text/css"> body{ |
| 41 |
Error
On line 84, column 2801 .is-layout-flex){gap: 0.5em;}: |
| 42 |
Error
On line 84, column 2837 .is-layout-grid){gap: 0.5em;}b |
| 43 |
Error
On line 84, column 2918 -inline-start: 0;margin-inline |
| 44 |
Error
On line 84, column 2941 line-end: 2em;}body |
| 45 |
Error
On line 84, column 3015 ne-start: 2em;margi |
| 46 |
Error
On line 84, column 3036 in-inline-end: 0;}body .is-lay |
| 47 |
Error
On line 84, column 3209 -inline-start: 0;margin-inline |
| 48 |
Error
On line 84, column 3232 line-end: 2em;}body |
| 49 |
Error
On line 84, column 3313 ne-start: 2em;margi |
| 50 |
Error
On line 84, column 3334 in-inline-end: 0;}body .is-lay |
| 51 |
Error
On line 84, column 3526 not(.alignfull)){max-width: va |
| 52 |
Error
On line 84, column 3968 .is-layout-flex){gap: 2em;}:wh |
| 53 |
Error
On line 84, column 4019 .is-layout-grid){gap: 2em;}:wh |
| 54 |
Error
On line 84, column 4076 .is-layout-flex){gap: 1.25em;} |
| 55 |
Error
On line 84, column 4136 .is-layout-grid){gap: 1.25em;} |
| 56 |
Error
On line 85, column 54 element-button)){color: inheri |
| 57 |
Error
On line 86, column 46 .is-layout-flex){gap: 1.25em;} |
| 58 |
Error
On line 86, column 106 .is-layout-grid){gap: 1.25em;} |
| 59 |
Error
On line 87, column 40 .is-layout-flex){gap: 2em;}:wh |
| 60 |
Error
On line 87, column 91 .is-layout-grid){gap: 2em;} .w |
| 61 |
Info
On line 92, column 49 ia="all"> <script type="text/javascript" id="gpt-js-extra"> /* <! |
| 62 |
Info
On line 97, column 50 </script> <script type="text/javascript" id="gpt-js-before"> /* <! |
| 63 |
Info
On line 117, column 108 </script> <script type="text/javascript" src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" id="gpt-js" async></scri |
| 64 |
Info
On line 118, column 49 </script> <script type="text/javascript" id="gpt-js-after"> /* <! |
| 65 |
Info
On line 123, column 116 </script> <script type="text/javascript" src="https://static.criteo.net/js/ld/publishertag.js?ver=6.4.3" id="criteo-js" async></scri |
| 66 |
Info
On line 124, column 98 </script> <script type="text/javascript" src="https://s.ntv.io/serve/load.js" id="nativo-tracking-js" async></scri |
| 67 |
Info
On line 125, column 180 </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/themes/metrocorp-phillymag/countdown-clock/countdown.js?ver=0.4.37" id="phillymag-countdown-js-js" async></scri |
| 68 |
Error
On line 126, column 73 </script> <link rel="https://api.w.org/" href="https://www.phillymag.com/wp-json/"><link |
| 69 |
Error
On line 126, column 180 wp-json/"><link rel="alternate" type="application/json" href="https://www.phillymag.com/wp-json/wp/v2/pages/4031020"><link |
| 70 |
Error
On line 126, column 287 /4031020"><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.phillymag.com/xmlrpc.php?rsd"> <meta |
| 71 |
Error
On line 128, column 66 s 6.4.3"> <link rel="shortlink" href="https://www.phillymag.com/?p=4031020"> < |
| 72 |
Error
On line 180, column 239 LOChSybY"><link rel="icon" href="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2017/10/cropped-phillymag-favicon-32x32.png" sizes="32x32"> <link |
| 73 |
Error
On line 181, column 141 ="32x32"> <link rel="icon" href="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2017/10/cropped-phillymag-favicon-192x192.png" sizes="192x192"> <link |
| 74 |
Error
On line 182, column 137 192x192"> <link rel="apple-touch-icon" href="https://cdn10.phillymag.com/wp-content/uploads/sites/3/2017/10/cropped-phillymag-favicon-180x180.png"> <meta |
| 75 |
Info
On line 203, column 97 </script> <script async type="text/javascript" src="https://www.googletagmanager.com/gtm.js?id=GTM-PLKVN8"></scri |
| 76 |
Info
On line 231, column 101 Code --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/510637.js"></scri |
| 77 |
Info
On line 243, column 31 Code --> <script type="text/javascript"> _link |
| 78 |
Info
On line 247, column 40 tner_id); </script><script type="text/javascript"> (func |
| 79 |
Info
On line 370, column 59 div> <header class="site-header" role="banner" id="js-header"> < |
| 80 |
Info
On line 491, column 23 n></div> <style style="background-color: #ffff80;">type="text/css"> .page |
| 81 |
Info
On line 934, column 31 <p></p> <script type="text/javascript"> if |
| 82 |
Info
On line 944, column 41 ipt> </div><script type="text/javascript"> if |
| 83 |
Info
On line 960, column 62 "></div> <footer class="site-footer" role="contentinfo" id="js-footer"> <div |
| 84 |
Info
On line 982, column 169 "></div> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-zephr/js/blaize-front-end-sdk.min.js?ver=1.0.4" id="blaize-sdk-js" defer></scri |
| 85 |
Info
On line 983, column 61 </script> <script type="text/javascript" id="metrocorp-zephr-js-extra"> /* <! |
| 86 |
Info
On line 988, column 165 </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-zephr/js/metrocorp-zephr.js?ver=1.0.4" id="metrocorp-zephr-js" defer></scri |
| 87 |
Info
On line 989, column 192 </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-breakingnewsbanner/assets/js/breaking-news-bar.js?ver=1" id="mc-breaking-news-banner-script-js"></scri |
| 88 |
Info
On line 990, column 55 </script> <script type="text/javascript" id="metrocorp-js-extra"> /* <! |
| 89 |
Info
On line 995, column 149 </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/themes/metrocorp/dist/js/metrocorp.min.js?ver=87" id="metrocorp-js" defer></scri |
| 90 |
Info
On line 996, column 169 </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/themes/metrocorp/dist/js/metrocorp-secondary.min.js?ver=87" id="metrocorp-secondary-js" defer></scri |
| 91 |
Info
On line 997, column 200 </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-google-tag-manager/assets/js/datalayer-philly-best-restaurants.js?ver=1.0.0" id="mc-datalayer-js" defer></scri |
| 92 |
Info
On line 998, column 180 </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-google-tag-manager/assets/js/datalayer-yaml.js?ver=1.0.0" id="mc-datalayer-yaml-js"></scri |
| 93 |
Info
On line 999, column 200 </script> <script type="text/javascript" src="https://cdn10.phillymag.com/wp-content/mu-plugins/metrocorp-ads//dist/js/metrocorp-ads-secondary.js?ver=842a0c154e5d9bc4a95b" id="metrocorp-ads-secondary-js" defer></scri |
| 94 |
Info
On line 1001, column 78 Code --> <script src="https://js.adsrvr.org/up_loader.1.1.0.js" type="text/javascript"></scri |
| 95 |
Info
On line 1002, column 31 </script> <script type="text/javascript"> ttd_ |
| 96 |
Info
On line 1013, column 31 d"></div> <script type="text/javascript"> win |
| 97 |
Info
On line 1134, column 31 </script> <script type="text/javascript"> if |
| 98 |
Error
On line 489, column 60 apper">By <span itemprop="author"><a hre |
| 99 |
Error
On line 489, column 153 ="author"><a href="https://www.phillymag.com/author/kae-lani-palmisano/" class="byline" itemprop="url"><span |
| 100 |
Error
On line 489, column 175 rop="url"><span itemprop="name">Kae La |
β