1<!DOCTYPE html> 2<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 3<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> 4<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> 5<!--[if IE 9]> <html class="no-js ie9"> <![endif]--> 6<!--[if gt IE 8]><!--> 7<html class="no-js" lang="en-US"> <!--<![endif]--> 8 9<head> 10 11 <meta charset="UTF-8" /> 12 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
12<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"1386154133",accountID:"4372814",trustKey:"66686",xpid:"UAUAU15SDBABV1BaAgMDVVAB",licenseKey:"NRJS-ffbc3c15bbce2bcb1ca",applicationID:"1318524340",browserID:"1386154133"};;/*! For license information please see nr-loader-spa-1.322.0.min.js.LICENSE.txt */ 13(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.322.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
13e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
13const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
13if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
13o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
13(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
13;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.322.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.322.0.PROD:";r.l=(n,i,s,a)=>
13{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-SARROoir04gFygxlr/+mTI+PyMeFL+epi1vnUA2G5mTQ7s3G44ItQBJKbOaIMdIE5OBzuaKhb4k5JYta0NICxg==",249:"sha512-6DKQo5WP7YlpzX6l9UfYkgGLGK2oITdoaYTcZtgl5Foa22NY63lED/0z1hBBLeD7qZCz/YdlY19/r8drlol1tg==",212:"sha512-CYxuvSpDx6ErqWJwAvpoHn54eY37YdMcFao/axOumlw3BsSL7yioOeB2LWViY/Njs818sQG10dSglUhYCMfLPw==",238:"sha512-mvbMILWa3ohYst+u6TLfNrmtY2swUIB3rbJFN/uzt3W62KhgvUVwB81UEZ1R0/it5bfrQ5EVz864pi/CAmucNQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.322.0.PROD"]=self["webpackChunk:NRBA-1.322.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
13ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
13{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
13null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
13dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
13imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
13return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s=(0,ye.ZF)(),a=(0,ye.el)(),o=Date.now(),c={spanId:s,traceId:a,timestamp:o};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(c.traceContextParentHeader=this.generateTraceContextParentHeader(s,a),c.traceContextStateHeader=this.generateTraceContextStateHeader(s,o,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(c.newrelicHeader=this.generateTraceHeader(s,a,o,r,n,i)),c}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
13!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
13if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
13);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
13class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
13h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
13 14 15 <meta name="viewport" content="width=device-width, initial-scale=1"> 16 17 <title>Philadelphia 2026: Celebrate America's 250th Anniversary</title> 18 19 <link rel="profile" href="http://gmpg.org/xfn/11" /> 20 <link rel="pingback" href="https://www.discoverphl.com/xmlrpc.php" /> 21
21<script> 22 // Vanilla JS Defer helper method for elimnating render blocking js including jQuery 23 function defer(method) { 24 if (window.jQuery) { 25 method(); 26 } else { 27 setTimeout(function() { 28 defer(method) 29 }, 50); 30 } 31 } 32 </script>
32 33 <!-- Start cookieyes banner --> 34 <!--
34<script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/37c27265c6259f66a0b40337/script.js"></script>
34 End cookieyes banner --> 35 <!-- recaptcha enterprise --> 36
36<script src=https://www.google.com/recaptcha/enterprise.js?render=6LfAHssZAAAAAClKikT6P7e4Ip0vpLNbQsAbGrf4></script>
36 37 <!-- recaptcha enterprise --> 38 <!-- consent helper script, gtm/cookieyes --> 39
39<script> 40 window.dataLayer = window.dataLayer || []; 41 42 function gtag() { 43 dataLayer.push(arguments); 44 } 45 gtag("consent", "default", { 46 ad_storage: "denied", 47 ad_user_data: "denied", 48 ad_personalization: "denied", 49 analytics_storage: "denied", 50 functionality_storage: "denied", 51 personalization_storage: "denied", 52 security_storage: "granted", 53 wait_for_update: 2000, 54 }); 55 gtag("set", "ads_data_redaction", true); 56 gtag("set", "url_passthrough", true); 57 </script>
57 58 <!-- consent helper script, gtm/cookieyes --> 59 60 61 <!-- Google Tag Manager --> 62
62<script>
vendor: 554 bytes, lines 62-76
62 63 (function(w, d, s, l, i) { 64 w[l] = w[l] || []; 65 w[l].push({ 66 'gtm.start': new Date().getTime(), 67 event: 'gtm.js' 68 }); 69 var f = d.getElementsByTagName(s)[0], 70 j = d.createElement(s), 71 dl = l != 'dataLayer' ? '&l=' + l : ''; 72 j.async = true; 73 j.src = 74 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 75 f.parentNode.insertBefore(j, f); 76 })(window, document, 'script', 'dataLayer', '
76GTM-WV69RX
vendor: 8 bytes, lines 76-77
76'); 77
77</script>
77 78 <!-- End Google Tag Manager --> 79 80 81 <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
82<script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/37c27265c6259f66a0b40337/script.js"></script>
82 83 <!-- This site is optimized with the Yoast SEO plugin v28.3 - https://yoast.com/product/yoast-seo-wordpress/ --> 84 <meta name="description" content="As Americaâs birthplace, Philadelphia 2026 will be the centerpiece of the United Statesâ 250th birthday in Philadelphia 2026." /> 85 <link rel="canonical" href="https://www.discoverphl.com/blog-post/philadelphia-2026/" /> 86 <meta property="og:locale" content="en_US" /> 87 <meta property="og:type" content="article" /> 88 <meta property="og:title" content="Philadelphia 2026: Celebrate America's 250th Anniversary" /> 89 <meta property="og:description" content="As Americaâs birthplace, Philadelphia 2026 will be the centerpiece of the United Statesâ 250th birthday in Philadelphia 2026." /> 90 <meta property="og:url" content="https://www.discoverphl.com/blog-post/philadelphia-2026/" /> 91 <meta property="og:site_name" content="DiscoverPHL" /> 92 <meta property="article:modified_time" content="2026-06-25T13:39:46+00:00" /> 93 <meta property="og:image" content="https://www.discoverphl.com/wp-content/uploads/2024/06/July4th22-G.Widman_1sm-1920x1080-1.jpg" /> 94 <meta property="og:image:width" content="1920" /> 95 <meta property="og:image:height" content="1080" /> 96 <meta property="og:image:type" content="image/jpeg" /> 97 <meta name="twitter:card" content="summary_large_image" /> 98 <meta name="twitter:label1" content="Est. reading time" /> 99 <meta name="twitter:data1" content="14 minutes" /> 100
100<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/","url":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/","name":"Philadelphia 2026: Celebrate America's 250th Anniversary","isPartOf":{"@id":"https:\/\/www.discoverphl.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#primaryimage"},"image":{"@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#primaryimage"},"thumbnailUrl":"https:\/\/www.discoverphl.com\/wp-content\/uploads\/2024\/06\/July4th22-G.Widman_1sm-1920x1080-1.jpg","datePublished":"2026-06-18T12:12:53+00:00","dateModified":"2026-06-25T13:39:46+00:00","description":"As Americaâs birthplace, Philadelphia 2026 will be the centerpiece of the United Statesâ 250th birthday in Philadelphia 2026.","breadcrumb":{"@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#primaryimage","url":"https:\/\/www.discoverphl.com\/wp-content\/uploads\/2024\/06\/July4th22-G.Widman_1sm-1920x1080-1.jpg","contentUrl":"https:\/\/www.discoverphl.com\/wp-content\/uploads\/2024\/06\/July4th22-G.Widman_1sm-1920x1080-1.jpg","width":1920,"height":1080,"caption":"Photo by G. Widman for Visit Philadelphia®"},{"@type":"BreadcrumbList","@id":"https:\/\/www.discoverphl.com\/blog-post\/philadelphia-2026\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.discoverphl.com\/"},{"@type":"ListItem","position":2,"name":"Blog Posts","item":"https:\/\/www.discoverphl.com\/blog-post\/"},{"@type":"ListItem","position":3,"name":"Philadelphia Celebrates Americaâs 250th Birthday With So Much to Do"}]},{"@type":"WebSite","@id":"https:\/\/www.discoverphl.com\/#website","url":"https:\/\/www.discoverphl.com\/","name":"DiscoverPHL","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.discoverphl.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
100 101 <!-- / Yoast SEO plugin. --> 102 103 104<link rel='dns-prefetch' href='//api.mapbox.com' /> 105<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /> 106<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.discoverphl.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.discoverphl.com%2Fblog-post%2Fphiladelphia-2026%2F" /> 107<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.discoverphl.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.discoverphl.com%2Fblog-post%2Fphiladelphia-2026%2F&format=xml" /> 108<style id="wp-img-auto-sizes-contain-inline-css"> 109img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 110/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 111</style> 112<link rel='stylesheet' id='map_style-css' href='https://api.mapbox.com/mapbox-gl-js/v2.9.1/mapbox-gl.css?ver=1' media='all' /> 113<link rel='stylesheet' id='map_geo_style-css' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-geocoder/v4.7.0/mapbox-gl-geocoder.css?ver=1' media='all' /> 114<link rel='stylesheet' id='main_style-css' href='https://www.discoverphl.com/wp-content/themes/pcvb/assets/dist/main.min.css?ver=1790150693' media='all' /> 115<link rel='stylesheet' id='custom_style-css' href='https://www.discoverphl.com/wp-content/themes/pcvb/assets/stylesheets/custom_style.css?ver=1790150694' media='all' /> 116<link rel='stylesheet' id='pcvb-newsletter-pop-out-style-css' href='https://www.discoverphl.com/wp-content/themes/pcvb/newsletter-pop-out/pcvb-newsletter-popout.css?ver=1790150694' media='all' /> 117<style id="wp-emoji-styles-inline-css"> 118 119 img.wp-smiley, img.emoji { 120 display: inline !important; 121 border: none !important; 122 box-shadow: none !important; 123 height: 1em !important; 124 width: 1em !important; 125 margin: 0 0.07em !important; 126 vertical-align: -0.1em !important; 127 background: none !important; 128 padding: 0 !important; 129 } 130/*# sourceURL=wp-emoji-styles-inline-css */ 131</style> 132 133 134<link rel='stylesheet' id='simple-favorites-css' href='https://www.discoverphl.com/wp-content/plugins/favorites/assets/css/favorites.css?ver=2.3.4' media='all' /> 135<link rel='stylesheet' id='tablepress-default-css' href='https://www.discoverphl.com/wp-content/plugins/tablepress/css/build/default.css?ver=3.3.4' media='all' /> 136<link rel='stylesheet' id='p10eb-styles-css' href='https://www.discoverphl.com/wp-content/plugins/p10-essential-blocks//assets/assets/dist/main.min.css?ver=7.1' media='all' />
137<script id="jquery-core-js" src="https://www.discoverphl.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 137
137
138<script id="favorites-js-extra"> 139var favorites_data = {"ajaxurl":"https://www.discoverphl.com/wp-admin/admin-ajax.php","nonce":"c503dfdf05","favorite":"\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"35\" viewBox=\"0 0 40 35\" fill=\"none\"\u003E\u003Cpath d=\"M38.0526 10.4856C38.0526 5.17704 33.8007 1 28.5611 1C24.3303 1 20.7512 3.86864 19.5253 7.74468C18.2983 3.86915 14.7193 1.09983 10.4884 1.09983C5.24786 1.09983 1 5.15779 1 10.4684C1 13.148 2.08488 15.0412 3.83087 17.0671L19.534 33L35.2192 17.0671C36.9667 15.0412 38.0526 13.1632 38.0526 10.4856Z\" stroke=\"#fff\" stroke-width=\"2\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003Cspan\u003EAdd to Favorites\u003C/span\u003E","favorited":"\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"35\" viewBox=\"0 0 40 35\" fill=\"none\"\u003E\u003Cpath d=\"M38.0526 10.4856C38.0526 5.17704 33.8007 1 28.5611 1C24.3303 1 20.7512 3.86864 19.5253 7.74468C18.2983 3.86915 14.7193 1.09983 10.4884 1.09983C5.24786 1.09983 1 5.15779 1 10.4684C1 13.148 2.08488 15.0412 3.83087 17.0671L19.534 33L35.2192 17.0671C36.9667 15.0412 38.0526 13.1632 38.0526 10.4856Z\" stroke=\"#fff\" stroke-width=\"2\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003Cspan\u003EAdded to Favorites\u003C/span\u003E","includecount":"","indicate_loading":"","loading_text":"Loading","loading_image":"","loading_image_active":"","loading_image_preload":"","cache_enabled":"1","button_options":{"button_type":"custom","custom_colors":false,"box_shadow":false,"include_count":false,"default":{"background_default":false,"border_default":false,"text_default":false,"icon_default":false,"count_default":false},"active":{"background_active":false,"border_active":false,"text_active":false,"icon_active":false,"count_active":false}},"authentication_modal_content":"\u003Cp\u003EPlease login to add favorites.\u003C/p\u003E\n\u003Cp\u003E\u003Ca href=\"#\" data-favorites-modal-close\u003EDismiss this notice\u003C/a\u003E\u003C/p\u003E\n","authentication_redirect":"","dev_mode":"","logged_in":"","user_id":"0","authentication_redirect_url":"https://www.discoverphl.com/wp-login.php"}; 140//# sourceURL=favorites-js-extra 141</script>
vendor: 1 bytes, line 141
141
142<script id="favorites-js" src="https://www.discoverphl.com/wp-content/plugins/favorites/assets/js/favorites.min.js?ver=2.3.4"></script>
vendor: 1 bytes, line 142
142
143<script id="p10eb-essential-js" src="https://www.discoverphl.com/wp-content/plugins/p10-essential-blocks//assets/js/global.js?ver=7.1"></script>
143 144<link rel="https://api.w.org/" href="https://www.discoverphl.com/wp-json/" /><link rel='shortlink' href='https://www.discoverphl.com/?p=53978' /> 145<link rel="shortcut icon" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/favicon.ico?09/24/26-09:00:35" type="image/x-icon" /> 146<link rel="apple-touch-icon-precomposed" sizes="152x152" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-152x152.png?09/24/26-09:00:35" /> 147<link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-144x144.png?09/24/26-09:00:35" /> 148<link rel="apple-touch-icon-precomposed" sizes="120x120" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-120x120.png?09/24/26-09:00:35" /> 149<link rel="apple-touch-icon-precomposed" sizes="114x114" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-114x114.png?09/24/26-09:00:35" /> 150<link rel="apple-touch-icon-precomposed" sizes="76x76" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-76x76.png?09/24/26-09:00:35" /> 151<link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-72x72.png?09/24/26-09:00:35" /> 152<link rel="apple-touch-icon-precomposed" sizes="57x57" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon-57x57.png?09/24/26-09:00:35" /> 153<link rel="apple-touch-icon-precomposed" href="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/favicon/apple-touch-icon.png?09/24/26-09:00:35" /> 154<style id="wp-custom-css"> 155/* Link styles in p text */ 156 157p > a { 158 font-size: 20px !important; 159} 160 161 162 163/* Tablepress Font Styles */ 164 165table.tablepress > tbody > tr td, table.tablepress > tbody > tr td a { 166 font-size: 18px !important; 167 line-height: 22px !important; 168} 169 170/* Other */ 171@media (min-width:768px){ 172 section.cb20-gravity-form{ 173 min-height:880px; 174 } 175} 176#p10-tutorial-container { 177 display: grid; 178 grid-template-columns: repeat(2, 40%)!important; 179 grid-gap: 15px; 180 margin-top: 75px; 181} 182p.wysiwyg-summary > * { 183 color: var(--Blue,#3256a6) !important; 184} 185 186/* Newsletter in Footer */ 187 188@media (min-width: 767px) { 189 footer .eb02-footer .footer-right-col a:first-of-type { 190 margin-left: 50px; 191 } 192} 193@media (max-width: 767px) { 194 body.page-id-12603 .sub-footer ul { 195 display: block !important; 196 margin: 0; 197} 198 body.page-id-12603 .cb24-favorites-modal { 199 display:none; 200 } 201} 202@media (max-width: 768px){ 203 204 205#michelinBannerWrapper #michelinBannerContent .text-after-anim *{ 206 opacity:1; 207} 208} 209 210/* michelin */ 211 212@media only screen and (max-width: 768px) { 213 #michelinPopup { 214 bottom: 0% !important; 215 } 216#michelinPopup.active { 217 width: fit-content; 218 height: -webkit-fill-available !important; 219 } 220} 221#michelinPopup p.restaurant-michelin-stars { 222 display: flex; 223 flex-direction: row; 224 justify-content: left; 225 align-items: center; 226} 227#michelinPopup div..michelin-popup-content span#michelinPopupBanner { 228 font-size: 18px; 229} 230 231@media (max-width: 1024px) { 232 .restaurants-pagination { 233 align-items: baseline; 234} 235 .restaurants-pagination .pagination-dots-wrapper { 236 margin-top: 25px; 237 } 238} 239 240/* 241 * 2025-10-27 fix for simpleview forms showing labels next to submit and reset buttons 242 */ 243form[name^="frm_"] label.label_hidden { 244 position: absolute; 245 width: 1px; 246 height: 1px; 247 padding: 0; 248 overflow: hidden; 249 clip: rect(0, 0, 0, 0); 250 white-space: nowrap; 251 border: 0; 252} 253 254/* World Cup Blocks */ 255@media screen and (max-width: 991.5px) { 256 .world-cup-background .slick-slide > div, .world-cup-background .slick-slide .game-slide { 257 max-width: 560px; 258 } 259 .game-schedule-slider .slick-slide { 260 max-width: 560px; 261 } 262} 263 264/* 12 June */ 265body.page-id-58291 section.p10-block.p10-bg-block.cb13-repeater-block .cb13-banner-image { 266 width: 100%; 267} 268body.page-id-58291 .cb05-related-content-columns svg { 269 width: 100% !important; 270} 271body.page-id-58291 section.p10-block.p10-bg-block.cb13-repeater-block .parallax-bg { 272 width: 100%; 273} 274</style> 275 276 <!-- Hotjar Tracking Code for Discover PHL --> 277
277<script>
vendor: 202 bytes, lines 277-283
277 278 (function(h, o, t, j, a, r) { 279 h.hj = h.hj || function() { 280 (h.hj.q = h.hj.q || []).push(arguments) 281 }; 282 h._hjSettings = { 283 hjid:
2835011875
vendor: 343 bytes, lines 283-292
283, 284 hjsv: 6 285 }; 286 a = o.getElementsByTagName('head')[0]; 287 r = o.createElement('script'); 288 r.async = 1; 289 r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv; 290 a.appendChild(r); 291 })(window, document, 'https://static.hotjar.com/c/hotjar-', '.js?sv='); 292
292</script>
292 293 <!-- Hotjar Tracking Code for Discover PHL --> 294 </head> 295<body class="wp-singular blog-post-template-default single single-blog-post postid-53978 wp-theme-pcvb interior-page" style="opacity:0.01; transition:all 0.5s"> 296 297 298 299 300 301 302 303 304 <!-- Google Tag Manager (noscript) -->
vendor: 72 bytes, lines 304-305
304 305 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
305GTM-WV69RX
vendor: 87 bytes, lines 305-306
305" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 306
306<!-- End Google Tag Manager (noscript) --> 307 <div id="site"> 308 <div id="skip-container" role="region" aria-label="skip to content"> 309 <a id="skip-to-content" href="#main" tabindex="0" aria-label="skip to content"> 310 Skip to content 311 </a> 312 </div> 313 314 <div class="searchform-wrap" id="global-search" aria-modal="true" aria-label="sitewide search" role="dialog"> 315 <div class="large-frame"> 316 317 <form role="search" method="get" id="searchform" class="searchform" aria-label="sitewide search popup" action="https://www.discoverphl.com/"> 318 <div> 319 <!-- <label class="screen-reader-text" for="s">Search for:</label> --> 320 321 <input type="text" value="" name="s" placeholder="Search" id="s"> 322 <div class="search-submit-wrap"> 323 <svg width="56" height="55" viewBox="0 0 56 55" fill="none" xmlns="http://www.w3.org/2000/svg"> 324<circle cx="21.1763" cy="20.8867" r="12.7694" transform="rotate(-45 21.1763 20.8867)" stroke="#3256A6" stroke-width="4.00012"/> 325<line x1="44.5623" y1="44.4943" x2="34.1187" y2="34.0507" stroke="#3256A6" stroke-width="4.00012"/> 326</svg> 327 <input type="submit" id="searchsubmit" aria-label="search submit" value=""> 328 </div> 329 </div> 330 <div class="form-close"> 331 <a href="javascript:void(0)" class="form-close-btn nav-close-icon">Close <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"> 332 <path d="M18.6807 1L0.999999 19M19 19L1.31932 0.999999" stroke="#3256A6" stroke-width="2" /> 333 </svg></a> 334 </div> 335 </form> 336 <a href="javascript:void(0)" class="form-close-btn nav-close-icon mobile-close-form" aria-label="close search input"> 337 <svg width="19" height="20" viewBox="0 0 19 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 338 <path d="M1.125 1.9455L18.2778 19.2048M18.2778 1.63379L1.125 18.8931" stroke="white" stroke-width="2" /> 339 </svg> 340 </a> 341 </div> 342 </div> 343 <header> 344 <div class="large-frame flex-wrapper space-between center"> 345 <div class="nav-wrap"> 346 347 348 <div class="main-nav"> 349 <ul class="convention_"> 350 <li id="menu-item-12065" class="underline menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-12065"><a href="https://www.discoverphl.com/meet/">Meet</a> 351<ul class="sub-menu"> 352 <li id="menu-item-6346" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6346"><a href="https://www.discoverphl.com/meet/">Start Planning</a></li> 353 <li id="menu-item-12933" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12933"><a href="https://www.discoverphl.com/meet/venues/">Search Venues & Services</a></li> 354 <li id="menu-item-6522" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6522"><a href="https://www.discoverphl.com/meet/toolkit/">Planner Tools & Resources</a></li> 355 <li id="menu-item-12873" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12873"><a href="https://www.discoverphl.com/meet/recent-developments/">What’s New</a></li> 356 <li id="menu-item-6523" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6523"><a href="https://www.discoverphl.com/meet/pa-convention-center/">PA Convention Center</a></li> 357 <li id="menu-item-6525" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6525"><a href="https://www.discoverphl.com/meet/expertise/">Business Divisions: <br />Diversity, Life Sciences, Sports</a></li> 358</ul> 359</li> 360<li id="menu-item-15485" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-15485"><a href="https://www.discoverphl.com/travel-trade/">Travel Trade</a> 361<ul class="sub-menu"> 362 <li id="menu-item-15486" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15486"><a href="https://www.discoverphl.com/travel-trade/">International Travel</a></li> 363 <li id="menu-item-59322" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-59322"><a href="https://www.discoverphl.com/travel-trade/visitor-guides/">International Visitors Guides</a></li> 364 <li id="menu-item-6527" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6527"><a href="https://www.discoverphl.com/travel-trade/group-tours/">Group Tours</a></li> 365 <li id="menu-item-55274" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-55274"><a href="https://www.discoverphl.com/travel-trade/contact/">Global Tourism Team</a></li> 366</ul> 367</li> 368<li id="menu-item-11968" class="underline menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-11968"><a href="https://www.discoverphl.com/partner-overview/">Partners</a> 369<ul class="sub-menu"> 370 <li id="menu-item-6528" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6528"><a href="https://www.discoverphl.com/partner-overview/">Join</a></li> 371 <li id="menu-item-6530" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-6530"><a target="_blank" href="https://philadelphiapa.extranet.simpleviewcrm.com/login/">Partner Login</a></li> 372 <li id="menu-item-58121" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-58121"><a href="https://www.discoverphl.com/partner-overview/events/">Partner Events</a></li> 373 <li id="menu-item-6529" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6529"><a href="https://www.discoverphl.com/business-directory/">Partner Directory</a></li> 374</ul> 375</li> 376<li id="menu-item-6531" class="underline menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-6531"><a href="https://www.discoverphl.com/discover/">Discover</a> 377<ul class="sub-menu"> 378 <li id="menu-item-12357" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12357"><a href="https://www.discoverphl.com/discover/">Plan Your Visit</a></li> 379 <li id="menu-item-55005" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-55005"><a href="https://www.discoverphl.com/discover/highlighted-experiences/">Curated Experiences</a></li> 380 <li id="menu-item-12361" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12361"><a href="https://www.discoverphl.com/discover/explore-philadelphia-neighborhoods/">Neighborhoods</a></li> 381 <li id="menu-item-12359" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12359"><a href="https://www.discoverphl.com/discover/where-to-eat/">Where to Eat</a></li> 382 <li id="menu-item-12358" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12358"><a href="https://www.discoverphl.com/discover/where-to-stay/">Where to Stay</a></li> 383 <li id="menu-item-12360" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12360"><a href="https://www.discoverphl.com/discover/things-to-do/">Things to Do</a></li> 384</ul> 385</li> 386<li id="menu-item-6532" class="underline menu-item menu-item-type-post_type menu-item-object-page menu-item-6532"><a href="https://www.discoverphl.com/contact-our-team/">Contact</a></li> 387 </ul> 388 389 390 <div id="p10-lang-selector-mobile" class="lang-selector p10-lang-selector menu-item mobile"> 391 <a href="javascript:void(0);" class="p10-lang-select-btn" aria-label="language selector"> 392 <svg class="world" width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg"> 393<path fill-rule="evenodd" clip-rule="evenodd" d="M14.1248 2.88513C13.2994 2.95076 12.0089 3.24713 10.9607 3.6117C10.285 3.84672 8.81795 4.5806 8.19568 4.99492C5.38699 6.86494 3.35595 9.74705 2.52697 13.039C2.2633 14.0863 2.2009 14.6605 2.20242 16.0273C2.20347 16.9904 2.23131 17.5173 2.30578 17.9827C2.75027 20.7621 3.9931 23.2129 6.00439 25.2763C8.69613 28.0378 12.3081 29.4404 16.117 29.2033C17.9564 29.0888 19.39 28.7261 20.972 27.975C24.5742 26.2648 27.2833 22.9451 28.2392 19.0703C28.4849 18.0742 28.5834 17.2765 28.5933 16.2031C28.6032 15.1342 28.5293 14.3751 28.3252 13.4492C27.6664 10.4603 26.0389 7.79207 23.6724 5.82109C22.7099 5.01941 21.109 4.10646 19.8377 3.6342C18.9522 3.30519 17.5604 2.97414 16.7725 2.905C16.1303 2.84869 14.7169 2.83808 14.1248 2.88513ZM11.9275 5.71779C10.9303 6.05318 10.2426 6.38283 9.43728 6.9114C8.86008 7.29027 7.97244 7.97974 7.97244 8.04924C7.97244 8.07109 8.03174 8.12617 8.10428 8.1717C8.3666 8.33629 9.84539 9.05465 9.92191 9.05465C9.96504 9.05465 10.1746 8.70525 10.3877 8.27828C10.9933 7.06433 11.6016 6.32043 12.4799 5.71955C12.7193 5.55584 12.8907 5.42195 12.8608 5.42201C12.8309 5.42213 12.4109 5.55525 11.9275 5.71779ZM17.8169 5.47363C17.8172 5.49349 17.9779 5.59779 18.1738 5.70543C18.9609 6.13785 19.8187 7.15732 20.431 8.38808C20.7495 9.02834 20.7739 9.06033 20.9173 9.02459C21.1325 8.97092 22.4462 8.3149 22.6209 8.17381L22.7674 8.0555L22.4451 7.76049C21.6816 7.06158 20.1507 6.17418 19.0281 5.77967C18.4591 5.57974 17.8158 5.4172 17.8169 5.47363ZM14.1995 6.68388C13.4623 6.88246 12.7494 7.3876
3935 12.2269 8.08181C11.9252 8.48277 11.4881 9.29799 11.4881 9.45982C11.4881 9.49357 11.5606 9.53705 11.6492 9.55644C11.7378 9.5759 11.8477 9.60361 11.8934 9.61808C12.057 9.67 13.5524 9.87531 14.0388 9.91269L14.5349 9.95084V8.2723C14.5349 7.34904 14.5283 6.59547 14.5203 6.59758C14.5123 6.59968 14.3679 6.63853 14.1995 6.68388ZM16.2342 8.28543V9.93355H16.5162C17.0593 9.93355 19.0469 9.63185 19.2237 9.52263C19.2917 9.48056 19.2563 9.37099 19.0308 8.92597C18.3807 7.64236 17.4577 6.83295 16.4627 6.67386L16.2342 6.6373V8.28543ZM23.582 9.58603C23.0941 9.9373 22.4673 10.2678 21.8112 10.5197C21.4191 10.6703 21.3311 10.7259 21.3613 10.8036C21.5464 11.28 21.8681 13.0312 22.0027 14.295C22.0539 14.7764 22.1107 15.1851 22.1288 15.2032C22.1469 15.2214 23.0941 15.2438 24.2337 15.253L26.3056 15.2699L26.275 15.048C26.0085 13.1161 25.4091 11.4467 24.4491 9.96285C24.3032 9.73726 24.1393 9.4948 24.0848 9.42402L23.9859 9.29529L23.582 9.58603ZM6.49066 9.71383C5.43574 11.2158 4.69394 13.1639 4.53797 14.8417L4.49859 15.2656H6.58441H8.67023L8.69994 15.0752C8.71623 14.9704 8.759 14.5683 8.79492 14.1816C8.87437 13.3259 9.10101 11.9717 9.28822 11.2337L9.42656 10.6883L9.30011 10.6415C9.23051 10.6158 9.01541 10.5365 8.82205 10.4652C8.31879 10.2796 7.59246 9.9025 7.16396 9.60437C6.96099 9.46316 6.78433 9.34761 6.77144 9.34761C6.75849 9.34761 6.63217 9.51244 6.49066 9.71383ZM10.8789 11.2666C10.6868 11.8986 10.3963 13.6803 10.3391 14.5771L10.2989 15.207H12.4462H14.5935V13.4528V11.6986L14.3445 11.6676C14.2075 11.6507 13.9109 11.6208 13.6853 11.6012C13.2042 11.5595 12.4646 11.4459 11.6054 11.2816C10.8643 11.1399 10.917 11.1411 10.8789 11.2666ZM19.2224 11.2567C18.6988 11.3711 17.3668 11.5608 16.7469 11.609L16.2342 11.6489V13.428V15.207H18.3505H20.4669L20.426 14.6357C20.4035 14.3215 20.3747 13.9853 20.3621 13.8886C20.3495 13.792 20.3105 13.4887 20.2754 13.2148C20.2112 12.7132 20.0386 11.818 19.9242 11.3933C19.8534 11.1304 19.825 11.1248 19.2224 11.2567ZM4.77551 16.9011L4.47896 16.9355L4.55502 17.4628C4.73256 18.6938 5.13228 19.9677 5.68799 21.0735C5.9775 21.6495 6.61863 22.6601 6.74355 22.7372C6.77812 22.7587 6.99627 22.6467 7.2283 22.4884C7.84834 22.0656 8.14207 21.9076 8.77793 21.6545C9.44455 21.3892 9.41349 21.4783 9.18709 20.4804C9.02912 19.7845 8.77336 18.099 8.70469 17.3017L8.66554 16.8476L6.86883 16.8572C5.88058 16.8624 4.93863 16.8822 4.77551 16.9011ZM10.3168 17.0966C10.3185 17.7798 10.5484 19.4102 10.792 20.4673C10.8939 20.9096 10.935 21.0055 11.0122 20.9819C11.4385 20.852 14.0333 20.4804 14.5138 20.4804C14.5254 20.4804 14.5349 19.663 14.5349 18.664V16.8476H12.4256H10.3162L10.3168 17.0966ZM16.2342 18.6847V20.5217L16.8549 20.5619C17.5268 20.6054 18.453 20.7248 19.1849 20.8625C19.8811 20.9935 19.8358 21.0163 19.9734 20.4658C20.2023 19.5504 20.4529 17.7162 20.4529 16.9563C20.4529 16.8525 20.3588 16.8476 18.3435 16.8476H16.2342V18.6847ZM22.0689 16.9795C22.054 17.052 22.0278 17.3618 22.0106 17.6679C21.9567 18.6246 21.5786 20.7423 21.3598 21.3125C21.3362 21.3739 21.4807 21.4558 21.901 21.6193C22.5274 21.8631 23.1253 22.1867 23.5998 22.5391C23.7676 22.6636 23.9317 22.7656 23.9645 22.7656C24.0536 22.7656 24.6916 21.7912 25.0494 21.1089C25.632 19.9977 26.1352 18.3801 26.2275 17.3215L26.2688 16.8476H24.1823H22.0958L22.0689 16.9795ZM13.6267 22.2191C12.4784 22.3619 11.4881 22.5689 11.4881 22.666C11.4881 22.6944 11.6105 22.9547 11.7601 23.2444C12.0991 23.9008 12.5506 24.4834 12.9725 24.8089C13.3127 25.0714 13.9438 25.3649 14.3152 25.4334L14.5349 25.474V23.8268V22.1796L14.1687 22.1884C13.9673 22.1932 13.7234 22.2071 13.6267 22.2191ZM16.2342 23.8249V25.4702L16.4246 25.4296C17.2333 25.2573 18.0102 24.7426 18.4888 24.0621C18.8172 23.5952 19.3159 22.6637 19.2648 22.6127C19.1681 22.516 16.9863 22.1796 16.4556 22.1796H16.2342V23.8249ZM20.5309 23.5175C19.9568 24.7696 19.0235 25.9158 18.1678 26.4197C17.7918 26.641 17.7899 26.6434 18.0213 26.6039C18.3792 26.5427 19.3065 26.2345 19.8774 25.9868C20.7046 25.6281 21.6572 25.0129 22.5002 24.2934L22.804 24.034L22.4634 23.8369C22.1046 23.6294 21.1628 23.1614 20.9118 23.0659C20.769 23.0116 20.7556 23.0275 20.5309 23.5175ZM9.54896 23.1962C9.23086 23.327 8.28053 23.8227 8.0768 23.9639C7.98592 24.027 8.00021 24.0566 8.22328 24.2673C8.84508 24.8546 9.74215 25.4505 10.6811 25.8999C11.5721 26.3263 13.4027 26.878 12.6892 26.5051C12.292 26.2974 11.7366 25.8207 11.3805 25.3818C10.8725 24.7555 10.6901 24.4671 10.3353 23.7293C10.1579 23.3604 9.9822 23.0592 9.94476 23.06C9.90732 23.0607 9.72926 23.122 9.54896 23.1962Z" fill="white"/> 394</svg> 395 Language <svg class="arrow" width="8" height="5" viewB
395ox="0 0 8 5" fill="none" xmlns="http://www.w3.org/2000/svg"> 396 <path d="M4 4.66699L0.535899 0.666991L7.4641 0.666992L4 4.66699Z" fill="#FAF6F2" /> 397 </svg> 398 </a> 399 <div class="gtranslate_wrapper" id="gt-wrapper-36616898"></div> <a href="javascript:void(0);" class="p10-lang-select-mob-close"> 400 <svg width="19" height="20" viewBox="0 0 19 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 401 <path d="M1.125 1.9455L18.2778 19.2048M18.2778 1.63379L1.125 18.8931" stroke="white" stroke-width="2" /> 402 </svg> 403 </a> 404 405 </div> 406 </div> 407 408 409 <div id="logo"> 410 <a aria-label="Home" href="https://www.discoverphl.com" id="logo-link"><img data-mobopen="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/Plan-your-next-event-in-Philadelphia.svg" src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/pcvb-logo.svg" data-src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/pcvb-logo.svg" alt="Logo" id="logo-img" /></a> 411 412 <div class="mobile-controls"> 413 <a href="javascript:void(0)" class="search-icon mob nav-search-icon" aria-label="Sitewide Search"> 414 <svg width="29" height="32" viewBox="0 0 29 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 415<circle cx="11.4433" cy="11.2363" r="6.38452" transform="rotate(-45 11.4433 11.2363)" stroke="white" stroke-width="2"/> 416<line x1="23.1376" y1="23.0391" x2="17.916" y2="17.8175" stroke="white" stroke-width="2"/> 417</svg> 418 </a> 419 <a href="javascript:void(0)" aria-label="activate mobile menu" class="mobile-toggle"> 420 <span class="bar-1"></span> 421 <span class="bar-2"></span> 422 <span class="bar-3"></span> 423 </a> 424 425 </div> 426 </div> 427 <div class="util-nav"> 428 429 <a href="javascript:void(0)" class="nav-search-icon search-icon" aria-label="Sitewide Search"> 430 <svg width="29" height="32" viewBox="0 0 29 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 431<circle cx="11.4433" cy="11.2363" r="6.38452" transform="rotate(-45 11.4433 11.2363)" stroke="white" stroke-width="2"/> 432<line x1="23.1376" y1="23.0391" x2="17.916" y2="17.8175" stroke="white" stroke-width="2"/> 433</svg> 434 </a> 435 <a href="https://www.discoverphl.com/submit-rfp/" target="_self" class="btn-base light-blue arrow"><span>Submit RFP</span><svg xmlns="http://www.w3.org/2000/svg" width="22" height="9" viewBox="0 0 22 9" fill="none"><path d="M22 4.5L14.5 0.169873V8.83013L22 4.5ZM0 5.25H15.25V3.75H0V5.25Z" fill="#FF4D00"/></svg></a><a href="javascript:void(0)" target="_self" class="btn-base white favorite view-my-favorites"><span>View My Favorites</span><svg xmlns="http://www.w3.org/2000/svg" width="14" height="13" viewBox="0 0 14 13" fill="none"><path d="M6.52326 3.18121L6.99984 4.67521L7.476 3.18108C7.87729 1.92189 9.04617 1 10.4137 1C12.1236 1 13.5 2.34885 13.5 4.05711C13.5 4.88567 13.1777 5.47478 12.5627 6.18491L7.00272 11.7902L1.43634 6.18488C0.822806 5.47576 0.5 4.88086 0.5 4.05065C0.5 2.34951 1.86674 1.03744 3.58511 1.03744C4.96079 1.03744 6.12416 1.93009 6.52326 3.18121Z" stroke="white"/></svg></a> <div id="p10-lang-selector" class="lang-selector p10-lang-selector menu-item desktop"> 436 <a href="javascript:void(0);" class="p10-lang-select-btn" aria-label="Language Selector"> 437 <svg class="world" width="31" height="31" viewBox="0 0 31 31" fill="none" xmlns="http://www.w3.org/2000/svg"> 438<path fill-rule="evenodd" clip-rule="evenodd" d="M14.1248 2.88513C13.2994 2.95076 12.0089 3.24713 10.9607 3.6117C10.285 3.84672 8.81795 4.5806 8.19568 4.99492C5.38699 6.86494 3.35595 9.74705 2.52697 13.039C2.2633 14.0863 2.2009 14.6605 2.20242 16.0273C2.20347 16.9904 2.23131 17.5173 2.30578 17.9827C2.75027 20.7621 3.9931 23.2129 6.00439 25.2763C8.69613 28.0378 12.3081 29.4404 16.117 29.2033C17.9564 29.0888 19.39 28.7261 20.972 27.975C24.5742 26.2648 27.2833 22.9451 28.2392 19.0703C28.4849 18.0742 28.5834 17.2765 28.5933 16.2031C28.6032 15.1342 28.5293 14.3751 28.3252 13.4492C27.6664 10.4603 26.0389 7.79207 23.6724 5.82109C22.7099 5.01941 21.109 4.10646 19.8377 3.6342C18.9522 3.30519 17.5604 2.97414 16.7725 2.905C16.1303 2.84869 14.7169 2.83808 14.1248 2.88513ZM11.9275 5.71779C10.9303 6.05318 10.2426 6.38283 9.43728 6.9114C8.86008 7.29027 7.97244 7.97974 7.97244 8.04924C7.97244 8.07109 8.03174 8.12617 8.10428 8.1717C8.3666 8.33629 9.84539 9.05465 9.92191 9.05465C9.96504 9.05465 10.1746 8.70525 10.3877 8.27828C10.9933 7.06433 11.6016 6.32043 12.4799 5.71955C12.7193 5.55584 12.8907 5.42195 12.8608 5.42201C12.8309 5.42213 12.4109 5.55525 11.9275 5.71779ZM17.8169 5.47363C17.8172 5.49349 17.9779 5.59779 18.1738 5.70543C18.9609 6.13785 19.8187 7.15732 20.431 8.38808C20.7495 9.02834 20.7739 9.06033 20.9173 9.02459C21.1325 8.97092 22.4462 8.3149 22.6209 8.17381L22.7674 8.0555L22.4451 7.76049C21.6816 7.06158 20.1507 6.17418 19.0281 5.77967C18.4591 5.57974 17.8158 5.4172 17.8169 5.47363ZM14.1995 6.68388C13.4623 6.88246 12.7494 7.3876
4385 12.2269 8.08181C11.9252 8.48277 11.4881 9.29799 11.4881 9.45982C11.4881 9.49357 11.5606 9.53705 11.6492 9.55644C11.7378 9.5759 11.8477 9.60361 11.8934 9.61808C12.057 9.67 13.5524 9.87531 14.0388 9.91269L14.5349 9.95084V8.2723C14.5349 7.34904 14.5283 6.59547 14.5203 6.59758C14.5123 6.59968 14.3679 6.63853 14.1995 6.68388ZM16.2342 8.28543V9.93355H16.5162C17.0593 9.93355 19.0469 9.63185 19.2237 9.52263C19.2917 9.48056 19.2563 9.37099 19.0308 8.92597C18.3807 7.64236 17.4577 6.83295 16.4627 6.67386L16.2342 6.6373V8.28543ZM23.582 9.58603C23.0941 9.9373 22.4673 10.2678 21.8112 10.5197C21.4191 10.6703 21.3311 10.7259 21.3613 10.8036C21.5464 11.28 21.8681 13.0312 22.0027 14.295C22.0539 14.7764 22.1107 15.1851 22.1288 15.2032C22.1469 15.2214 23.0941 15.2438 24.2337 15.253L26.3056 15.2699L26.275 15.048C26.0085 13.1161 25.4091 11.4467 24.4491 9.96285C24.3032 9.73726 24.1393 9.4948 24.0848 9.42402L23.9859 9.29529L23.582 9.58603ZM6.49066 9.71383C5.43574 11.2158 4.69394 13.1639 4.53797 14.8417L4.49859 15.2656H6.58441H8.67023L8.69994 15.0752C8.71623 14.9704 8.759 14.5683 8.79492 14.1816C8.87437 13.3259 9.10101 11.9717 9.28822 11.2337L9.42656 10.6883L9.30011 10.6415C9.23051 10.6158 9.01541 10.5365 8.82205 10.4652C8.31879 10.2796 7.59246 9.9025 7.16396 9.60437C6.96099 9.46316 6.78433 9.34761 6.77144 9.34761C6.75849 9.34761 6.63217 9.51244 6.49066 9.71383ZM10.8789 11.2666C10.6868 11.8986 10.3963 13.6803 10.3391 14.5771L10.2989 15.207H12.4462H14.5935V13.4528V11.6986L14.3445 11.6676C14.2075 11.6507 13.9109 11.6208 13.6853 11.6012C13.2042 11.5595 12.4646 11.4459 11.6054 11.2816C10.8643 11.1399 10.917 11.1411 10.8789 11.2666ZM19.2224 11.2567C18.6988 11.3711 17.3668 11.5608 16.7469 11.609L16.2342 11.6489V13.428V15.207H18.3505H20.4669L20.426 14.6357C20.4035 14.3215 20.3747 13.9853 20.3621 13.8886C20.3495 13.792 20.3105 13.4887 20.2754 13.2148C20.2112 12.7132 20.0386 11.818 19.9242 11.3933C19.8534 11.1304 19.825 11.1248 19.2224 11.2567ZM4.77551 16.9011L4.47896 16.9355L4.55502 17.4628C4.73256 18.6938 5.13228 19.9677 5.68799 21.0735C5.9775 21.6495 6.61863 22.6601 6.74355 22.7372C6.77812 22.7587 6.99627 22.6467 7.2283 22.4884C7.84834 22.0656 8.14207 21.9076 8.77793 21.6545C9.44455 21.3892 9.41349 21.4783 9.18709 20.4804C9.02912 19.7845 8.77336 18.099 8.70469 17.3017L8.66554 16.8476L6.86883 16.8572C5.88058 16.8624 4.93863 16.8822 4.77551 16.9011ZM10.3168 17.0966C10.3185 17.7798 10.5484 19.4102 10.792 20.4673C10.8939 20.9096 10.935 21.0055 11.0122 20.9819C11.4385 20.852 14.0333 20.4804 14.5138 20.4804C14.5254 20.4804 14.5349 19.663 14.5349 18.664V16.8476H12.4256H10.3162L10.3168 17.0966ZM16.2342 18.6847V20.5217L16.8549 20.5619C17.5268 20.6054 18.453 20.7248 19.1849 20.8625C19.8811 20.9935 19.8358 21.0163 19.9734 20.4658C20.2023 19.5504 20.4529 17.7162 20.4529 16.9563C20.4529 16.8525 20.3588 16.8476 18.3435 16.8476H16.2342V18.6847ZM22.0689 16.9795C22.054 17.052 22.0278 17.3618 22.0106 17.6679C21.9567 18.6246 21.5786 20.7423 21.3598 21.3125C21.3362 21.3739 21.4807 21.4558 21.901 21.6193C22.5274 21.8631 23.1253 22.1867 23.5998 22.5391C23.7676 22.6636 23.9317 22.7656 23.9645 22.7656C24.0536 22.7656 24.6916 21.7912 25.0494 21.1089C25.632 19.9977 26.1352 18.3801 26.2275 17.3215L26.2688 16.8476H24.1823H22.0958L22.0689 16.9795ZM13.6267 22.2191C12.4784 22.3619 11.4881 22.5689 11.4881 22.666C11.4881 22.6944 11.6105 22.9547 11.7601 23.2444C12.0991 23.9008 12.5506 24.4834 12.9725 24.8089C13.3127 25.0714 13.9438 25.3649 14.3152 25.4334L14.5349 25.474V23.8268V22.1796L14.1687 22.1884C13.9673 22.1932 13.7234 22.2071 13.6267 22.2191ZM16.2342 23.8249V25.4702L16.4246 25.4296C17.2333 25.2573 18.0102 24.7426 18.4888 24.0621C18.8172 23.5952 19.3159 22.6637 19.2648 22.6127C19.1681 22.516 16.9863 22.1796 16.4556 22.1796H16.2342V23.8249ZM20.5309 23.5175C19.9568 24.7696 19.0235 25.9158 18.1678 26.4197C17.7918 26.641 17.7899 26.6434 18.0213 26.6039C18.3792 26.5427 19.3065 26.2345 19.8774 25.9868C20.7046 25.6281 21.6572 25.0129 22.5002 24.2934L22.804 24.034L22.4634 23.8369C22.1046 23.6294 21.1628 23.1614 20.9118 23.0659C20.769 23.0116 20.7556 23.0275 20.5309 23.5175ZM9.54896 23.1962C9.23086 23.327 8.28053 23.8227 8.0768 23.9639C7.98592 24.027 8.00021 24.0566 8.22328 24.2673C8.84508 24.8546 9.74215 25.4505 10.6811 25.8999C11.5721 26.3263 13.4027 26.878 12.6892 26.5051C12.292 26.2974 11.7366 25.8207 11.3805 25.3818C10.8725 24.7555 10.6901 24.4671 10.3353 23.7293C10.1579 23.3604 9.9822 23.0592 9.94476 23.06C9.90732 23.0607 9.72926 23.122 9.54896 23.1962Z" fill="white"/> 439</svg> 440 441 </a> 442 <div class="gtranslate_wrapper" id="gt-wrapper-35308157"></div> 443 </div> 444 </div> 445 </div> 446 447 448 </div> 449 </header> 450 451 <div id="cb24-favorites-modal" class="cb24-favorites-modal" aria-label="Favorites List" aria-modal="true" role="dialog"> 452 <div class="blue-section"> 453 454 <div class="frame"> 455 <a href="javascript:void(0);" id="close-favorites" aria-label="Close Favorites Popup"> 456 457 <svg width="69" height="54" viewBox="0 0 69 54" fill="none" xmlns="http://www.w3.org/2000/svg"> 458<path d="M17.25 8.37272L53.6667 45.0156M53.6667 7.71094L17.25 44.3538" stroke="white" stroke-width="8"/> 459</svg> 460 </a> 461 <div class="cb24-header"> 462 <h2>favorites</h2> 463 <a href="/meet/venues/" class="btn-base white"><span>Search More Venues</span></a> 464 465 <a id="email-favorites" href="mailto:?subject=test&body=message%0Ahere" class="btn-base white"><span><svg width="15" height="13" viewBox="0 0 15 13" fill="none" xmlns="http://www.w3.org/2000/svg"> 466 <path d="M1.10769 12.5C0.812308 12.5 0.553846 12.3875 0.332308 12.1625C0.110769 11.9375 0 11.675 0 11.375V1.625C0 1.325 0.110769 1.0625 0.332308 0.8375C0.553846 0.6125 0.812308 0.5 1.10769 0.5H13.661
4665C13.9569 0.5 14.2154 0.6125 14.4369 0.8375C14.6585 1.0625 14.7692 1.325 14.7692 1.625V11.375C14.7692 11.675 14.6585 11.9375 14.4369 12.1625C14.2154 12.3875 13.9569 12.5 13.6615 12.5H1.10769ZM7.38462 6.8375L13.6615 2.65625V1.625L7.38462 5.7125L1.10769 1.625V2.65625L7.38462 6.8375Z" fill="white" /> 467 </svg> 468 Email List</span></a> 469 <a id="clear-favorites-cookie" href="javascript:void(0)" class="reverse-underline white"><span>Clear Favorites</span></a> 470 </div> 471 </div> 472 <svg class="cb24-wave-bottom" width="1601" height="128" viewBox="0 0 1601 128" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg"> 473 <path d="M0 0H1602V75.4694C1602 75.4694 1336.67 178.927 834.542 95.4613C332.415 11.9951 0 75.4694 0 75.4694V0Z" fill="#3256A6" /> 474 </svg> 475 476 </div> 477 <div class="frame"> 478 <ul class="favorites-list " data-userid="" data-siteid="1" data-includebuttons="false" data-includelinks="true" data-includethumbnails="false" data-includeexcerpts="false" data-thumbnailsize="thumbnail" data-nofavoritestext="<h2> You haven't favorited anything yet!</h2> <span>Favorited Listings will appear here once you do.</span>" data-posttypes="post,page,attachment,blog-post,coupons,neighborhoods,people,press-release,partners"><ul data-postid="0" data-nofavorites class="no-favorites"><h2> You haven't favorited anything yet!</h2> <span>Favorited Listings will appear here once you do.</span></ul></ul> 479 </div> 480 </div> 481 482 <main id="main"> 483 484 485<section class="p10-block p10-banner-block cb02-hero-banner" role="group"> 486 <div class="cb02-gradient-top"> 487 488 </div> 489 <div class="cb02-gradient-bottom"> 490 491 </div> 492 <div class="video-wrap"> 493 <video class="videojs" style="position:absolute;top:0;left:0;overflow:hidden;z-index:-998" playsinline="playsinline" muted loop autoplay> 494 <source src="https://www.discoverphl.com/wp-content/uploads/2025/09/website_2026_hero_video_v3-1080p.mp4" type="video/mp4"> 495 </video> 496 497 </div> 498 499 <div class="frame cb02-wrap"> 500 <div class="cb02-content"> 501 502 <h1>Philadelphia Celebrates Americaâs 250th Birthday With So Much to Do</h1> <div class="cta-links"> 503 504 </div> 505 </div> 506 </div> 507 <div class="frame wave-inner-content-wrap "> 508 509 <div class="wave-inner-content"> 510 511 <a class="cb02-play-video inactive" href="" data-fancybox><svg xmlns="http://www.w3.org/2000/svg" width="61" height="61" viewBox="0 0 61 61" fill="none"> 512 <circle cx="30.5" cy="30.5" r="30.5" fill="#3256A6" /> 513 <path d="M39.3112 30.5001L26.0945 38.1307L26.0945 22.8694L39.3112 30.5001Z" fill="white" /> 514 </svg>Play Video</a> 515 516 517 </div> 518 </div> 519 <div class=" wave-wrap"> 520 <a class="pause-banner" href="javascript:void(0)" aria-label="pause banner video" style="z-index:999999999999"> 521 522 <svg id="pause-btn" xmlns="http://www.w3.org/2000/svg" width="19" height="23" viewBox="0 0 19 23" fill="none"> 523 <rect width="7" height="23" fill="#FAF6F2" /> 524 <rect x="12" width="7" height="23" fill="#FAF6F2" /> 525 </svg> 526 </a> 527 <svg class="cb02-mob-wave" width="375" height="162" viewBox="0 0 375 162" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg"> 528<rect y="43" width="375" height="119" fill="#fff"/> 529<path d="M0 39.4453V44H375V2.31108C375 2.31108 308.906 -9.47216 199.688 20.1746C90.4688 49.8214 0 39.4453 0 39.4453Z" fill="#fff"/> 530</svg> 531 <svg class="cb02-bottom-wave" width="1596" height="266" viewBox="0 0 1596 266" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg"> 532<path d="M-4 181.986V203H1596V10.6625C1596 10.6625 1314 -43.7011 848 93.0783C382 229.858 -4 181.986 -4 181.986Z" fill="white"/> 533<rect x="-5" y="195" width="1601" height="71" fill="white"/> 534</svg> 535 </div> 536</section> 537<section class="p10-block cb23-wysiwyg" role="group"> 538 <div class="frame toc-wysiwyg-wrap has-toc"> 539 <div class="toc-wrapper"><div class="toc js-sticky-widget"><span class="small-label toc-label">Table of Contents</span><a href="#what-is-the-semiquincentennial">What is the semiquincentennial?</a><a href="#celebrating-250-years-philly-style">Events</a><a href="#the-eyes-of-the-sports-world-on-philly-in-2026">Sports</a><a href="#new-philadelphia-museums-art-and-exhibitions">New Museums and Exhibitions</a></div></div> <div class="wysiwyg has-toc"> 540 <div class="wysiwyg-info"> 541 542 <div class="date">
543 <span class="small-label">Date</span> 544 <span>June 18, 2026</span> 545 </div> 546 <div class="share"> 547 <span class="small-label">Share</span> 548 <div class="icons"> 549 550 <a aria-label="facebook share link" href="https://www.facebook.com/sharer/sharer.php?u=https://www.discoverphl.com/blog-post/philadelphia-2026/"><svg width="7" height="16" viewBox="0 0 7 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 551<path d="M1.75 5.33333H0V8H1.75V16H4.66667V8H6.79117L7 5.33333H4.66667V4.222C4.66667 3.58533 4.77867 3.33333 5.31708 3.33333H7V0H4.77867C2.681 0 1.75 1.05533 1.75 3.07667V5.33333Z" fill="#3256A6"/> 552</svg> 553</a> 554 <a aria-label="twitter share link" href="https://twitter.com/intent/tweet?text=https://www.discoverphl.com/blog-post/philadelphia-2026/"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 555<rect width="18" height="18" fill="url(#pattern0)"/> 556<defs> 557<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1"> 558<use xlink:href="#image0_8631_30434" transform="scale(0.00520833)"/> 559</pattern> 560<image id="image0_8631_30434" width="192" height="192" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAABGdBTUEAALGPC/xhBQAACktpQ0NQc1JHQiBJRUM2MTk2Ni0yLjEAAEiJnVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4BUaaISkgChhBgSQOyIqMCIoiKCFRkUccDREZCxIoqFQbH3AXkIKOPgKDZU3g/eGn2z5r03b/avvfY5Z53vnH0+AEZgsESahaoBZEoV8ogAHzw2Lh4ndwMKVCCBA4BAmC0LifSPAgDg+/Hw7IgAH/gCBODNbUAAAG7YBIbhOPx/UBfK5AoAJAwApovE2UIApBAAMnIVMgUAMgoA7KR0mQIAJQAAWx4bFw+AagEAO2WSTwMAdtIk9wIAtihTKgJAowBAJsoUiQDQDgBYl6MUiwCwYAAoypGIcwGwmwBgkqHMlABg7wCAnSkWZAMQGABgohALUwEI9gDAkEdF8AAIMwEojJSveNJXXCHOUwAA8LJki+WSlFQFbiG0xB1cXbl4oDg3Q6xQ2IQJhOkCuQjnZWXKBNLFAJMzAwCARnZEgA/O9+M5O7g6O9s42jp8taj/GvyLiI2L/5c/r8IBAQCE0/VF+7O8rBoA7hgAtvGLlrQdoGUNgNb9L5rJHgDVQoDmq1/Nw+H78fBUhULmZmeXm5trKxELbYWpX/X5nwl/AV/1s+X78fDf14P7ipMFygwFHhHggwuzMrKUcjxbJhCKcZs/HvHfLvzzd0yLECeL5WKpUIxHS8S5EmkKzsuSiiQKSZYUl0j/k4l/s+wPmLxrAGDVfgb2QltQu8oG7JcuILDogCXsAgDkd9+CqdEQBgAxBoOTdw8AMPmb/x1oGQCg2ZIUHACAFxGFC5XynMkYAQCACDRQBTZogz4YgwXYgCO4gDt4gR/MhlCIgjhYAEJIhUyQQy4shVVQBCWwEbZCFeyGWqiHRjgCLXACzsIFuALX4BY8gF4YgOcwCm9gHEEQMsJEWIg2YoCYItaII8JFZiF+SDASgcQhiUgKIkWUyFJkNVKClCNVyF6kHvkeOY6cRS4hPcg9pA8ZRn5DPqAYykDZqB5qhtqhXNQbDUKj0PloCroIzUcL0Q1oJVqDHkKb0bPoFfQW2os+R8cwwOgYBzPEbDAuxsNCsXgsGZNjy7FirAKrwRqxNqwTu4H1YiPYewKJwCLgBBuCOyGQMJcgJCwiLCeUEqoIBwjNhA7CDUIfYZTwmcgk6hKtiW5EPjGWmELMJRYRK4h1xGPE88RbxAHiGxKJxCGZk1xIgaQ4UhppCamUtJPURDpD6iH1k8bIZLI22ZrsQQ4lC8gKchF5O/kQ+TT5OnmA/I5CpxhQHCn+lHiKlFJAqaAcpJyiXKcMUsapalRTqhs1lCqiLqaWUWupbdSr1AHqOE2dZk7zoEXR0miraJW0Rtp52kPaKzqdbkR3pYfTJfSV9Er6YfpFeh/9PUODYcXgMRIYSsYGxn7GGcY9xismk2nG9GLGMxXMDcx65jnmY+Y7FZaKrQpfRaSyQqVapVnlusoLVaqqqaq36gLVfNUK1aOqV1VH1KhqZmo8NYHacrVqteNqd9TG1FnqDuqh6pnqpeoH1S+pD2mQNcw0/DREGoUa+zTOafSzMJYxi8cSslazalnnWQNsEtuczWensUvY37G72aOaGpozNKM18zSrNU9q9nIwjhmHz8nglHGOcG5zPkzRm+I9RTxl/ZTGKdenvNWaquWlJdYq1mrSuqX1QRvX9tNO196k3aL9SIegY6UTrpOrs0vnvM7IVPZU96nCqcVTj0y9r4vqWulG6C7R3afbpTump68XoCfT2653Tm9En6PvpZ+mv0X/lP6wActgloHEYIvBaYNnuCbujWfglXgHPmqoaxhoqDTca9htOG5kbjTXqMCoyeiRMc2Ya5xsvMW43XjUxMAkxGSpSYPJfVOqKdc01XSbaafpWzNzsxiztWYtZkPmWuZ883zzBvOHFkwLT4tFFjUWNy1JllzLdMudltesUCsnq1Sraqur1qi1s7XEeqd1zzTiNNdp0mk10+7YMGy8bXJsGmz6bDm2wbYFti22L+xM7OLtNtl12n22d7LPsK+1f+Cg4TDbocChzeE3RytHoWO1483pzOn+01dMb53+cob1DPGMXTPuOrGcQpzWOrU7fXJ2cZY7NzoPu5i4JLrscLnDZXPDuKXci65EVx/XFa4nXN+7Obsp3I64/epu457uftB9aKb5TPHM2pn9HkYeAo+9Hr2z8FmJs/bM6vU09BR41ng+8TL2EnnVeQ16W3qneR/yfuFj7yP3OebzlufGW8Y744v5BvgW+3b7afjN9avye+xv5J/i3+A/GuAUsCTgTCAxMChwU+Advh5fyK/nj852mb1sdkcQIygyqCroSbBVsDy4LQQNmR2yOeThHNM50jktoRDKD90c+ijMPGxR2I/hpPCw8OrwpxEOEUsjOiNZkQsjD0a+ifKJKot6MNdirnJue7RqdEJ0ffTbGN+Y8pjeWLvYZbFX4nTiJHGt8eT46Pi6+LF5fvO2zhtIcEooSrg933x+3vxLC3QWZCw4uVB1oWDh0URiYkziwcSPglBBjWAsiZ+0I2lUyBNuEz4XeYm2iIbFHuJy8WCyR3J58lCKR8rmlOFUz9SK1BEJT1IleZkWmLY77W16aPr+9ImMmIymTEpmYuZxqYY0XdqRpZ+Vl9Ujs5YVyXoXuS3aumhUHiSvy0ay52e3KtgKmaJLaaFco+zLmZVTnfMuNzr3aJ56njSva7HV4vWLB/P9879dQlgiXNK+1HDpqqV9y7yX7V2OLE9a3r7CeEXhioGVASsPrKKtSl/1U4F9QXnB69Uxq9sK9QpXFvavCVjTUKRSJC+6s9Z97e51hHWSdd3rp6/fvv5zsaj4col9SUXJx1Jh6eVvHL6p/GZiQ/KG7jLnsl0bSRulG29v8tx0oFy9PL+8f3PI5uYt+JbiLa+3Ltx6qWJGxe5ttG3Kbb2VwZWt2022b9z+sSq16la1T3XTDt0d63e83SnaeX2X167G3Xq7S3Z/2CPZc3dvwN7mGrOain2kfTn7ntZG13Z+y/22vk6nrqTu037p/t4DEQc66l3q6w/qHixrQBuUDcOHEg5d+873u9ZGm8a9TZymksNwWHn42feJ398+EnSk/Sj3aOMPpj/sOMY6VtyMNC9uHm1JbeltjWvtOT77eHube9uxH21/3H/C8ET1Sc2TZadopwpPTZzOPz12RnZm5GzK2f72he0PzsWeu9kR3tF9Puj8xQv+F851eneevuhx8cQlt0vHL3Mvt1xxvtLc5dR17Cenn451O3c3X3W52nrN9Vpbz8yeU9c9r5+94Xvjwk3+zSu35tzquT339t07CXd674ruDt3LuPfyfs798QcrHxIfFj9Se1TxWPdxzc+WPzf1Ovee7PPt63oS+eRBv7D/+T+y//FxoPAp82nFoMFg/ZDj0Ilh/+Frz+Y9G3guez4+UvSL+i87Xli8+OFXr1+7RmNHB17KX078VvpK+9X+1zNet4+FjT1+k/lm/G3xO+13B95z33d+iPkwOJ77kfyx8pPlp7bPQZ8fTmROTPwTA5jz/IzFdaUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAEhNJREFUeJzt3Xt0lOWdwPHvTBJyIfcLYZJMbgREAwSCgFC5iPWy7W71NMelxa6KdavbVt1uL9uzR9euPd1Tzx53ba3bY7VYhepRids91W6VSxAFpYKES8QDuZA7ksmVJOQ6z/4xM5KmAgnzvPPOO+/v80/rm+R5f2Tye37zPvP83tehlEIIu3KaHYAQZpIEELYmCSBsTRJA2JokgLA1SQBha5IAwtYkAYStSQIIW5MEELYmCSBsTRJA2JokgLA1SQBha5IAwtYkAYStSQIIW5MEELYmCSBsTRJA2JokgLA1SQBha5IAwtaidQ/ocDgAyFv8tY0AWSU3/hbA4dR+KkP1tB74AKB+738uNzuWcJSzcIMLlDM1b8VJgLgkV7yOcXtbDx5QKHWh37vu+1hJBRC25tCdUYEKEFC08v7tAGnulZ/XeiKj+X8vHbVvfQ+g+dDzj5saT5hwlVbMAJxJ2QtPASRmzsvWMe6A58QZQPV9cjQfoL2mcuSzvk8qgBAaGV4BXKUV0QApOeUdAAlpRalaT2iw0aGecYDO+qq5AG3HXm0wNyLzuEornAnpxdUAKa4lC3WMOdTXOohSdLfsLwJor6k8c7HvlwoghEaGL82011SOATijZtwCEJvk2g0QFR3nuMiPhY2YuNQogJkZc3f6DxWbGI5pCld863eAQ9fMPzrUOw6KnraD6+DSM79RpAIIWzP8GmCygmX3bgbIKFq7SeuJQ8RTv+tJgKYDzz5gdiyh4C7f9AjgyJxz/SMADkdwc6Z3bFiBwlO/awNAS/XWV6fz83INIIRGIa8AAXPXPdQMkDTrqjytARhsfHRQAXjqdq4CaD3y0vvmRmSM3LLbv+pwOByZxddvBXBGxwZ1zaaUF1B01lf9BKDp4OaHLm8cqQBCaGNaBchZuGEeQEbRuuMAMXEplkrGga66LoC+9uosgPaaSq+5EemRs+grSwBnRuGa/XB+FSw4iq7GvdsATu3/79uCGkkqgBD6mLZFs+3oyycAomLiHwLIKrnh331fscTHA8xMn
5605MOMHy2fZv/0JdNDCdoOQs3ZAPO1Nyr94KumR/62quPAyrYmd8oUgGErZl2DTDZnNXfPwqQ4lqyQGtABlPeUQDOnHyrAqD18G9fMzWgaTq/u3NBA0Bi5hWzdYw70FnrAaX6Th8J7O4c0jGuXAMIoVHYtGkNdtWvBohLcp0GiE2cHWtuRFPjcMYAkOJavBXAOzY0C6C9prLfxLCmxFVa4UxIK/4T6Jv5h/tPDwPq7Jlj5aBv5jeKVABha2FTAdprKnsAomLi7wbr9RLHJefGA8Sn5G/3H1ppYjiXVLjiHyrB4UjJWVKmY7zRoV4voHpaPlgH0Hb0lWYd4xpNKoCwtbBZBZqsaOX9OwDS3Cuv1zJgqJzvJf4OQPOh558wM5zJ3OWbHgacmXPW/wjA4Qhuud87PgIoPHW7vg7QUr1lc5AhXpSsAgmhUdhWgAm9xB6AhLSiFC0Dh8joua4xgM5TewoB2o6+0mpmPLllt98KODOL128DiIqJD+6FUgrl2935GEDTwV//MOggp3RaqQBCaBO2SywTeom/BBDn7yV2WqWXOD49GiAhrXi3/9BcM+LIWbhhMQ6HIz1/lZ6ZHwBFV/O+30PoZn6jSAUQtha21wCTFSy79zcAGUVr7zTkBAbz1O96AqDpwLPfCcX5XKUVmYAzNW95PUB8inumjnH7Th8+AajaPY/N1zHedMk1gBAaWaYCBFi1l3hspN8L4KnbuRSg7ejL1Uacx7965kyaVdoIkJg1X8sen8Huhh5A9bZ9GNjdacpeJ6kAQmgUtqtAFzLQefJ6gLjkXEv1EkfPSHQCJGUv2AHg8o4Fdo1q6yX27e4s/AD0zfzD/Z8MA/SdPrwYrLHLdTos8ccjhFEsVwEioJc4A2C4r+1F/6Gv6Bi3YPl9LwCOlJyli3WMF7hm6Wn50xcB2o6+0qhj3HAjFUDYmuVWgSabs/r7xwBSXEtKQ3riIHnHfb3EHbVv3grQevjF/72ccdzldz0EDkfmnPWPgo7dnaP47935DYCWQy88E9SAmskqkBAaWe4aYLLBrvp1AHHJua0AsTNnzTA1oClyRgV6iZe8COAdG86Gqa+y5JZtvAUcjvSC1VpmflCgoKvx3acg/GZ+o0gFELZm+QrQXlPpAYiKid8EkFVyk7+XWMuNzQwXl5ybABCfkvd//kOrL/b953d3fk7r7s7upve3AzQdeObbwY9nHVIBhK1ZfhVosqKVD+wESHNfs97UQKbL/zqcqX3zAYCWQy88OfHLrtKKdHy7O0+Bzt2dR2oBVbvnp/N0jGc0WQUSQiPLXwNMNtTXehPAYHeDtXqJ/ZUzNffqxwG8Y8PbAJR3rAPf7s5joG/mH+w+1QuKgc6TS3WMZ1VSAYStRVwF+LSXODr2FoC4JFeV77+t0Us8IyEzBiAhrbAKQHnHBgASs+a7dIw/MugZRSn6Th9eDtBeU9mnY1yrkgogbC3iVoEmK1h27/MAGUVr7zA7FjMFdnd21lfdCNB65KWd5kZ0eWQVSAiNIr4CBMy77uFmgMSsKy3VSxws5R3Dt7uz6p8Amj/8zX+ZHFJQpAIIoVHErQJdSL/nxJ/1EkfHJkd48n+6u/NpsP7Mb5QI/yMQ4uJscw0Q4C6/618Askpu+InvSHjHe7m6m/e/DdDw3s/WmRuJXnINIIRGtqsAAXNW/6AGIMW1+CqzY9Hp7JmPmgHV33G8CPTedygcSAUQQiPbrAJNNthVtxYgLjnHUr3EF3Kup7FPKUV/x/EFEHkzv1GkAghbs20FmNBLfB9A1tybNoOOuyuE1uhQ7zgoeturl4Hs7pwuqQDC1mxbAQJaqrc+BxATn/53AGnua64zN6LpiY5NjEKBM2rGtf5DJ0wNyGKkAghbs+3nAJO5SiviAFJzl50BiE/NTzI3oukJdHp1Ne1zA7QdffkTs2MygnwOIC7MopOPmWx/DRDQXlM5BOCMjv0bgNjEWZbsJY5PzQ90ei0wMRzLkAogbE2uAS7Aur3Evtezo27nowDNBzc/Ymo4msk1gBAaSQW4BKv2Eo8Nn/U9l7h+VxlA29GXj5kbkR5SAYTQSFaBLsGqvcTRsUlOgMTMK7b7D2m5s1ykscSLKYRR5BpgiqzeS9zZ8PZzAI0fPH232bEEQ64BhNBIKsA0lfh7iZMt1kvsHRsGoKP2rcC9Qbdf9AfClFQAITSSVaBpGhn0/I///1qqAjijYwFInr1oG4B3fCQLoL2mcsTEsEwnCTBNSqpmRJEEmKLcso1fBEjPX/VDs2MJRnxqQTLAUF/b6/5DN5oYjukkAaZOZv4IJKtAl5CzcMM8gPT8VccAZszMijE3Ij2UGgeg4+Sbd8P53uhwp/vvVSrApcnMH8GkAlyAq7QiFSA1d1kTWK9HeKqG+z8ZAehqfDcXzt8vKVxJBQgdmfltQBJgEldphW8XZdb8gxC5M39AbGL2DICEtOJAL3GZieGEnCTAX5KZ30YkASaJT8l/ByBpVmmhyaGEVErO4kUA7vJNjwA0f/jcv5kbUWjIbCdsTVaB/AqW3ftrgIyitZbeLx+swN2mO+urrgRoO/bqSbNjmkhWgYyjOXMDL5Q1JwS7sH0CuJfc+V2A9IJrN+kYTynfg1m6Tr3zHEBKTvmdcL5HN9zFxKVEASRmzd/ln23d5kZkLNsngP73bJNLtN6SLfSy7TVAbtnGLwBkFq9/HSAqJkFL4F2N77wGcGr/LysA3OV3PQSQVXLDj33fYY3fj4+is+HtXwE0fvCre82OBuQaQCcr/SUKg9iuAuQsuG0uQHrBtTWgb3dn3+nDHwPU7nnsys/6esnqH3wEkOxa/JlfD1fjY0MKpfDU7VgD0HrkpXfNjEcqQLAcTmMy9NKvjFwMhCHbJEBgd2eKa/EB0DfzD3TWegAGuurKL/p9XXXXAcQl5zb7z2+J5xJH+Z+PkDx70RtKKVylkdVLbJsEwLBPvadXk5UUgrAS8Qnw6e7OzCv8uzsLtOzuHO7/ZBjg7JmapXD+CTMX0l5TeQYgKib+6wBZJTdtAXA4rfFcYl8vsWL4bPvv/Ie+YGY8ukR8AmDczG/yzwsdIn4VqHjVP+4FSM1bvkrHeGPDfV6Azoa3PwfQeuSl9y9nnKKVD1YBpLlXrNMRV6go7zig6KjdfgdAS/WWLSE9v6wCmUv3CyDMFbEJULDsG8+CvpnfO+5b9Ohu2vf3cPkzf8BQX8tfAZzrcXUAxKfmJwYZYkgErllScsqfAcX46OAbAO01lV2mBnaZIjYB9D8017CZX0qKiSIuAfKW3HE/QHrBKj37+v1vebpOvfsfAC3VWzbrGNbqzyWOTcyOBUhIK9yBL4mXmhvR5Ym4BHBonvlDtW4vZcAcEbMKlFu28WaAzOL1fwB9uzu7m/a9AdDw/i/+Wsd4F1Kw/L4tABmFa75m5Hn0U6Cgo27HvwI0f/jcjw09mzwf4IKcRNa/x2os+bu3fAUwbnfnkRMAtXt+eoWO8aZq3vofnQZIzJyXHcrzBmt0qGccoLO+6gqAtmOv1hlxHvkcYDKjdnea9q7c8h80WKoSWDYBXKUViQDJsxftB30z/2B3Qw/AQGetKasa/R0f+3aNJrlqwDrPJY6JS/X3El+525/EeeZGNDWWTQAsNtNMl7U/cQ6z/TAXYblrgAm7O2sBkrIXFOkYN7C7s7tpX+B+OA06xr1cVu8l9tTvfgqg6cAz39Y6sqwCyWqPRVjiNbJcBShe9eAegNS8Fat1jDc20u/b3VlfFXh+7s6L/0RoWbaXePScAoWnbue1AK1HXtqnY1xZBbIfK18MQJhXAsskQP7V9/wcIDVvuZaZ3zs+CkBX47vfhPCb+QMs20scE+8ASMpe+DooXKUVsyD8eoktkwAYdu9Oa5BeYmOEfQLkLbnjWwAZhav9qwnB5oF/d2fj3l8CtBx64ekgBzSU1XuJE9IKU0AxdLZtm//Ql0wNaJKwTwB0v4eUiVRMELarQLmLvnodQEbxdTsAomckakmE7ub3dgA0vPfkDTrGC7WilQ/uBkhzr1hrcijToryjKAWeuu1/C9BSvfXVyxrHRp8DyHp/ZAqr1zTs3gIFdnemua/5A+ib+c+eqWkCGOpru0nHeGYZ6mu5GazYSxyDA0jJWfq8r5f43HaA9prKHjPjCrsEMG53Z8S9+7f6v8cJeM0OImwSYMLuzvdB33r3YPepXoD+jo8XAbTXVJr+Sw/Gp73EUTNuAYhNnLUTrNdLHJ9a8Ed8SbzCzHjCJgEI2zu4hTeL/+tMT1rTV4Em7O48CZCUvaBYRxwjg55RgK7GvYsA2o6+/LGOccNNwfL7tgJkFK653exYpkUpFApP7fbvATQfev7xqf2YfVaBhB2YfC9N0yuA7nXt8ZEBBeBpqLoZoPXwi2/pGDfcWbqXWCk6G3bPhUv3Ychu0Euw754ZS7eQgUmrQqYlQP7V9zwBkOZermXm9921GLqb9n0X7DPzB1i9l3hmxtzAHea0XANOlZkVQPMLZPUJUGDCqlDIrwHyltzxTYCsOdc/Bb5PCIPjiz/cnmdrFnf5pocBsko+/6jviOkrjdOg8NRXPQnQdODZBz7zOyJgFciBtV4VEVoh/dsIWQXILdu4FiCjaN0u0Lm7c/8egIb3fmap3ZFGK1nzz8cBkmeXzTc7lukYHx30reLV7VwFf/kcBuuuAillVLWRN/+fxdo3FoIQrQoZngA5C26bA5DqXvFH0Lm786MWgKG+lvU6xos0A11168CKvcS+u3onzrrq94Ca0EtsSDKEogLIzG8ii38uYvj1gGEJ4CqtSABInl22HyB25iwtM9C53uYBgP6O4+Vg/d2dRjnfS5xwD0BWyY0vgHV6iWemz0n3P5c40Ev8ZSPOY2QFsMQHMSLsOTCw2mtPgAm7O6sBEtKL03SMO3quawygt+3D5QDtNZUeHeNGusBzfGP
560i0+8BSHOvWGNuRNPhIM294lalIHeoN1ABXtN5BsMqgFKBdyZ6ktf6ixqmU3/2Pxbhe9mNi1n75wBCWIm8Txe2JgkgbE0SQNiaJICwNUkAYWuSAMLWJAGErUkCCFuTBBC2JgkgbE0SQNiaJICwNUkAYWuSAMLWJAGErUkCCFuTBBC2JgkgbE0SQNiaJICwNUkAYWuSAMLWJAGErf0/IVEfrF+BKdMAAAAASUVORK5CYII="/> 561</defs> 562</svg> 563</a> 564 <a aria-label="linkedin share link" href="https://www.linkedin.com/sharing/share-offsite/?url=https://www.discoverphl.com/blog-post/philadelphia-2026/"><svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 565<path d="M15.2441 0H1.60972C0.956592 0 0.428467 0.515625 0.428467 1.15313V14.8438C0.428467 15.4813 0.956592 16 1.60972 16H15.2441C15.8972 16 16.4285 15.4813 16.4285 14.8469V1.15313C16.4285 0.515625 15.8972 0 15.2441 0ZM5.17534 13.6344H2.80034V5.99687H5.17534V13.6344ZM3.98784 4.95625C3.22534 4.95625 2.60972 4.34062 2.60972 3.58125C2.60972 2.82188 3.22534 2.20625 3.98784 2.20625C4.74722 2.20625 5.36284 2.82188 5.36284 3.58125C5.36284 4.3375 4.74722 4.95625 3.98784 4.95625ZM14.0628 13.6344H11.691V9.92188C11.691 9.0375 11.6753 7.89687 10.4566 7.89687C9.22222 7.89687 9.03472 8.8625 9.03472 9.85938V13.6344H6.66597V5.99687H8.94097V7.04063H8.97222C9.28784 6.44063 10.0628 5.80625 11.216 5.80625C13.6191 5.80625 14.0628 7.3875 14.0628 9.44375V13.6344Z" fill="#3256A6"/> 566</svg> 567</a> 568 </div> 569 </div> 570 </div> 571 <div class="wysiwyg-header image"> 572 <div class="text"> <h2>Philadelphia Celebrates Americaâs 250th Birthday With So Much to Do</h2> </div> 573 <div class="image"><img loading="lazy" src="https://www.discoverphl.com/wp-content/uploads/2024/06/July4th22-G.Widman_1sm-1920x1080-1.jpg" alt="A huge fireworks display over the Philadelphia Museum of art. The Parkway is full of people and lights." /> </div> 574 </div> 575 <p class="wysiwyg-summary">As Americaâs birthplace, <strong>Philadelphia</strong> is the centerpiece of the United Statesâ 250th birthday celebration.</p> 576<p>Few cities celebrate July 4th like Philadelphia, but in 2026, every day is Independence Day as the city celebrates <strong>Americaâs Semiquincentennial</strong> â the 250th Anniversary of the signing of the Declaration of Independence. As Americaâs birthplace, Philadelphia will be the centerpiece of this monumental birthday celebration. But the action doesnât stop there. In 2026, Philadelphia takes center stage for some of the worldâs greatest events.</p> 577<h2>The Ultimate Guide to America 250 in Philadelphia</h2> 578<h3><strong>1. Festivals & Firsts</strong></h3> 579<ul> 580<li><strong>Wawa Welcome America (June 19 â July 4):</strong> The nationâs largest free festival features 16 days of concerts, fireworks, and community events. Don’t miss <strong>Wawa Hoagie Day</strong> and the massive <strong>July 4th Party on the Parkway</strong>.</li> 581<li><strong>52 Weeks of Firsts:</strong> Every Saturday in 2026, a different neighborhood hosts a <strong>“Firstival,”</strong> celebrating Philadelphia’s legacy of innovation.</li> 582</ul> 583<h3><strong>2. Historic District Highlights</strong></h3> 584<ul> 585<li><strong>The Red, White, & Blue To-Do (July 2):</strong> A day of “pomp and parade” in the <strong>Old City</strong> historic district featuring an All-American Block Party, concerts, and extended hours at iconic sites.</li> 586<li><strong>The Liberty Medal Ceremony (July 3):</strong> Watch as <strong>Pope Leo XIV</strong> receives this prestigious honor at the <strong>National Constitution Center</strong>, overlooking <strong>Independence Hall</strong>.</li> 587<li><strong>Examining the Declaration, Revolution</strong>: New exhibitions at the <strong>Museum of the American Revolution</strong>, Constitution Center, and <strong>Weitzman National Museum of American Jewish History </strong>focus on Americaâs 250<sup>th</sup></li> 588</ul> 589<h3><strong>3. Signature 2026 Sports Events</strong></h3> 590<ul> 591<li><strong>MLB All-Star Game (July 14):</strong> The Midsummer Classic returns to <strong>Citizens Bank Park</strong>, accompanied by the <strong>Capital One All-Star Village</strong> at the Convention Center and a week of baseball events.</li> 592<li><strong>FIFA World Cup 26â¢:</strong> Philadelphia hosts six matches of the worldâs biggest sporting event, with the <strong>FIFA Fan Festivalâ¢</strong> at <strong>Lemon Hill</strong> running for 39 consecutive days.</li> 593</ul> 594<h3><strong>Pro-Traveler Tips for 2026:</strong></h3> 595<ul> 596<li><strong>Transportation:</strong> Skip the traffic and use <strong>SEPTA </strong> The <strong>Blue Line (Market-Frankford)</strong> is your best bet for getting between the <strong>Historic District</strong> and <strong>Center City</strong>.</li> 597<li><strong>Booking:</strong> Because 2026 is a milestone year, timed tickets for <strong>Independence Hall</strong> and the <strong>Museum of the American Revolution</strong> should be booked weeks, if not months, in advance.</li> 598<li><strong>Official App:</strong> Download the <a href="https://apps.apple.com/in/app/2026-access-philly/id6757433765" target="_blank" rel="noopener"><strong>2026 Access Philly App</strong></a> for real-time updates.</li> 599<li><strong>Visitors Guide: </strong>Check out the <strong><a href="https://www.discoverphl.com/discover/official-visitors-guide/250-guide/" rel="noopener">Philadelphia 250 Commemorative Guide</a>!</strong></li> 600</ul> 601<h2><span id="what-is-the-semiquincentennial" class="wysiwyg-anchor" data-title="What is the semiquincentennial?">What is the  Semiquincentennial?<strong></span></strong></h2> 602<p>The Semiquincentennial is the 250th anniversary of Americaâs Founders declaring the countryâs independence right here in Philadelphia. In 1776, Benjamin Franklin, Thomas Jefferson, and delegates from the 13 Colonies signed the Declaration of Independence at <
602a href="https://www.nps.gov/inde/planyourvisit/independencehall.htm" target="_blank" rel="noopener"><strong>Independence Hall</strong></a><strong>.</strong> The document proclaimed their separation from British colonial rule. The signing is referred to as the birth of the United States and is celebrated in America each year on the Fourth of July.</p> 603<p><img fetchpriority="high" decoding="async" class="alignnone size-large wp-image-59252" src="https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-1024x682.jpg" alt="Independence Hall sits behind a garden of tulips." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/04/Independence-Hall-in-the-Spring.jpg 2000w" sizes="(max-width: 1024px) 100vw, 1024px" /></p> 604<h2><span id="celebrating-250-years-philly-style" class="wysiwyg-anchor" data-title="Events">Celebrating 250 Years Philly Style!</span></h2> 605<p>These events highlight Philadelphiaâs role in the founding of our nation, and our love for the arts and partying!</p> 606<h3>52 weeks of Philly firsts</h3> 607<p>Philadelphia is celebrating the entire year by spotlighting its many historic âfirstsâ in 2026 through <a href="https://www.visitphilly.com/things-to-do/events/52-weeks-of-firsts-in-philadelphia/" target="_blank" rel="noopener"><strong>52 Weeks of Firsts</strong></a> â a citywide series of weekly events, storytelling, and experiences. Every week features Saturday â<strong>Firstivals</strong>â featuring live entertainment, music, family fun, giveaways, art, and more in neighborhoods around the city. Some historic firsts include the Slinky, the inaugural Motherâs Day celebration, the nationâs first Thanksgiving Day Parade, Americaâs first zoo, lending library, and the American flag (thanks Betsy Ross).</p> 608<h3>16 Days of Free Fun with WaWa Welcome America</h3> 609<p>Philadelphia will amplify and expand its already electrifying series of summer celebrations for the Semiquincentennial. The annual <a href="https://july4thphilly.com/"><strong>Wawa Welcome America</strong></a> festival returns with 16 days of electrifying programming of concerts, block parties, and free hoagies (of course) from <a href="https://www.discoverphl.com/blog-post/juneteenth-celebrations-in-philadelphia/"><strong>Juneteenth</strong></a> through the <a href="https://www.discoverphl.com/blog-post/celebrate-july-fourth-in-philadelphia/"><strong>Fourth of July</strong></a>. Â Some highlights this summer include:</p> 610<ul> 611<li><strong>The </strong><a href="https://july4thphilly.com/event/kidchella-music-festival/" target="_blank" rel="noopener"><strong>Kidchella Music Festival</strong></a></li> 612<li><strong>Concilioâs Annual Hispanic Fiesta</strong></li> 613<li><a href="https://july4thphilly.com/event/celebration-of-black-music-month-and-fireworks/" target="_blank" rel="noopener"><strong>Celebration of Black Music Month + Fireworks,</strong></a> featuring Phillyâs own Eve</li> 614<li><a href="https://july4thphilly.com/event/wawa-hoagie-day/" target="_blank" rel="noopener"><strong>Wawa Hoagie Day,</strong></a></li> 615<li><strong>July 4<sup>th</sup> Party on the Parkway</strong>, concluding with a massive free concert and fireworks display along the Benjamin Franklin Parkway.</li> 616</ul> 617<div id="attachment_2953" style="width: 1010px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-2953" decoding="async" class="size-full wp-image-2953" src="https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1.jpg" alt="A person holds up an American flag in a crowd at the Wawa Welcome American Parkway concert." width="1000" height="600" srcset="https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1.jpg 1000w, https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1-300x180.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1-768x461.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2023/10/Parkway32-photo-courtesy-of-Wawa-Welcome-America-1-860x516.jpg 860w" sizes="(max-width: 1000px) 100v
617w, 1000px" /><p id="caption-attachment-2953" class="wp-caption-text">People enjoy the Party of the Parkway in Philadelphia during the Wawa Welcome America Festival. Photo courtesy of Wawa Welcome America Photo/ Joseph Kaczmarek</p></div> 618<h3>Philly Fair 250</h3> 619<p>Wawa Welcome America festivities this year include <a href="https://july4thphilly.com/event/philly-fair-250-day-1/" target="_blank" rel="noopener"><strong>Philly Fair 250</strong></a>. The multi-day festival in the Centennial District features jazz performances, a trapeze, hot air balloon rides, and âfood trucks representing flavors from the original 13 colonies.â Local institutions are partnering really ramp up the free family fun with the <a href="https://www.libertymuseum.org/" target="_blank" rel="noopener">National Liberty Museum</a> displaying a life-sized replica of the Liberty Bell.</p> 620<div id="attachment_59253" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-59253" decoding="async" class="size-large wp-image-59253" src="https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-1024x682.jpg" alt="A replica of the Liberty Bell at the National Liberty Museum" width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/04/National-Liberty-Museum.jpg 2000w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-59253" class="wp-caption-text">National Liberty Museum</p></div> 621<p>As part of Wawa Welcome America, the Philadelphia Historic District will host the <a href="https://www.phlvisitorcenter.com/red-white-blue-to-do-philadelphia-pa" target="_blank" rel="noopener"><strong>Red, White, & Blue To-Do</strong></a> on July 2. Inspired by John Adamsâs call for âpomp and parade,â the event invites visitors to Americaâs most historic square mile for a patriotic parade, the All-American Block Party, plenty of family fun at historic attractions. The Red, White, & Blue To-Do wraps up with a Salute to Service concert as The United States Army Field Band and Soldiersâ Chorus, featuring Queen Latifah, perform on Independence Mall.</p> 622<h3>Liberty Medal Presentation to Pope Leo</h3> 623<p>Pope Leo XIV, the first leader of the Roman Catholic Church born in the United States, will return to Philadelphia â where he attended Villanova University â to accept <a href="https://constitutioncenter.org/about/liberty-medal" target="_blank" rel="noopener">the 2026 <strong>Liberty Medal</strong></a> on July 3. The medal is presented annually by the <strong>National Constitution Center</strong> to persons âof courage and conviction who strive to secure the blessings of liberty for people around the globe.â The ceremony will be held outside the Old City museum on Independence Hall.</p> 624<h3>Bells Across PA</h3> 625<p>America250PAâsart series â<a href="https://america250pa.org/PPE:_Bells_Across_PA" target="_blank" rel="noopener"><strong>Bells Across PA</strong></a>â commemorates the 250th anniversary of the United States throughout Pennsylvania. Selected artists transform fiberglass bell sculptures that are on display in each of <strong>Pennsylvania</strong>âs 67 counties, including Philadelphia and the Countryside.</p> 626<blockquote class="instagram-media" style="background: #FFF; border: 0; border-radius: 3px; box-shadow: 0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width: 540px; min-width: 326px; padding: 0; width: calc(100% - 2px);" data-instgrm-captioned="" data-instgrm-permalink="https://www.instagram.com/reel/DTlNbKLDVEV/?utm_source=ig_embed&utm_campaign=loading" data-instgrm-version="14"> 627<div style="padding: 16px;"> 628<p> </p> 629<div style="display: flex; flex-direction: row; align-items: center;"> 630<div style="background-color: #f4f4f4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"></div> 631<div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"> 632<div style="background-color: #f4f4f4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"></div> 633<div style="background-color: #f4f4f4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"></div> 634</div> 635</div> 636<div style="padding: 19% 0;"></div> 637<div style="display: block; height: 50px; margin: 0 auto 12px; width: 50px;"></div> 638<div style="padding-top: 8px;"> 639<div style="color: #3897f0; font-family: Arial,sans-serif; font-size: 14px; font-style: normal; font-weight: 550; line-height: 18px;">View this post on Instagram</div> 640</div> 641<div style="padding: 12.5% 0;"></div> 642<div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"> 643<div> 644<div style="background-color: #f4f4f4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"></div> 645<div style="background-color: #f4f4f4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"></div> 646<div style="background-color: #f4f4f4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"></div> 647</div> 648<div style="margin-left: 8px;"> 649<div style="background-color: #f4f4f4; border-radius: 50%; flex-grow: 0; height: 20px;
649 width: 20px;"></div> 650<div style="width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg);"></div> 651</div> 652<div style="margin-left: auto;"> 653<div style="width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"></div> 654<div style="background-color: #f4f4f4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"></div> 655<div style="width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"></div> 656</div> 657</div> 658<div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"> 659<div style="background-color: #f4f4f4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"></div> 660<div style="background-color: #f4f4f4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"></div> 661</div> 662<p> </p> 663<p style="color: #c9c8cd; font-family: Arial,sans-serif; font-size: 14px; line-height: 17px; margin-bottom: 0; margin-top: 8px; overflow: hidden; padding: 8px 0 7px; text-align: center; text-overflow: ellipsis; white-space: nowrap;"><a style="color: #c9c8cd; font-family: Arial,sans-serif; font-size: 14px; font-style: normal; font-weight: normal; line-height: 17px; text-decoration: none;" href="https://www.instagram.com/reel/DTlNbKLDVEV/?utm_source=ig_embed&utm_campaign=loading" target="_blank" rel="noopener">A post shared by PHLCVB (@discover_phl)</a></p> 664</div> 665</blockquote> 666<p>
666<script async src="//www.instagram.com/embed.js"></script>
666</p> 667<h3><strong>Art Philly’s What Now</strong></h3> 668<p>Launching in May 2026, <a href="https://www.artphilly.org/what-we-do" target="_blank" rel="noopener"><strong>ArtPhilly</strong></a> presents <strong>What Now</strong>, a citywide, multidisciplinary arts festival. This collaborative festival will showcase Philadelphia artists and neighborhoods, sparking civic dialogue on the nationâs evolution since 1776. Through What Now, commissioned artists will interpret Philadelphiaâs legacy, reflecting on the cityâs complex history and future.</p> 669<span class="cb23-responsive-iframe"><iframe loading="lazy" title="YouTube video player" src="https://www.youtube.com/embed/mCKIM6p9Ryc?si=a9o1lcQ0-cJuVrkB" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></span> 670<h2><span id="the-eyes-of-the-sports-world-on-philly-in-2026" class="wysiwyg-anchor" data-title="Sports">The Eyes of the Sports World on Philly in 2026</span></h2> 671<p>2026 is already a giant year for sports in Philadelphia.</p> 672<p>It all started with the return of <strong>March Madness</strong> to Xfinity Mobile Arena, as Philly hosted Round of 64 and 32 games in the National Collegiate Athletic Associationâs (NCAA) menâs basketball tournament on March 20 and 22. The annual <strong>Penn Relays</strong> followed, bringing track athletes of all ages to the University of Pennsylvaniaâs Franklin Field in late April.</p> 673<h3>PGA Championship, US Amateur Championship land in countryside</h3> 674<p>Just beyond the city limits, the <a href="https://www.pgachampionship.com/" target="_blank" rel="noopener">2026 <strong>PGA Championship</strong></a> is celebrated  a homecoming at <strong>Aronimink Golf Club</strong> in Newtown Square from May 11â17. One of golfâs four major menâs championships featured 150 of golfâs best trying to claim the title as the historic club hosted the championship for the first time since 1962.  Englishman Aaron Rai won the title.</p> 675<div id="attachment_58392" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-58392" loading="lazy" decoding="async" class="size-large wp-image-58392" src="https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-1024x682.jpg" alt="A golfer raises his arms in triumph on the field." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/02/PGA-Championship.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-58392" class="wp-caption-text">LOUISVILLE, KY – MAY 19: Xander Schauffele celebrates winning the 2024 PGA Championship on the 18th hole during the final round of the PGA Championship at Valhalla Golf Club on Sunday, May 19, 2024 in Louisville, Kentucky. (Photo by Maddie Meyer/PGA of America)</p></div> 676<p>Later this summer, <strong>Merion Golf Club</strong> in Ardmore on the Main Line will host golfâs future stars for the <a href="https://championships.usga.org/usamateur.html" target="_blank" rel="noopener"><strong>United States Amateur Championship</strong></a> from August 10â16. The event brings together the nationâs top menâs amateur golfers for one of the sportâs most prestigious competitions. And, just like at the PGA, you can <a href="https://championships.usga.org/usamateur/2026/articles/126th-us-amateur-tickets-available-merion.html" target="_blank" rel="noopener">buy tickets</a> to line the fairways and greens to get up close to the action.</p> 677<h3>Soccer’s Best Coming to Philly for FIFA World Cup 26â¢</h3> 678<p>The beautiful game is on display in Philly this summer. The city is one of the North American host cities for the <a href="https://www.discoverphl.com/discover/fifa-world-cup/"><strong>FIFA World Cup 26â¢</strong></a><strong>,</strong> and will hold six matches at Lincoln Financial Field  (renamed <strong>Philadelphia Stadium</strong> for the duration of the tournament). The schedule includes five group stage matches featuring traditional world football powerhouses,<strong> Brazil</strong> and <strong>France</strong>, alongside Cote DâIvoire, Ecuador, Haiti, Iraq, Curaçao, Croatia, and Ghana. The action wraps up (appropriately) with a July 4<sup>th</sup> Round of 16 match..</p> 679<div id="attachment_59203" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-59203" loading="lazy" decoding="async" class="size-large wp-image-59203" src="https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-1024x682.jpg" alt="The stands at Philadelphia Stadium are full for the FIFA World Cup" width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2026/06/FIFA-World-Cup-Ecuador-vs-Ivory-Coast-16.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-59203" class="wp-caption-text">Ecuador v.s. Ivory Coast at Philadelphia Stadium</p></div> 680<h3>Philadelphia’s FIFA Fan Festival<strong>â¢</strong></h3> 681<p>Promising to be âunlike any other visitor experience in the United States in 2026,â <a href="https://phillyfwc26.com/fifa-fan-fest"><strong>Philadelphiaâs FIFA Fan Festival</strong></a><strong>â¢</strong>
681 kicks its way into <strong>Fairmount Park</strong> with nearly six weeks of food, football, festivities, and free fun. Â It takes place for the duration of the tournament, from Thursday, June 11, to Sunday, July 19, 2026, at <strong>Lemon Hill</strong> park. Registration for FREE entry to the festival <a href="https://www.eventim.com/artist/philadelphia-fifa-fan-festival/?affiliate=7FI" target="_blank" rel="noopener">is available online</a>.</p> 682<div id="attachment_59254" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-59254" loading="lazy" decoding="async" class="size-large wp-image-59254" src="https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-1024x682.jpg" alt="A France Fan watches the big screen at FIFA Fan Festival with his teamflag draped over him." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/04/FIFA-Fan-Festival-Philadelphia-15.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-59254" class="wp-caption-text">FIFA Fan Festival Philadelphia</p></div> 683<p>We have your full guide to getting tickets, getting around during the tournament, <a href="https://www.discoverphl.com/blog-post/philadelphia-between-world-cup-matches/?_gl=1*1rq8hj9*_up*MQ..*_ga*MTcwMzI2ODY5My4xNzc3MDQ4NDQ5*_ga_YG74SVF2M6*czE3NzcwNDg0NDkkbzEkZzAkdDE3NzcwNDg0NDkkajYwJGwwJGgw">places to check out around the city</a>, and just how awesome this football city can be. We also have so you can get a taste of home while in Philly.</p> 684<h3>Baseball’s best swing into town for Mis-Summer Classic</h3> 685<p>Whatâs more American than baseball? <strong>Major League Baseball</strong>âs superstars are heading to Philadelphia for the 2026 <a href="https://www.mlb.com/phillies/fans/all-star-game" target="_blank" rel="noopener"><strong>MLB All-Star Game</strong></a> at <strong>Citizens Bank Park</strong>. The 96th Midsummer Classic takes place Tuesday, July 14, at the <strong>Phillies</strong>â home ballpark. In the days leading up to the game, fans can enjoy the <strong>Capital One All-Star Village</strong> at the <strong>Pennsylvania Convention Center</strong>, the <strong>HBCU Swingman Classic</strong>, <strong>T-Mobile Home Run Derby</strong>, and other baseball-themed events at the ballpark as part of <a href="https://allstargame.com/" target="_blank" rel="noopener"><strong>MLB All-Star Week</strong>, starting July 10</a>. Our <a href="https://www.discoverphl.com/blog-post/mlb-all-star-2026/">guide to the week of baseball</a> will ensure you donât miss any action.</p> 686<p><strong>Donât have tickets, but donât want to miss the action?</strong> Check out <a href="https://www.discoverphl.com/blog-post/top-philadelphia-sports-bars/">our list of some of the <strong>best Philly sports bars</strong></a> for fans to flock to.</p> 687<h3>Cyclists return to take on ‘The Wall’</h3> 688<p>The <a href="https://www.philadelphiacyclingclassic.com/" target="_blank" rel="noopener"><strong>Philadelphia Cycling Classic</strong></a> returns in August for the first time in a decade. The race starts and ends on the Benjamin Franklin Parkway, and will include the infamous hill in Manayunk known as âThe Wallâ that has humbled many a professional cyclist over the previous iterations of this favorite event simply know as âThe Bike Race.â</p> 689<h2><span id="new-philadelphia-museums-art-and-exhibitions" class="wysiwyg-anchor" data-title="New Museums and Exhibitions">New Philadelphia Museums, Art, and Exhibitions</span></h2> 690<p>This might as well be called the year of exhibitions in Philadelphia. In 2026, Philly will debut landmark art, science, and history experiences that celebrate American creativity and the cityâs legacy of storytelling.</p> 691<h3>A Nation of Artists</h3> 692<p>Leading the way is <a href="https://www.philamuseum.org/exhibitions/nation-artists" target="_blank" rel="noopener"><strong><em>A Nation of Artists</em></strong></a>, a joint exhibition from the <a href="https://philamuseum.org/" target="_blank" rel="noopener"><strong>Philadelphia Museum of Art</strong></a> and <a href="https://www.pafa.org/" target="_blank" rel="noopener"><strong>PAFA</strong></a> featuring over 1,000 works of art. The exhibition that runs until July 2027ncludes rarely seen pieces from the Middleton Family Collection, highlighting diverse artists â from Mary Cassatt to Thomas Eakins to Horace Pippin to Charles Willson Peale to Mark Rothko â and overlooked voices in American art history.</p> 693<p><img loading="lazy" decoding="async" class="alignnone size-large wp-image-59255" src="https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-1024x682.jpg" alt="Museum visitors look at the paintings hung on the walls." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/04/Pennsylvania-Academy-of-Fine-Arts-2.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p> 694<h3>Focusing on Rocky at the Rocky Steps</h3> 695<p><a href="https://www.philamuseum.org/exhibitions/rising-up-rocky" target="_blank" rel="noopener"><strong><em>Rising Up: Rocky and the Making of Monuments</em></strong></a> puts the focus on the Philadelphia Museum of Artâs connection to âRocky.â âIn a moment of reckoning and reimagining for monuments, why do millions of people from around the world visit the Rocky
695statue by the steps at the Philadelphia Museum of Art?â the art museum asks. The exhibit looks at millennia of artistâs putting a focus on boxing and celebrity. The values on display include âperseverance, spirit, and grit.â</p> 696<h3>Ministry of Awe</h3> 697<p>Expanding the cityâs immersive art offerings, muralist Meg Saligman debuted <a href="https://moaphilly.org/" target="_blank" rel="noopener"><strong><em>Ministry of Awe</em></strong></a> inside a restored Old City bank. The six-story installation will blend visual art, sound, and live performance, inviting visitors to explore âaweâ through interactive and evolving environments.</p> 698<h3>Icons of Independence</h3> 699<p>Enjoy the city of murals like youâve never seen before. From the Liberty Bell, famous figures, the American flag, iconic architecture, and much more, <a href="https://muralarts.org/stories/announcing-mural-arts-spring-2026-tour-season/" target="_blank" rel="noopener"><strong>Mural Arts Philadelphia</strong> is offering</a> a <a href="https://muralarts.org/tours/" target="_blank" rel="noopener">Semiquincentennial tour</a> specifically geared to a âtrail of historic symbols.â</p> 700<h3>Celebrating 50 Years of Music</h3> 701<p><a href="https://highmarkmann.org/" target="_blank" rel="noopener"><strong>The Highmark Mann Center for the Performing Arts</strong></a> in Fairmount Park is celebrating 50 years of music and performances with a summer slate of shows. The open-air venue is <a href="https://highmarkmann.org/50th-anniversary/journey-through-time" target="_blank" rel="noopener">looking back on its first 50 years</a> and focused on the future. Among the performances: On June 18, the <strong>Philadelphia Orchestra</strong> will celebrate <a href="https://highmarkmann.org/events/2026-06-18/50-years-of-music-in-the-park" target="_blank" rel="noopener"><em>50 Years of Music in the Park</em></a>, and on July 5, music legend <strong>Paul Simon</strong> will take the stage.</p> 702<h3>Universal Theme Parks come to Philly</h3> 703<p><a href="https://fi.edu/en" target="_blank" rel="noopener"><strong>The Franklin Institute</strong></a> is featuring the world premiere of <a href="https://fi.edu/en/exhibits-and-experiences/universal-theme-parks-exhibition" target="_blank" rel="noopener"><strong><em>Universal Theme Parks: The Exhibition</em></strong></a>. Opened in February, the premier exhibition showcases how Universal parks are created, premiering at the museum before traveling. Entirely designed, built, and toured by The Franklin Institute, the exhibit highlights key milestones of Universal Destinations and Experiences, from the early Studio Tram tour to the new Epic Universe. <a href="https://tickets.fi.edu/webstore/shop/viewitems.aspx?cg=11&c=utp&_gl=1*6zzq65*_gcl_au*MTgxNTMzNjYxMC4xNzYxODQ3OTE5" target="_blank" rel="noopener">Tickets are on sale now</a>.</p> 704<div id="attachment_59153" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-59153" loading="lazy" decoding="async" class="wp-image-59153 size-large" src="https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-1024x682.jpg" alt="Some kids laugh a scream looking at a replica of a dinosaur in the Franklin Institute." width="1024" height="682" srcset="https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-1024x682.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-1536x1024.jpg 1536w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2026/06/Universal-Parks_-The-Exhibtion-1.jpg 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-59153" class="wp-caption-text">Photo courtesy of ©The Franklin Institute</p></div> 705<h3>
705Kids get a civics lesson</h3> 706<p>The <a href="https://www.pleasetouchmuseum.org/"><strong>Please Touch Museum</strong></a>, which occupies Memorial Hallâan art gallery built for Americaâs 1876 Centennial Expositionânow features for the Semiquincentennial, <a href="https://www.pleasetouchmuseum.org/discovering-democracy-2/" target="_blank" rel="noopener"><strong>Discovering Democracy</strong></a>. The play-based civics field trip aims to introduce children to the concept of democracy and how it plays a role in their everyday lives. For everyday visits, check out special exhibits featuring the prementioned Slinky, Daniel Tiger, and Paw Patrol.</p> 707<h3>Enter Bear Country</h3> 708<p>The <a href="https://www.philadelphiazoo.org/" target="_blank" rel="noopener"><strong>Philadelphia Zoo</strong></a> â the nationâs first zoo â has announced its largest exhibition project in over a decade with a $20M transformation of <a href="https://www.philadelphiazoo.org/bearcountry/" target="_blank" rel="noopener"><strong><em>Bear Country</em></strong></a>, set for debut in 2026. The expanded exhibit will feature the Zoo360 trail for bears, an off-exhibit space for cub rearing, and enhanced water features and landscaping.</p> 709<h3>The Declaration’s Journey</h3> 710<p>The <a href="https://www.amrevmuseum.org/" target="_blank" rel="noopener"><strong>Museum of the American Revolution</strong></a>âs exhibition <a href="https://www.amrevmuseum.org/exhibits/the-declaration-s-journey" target="_blank" rel="noopener"><strong><em>The Declarationâs Journey</em></strong></a> celebrates the Declaration of Independenceâs 250-year legacy and global influence on independence movements through rare artifacts and stories. Beyond the exhibit, which runs into January 2027, the museum is running <a href="https://www.amrevmuseum.org/2026-and-beyond" target="_blank" rel="noopener">public programming</a> to examine the idea of independence, revolution, and freedom.</p> 711<div id="attachment_57423" style="width: 1034px" class="wp-caption alignnone"><img aria-describedby="caption-attachment-57423" loading="lazy" decoding="async" class="size-large wp-image-57423" src="https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-1024x683.jpg" alt="A woman and a child look over a Museum exhibit case" width="1024" height="683" srcset="https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-1024x683.jpg 1024w, https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-300x200.jpg 300w, https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-768x512.jpg 768w, https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1-860x573.jpg 860w, https://www.discoverphl.com/wp-content/uploads/2025/10/The-Declarations-Journey-Exhibition-6-1.jpg 1080w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-57423" class="wp-caption-text">©JPG Photography</p></div> 712<h3>Examining America’s Founding</h3> 713<p>The 250th birthday is a monumental milestone for the <a href="https://constitutioncenter.org/museum" target="_blank" rel="noopener"><strong>National Constitution Center</strong></a>. The Old City institutionâs newest exhibit, <a href="https://constitutioncenter.org/museum/exhibits-programs/americas-founding" target="_blank" rel="noopener"><strong><em>Americaâs Founding</em></strong></a>, (and its expanded <strong>Americaâs Founding</strong> gallery), offers a dynamic, interactive exploration of the American Revolution and the creation of the Constitution and Bill of Rights. In addition to awarding the 2026 <strong>Liberty Medal</strong> to <strong>Pope Leo XIV </strong>(see above), the NCC has launched a comprehensive <a href="https://constitutioncenter.org/america-at-250" target="_blank" rel="noopener">digital toolkit</a> that examines the revolutionary ideas of 1776.</p> 714<h3>Untold moments of American Jews during the American Revolution</h3> 715<p>The <a href="https://theweitzman.org/" target="_blank" rel="noopener"><strong>Weitzman National Museum of American Jewish History</strong></a> kicked off its celebrations with a mock cannon salute to mark the opening of its latest exhibition, <a href="https://theweitzman.org/exhibitions/first-salute/" target="_blank" rel="noopener"><em>First Salute,</em></a> in April. This immersive experience tells the story of the tiny Caribbean island of St. Eustatius and its pivotal role in the Revolution. As the museum describes it: âThink Hamilton meets Pirates of the Caribbean.â Visitors can learn how Jewish merchants and Caribbean trade routes helped sustain the Continental Army during the fight for independence.</p> 716<h3>America’s first bank gets a new look</h3> 717<p>Following a massive restoration project, the <strong>First Bank of the United States</strong> is expected to reopen its doors to the public just ahead of the July 4th festivities. This architectural landmark will serve as a new museum space, focusing on the early American economy and the vision of Alexander Hamilton.</p> 718<p>Start planning a trip for you and your group to Philadelphia in 2026 today! Use our <a href="https://www.discoverphl.com/discover/">plan your trip</a> page to start organizing your Philadelphia adventure now.</p> 719 </div> 720 </div> 721</section> 722<style> 723 .cb05-related-content-columns .cb05-intro {position: relative; z-index: 3;} 724 .cb05-related-content-columns .cb05-intro a {font-size:18px !important; } 725 @media (max-width:767px) { 726 .cb05-related-content-columns .cb05-intro a { 727 font-size: 16px !important; 728 } 729 } 730 731 732</style> 733 734<section class="p10-block cb05-related-content-columns green-background has-wave-top has-wave-bottom " role="group"> 735 <svg class="green-wave-top" width="1600" height="129" viewBox="0 0 1600 129" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg">
736 <path d="M1600 128.052H0V52.5518C0 52.5518 265 -50.9482 766.5 32.5518C1268 116.052 1600 52.5518 1600 52.5518V128.052Z" fill="#054E41" /> 737 </svg> 738 <svg class="green-wave-top mobile" width="1600" height="129" viewBox="0 0 1600 129" preserveAspectRatio="xMinYMax" fill="none" xmlns="http://www.w3.org/2000/svg"> 739 <path d="M1600 128.052H0V52.5518C0 52.5518 265 -50.9482 766.5 32.5518C1268 116.052 1600 52.5518 1600 52.5518V128.052Z" fill="#054E41" /> 740 </svg> 741 <div class="cb05-background-wrap"> 742 <div class="cb05-headline-wrap green-background"> 743 744 745 </div> 746 <div class="cb05-headline headline-default green-background"> 747 <div class="frame"> 748 <h2 class="cb05-title"><span class="underline">Discover More</span></h2> </div> 749 </div> 750 751 752 <div class="frame"> 753 <div class="cb05-content green-background"> 754 <a href="https://www.discoverphl.com/blog-post/fifa-world-cup-2026-in-philadelphia/" class="cb05-post related-content-card green-background"> 755 756 <div class="related-content-post-img"> 757 <img src="https://www.discoverphl.com/wp-content/uploads/2024/02/Mexico-vs.-Germany-Game-12-scaled.jpg" alt="" /> 758 </div> 759 <div class="related-content-card-info"> 760 761 <span class="post-label-placeholder"></span> <h3 class="related-content-post-heading">FIFA World Cup 2026⢠in Philadelphia</h3> <div class="related-content-description"><p>Philadelphia was selected as one of 11 Host Cities in the United States for FIFA World Cup 2026⢠matches....</p><svg xmlns="http://www.w3.org/2000/svg" width="25" height="12" viewBox="0 0 25 12" fill="none"><path d="M25 6L15 0.226497V11.7735L25 6ZM0 7H16V5H0V7Z" fill="white"/></svg></div> 762 </div> 763 </a> 764 <a href="https://www.discoverphl.com/blog-post/mlb-all-star-2026/" class="cb05-post related-content-card green-background"> 765 766 <div class="related-content-post-img"> 767 <img src="https://www.discoverphl.com/wp-content/uploads/2024/06/2026-MLB-All-Star-Game-Logo-Reveal-Celebration.jpg" alt="" /> 768 </div> 769 <div class="related-content-card-info"> 770 771 <span class="post-label-placeholder"></span> <h3 class="related-content-post-heading">Philadelphia Hosts 2026 MLB All-Star Gameâ¯: What to Know</h3> <div class="related-content-description"><p>The MLB All-Star Game is coming to Philadelphia in 2026, another canât miss event during the nationâs semiquincentennial celebra...</p><svg xmlns="http://www.w3.org/2000/svg" width="25" height="12" viewBox="0 0 25 12" fill="none"><path d="M25 6L15 0.226497V11.7735L25 6ZM0 7H16V5H0V7Z" fill="white"/></svg></div> 772 </div> 773 </a> 774 <a href="https://www.discoverphl.com/blog-post/celebrate-july-fourth-in-philadelphia/" class="cb05-post related-content-card green-background"> 775 776 <div class="related-content-post-img"> 777 <img src="https://www.discoverphl.com/wp-content/uploads/2023/10/Fireworks-photo-credit-Ed-Newton-for-Live-Nation-2-1440x500x72.jpg" alt="" /> 778 </div> 779 <div class="related-content-card-info"> 780 781 <span class="post-label-placeholder"></span> <h3 class="related-content-post-heading">Celebrate July Fourth in Philadelphia</h3> <div class="related-content-description"><p>There is no better place to celebrate Americaâs birthday than in the city where it all began....</p><svg xmlns="http://www.w3.org/2000/svg" width="25" height="12" viewBox="0 0 25 12" fill="none"><path d="M25 6L15 0.226497V11.7735L25 6ZM0 7H16V5H0V7Z" fill="white"/></svg></div> 782 </div> 783 </a> 784 785 </div> 786 </div> 787 </div> 788 <svg class="green-wave-bottom" width="1600" height="129" viewBox="0 0 1600 129" preserveAspectRatio="none" fill="none" xmlns="http://www.w3.org/2000/svg"> 789 <path d="M0 0.0517578H1600V75.5518C1600 75.5518 1335 179.052 833.5 95.5518C332 12.0518 0 75.5518 0 75.5518V0.0517578Z" fill="#054E41" /> 790 </svg> 791 <svg class="green-wave-bottom mobile" width="1600" height="129" viewBox="0 0 1600 129" preserveAspectRatio="xMidYMin" fill="none" xmlns="http://www.w3.org/2000/svg"> 792 <path d="M0 0.0517578H1600V75.5518C1600 75.5518 1335 179.052 833.5 95.5518C332 12.0518 0 75.5518 0 75.5518V0.0517578Z" fill="#054E41" /> 793 </svg> 794 795</section></main> 796 797<footer role="contentinfo"> 798
798<script async src="https://js.adsrvr.org/up_loader.3.0.0.js"></script>
798 799
799<script> 800 window.ttdConversionEventsLayer = window.ttdConversionEventsLayer || []; 801 802 function ttdConversionEvents() { 803 window.ttdConversionEventsLayer.push(arguments); 804 } 805 806 ttdConversionEvents("init", { 807 advertiserId: "7lhyd1g", 808 pixelIds: ["z17df3x"] 809 }); 810 811 ttdConversionEvents("event", { 812 advertiserId: "7lhyd1g", 813 pixelIds: ["z17df3x"] 814 }); 815 </script>
815 816 817 <div class="large-frame"> 818 819 820 <div class="eb02-footer"> 821 822 <div class="footer-left-col"> 823 <div class="footer-contact-info"> 824 <img src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/pcvb-logo-full.svg" alt="PCVB Logo" /> 825 <p>1601 Market St, Suite 200â¨Philadelphia, PA 19103 826</p> <a href="tel:215-636-3300">215-636-3300</a> 827 </div> 828 </div> 829 <div class="footer-mid-col"> 830 <ul> 831 <li id="menu-item-6536" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6536"><a href="https://www.discoverphl.com/about/">About</a></li> 832<li id="menu-item-12550" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12550"><a href="https://www.discoverphl.com/contact-our-team/">Contact Our Team</a></li> 833<li id="menu-item-12551" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12551"><a href="https://www.discoverphl.com/about/employment/">Employment</a></li> 834<li id="menu-item-12549" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12549"><a href="https://www.discoverphl.com/about/phlcvb-board/">PHLCVB Board</a></li> 835<li id="menu-item-12547" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12547"><a href="https://www.discoverphl.com/about/phlcvb-foundation/">PHLCVB Foundation</a></li> 836<li id="menu-item-6538" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6538"><a href="https://www.discoverphl.com/press-room/">Press Room</a></li> 837<li id="menu-item-12548" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12548"><a href="https://www.discoverphl.com/about/research/">Research and Resources</a></li> 838 </ul> 839 </div> 840 <div class="footer-right-col"> 841 <h2>Sign up for <em>Key to Meetings</em></h2> <div class="callout-info"> 842 <p>Get exclusive news and updates in our monthly meetings newsletter.</p> <a href="https://discoverphl.com/newsletter-sign-up/" target="" class="btn-base light-blue arrow"><span>Sign Up</span><svg xmlns="http://www.w3.org/2000/svg" width="22" height="9" viewBox="0 0 22 9" fill="none"><path d="M22 4.5L14.5 0.169873V8.83013L22 4.5ZM0 5.25H15.25V3.75H0V5.25Z" fill="#FF4D00"/></svg></a> </div> 843 844 </div> 845 <div class="footer-partner-logos"> 846 <p>Strategic Partners</p> 847 <div class="logos-wrap"> 848 <a href="https://www.paconvention.com/" class="partner-url" target="_self"> 849 <img src="https://www.discoverphl.com/wp-content/uploads/2025/10/PCC-Large-White.png" alt="PCC logo" /> 850 </a> 851 852 <a href="https://www.visitpa.com/" class="partner-url" target="_self"> 853 <img src="https://www.discoverphl.com/wp-content/uploads/2024/05/Full-Logo-One-Color-White.png" alt="Pennsylvania The Great American Getaway" /> 854 </a> 855 856 <a href="https://www.phila.gov/" class="partner-url" target="_self"> 857 <img src="https://www.discoverphl.com/wp-content/uploads/2024/04/Group.png" alt="" /> 858 </a> 859 860 <a href="https://www.phl.org/" class="partner-url" target="_self"> 861 <img src="https://www.discoverphl.com/wp-content/uploads/2025/10/Combined-logo-primary-white-2.png" alt="" /> 862 </a> 863 864 <a href="https://www.ovpm.org/city/philadelphia-united-states/" class="partner-url" target="_self"> 865 <img src="https://www.discoverphl.com/wp-content/uploads/2024/04/World_Heritage-1.png" alt="" /> 866 </a> 867 868 <a href="https://www.visittheusa.com/" class="partner-url" target="_self"> 869 <img src="https://www.discoverphl.com/wp-content/uploads/2025/09/VisitTheUSA_Wordmark_RGB_White-1-1.png" alt="Brand USA logo" /> 870 </a> 871 872 <a href="https://www.ustravel.org/" class="partner-url" target="_self"> 873 <img src="https://www.discoverphl.com/wp-content/uploads/2024/04/US-Travel.png" alt="" /> 874 </a> 875 876 <a href="https://www.visitphilly.com/" class="partner-url" target="_self"> 877 <img src="https://www.discoverphl.com/wp-content/uploads/2024/04/Visit-1.png" alt="" /> 878 </a> 879 880 </div> 881 </div> 882 </div> 883 <div class="sub-footer"> 884 885 <p class="copyright">© 2026. Philadelphia Convention & Visitors Bureau</p> 886 <ul><li id="menu-item-6539" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-6539"><span class="seperator">|</span><a rel="privacy-policy" href="https://www.discoverphl.com/privacy-policy/">Privacy Policy</a></li> 887<li id="menu-item-54452" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-54452"><span class="seperator">|</span><a href="https://www.discoverphl.com/terms/">Terms</a></li> 888 <li class="menu-item"><span class="seperator">|</span><a href="https://push10.com" rel="noopener" target="_blank"> Web Design by Push10 Branding Agency.</a></li> 889 </ul> 890 <div class="sm-icons-links"> 891 892 <a href="https://www.facebook.com/discoverPHL" target="_blank" aria-label="fb"> 893 <img src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/facebook.png" alt="facebook account link" /> 894 </a> 895 <a href="https://www.instagram.com/discover_PHL/" target="_blank" aria-label="ig"> 896 <img src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/instagram_logo.png" alt="instagram account link" /> 897 </a> 898 <a href="https://www.linkedin.com/company/56174" target="_blank" aria-label="li"> 899 <img src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/imgs/linkedin.png" alt="linkedin account link" /> 900 </a> 901 902 </div> 903 </div> 904 </div> 905</footer> 906 907 <div id="pcvbNewsletterPopout" data-targetdepth="30"> 908 <button id="pcvbNewsletterPopoutClose" aria-label="close pop-up"></button> 909 <h2>Key to Meetings</h2> 910 <div class="description">Sign up exclusive news and updates in our monthly meetings newsletter.</div> 911 <div class="popout-form-container"> 912 913 914 <form action="" method="post" name="frm_8" class="pcvbForm" onsubmit="return svcrm.formBuilderScripts.validateForm(this);"> 915 <input id="formid" name="formid" type="hidden" value="8"> 916 <input id="groupid" name="groupid" type="hidden" value="5"> 917 <input id="isSubmitted" name="isSubmitted" value="1" type="hidden"> 918 919 920 <h3>Contact Information</h3> 921
922 <div id="rowcontainer_contact_fname" class="pcvbFormRow"> 923 924 <div id="labelcontainer_contact_fname" class="pcvbFormLabelContainer"> 925 <div id="td_contact_fname"> 926 <label id="label_contact_fname" for="contact_fname" class="pcvbFormLabel pcvbFormLabelRequired">First Name*:</label> 927 928 </div> 929 </div> 930 931 <div id="fieldcontainer_contact_fname" class="pcvbFormFieldContainer"> 932 933 934 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_fname" name="contact_fname" type="text" maxlength="50" size="25" value=""> 935 936 </div> 937 </div> 938 939 <div id="rowcontainer_contact_lname" class="pcvbFormRow"> 940 941 <div id="labelcontainer_contact_lname" class="pcvbFormLabelContainer"> 942 <div id="td_contact_lname"> 943 <label id="label_contact_lname" for="contact_lname" class="pcvbFormLabel pcvbFormLabelRequired">Last Name*:</label> 944 945 </div> 946 </div> 947 948 <div id="fieldcontainer_contact_lname" class="pcvbFormFieldContainer"> 949 950 951 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_lname" name="contact_lname" type="text" maxlength="50" size="25" value=""> 952 953 </div> 954 </div> 955 956 <div id="rowcontainer_contact_email" class="pcvbFormRow"> 957
958 <div id="labelcontainer_contact_email" class="pcvbFormLabelContainer"> 959 <div id="td_contact_email"> 960 <label id="label_contact_email" for="contact_email" class="pcvbFormLabel pcvbFormLabelRequired">Email*:</label> 961 962 </div> 963 </div> 964 965 <div id="fieldcontainer_contact_email" class="pcvbFormFieldContainer"> 966 967 968 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_email" name="contact_email" type="text" maxlength="200" size="25" value="" onblur="svcrm.formBuilderScripts.checkEmail(this); "> 969 970 </div> 971 </div> 972 973 <div id="rowcontainer_contact_title" class="pcvbFormRow"> 974 975 <div id="labelcontainer_contact_title" class="pcvbFormLabelContainer"> 976 <div id="td_contact_title"> 977 <label id="label_contact_title" for="contact_title" class="pcvbFormLabel pcvbFormLabelRequired">Title*:</label> 978 979 </div> 980 </div> 981 982 <div id="fieldcontainer_contact_title" class="pcvbFormFieldContainer"> 983 984 985 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_title" name="contact_title" type="text" maxlength="100" size="25" value=""> 986 987 </div> 988 </div> 989 990 <div id="rowcontainer_contact_company" class="pcvbFormRow"> 991
992 <div id="labelcontainer_contact_company" class="pcvbFormLabelContainer"> 993 <div id="td_contact_company"> 994 <label id="label_contact_company" for="contact_company" class="pcvbFormLabel pcvbFormLabelRequired">Company*:</label> 995 996 </div> 997 </div> 998 999 <div id="fieldcontainer_contact_company" class="pcvbFormFieldContainer"> 1000 1001 1002 <input class="pcvbFormField pcvbFormFieldRequired" id="contact_company" name="contact_company" type="text" maxlength="200" size="25" value=""> 1003 1004 </div> 1005 </div> 1006 1007 <div id="rowcontainer_udf_180" class="pcvbFormRow"> 1008 1009 <div id="labelcontainer_udf_180" class="pcvbFormLabelContainer"> 1010 <div id="td_udf_180"> 1011 <label id="label_udf_180" for="udf_180" class="pcvbFormLabel pcvbFormLabelRequired">Industry*:</label> 1012 1013 </div> 1014 </div> 1015 1016 <div id="fieldcontainer_udf_180" class="pcvbFormFieldContainer"> 1017 1018 <select class="pcvbFormField pcvbFormFieldRequired" id="udf_180" name="udf_180" > 1019 <option value="">--None--</option> 1020 <option value="815">Other</option> 1021 1022 <option value="814">Affinity/Hobby</option> 1023 1024 <option value="813">Fraternal</option> 1025 1026 <option value="812">Religious</option> 1027 1028 <option value="811">Tech</option> 1029 1030 <option value="810">Finance</option> 1031 1032 <option value="809">Education</option> 1033 1034 <option value="808">Healthcare</option> 1035 1036 </select> 1037 1038 </div> 1039 </div> 1040 1041 <h3>Privacy Policy</h3> 1042 1043 <div id="rowcontainer_udf_114" class="pcvbFormRow"> 1044 1045 <div id="labelcontainer_udf_114" class="pcvbFormLabelContainer"> 1046 <div id="td_udf_114"> 1047 <label id="label_udf_114" class="pcvbFormLabel pcvbFormLabelRequired">I agree to the <a href="https://www.discoverphl.com/about-phlcvb/privacy-policy/" target="_blank" rel="noopener">Privacy Policy</a>*:</label> 1048 1049 </div> 1050 </div> 1051 1052 <div id="fieldcontainer_udf_114" class="pcvbFormFieldContainer"> 1053 1054 <fieldset style='border:0px;'> 1055 <legend style="display:none;">udf_114</legend> 1056 <input class="pcvbFormField pcvbFormFieldRequired" id="udf_114_1" name="udf_114" type="radio" value="1"><label class="pcvbFormLabel pcvbFormLabelRequired" for="udf_114_1"> Yes </label> 1057 <input class="pcvbFormField pcvbFormFieldRequired" id="udf_114_0" name="udf_114" type="radio" value="0"><label class="pcvbFormLabel pcvbFormLabelRequired" for="udf_114_0"> No </label> 1058 </fieldset> 1059 1060 </div> 1061 </div> 1062 1063 1064 <p class="pcvbFormHint formreq text-center">* Indicates a required field.</p> 1065 <hr size="1" color="cccccc" width="100%"> 1066 <div class="pcvbFormCaptchaRow"> 1067 <div class="pcvbFormCaptchaContainer"> 1068 1069 </div> 1070 </div> 1071 1072 <hr size="1" color="cccccc" width="100%"> 1073 <div class="pcvbFormButtonRow"> 1074 <div class="pcvbFormButtonContainer"> 1075 <label for="savefrm_button" class="label_hidden">Submit</label> 1076 <input class="pcvbFormButton" id="savefrm_button" name="savefrm" type="Submit" value="Submit"> 1077 <label for="resetfrm_button" class="label_hidden">Reset</label> 1078 <input class="pcvbFormButton" id="resetfrm_button" type="Reset" value="Reset"> 1079 </div> 1080 </div> 1081 </form> 1082 1083 1084
1084<script type="text/javascript"> 1085 /* IP Address Tracking enabled. IP addresses are being tracked in order to ensure compliance with local privacy laws */ 1086 var __sv = __sv || {}; 1087 1088 1089 (function(){ 1090 function ___onload_function(){ 1091 1092 }; 1093 1094 1095 1096 if(window.addEventListener){ 1097 window.addEventListener('load',___onload_function,false); 1098 }else if(window.attachEvent){ 1099 window.attachEvent('onload',___onload_function); 1100 } 1101 })(); 1102 </script>
1102 1103 1104
1104<script type="text/javascript"> 1105 function AoProcessForm(frm){ 1106 var changeSaveFrmButtonTypeAndSubmit = function(frm){ 1107 try{ 1108 if(frm && 'savefrm' in frm && 'type' in frm.savefrm){ 1109 frm.savefrm.style.opacity = '0'; 1110 frm.savefrm.setAttribute("type","input"); 1111 } 1112 frm.submit(); 1113 }catch(e){ 1114 if(console && 'log' in console){ 1115 console.log("Error trying to pass the save button", e); 1116 } 1117 } 1118 }; 1119 1120 var serializeForm = function serialize(form){if(!form||form.nodeName!=="FORM"){return }var i,j,q=[];for(i=form.elements.length-1;i>=0;i=i-1){if(form.elements[i].name==="" || form.elements[i].name==="g-recaptcha-response"){continue}switch(form.elements[i].nodeName){case"INPUT":switch(form.elements[i].type){case"text":case"hidden":case"password":case"button":case"reset":case"submit":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"checkbox":case"radio":if(form.elements[i].checked){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value))}break;case"file":break}break;case"TEXTAREA":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"SELECT":switch(form.elements[i].type){case"select-one":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"select-multiple":for(j=form.elements[i].options.length-1;j>=0;j=j-1){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case"BUTTON":switch(form.elements[i].type){case"reset":case"submit":case"button":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break}break}}return q.join("&")}; 1121 var iframe = document.createElement('iframe'); 1122 1123 iframe.id = "3A5B3792_A965_40C3_0FFA87A571AA4009"; 1124 iframe.style.width = '0'; 1125 iframe.style.height = '0'; 1126 iframe.style.position='absolute'; 1127 iframe.src= 'https://marketing.discoverphl.com/acton/eform/45609/d1c253ff-8d0f-4769-b0a1-c61bc9cc4b23/d-ext-0001'; 1128 iframe.src += '?' + serializeForm(frm); 1129 document.body.appendChild(iframe); 1130 1131 1132 try{ 1133 var elm = document.getElementById("3A5B3792_A965_40C3_0FFA87A571AA4009"); 1134 var hasLoaded = false; 1135 var timesChecked = 0; 1136 1137 var checkForLoadedInterval = window.setInterval(function(){ 1138 timesChecked++; 1139 if(timesChecked > 3 || hasLoaded){ 1140 window.clearInterval(checkForLoadedInterval); 1141 if(!hasLoaded){ 1142 1143 try{ 1144 if(elm.removeEventListener){ 1145 elm.removeEventListener("load", weHaveLoadedFunc); 1146 }else if(elm.detachEvent){ 1147 elm.detachEvent("onload",weHaveLoadedFunc) 1148 } 1149 }catch(e){} 1150 1151 changeSaveFrmButtonTypeAndSubmit(frm); 1152 } 1153 } 1154 },1000); 1155 1156 var weHaveLoadedFunc = function(){ 1157 hasLoaded = true; 1158 1159 try{window.clearInterval(checkForLoadedInterval);}catch(e){console.log("Error clearing interval",e);} 1160 changeSaveFrmButtonTypeAndSubmit(frm); 1161 } 1162 1163 if (elm.addEventListener) { 1164 elm.addEventListener("load",weHaveLoadedFunc, false); 1165 } else if (elm.attachEvent) { 1166 elm.attachEvent("onload", weHaveLoadedFunc); 1167 } 1168 }catch(e){ 1169 1170 changeSaveFrmButtonTypeAndSubmit(frm); 1171 } 1172 1173 } 1174 </script>
1174 1175
1175<script type="text/javascript"> 1176 (function(){ 1177 1178 svcrm = ((typeof svcrm != 'undefined') ? svcrm : {}); 1179 svcrm.formBuilderScripts = ((typeof svcrm.formBuilderScripts != 'undefined') ? svcrm.formBuilderScripts : {}); 1180 1181 svcrm.formBuilderScripts.chkBoxes = function(fld){ 1182 var i = 0; 1183 var cnt = 0; 1184 if(fld.length==undefined && fld.checked == true) return true; 1185 for (i = 0; i < fld.length; i++) { 1186 if (fld[i].checked) { 1187 cnt++; 1188 break; 1189 } 1190 } 1191 if (cnt == 0) 1192 return false; 1193 else 1194 return true; 1195 }; 1196 1197 svcrm.formBuilderScripts.updReq = function(){ 1198 var i = 0; 1199 var st = new Array(); 1200 var zp = new Array(); 1201 1202 1203 1204 return true; 1205 }; 1206 1207 // removes the leading and trailing spaces from a string, 1208 // similar to the java.lang.String.trim() function 1209 // added by lturetsky, taken from http://www.voy.com/1888/58.html 1210 svcrm.formBuilderScripts.trim = function(st){ 1211 var len = st.length 1212 var begin = 0, end = len - 1; 1213 while (st.charAt(begin) == " " && begin < len) { 1214 begin++; 1215 } 1216 while (st.charAt(end) == " " && begin < end) { 1217 end--; 1218 } 1219 return st.substring(begin, end+1); 1220 }; 1221 1222 1223 svcrm.formBuilderScripts.validateForm = function(frm){ 1224 var errMsg = '', reqMsg = '', fmtMsg = ''; 1225 1226 1227 1228 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_fname').value).length == 0) 1229 1230 reqMsg += ' First Name\n'; 1231 1232 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_lname').value).length == 0) 1233 1234 reqMsg += ' Last Name\n'; 1235 1236 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_email').value).length == 0) 1237 1238 reqMsg += ' Email\n'; 1239 1240 if (!svcrm.formBuilderScripts.checkEmail(document.getElementById('contact_email'))) 1241 fmtMsg += ' Please enter a valid email address for: Email\n'; 1242 1243 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_title').value).length == 0) 1244 1245 reqMsg += ' Title\n'; 1246 1247 if (svcrm.formBuilderScripts.trim(document.getElementById('contact_company').value).length == 0) 1248 1249 reqMsg += ' Company\n'; 1250 1251 if (document.getElementById('udf_180').selectedIndex == 0) 1252 1253 reqMsg += ' Industry\n'; 1254 1255 if (!document.getElementById('udf_114_1').checked && !(document.getElementById('udf_114_0').checked)) 1256 1257 reqMsg += ' I agree to the <a href=\"https://www.discoverphl.com/about-phlcvb/privacy-policy/\" target=\"_blank\" rel=\"noopener\">Privacy Policy</a>\n'; 1258 1259 1260 //only validate the captcha if it is there 1261 var cdElm = document.getElementById('code'); 1262 if (cdElm !== null && cdElm.value.length == 0){ 1263 reqMsg += ' Image Code\n'; 1264 } 1265 1266 //allow a hook in for custom validations 1267 var customValidations = svcrm.formBuilderScripts.processCustomValidations(); 1268 if('reqMsg' in customValidations && customValidations.reqMsg.length){ 1269 reqMsg += customValidations.reqMsg; 1270 } 1271 if('fmtMsg' in customValidations && customValidations.fmtMsg.length){ 1272 fmtMsg += customValidations.fmtMsg; 1273 } 1274 1275 return svcrm.formBuilderScripts.processValidationMessages(reqMsg,fmtMsg,frm); 1276 }; 1277 1278 //core will do nothing but gives devs a hook 1279 svcrm.formBuilderScripts.processCustomValidations = function(){ 1280 var rtnvar = {reqMsg:'',fmtMsg:''}; 1281 return rtnvar; 1282 }; 1283 1284 //might as well split this out so customizations can be made 1285 svcrm.formBuilderScripts.processValidationMessages = function(reqMsg,fmtMsg,frm){ 1286 var errMsg = ''; 1287 Array.prototype.forEach.call(document.getElementsByName("savefrm"), function(e){e.disabled=true}); 1288 if ((reqMsg.length + fmtMsg.length) != 0) { 1289 errMsg = 'This information cannot be sent at this time!\n\n'; 1290 if (reqMsg.length > 0) 1291 errMsg += 'The following fields are required!\n' + reqMsg + '\n'; 1292 1293 if (fmtMsg.length > 0)
1294 errMsg += 'The following information is invalid!\n' + fmtMsg + '\n'; 1295 1296 svcrm.formBuilderScripts.showValidationErrorMsg(errMsg); 1297 Array.prototype.forEach.call(document.getElementsByName("savefrm"), function(e){e.disabled=false}); 1298 return false; 1299 }else{ 1300 AoProcessForm(frm); 1301 return false; 1302 } 1303 }; 1304 1305 //why not :) 1306 svcrm.formBuilderScripts.showValidationErrorMsg = function(msg){ 1307 alert(msg); 1308 }; 1309 1310 svcrm.formBuilderScripts.updateDOB = function(monthFld,dayFld) { 1311 var days = 0; 1312 if (monthFld.selectedIndex == 0) return true; 1313 1314 switch (monthFld.selectedIndex) { 1315 case 2: 1316 days = 30; 1317 break; 1318 case 4: 1319 case 6: 1320 case 9: 1321 case 11: 1322 days = 31; 1323 break; 1324 default: 1325 days = 32; 1326 break; 1327 } 1328 1329 if (dayFld.options[dayFld.selectedIndex].value >= days) 1330 dayFld.selectedIndex = days - 1; 1331 1332 dayFld.length = days; 1333 for (var i = 28; i < days; i++) { 1334 dayFld.options[i].value = String(i); 1335 dayFld.options[i].text = String(i); 1336 } 1337 return true; 1338 } 1339 1340 })(); 1341 </script>
1341 1342 1343
1343<script type="text/javascript"> 1344 1345 1346 (function(){ 1347 svcrm = ((typeof svcrm != 'undefined') ? svcrm : {}); 1348 svcrm.formBuilderScripts = ((typeof svcrm.formBuilderScripts != 'undefined') ? svcrm.formBuilderScripts : {}); 1349 1350 1351 window.svcrm.formBuilderScripts.states = [{"STATES":"**** - **","COUNTRYNAME":"AFGHANISTAN","COUNTRYID":239},{"STATES":"**** - **","COUNTRYNAME":"Ã LAND ISLANDS","COUNTRYID":272},{"STATES":"**** - **","COUNTRYNAME":"ALBANIA","COUNTRYID":1},{"STATES":"**** - **","COUNTRYNAME":"ALGERIA","COUNTRYID":2},{"STATES":"**** - **","COUNTRYNAME":"AMERICAN SAMOA","COUNTRYID":3},{"STATES":"**** - **","COUNTRYNAME":"ANDORRA","COUNTRYID":4},{"STATES":"**** - **","COUNTRYNAME":"ANGOLA","COUNTRYID":250},{"STATES":"**** - **","COUNTRYNAME":"ANGUILLA","COUNTRYID":5},{"STATES":"**** - **","COUNTRYNAME":"ANTARCTICA","COUNTRYID":256},{"STATES":"**** - **","COUNTRYNAME":"ANTIGUA AND BARBUDA","COUNTRYID":6},{"STATES":"**** - **","COUNTRYNAME":"ARGENTINA","COUNTRYID":7},{"STATES":"**** - **","COUNTRYNAME":"ARMENIA","COUNTRYID":251},{"STATES":"**** - **","COUNTRYNAME":"ARUBA","COUNTRYID":8},{"STATES":"**** - ** NSWNSW - New South Wales QldQld - Queensland SASA - South Australia TasTas - Tasmania VicVic - Victoria WAWA - Western Australia","COUNTRYNAME":"AUSTRALIA","COUNTRYID":9},{"STATES":"**** - **","COUNTRYNAME":"AUSTRIA","COUNTRYID":10},{"STATES":"**** - **","COUNTRYNAME":"AZERBAIJAN","COUNTRYID":252},{"STATES":"**** - **","COUNTRYNAME":"BAHAMAS","COUNTRYID":12},{"STATES":"**** - **","COUNTRYNAME":"BAHRAIN","COUNTRYID":13},{"STATES":"**** - **","COUNTRYNAME":"BANGLADESH","COUNTRYID":14},{"STATES":"**** - **","COUNTRYNAME":"BARBADOS","COUNTRYID":15},{"STATES":"**** - **","COUNTRYNAME":"BELARUS","COUNTRYID":18},{"STATES":"**** - **","COUNTRYNAME":"BELGIUM","COUNTRYID":16},{"STATES":"**** - **","COUNTRYNAME":"BELIZE","COUNTRYID":17},{"STATES":"**** - **","COUNTRYNAME":"BENIN","COUNTRYID":19},{"STATES":"**** - **","COUNTRYNAME":"BERMUDA","COUNTRYID":20},{"STATES":"**** - **","COUNTRYNAME":"BHUTAN","COUNTRYID":240},{"STATES":"**** - **","COUNTRYNAME":"BOLIVIA, PLURINATIONAL STATE OF","COUNTRYID":21},{"STATES":"**** - **","COUNTRYNAME":"BOSNIA AND HERZEGOVINA","COUNTRYID":23},{"STATES":"**** - **","COUNTRYNAME":"BOTSWANA","COUNTRYID":24},{"STATES":"**** - **","COUNTRYNAME":"BOUVET ISLAND","COUNTRYID":253},{"STATES":"**** - **","COUNTRYNAME":"BRAZIL","COUNTRYID":25},{"STATES":"**** - **","COUNTRYNAME":"BRITISH INDIAN OCEAN TERRITORY","COUNTRYID":278},{"STATES":"**** - **","COUNTRYNAME":"BRUNEI DARUSSALAM","COUNTRYID":27},{"STATES":"**** - **","COUNTRYNAME":"BULGARIA","COUNTRYID":28},{"STATES":"**** - **","COUNTRYNAME":"BURKINA FASO","COUNTRYID":29},{"STATES":"**** - **","COUNTRYNAME":"BURUNDI","COUNTRYID":30},{"STATES":"**** - **","COUNTRYNAME":"CAMBODIA","COUNTRYID":31},{"STATES":"**** - **","COUNTRYNAME":"CAMEROON","COUNTRYID":32},{"STATES":"**** - ** ABAB - Alberta BCBC - British Columbia MBMB - Manitoba NBNB - New Brunswick NLNL - Newfoundland and Labrador NTNT - Northwest Territory NSNS - Nova Scotia NUNU - Nunavut ONON - Ontario PEPE - Prince Edward Island QCQC - Quebec SKSK - Saskatchewan YTYT - Yukon","COUNTRYNAME":"CANADA","COUNTRYID":33},{"STATES":"**** - **","COUNTRYNAME":"CANARY ISLANDS","COUNTRYID":34},{"STATES":"**** - **","COUNTRYNAME":"CAPE VERDE","COUNTRYID":35},{"STATES":"**** - **","COUNTRYNAME":"CAYMAN ISLANDS","COUNTRYID":36},{"STATES":"**** - **","COUNTRYNAME":"CENTRAL AFRICAN REPUBLIC","COUNTRYID":37},{"STATES":"**** - **","COUNTRYNAME":"CHAD","COUNTRYID":38},{"STATES":"**** - ** SANSAN - Santiago","COUNTRYNAME":"CHILE","COUNTRYID":40},{"STATES":"**** - **","COUNTRYNAME":"CHINA","COUNTRYID":41},{"STATES":"**** - **","COUNTRYNAME":"CHRISTMAS ISLAND","COUNTRYID":254},{"STATES":"**** - **","COUNTRYNAME":"COCOS (KEELING) ISLANDS","COUNTRYID":241},{"STATES":"**** - **","COUNTRYNAME":"COLOMBIA","COUNTRYID":42},{"STATES":"**** - **","COUNTRYNAME":"COMOROS","COUNTRYID":255},{"STATES":"**** - **","COUNTRYNAME":"CONGO","COUNTRYID":43},{"STATES":"**** - **","COUNTRYNAME":"CONGO, THE DEMOCRATIC REPUBLIC OF THE","COUNTRYID":274},{"STATES":"**** - **","COUNTRYNAME":"COOK ISLANDS","COUNTRYID":44},{"STATES":"**** - **","COUNTRYNAME":"COSTA RICA","COUNTRYID":45},{"STATES":"**** - **","COUNTRYNAME":"CÃTE D'IVOIRE","COUNTRYID":94},{"STATES":"**** - **","COUNTRYNAME":"CROATIA","COUNTRYID":46},{"STATES":"**** - **","COUNTRYNAME":"CUBA","COUNTRYID":242},{"STATES":"**** - **","COUNTRYNAME":"CURACAO","COUNTRYID":47},{"STATES":"**** - **","COUNTRYNAME":"CYPRUS","COUNTRYID":48},{"STATES":"**** - **","COUNTRYNAME":"CZECH REPUBLIC","COUNTRYID":49},{"STATES":"**** - **","COUNTRYNAME":"DENMARK","COUNTRYID":50},{"STATES":"**** - **","COUNTRYNAME":"DJIBOUTI","COUNTRYID":51},{"STATES":"**** - **","COUNTRYNAME":"DOMINICA","COUNTRYID":52},{"STATES":"**** - **","COUNTRYNAME":"DOMINICAN REPUBLIC","COUNTRYID":53},{"STATES":"**** - **","COUNTRYNAME":"ECUADOR","COUNTRYID":54},{"STATES":"**** - **","COUNTRYNAME":"EGYPT","COUNTRYID":55},{"STATES":"**** - **","COUNTRYNAME":"EL SALVADOR","COUNTRYID":56},{"STATES":"**** - **","COUNTRYNAME":"EQUATORIAL GUINEA","COUNTRYID":58},{"STATES":"**** - **","COUNTRYNAME":"ERITREA","COUNTRYID":59},{"STATES":"**** - **","COUNTRYNAME":"ESTONIA","COUNTRYID":60},{"STATES":"**** - **","COUNTRYNAME":"ETHIOPIA","COUNTRYID":61},{"STATES":"**** - **","COUNTRYNAME":"FALKLAND ISLANDS (MALVINAS)","COUNTRYID":258},{"STATES":"**** - **","COUNTRYNAME":"FAROE ISLANDS","COUNTRYID":62},{"STATES":"**** - **","COUNTRYNAME":"FIJI","COUNTRYID":64},{"STATES":"**** - **","COUNTRYNAME":"FINLAND","COUNTRYID":65},{"STATES":"**** - **","COUNTRYNAME":"FRANCE","COUNTRYID":66},{"STATES":"**** - **","COUNTRYNAME":"FRENCH GUIANA","COUNTRYID":67},{"STATES":"**** - **","COUNTRYNAME":"FRENCH POLYNESIA","COUNTRYID":197},{"STATES":"**** - **","COUNTRYNAME":"FRENCH SOUTHERN TERRITORIES","COUNTRYID":283},{"STATES":"**** - **","COUNTRYNAME":"GABON","COUNTRYID":69},{"STATES":"**** - **","COUNTRYNAME":"GAMBIA","COUNTRYID":70},{"STATES":"**** - **","COUNTRYNAME":"GEORGIA","COUNTRYID":71},{"STATES":"**** - **","COUNTRYNAME":"GERMANY","COUNTRYID":72},{"STATES":"**** - **","COUNTRYNAME":"GHANA","COUNTRYID":73},{"STATES":"**** - **","COUNTRYNAME":"GIBRALTAR","COUNTRYID":74},{"STATES":"**** - **","COUNTRYNAME":"GREECE","COUNTRYID":75},{"STATES":"**** - **","COUNTRYNAME":"GREENLAND","COUNTRYID":76},{"STATES":"**** - **","COUNTRYNAME":"GRENADA","COUNTRYID":77},{"STATES":"**** - **","COUNTRYNAME":"GUADELOUPE","COUNTRYID":78},{"STATES":"**** - **","COUNTRYNAME":"GUAM","COUNTRYID":79},{"STATES":"**** - **","COUNTRYNAME":"GUATEMALA","COUNTRYID":80},{"STATES":"**** - **","COUNTRYNAME":"GUERNSEY","COUNTRYID":275},{"STATES":"**** - **","COUNTRYNAME":"GUINEA","COUNTRYID":81},{"STATES":"**** - **","COUNTRYNAME":"GUINEA-BISSAU","COUNTRYID":82},{"STATES":"**** - **","COUNTRYNAME":"GUYANA","COUNTRYID":83},{"STATES":"**** - **","COUNTRYNAME":"HAITI","COUNTRYID":84},{"STATES":"**** - **","COUNTRYNAME":"HEARD ISLAND AND MCDONALD ISLANDS","COUNTRYID":276},{"STATES":"**** - **","COUNTRYNAME":"HOLY SEE (VATICAN CITY STATE)","COUNTRYID":236},{"STATES":"**** - **","COUNTRYNAME":"HONDURAS","COUNTRYID":86},{"STATES":"**** - **","COUNTRYNAME":"HONG KONG","COUNTRYID":87},{"STATES":"**** - **","COUNTRYNAME":"HUNGARY","COUNTRYID":88},{"STATES":"**** - **","COUNTRYNAME":"ICELAND","COUNTRYID":89},{"STATES":"**** - **","COUNTRYNAME":"INDIA","COUNTRYID":90},{"STATES":"**** - **","COUNTRYNAME":"INDONESIA","COUNTRYID":91},{"STATES":"**** - **","COUNTRYNAME":"IRAN, ISLAMIC REPUBLIC OF","COUNTRYID":235},{"STATES":"**** - **","COUNTRYNAME":"IRAQ","COUNTRYID":238},{"STATES":"**** - **","COUNTRYNAME":"IRELAND","COUNTRYID":234},{"STATES":"**** - **","COUNTRYNAME":"ISLE OF MAN","COUNTRYID":277},{"STATES":"**** - **","COUNTRYNAME":"ISRAEL","COUNTRYID":92},{"STATES":"**** - **","COUNTRYNAME":"ITALY","COUNTRYID":93},{"STATES":"**** - **","COUNTRYNAME":"JAMAICA","COUNTRYID":95},{"STATES":"**** - **","COUNTRYNAME":"JAPAN","COUNTRYID":96},{"STATES":"**** - **","COUNTRYNAME":"JERSEY","COUNTRYID":279},{"STATES":"**** - **","COUNTRYNAME":"JORDAN","COUNTRYID":97},{"STATES":"**** - **","COUNTRYNAME":"KAZAKHSTAN","COUNTRYID":98},{"STATES":"**** - **","COUNTRYNAME":"KENYA","COUNTRYID":99},{"STATES":"**** - **","COUNTRYNAME":"KIRIBATI","COUNTRYID":100},{"STATES":"**
1351** - **","COUNTRYNAME":"KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF","COUNTRYID":264},{"STATES":"**** - **","COUNTRYNAME":"KOREA, REPUBLIC OF","COUNTRYID":177},{"STATES":"**** - **","COUNTRYNAME":"KOSRAE","COUNTRYID":101},{"STATES":"**** - **","COUNTRYNAME":"KUWAIT","COUNTRYID":102},{"STATES":"**** - **","COUNTRYNAME":"KYRGYZSTAN","COUNTRYID":103},{"STATES":"**** - **","COUNTRYNAME":"LAO PEOPLE'S DEMOCRATIC REPUBLIC","COUNTRYID":104},{"STATES":"**** - **","COUNTRYNAME":"LATVIA","COUNTRYID":105},{"STATES":"**** - **","COUNTRYNAME":"LEBANON","COUNTRYID":106},{"STATES":"**** - **","COUNTRYNAME":"LESOTHO","COUNTRYID":107},{"STATES":"**** - **","COUNTRYNAME":"LIBERIA","COUNTRYID":108},{"STATES":"**** - **","COUNTRYNAME":"LIBYAN ARAB JAMAHIRIYA","COUNTRYID":259},{"STATES":"**** - **","COUNTRYNAME":"LIECHTENSTEIN","COUNTRYID":109},{"STATES":"**** - **","COUNTRYNAME":"LITHUANIA","COUNTRYID":110},{"STATES":"**** - **","COUNTRYNAME":"LUXEMBOURG","COUNTRYID":111},{"STATES":"**** - **","COUNTRYNAME":"MACAO","COUNTRYID":112},{"STATES":"**** - **","COUNTRYNAME":"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF","COUNTRYID":113},{"STATES":"**** - **","COUNTRYNAME":"MADAGASCAR","COUNTRYID":114},{"STATES":"**** - **","COUNTRYNAME":"MALAWI","COUNTRYID":116},{"STATES":"**** - **","COUNTRYNAME":"MALAYSIA","COUNTRYID":117},{"STATES":"**** - **","COUNTRYNAME":"MALDIVES","COUNTRYID":118},{"STATES":"**** - **","COUNTRYNAME":"MALI","COUNTRYID":119},{"STATES":"**** - **","COUNTRYNAME":"MALTA","COUNTRYID":120},{"STATES":"**** - ** MHMH - Marshall Islands","COUNTRYNAME":"MARSHALL ISLANDS","COUNTRYID":121},{"STATES":"**** - **","COUNTRYNAME":"MARTINIQUE","COUNTRYID":122},{"STATES":"**** - **","COUNTRYNAME":"MAURITANIA","COUNTRYID":123},{"STATES":"**** - **","COUNTRYNAME":"MAURITIUS","COUNTRYID":124},{"STATES":"**** - **","COUNTRYNAME":"MAYOTTE","COUNTRYID":260},{"STATES":"**** - **","COUNTRYNAME":"MEXICO","COUNTRYID":125},{"STATES":"**** - **","COUNTRYNAME":"MICRONESIA, FEDERATED STATES OF","COUNTRYID":63},{"STATES":"**** - **","COUNTRYNAME":"MOLDOVA, REPUBLIC OF","COUNTRYID":126},{"STATES":"**** - **","COUNTRYNAME":"MONACO","COUNTRYID":127},{"STATES":"**** - **","COUNTRYNAME":"MONGOLIA","COUNTRYID":261},{"STATES":"**** - **","COUNTRYNAME":"MONTENEGRO","COUNTRYID":115},{"STATES":"**** - **","COUNTRYNAME":"MONTSERRAT","COUNTRYID":128},{"STATES":"**** - **","COUNTRYNAME":"MOROCCO","COUNTRYID":129},{"STATES":"**** - **","COUNTRYNAME":"MOZAMBIQUE","COUNTRYID":130},{"STATES":"**** - **","COUNTRYNAME":"MYANMAR","COUNTRYID":131},{"STATES":"**** - **","COUNTRYNAME":"NAMIBIA","COUNTRYID":132},{"STATES":"**** - **","COUNTRYNAME":"NAURU","COUNTRYID":262},{"STATES":"**** - **","COUNTRYNAME":"NEPAL","COUNTRYID":133},{"STATES":"**** - **","COUNTRYNAME":"NETHERLANDS","COUNTRYID":134},{"STATES":"**** - **","COUNTRYNAME":"NETHERLANDS ANTILLES","COUNTRYID":135},{"STATES":"**** - **","COUNTRYNAME":"NEW CALEDONIA","COUNTRYID":136},{"STATES":"**** - **","COUNTRYNAME":"NEW ZEALAND","COUNTRYID":137},{"STATES":"**** - **","COUNTRYNAME":"NICARAGUA","COUNTRYID":138},{"STATES":"**** - **","COUNTRYNAME":"NIGER","COUNTRYID":139},{"STATES":"**** - **","COUNTRYNAME":"NIGERIA","COUNTRYID":140},{"STATES":"**** - **","COUNTRYNAME":"NIUE","COUNTRYID":263},{"STATES":"**** - **","COUNTRYNAME":"NORFOLK ISLAND","COUNTRYID":141},{"STATES":"**** - **","COUNTRYNAME":"NORTHERN MARIANA ISLANDS","COUNTRYID":143},{"STATES":"**** - **","COUNTRYNAME":"NORWAY","COUNTRYID":144},{"STATES":"**** - **","COUNTRYNAME":"OMAN","COUNTRYID":145},{"STATES":"**** - **","COUNTRYNAME":"PAKISTAN","COUNTRYID":146},{"STATES":"**** - **","COUNTRYNAME":"PALAU","COUNTRYID":147},{"STATES":"**
1351** - **","COUNTRYNAME":"PALESTINIAN TERRITORY, OCCUPIED","COUNTRYID":281},{"STATES":"**** - **","COUNTRYNAME":"PANAMA","COUNTRYID":148},{"STATES":"**** - **","COUNTRYNAME":"PAPUA NEW GUINEA","COUNTRYID":149},{"STATES":"**** - **","COUNTRYNAME":"PARAGUAY","COUNTRYID":150},{"STATES":"**** - **","COUNTRYNAME":"PERU","COUNTRYID":151},{"STATES":"**** - **","COUNTRYNAME":"PHILIPPINES","COUNTRYID":152},{"STATES":"**** - **","COUNTRYNAME":"PITCAIRN","COUNTRYID":265},{"STATES":"**** - **","COUNTRYNAME":"POLAND","COUNTRYID":153},{"STATES":"**** - **","COUNTRYNAME":"PONAPE","COUNTRYID":154},{"STATES":"**** - **","COUNTRYNAME":"PORTUGAL","COUNTRYID":155},{"STATES":"**** - **","COUNTRYNAME":"PUERTO RICO","COUNTRYID":156},{"STATES":"**** - **","COUNTRYNAME":"QATAR","COUNTRYID":157},{"STATES":"**** - **","COUNTRYNAME":"RÃUNION","COUNTRYID":160},{"STATES":"**** - **","COUNTRYNAME":"ROMANIA","COUNTRYID":161},{"STATES":"**** - **","COUNTRYNAME":"RUSSIAN FEDERATION","COUNTRYID":163},{"STATES":"**** - **","COUNTRYNAME":"RWANDA","COUNTRYID":164},{"STATES":"**** - **","COUNTRYNAME":"SABA","COUNTRYID":165},{"STATES":"**** - **","COUNTRYNAME":"SAINT BARTHÃLEMY","COUNTRYID":273},{"STATES":"**** - **","COUNTRYNAME":"SAINT HELENA","COUNTRYID":245},{"STATES":"**** - **","COUNTRYNAME":"SAINT KITTS AND NEVIS","COUNTRYID":185},{"STATES":"**** - **","COUNTRYNAME":"SAINT LUCIA","COUNTRYID":186},{"STATES":"**** - **","COUNTRYNAME":"SAINT MARTIN","COUNTRYID":280},{"STATES":"**** - **","COUNTRYNAME":"SAINT PIERRE AND MIQUELON","COUNTRYID":269},{"STATES":"**** - **","COUNTRYNAME":"SAINT VINCENT AND THE GRENADINES","COUNTRYID":190},{"STATES":"**** - **","COUNTRYNAME":"SAIPAN","COUNTRYID":166},{"STATES":"**** - **","COUNTRYNAME":"SAMOA","COUNTRYID":228},{"STATES":"**** - **","COUNTRYNAME":"SAN MARINO","COUNTRYID":266},{"STATES":"**** - **","COUNTRYNAME":"SAO TOME AND PRINCIPE","COUNTRYID":267},{"STATES":"**** - **","COUNTRYNAME":"SAUDI ARABIA","COUNTRYID":167},{"STATES":"**** - **","COUNTRYNAME":"SCOTLAND","COUNTRYID":168},{"STATES":"**** - **","COUNTRYNAME":"SENEGAL","COUNTRYID":169},{"STATES":"**** - **","COUNTRYNAME":"SERBIA","COUNTRYID":284},{"STATES":"**** - **","COUNTRYNAME":"SEYCHELLES","COUNTRYID":170},{"STATES":"**** - **","COUNTRYNAME":"SIERRA LEONE","COUNTRYID":171},{"STATES":"**** - **","COUNTRYNAME":"SINGAPORE","COUNTRYID":172},{"STATES":"**** - **","COUNTRYNAME":"SLOVAKIA","COUNTRYID":173},{"STATES":"**** - **","COUNTRYNAME":"SLOVENIA","COUNTRYID":174},{"STATES":"**** - **","COUNTRYNAME":"SOLOMON ISLANDS","COUNTRYID":175},{"STATES":"**** - **","COUNTRYNAME":"SOMALIA","COUNTRYID":244},{"STATES":"**** - **","COUNTRYNAME":"SOUTH AFRICA","COUNTRYID":176},{"STATES":"**** - **","COUNTRYNAME":"SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS","COUNTRYID":268},{"STATES":"**** - **","COUNTRYNAME":"SPAIN","COUNTRYID":178},{"STATES":"**** - **","COUNTRYNAME":"SRI LANKA","COUNTRYID":179},{"STATES":"**** - **","COUNTRYNAME":"ST. BARTHELEMY","COUNTRYID":180},{"STATES":"**** - **","COUNTRYNAME":"ST. CHRISTOPHER","COUNTRYID":181},{"STATES":"**** - **","COUNTRYNAME":"ST. CROIX","COUNTRYID":182},{"STATES":"**** - **","COUNTRYNAME":"ST. EUSTATIUS","COUNTRYID":183},{"STATES":"**** - **","COUNTRYNAME":"ST. JOHN","COUNTRYID":184},{"STATES":"**** - **","COUNTRYNAME":"ST. MAARTEN","COUNTRYID":187},{"STATES":"**** - **","COUNTRYNAME":"ST. MARTIN","COUNTRYID":188},{"STATES":"**** - **","COUNTRYNAME":"ST. THOMAS","COUNTRYID":189},{"STATES":"**** - **","COUNTRYNAME":"SUDAN","COUNTRYID":191},{"STATES":"**** - **","COUNTRYNAME":"SURINAME","COUNTRYID":192},{"STATES":"**** - **","COUNTRYNAME":"SVALBARD AND JAN MAYEN","COUNTRYID":282},{"STATES":"**** - **","COUNTRYNAME":"SWAZILAND","COUNTRYID":193},{"STATES":"**** - **","COUNTRYNAME":"SWEDEN","COUNTRYID":194},{"STATES":"**** - **","COUNTRYNAME":"SWITZERLAND","COUNTRYID":195},{"STATES":"**** - **","COUNTRYNAME":"SYRIAN ARAB REPUBLIC","COUNTRYID":196},{"STATES":"**** - **","COUNTRYNAME":"TAIWAN, PROVINCE OF CHINA","COUNTRYID":198},{"STATES":"**** - **","COUNTRYNAME":"TAJIKISTAN","COUNTRYID":199},{"STATES":"**** - **","COUNTRYNAME":"TANZANIA, UNITED REPUBLIC OF","COUNTRYID":200},{"STATES":"**** - **","COUNTRYNAME":"THAILAND","COUNTRYID":201},{"STATES":"**** - **","COUNTRYNAME":"TIMOR-LESTE","COUNTRYID":257},{"STATES":"**** - **","COUNTRYNAME":"TINIAN","COUNTRYID":202},{"STATES":"**** - **","COUNTRYNAME":"TOGO","COUNTRYID":203},{"STATES":"**** - **","COUNTRYNAME":"TOKELAU","COUNTRYID":270},{"STATES":"**** - **","COUNTRYNAME":"TONGA","COUNTRYID":204},{"STATES":"**** - **","COUNTRYNAME":"TORTOLA","COUNTRYID":205},{"STATES":"**** - **","COUNTRYNAME":"TRINIDAD AND TOBAGO","COUNTRYID":206},{"STATES":"**** - **","COUNTRYNAME":"TRUK","COUNTRYID":207},{"STATES":"**** - **","COUNTRYNAME":"TUNISIA","COUNTRYID":208},{"STATES":"**** - **","COUNTRYNAME":"TURKEY","COUNTRYID":209},{"STATES":"**** - **","COUNTRYNAME":"TURKMENISTAN","COUNTRYID":271},{"STATES":"**** - **","COUNTRYNAME":"TURKS AND CAICOS ISLANDS","COUNTRYID":210},{"STATES":"**** - **","COUNTRYNAME":"TUVALU","COUNTRYID":211},{"STATES":"**** - **","COUNTRYNAME":"UGANDA","COUNTRYID":212},{"STATES":"**** - **","COUNTRYNAME":"UKRAINE","COUNTRYID":213},{"STATES":"**** - **","COUNTRYNAME":"UNION ISLAND","COUNTRYID":214},{"STATES":"**** - **","COUNTRYNAME":"UNITED ARAB EMIRATES","COUNTRYID":215},{"STATES":"**** - **","COUNTRYNAME":"UNITED KINGDOM","COUNTRYID":57},{"STATES":"**** - ** ALAL - Alabama AKAK - Alaska AZAZ - Arizona ARAR - Arkansas CACA - California COCO - Colorado CTCT - Connecticut DEDE - Delaware DCDC - District of Columbia FLFL - Florida GAGA - Georgia HIHI - Hawaii IDID - Idaho ILIL - Illinois ININ - Indiana IAIA - Iowa KSKS - Kansas KYKY - Kentucky LALA - Louisiana MEME - Maine MDMD - Maryland MAMA - Massachusetts MIMI - Michigan MNMN - Minnesota MSMS - Mississippi MOMO - Missouri MTMT - Montana NENE - Nebraska NVNV - Nevada NHNH - New Hampshire NJNJ - New Jersey NMNM - New Mexico NYNY - New York NCNC - North Carolina NDND - North Dakota OHOH - Ohio OKOK - Oklahoma OROR - Oregon PAPA - Pennsylvania RIRI - Rhode Island SCSC - South Carolina SDSD - South Dakota TNTN - Tennessee TXTX - Texas UTUT - Utah VTVT - Vermont VAVA - Virginia WAWA - Washington WVWV - West Virginia WIWI - Wisconsin WYWY - Wyoming","COUNTRYNAME":"UNITED STATES","COUNTRYID":217},{"STATES":"**** - **","COUNTRYNAME":"UNITED STATES MINOR OUTLYING ISLANDS","COUNTRYID":225},{"STATES":"**** - **","COUNTRYNAME":"URUGUAY","COUNTRYID":218},{"STATES":"**** - **","COUNTRYNAME":"UZBEKISTAN","COUNTRYID":220},{"STATES":"**** - **","COUNTRYNAME":"VANUATU","COUNTRYID":221},{"STATES":"**** - **","COUNTRYNAME":"VENEZUELA, BOLIVARIAN REPUBLIC OF","COUNTRYID":222},{"STATES":"**** - **","COUNTRYNAME":"VIET NAM","COUNTRYID":223},{"STATES":"**** - **","COUNTRYNAME":"VIRGIN ISLANDS, BRITISH","COUNTRYID":26},{"STATES":"**** - **","COUNTRYNAME":"VIRGIN ISLANDS, U.S.","COUNTRYID":219},{"STATES":"**** - **","COUNTRYNAME":"WALES","COUNTRYID":226},{"STATES":"**** - **","COUNTRYNAME":"WALLIS AND FUTUNA","COUNTRYID":227},{"STATES":"**** - **","COUNTRYNAME":"WESTERN SAHARA","COUNTRYID":246},{"STATES":"**** - **","COUNTRYNAME":"YAP","COUNTRYID":229},{"STATES":"**** - **","COUNTRYNAME":"YEMEN","COUNTRYID":247},{"STATES":"**** - **","COUNTRYNAME":"ZAIRE","COUNTRYID":231},{"STATES":"**** - **","COUNTRYNAME":"ZAMBIA","COUNTRYID":232},{"STATES":"**** - **","COUNTRYNAME":"ZIMBABWE","COUNTRYID":233}]; 1352 1353 svcrm.formBuilderScripts.countryChanged = function(domElm){ 1354 1355 1356 var oldSelIndexVal = state.value; //$F('contact_state'); 1357 var myStates = new Array(); 1358 1359 // $('contact_state').options.length = 0; 1360 state.options.length = 0; 1361 1362 for (var i = 0; i < window.svcrm.formBuilderScripts.states.length; i++) {
1363 if (window.svcrm.formBuilderScripts.states[i].COUNTRYNAME == domElm.options[domElm.selectedIndex].value || window.svcrm.formBuilderScripts.states[i].COUNTRYNAME == '') { 1364 var myObj = new Object(); 1365 1366 var tmp = window.svcrm.formBuilderScripts.states[i].STATES.split(''); 1367 for (var x = 0; x < tmp.length; x = x + 2) { 1368 var myObj = new Object(); 1369 myObj.statecode = tmp[x - 1]; 1370 myObj.statename = tmp[x]; 1371 if (tmp[x - 1] == oldSelIndexVal) { 1372 myObj.selected = true; 1373 } else { 1374 myObj.selected = false; 1375 } 1376 1377 if(!myObj.statecode){ 1378 myObj.statecode = ''; 1379 } 1380 myStates.push(myObj); 1381 } 1382 } 1383 } 1384 1385 if (myStates.length > 0) { 1386 for (var i = 0; i < myStates.length; i++) { 1387 // $('contact_state').options[$('state').options.length] = new Option(myStates[i].statename, myStates[i].statecode, myStates[i].selected, myStates[i].selected); 1388 state.options[state.options.length] = new Option(myStates[i].statename, myStates[i].statecode, myStates[i].selected, myStates[i].selected); 1389 1390 } 1391 } else { 1392 // $('contact_state').options.length = 0; 1393 state.options.length = 0; 1394 //$('contact_state').options[$('contact_state').options.length] = new Option("** - **", ""); 1395 state.options[state.options.length] = new Option("** - **", ""); 1396 } 1397 } 1398 1399 1400 })(); 1401 1402 </script>
1402 1403 1404
1404<script type="text/javascript"> 1405 1406 1407 (function(){ 1408 svcrm = ((typeof svcrm != 'undefined') ? svcrm : {}); 1409 svcrm.formBuilderScripts = ((typeof svcrm.formBuilderScripts != 'undefined') ? svcrm.formBuilderScripts : {}); 1410 1411 1412 window.svcrm.formBuilderScripts._____fileInpElmsRemoved = {}; //being lazy, need a place to store the file inputs that get removed from the form 1413 window.svcrm.formBuilderScripts._____filesUploading = 0; //if this is greater than 0, a file is still uploading. 1414 1415 //this function is called when a file upload input has a file selected 1416 window.svcrm.formBuilderScripts.submitFileUpload = function(frmname,fldname){ 1417 //kill off the old temp input that is used by formbuilder_fileAdd.cfm to know which form element to upload 1418 var oldinp = document.getElementById('thefileweneedtoupload'); 1419 if(oldinp){ oldinp.parentNode.removeChild(oldinp); } 1420 1421 //create the temp input that is used by formbuilder_fileAdd.cfm to know which form element to upload 1422 var inp = document.createElement('input'); inp.type = 'hidden'; inp.name = 'thefileweneedtoupload'; inp.id = 'thefileweneedtoupload'; inp.value = fldname; 1423 document[frmname].appendChild(inp); 1424 1425 //need to get some things from this input before it is killed so we will it so we can recreate it 1426 var fld = document.getElementById(fldname); 1427 window.svcrm.formBuilderScripts._____fileInpElmsRemoved[fldname] = { id:fld.id, name:fld.name, className:fld.className, tabIndex:fld.tabIndex, onchange:fld.onchange }; 1428 1429 //kill iframe element if one exists 1430 window.svcrm.formBuilderScripts.killFileInputIframeElm(fldname); 1431 1432 //create iframe to submit to 1433 var iframe = document.createElement('iframe'); iframe.id = 'fileUploaderIframe_'+fldname; iframe.name = 'fileUploaderIframe_'+fldname; iframe.style.display = 'none'; 1434 document.body.appendChild(iframe); 1435 1436 //store the form action before it is changed 1437 var origFormAttributes = {action: document[frmname].action, enctype: document[frmname].enctype}; 1438 1439 //change the form so that it will submit to the webapi and iframe target 1440 document[frmname].action = 'https://PhiladelphiaPA.simpleviewcrm.com/webapi/formbuilder/formbuilder_fileAdd.cfm'; 1441 document[frmname].target = 'fileUploaderIframe_'+fldname; 1442 document[frmname].enctype = 'multipart/form-data'; 1443 document[frmname].submit(); 1444 1445 //add to filesUploading so we don't allow form submissions while files are uploading 1446 window.svcrm.formBuilderScripts._____filesUploading = window.svcrm.formBuilderScripts._____filesUploading + 1; 1447 1448 //reset the form to submit to where it was originally intended to submit to and remove the target so it doesn't go to the iframe 1449 document[frmname].setAttribute('action',origFormAttributes.action); 1450 document[frmname].setAttribute('enctype',origFormAttributes.enctype); 1451 document[frmname].removeAttribute('target'); 1452 1453 // Disable the submit button and add a tool tip to the disabled element so it is clear why you can't submit yet -- useful for large files or slow connections 1454 document.getElementById('savefrm_button').disabled = true; 1455 var tt = document.getElementById('submit_tooltiptext'); 1456 if(tt){ 1457 //Make the tool tip show up 1458 tt.style.visibility = 'visible'; 1459 } else { 1460 // create a new element 1461 var toolTip = document.createElement("span"); 1462 var newContent = document.createTextNode("Unable to submit, file upload in progress."); 1463 toolTip.appendChild(newContent); 1464 toolTip.style.backgroundColor = "black"; 1465 toolTip.style.color = "white"; 1466 toolTip.style.textAlign = "center"; 1467 toolTip.style.borderRadius = "6px"; 1468 toolTip.style.padding = "4px 2px"; 1469 toolTip.setAttribute('id', 'submit_tooltiptext'); 1470 1471 // add the newly created element and its content into the DOM 1472 currentDiv = document.getElementById('resetfrm_button'); 1473 var br = document.createElement("br"); // but put it on a new line first 1474 currentDiv.parentElement.insertBefore(br, null); 1475 currentDiv.parentElement.insertBefore(toolTip, null); 1476 } 1477 }; 1478 1479 //this function is called by either the formbuilder_fileAdd.cfm window.parent.addFile() call or from the _handlePostMessage() function 1480 //it will take the filename that is returned and set it in the display element and hidden input 1481 //if success==true is not returned we will try to grab the message from errorMsg if passed otherwise will display a generic error message and will try to remove the file input and recreate it 1482 //it is possible that the IIS request filtering will kick
1482in and prevent us from knowing if it failed but the overall submission will end up getting blocked because the file inputs will still exist 1483 window.svcrm.formBuilderScripts.addFile = function(addFileArgs){ 1484 if(typeof addFileArgs.success && addFileArgs.success){ 1485 //set the hidden input with the new filename so we can process upon save 1486 document.getElementById(addFileArgs.fldname+'_formbuilder_hidden').value = addFileArgs.newfilename; 1487 1488 //subtract from filesUploading, if we're at 0 all files are finished 1489 window.svcrm.formBuilderScripts._____filesUploading = window.svcrm.formBuilderScripts._____filesUploading - 1; 1490 if (window.svcrm.formBuilderScripts._____filesUploading <= 0) { 1491 //Re-enable submit button 1492 document.getElementById('savefrm_button').disabled = false; 1493 //hide tooltip 1494 var ttip = document.getElementById('submit_tooltiptext'); 1495 if (ttip) { 1496 ttip.style.visibility = "hidden"; 1497 } 1498 } 1499 1500 //create the delete button for this file 1501 var newBtn = document.createElement('img'); 1502 newBtn.src = 'https://PhiladelphiaPA.simpleviewcrm.com/core_crm/webapi/forms/images/delete.png'; 1503 newBtn.onclick = function(){window.svcrm.formBuilderScripts.removeFile(addFileArgs.fldname);}; 1504 newBtn.alt = 'Remove File?'; 1505 newBtn.title = 'Remove File?'; 1506 newBtn.style.paddingTop = '5px'; 1507 newBtn.style.paddingRight = '5px'; 1508 newBtn.style.float = 'left'; 1509 1510 //create the element that will show the file name 1511 var newDiv = document.createElement('div'); 1512 newDiv.innerHTML = addFileArgs.newfilename; 1513 newDiv.style.paddingTop = '4px'; 1514 newDiv.style.float = 'left'; 1515 1516 //get this file inputs display element and append the delete button and name display elements in it 1517 var dispElm = document.getElementById(addFileArgs.fldname+'_display'); 1518 dispElm.appendChild(newBtn); 1519 dispElm.appendChild(newDiv); 1520 1521 //create an empty div to fix the float for the delete and filename element 1522 var newDiv2 = document.createElement('div'); 1523 newDiv2.style.clear = 'both'; 1524 dispElm.appendChild(newDiv2); 1525 dispElm.style.display = 'block'; //turn on the display element 1526 1527 //kill the file input we don't want it anymore unless they remove this file 1528 window.svcrm.formBuilderScripts.killFileInputElm(addFileArgs.fldname); 1529 1530 }else{ 1531 //kill and recreate the element if we can 1532 if(typeof addFileArgs.fldname && addFileArgs.fldname.length){ 1533 window.svcrm.formBuilderScripts.killFileInputElm(addFileArgs.fldname); 1534 window.svcrm.formBuilderScripts.recreateFileInputElm(addFileArgs.fldname); 1535 } 1536 1537 //if we have a good message display it 1538 alert('There was a problem uploading your file:\n'+((typeof addFileArgs.errorMsg != 'undefined') ? addFileArgs.errorMsg : 'There was a problem uploading your file!' ) ); 1539 1540 //subtract from filesUploading, if we're at 0 all files are finished 1541 window.svcrm.formBuilderScripts._____filesUploading = window.svcrm.formBuilderScripts._____filesUploading - 1; 1542 1543 //Need to make sure that we re-enable the submit button in case it didn't happen above in the IF block 1544 // otherwise, they can't submit until they fix the issue; we should give them the option to abandon the file upload. 1545 if (window.svcrm.formBuilderScripts._____filesUploading <= 0) { 1546 //Re-enable submit button 1547 document.getElementById('savefrm_button').disabled = false; 1548 //hide tooltip 1549 var ttip = document.getElementById('submit_tooltiptext'); 1550 if (ttip) { 1551 ttip.style.visibility = "hidden"; 1552 } 1553 } 1554 } 1555 1556 //kill iframe element if it is still around 1557 window.svcrm.formBuilderScripts.killFileInputIframeElm(addFileArgs.fldname); 1558 }; 1559 1560 //this function will delete the file input element from the form, it is called when a file input is selected and the form submitted off to the iframe 1561 window.svcrm.formBuilderScripts.killFileInputElm = function(fldId){ 1562 var fileInpElmToRemove = document.getElementById(fldId); 1563 fileInpElmToRemove.parentNode.removeChild(fileInpElmToRemove); 1564 }; 1565 1566 //this function will re-create the file input element that was removed when a file was uploaded, this is called when a user clicks the delete button on an image or if we had an erorr upon file upload we wipe the input and recreate so it is empty 1567 window.svcrm.formBuilderScripts.recreateFileInputElm = function(fldId){ 1568 var elmstored = window.svcrm.formBuilderScripts._____fileInpElmsRemoved[fldId]; 1569 var recreatedElm = document.createElement('input'); 1570 recreatedElm.type = 'file'; 1571 recreatedElm.id = elmstored.id; 1572 recreatedElm.name = elmstored.name; 1573 recreatedElm.className = elmstored.className; 1574 recreatedElm.tabIndex = elmstored.tabIndex; 1575 recreatedElm.onchange = function(){ 1576 document.getElementById(fldId + '_formbuilder_hidden').value = this.value; 1577 window.svcrm.formBuilderScripts.submitFileUpload('frm_'+document.getElementById('formid').value, fldId); 1578 }; 1579 document.getElementById(fldId+'_container').appendChild(recreatedElm); 1580 } 1581 1582 //this function will kill off the iframe element if it exists 1583 window.svcrm.formBuilderScripts.killFileInputIframeElm = function(fldname){ 1584 var iframeElm = document.getElementById('fileUploaderIframe_'+fldname); 1585 if(iframeElm){iframeElm.parentNode.removeChild(iframeElm);} 1586 }; 1587 1588 //this function will remove the file it will wipe the display and hidden input and recreate the file upload input element 1589 window.svcrm.formBuilderScripts.removeFile = function(fldId){ 1590 //try to remove delete this file from temp if exists 1591 try{ 1592 //create an iframe and form with a hidden input field that has the name of the file we are trying to wipe 1593 var html = '<html><body onload="document.fileDeleterIframeForm.submit();">'; 1594 html += '<form name="fileDeleterIframeForm" action="https://PhiladelphiaPA.simpleviewcrm.com/webapi/formbuilder/formbuilder_fileDelete.cfm" method="post">'; 1595 html += '<input type="hidden" name="filenamevalue" id="filenamevalue" value="'+document.getElementById(fldId+'_formbuilder_hidden').value+'" />'; 1596 html += '</form>'; 1597 html += '<' + '/' + 'body' + '>' + '<' + '/' + 'html' + '>'; 1598 1599 var iframeElm = document.getElementById('fileDeleterIframe_'+fldId); 1600 if(iframeElm){iframeElm.parentNode.removeChild(iframeElm);} 1601 1602 var iframe = document.createElement('iframe'); 1603 iframe.id = 'fileDeleterIframe_'+fldId; 1604 iframe.style.display = 'none'; 1605 document.body.appendChild(iframe); 1606 iframe.contentWindow.document.open(); 1607 iframe.contentWindow.document.write(html); 1608 iframe.contentWindow.document.close(); 1609 1610 }catch(e){ 1611 //nothing for now 1612 } 1613 1614 document.getElementById(fldId+'_formbuilder_hidden').value = ''; 1615 var dispElm = document.getElementById(fldId+'_display'); 1616 dispElm.innerHTML = ''; 1617 dispElm.style.display = 'none'; 1618 1619 //recreate the element 1620 window.svcrm.formBuilderScripts.recreateFileInputElm(fldId); 1621 1622 }; 1623 1624 //this function will handle the postMessage's it will make sure that it is coming from the valid crm domain, it will then call the addFile() function passing along the returned json object 1625 var _handlePostMessage = function(evt){
1626 //check for correct postMessage source 1627 if(typeof evt.origin != 'undefined'){ 1628 //only run this if we are from the correct domain 1629 var _fixedOrigin = evt.origin + ( (evt.origin.substring(evt.origin.length-1,evt.origin.length) != '/') ? '/' : ''); 1630 var crmappurl = 'https://PhiladelphiaPA.simpleviewcrm.com/'; 1631 if(_fixedOrigin.toLowerCase().indexOf(crmappurl.toLowerCase()) != -1){ 1632 var _postMsgRtn = {}; 1633 try { 1634 _postMsgRtn = JSON.parse(evt.data); //json parse the returned data 1635 } catch (e) { 1636 return false; 1637 } 1638 window.svcrm.formBuilderScripts.addFile(_postMsgRtn); //we will let the addFile handle any errors the same way as call from within crm form 1639 } 1640 } 1641 }; 1642 if (window.addEventListener) { 1643 window.addEventListener('message', _handlePostMessage, false); 1644 } else if (window.attachEvent) { 1645 window.attachEvent('onmessage', _handlePostMessage); 1646 } 1647 1648 1649 })(); 1650 1651 </script>
1651 1652 1653
1653<script type="text/javascript"> 1654 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS loadCRMForm +++++++++++++++++++++++++++++++++++++*/ 1655 (function(){ 1656 var crm_locale = {"SEPARATOR_GROUPING":3,"YAHOO_MDY_MONTH_POSITION":1,"CURRENCY_DECIMALPLACES":2,"DATEFMT_MDONLY":"mm\/dd","NUMBERFORMATTER":"standard","YAHOO_MDY_YEAR_POSITION":3,"ANGULAR_FORMAT_FILE":"en-us","YAHOO_DATE_FIELD_DELIMITER":"\/","YAHOO_START_WEEKDAY":0,"YAHOO_MDY_DAY_POSITION":2,"DOLLARFMT_MASK":"","THOUSANDS_SEPARATOR":",","LOCALE":"en_US","DOLLARFMT":0,"DOLLARFMT_PREFIX":"","NUMBERFMT_MASK":"0,000.00","DATEFMT":"mm\/dd\/yyyy","DECIMAL_SEPARATOR":".","DOLLARFMT_SUFFIX":""}; 1657 1658 svcrm = ((typeof svcrm != 'undefined') ? svcrm : {}); 1659 svcrm.formBuilderScripts = ((typeof svcrm.formBuilderScripts != 'undefined') ? svcrm.formBuilderScripts : {}); 1660 1661 svcrm.formBuilderScripts.captchaValid = false; 1662 svcrm.formBuilderScripts.validCodeElement = document.getElementById('code'); 1663 1664 svcrm.formBuilderScripts.curPopupWindow = null; 1665 svcrm.formBuilderScripts.lastMouseX = null; 1666 svcrm.formBuilderScripts.lastMouseY = null; 1667 1668 svcrm.formBuilderScripts.__onload_function = function(){ 1669 svcrm.formBuilderScripts.updReq(); 1670 1671 if (svcrm.formBuilderScripts.validCodeElement.addEventListener) { 1672 svcrm.formBuilderScripts.validCodeElement.addEventListener('keyup', svcrm.formBuilderScripts.checkCapMatch, false); 1673 } else if (validCodeElement.attachEvent) { 1674 svcrm.formBuilderScripts.validCodeElement.attachEvent('onkeyup', svcrm.formBuilderScripts.checkCapMatch); 1675 } 1676 1677 var elm = svcrm.formBuilderScripts.validCodeElement; 1678 var found = false; 1679 while(elm.parentNode && !found){ 1680 if(elm.parentNode.getElementsByTagName('form') && elm.parentNode.getElementsByTagName('form')[0] && elm.parentNode.getElementsByTagName('form')[0].name.indexOf('frm_') != -1){ 1681 elm = elm.parentNode.getElementsByTagName('form')[0]; 1682 found = true; 1683 }else{ 1684 elm = elm.parentNode; 1685 } 1686 } 1687 1688 var the_crmform = elm; 1689 the_crmform.id = 'the_crmform'; 1690 the_crmform.onsubmit = function(e){ 1691 svcrm.formBuilderScripts.checkCapMatch(); 1692 if (svcrm.formBuilderScripts.captchaValid !== true){ 1693 1694 alert('This information cannot be sent at this time!\n\nThe 4 character string you entered does not match the image shown.'); 1695 1696 return false; 1697 }else 1698 { 1699 return svcrm.formBuilderScripts.validateForm(the_crmform); 1700 } 1701 return false; 1702 }; 1703 }; 1704 1705 svcrm.formBuilderScripts.checkCapMatch = function(){ 1706 var scriptID = 'captchaCheckJSONP'; 1707 1708 //kill the existing one if we have one 1709 if(document.getElementById(scriptID)){ 1710 document.getElementById(scriptID).parentNode.removeChild(document.getElementById(scriptID)); 1711 } 1712 1713 var validCode = svcrm.formBuilderScripts.validCodeElement.value; 1714 var checkCode = escape( document.getElementById('code_key').value ); 1715 if(validCode.length != 4){ 1716 svcrm.formBuilderScripts.setCaptchaImg(false); 1717 return false; 1718 }else{ 1719 //jsonP this thing over 1720 var s = document.createElement('script'); 1721 s.id = scriptID; 1722 s.type = 'application/javascript'; 1723 s.src = 'https://philadelphiapa.simpleviewcrm.com/webapi/formbuilder/checkcaptcha.cfm?validCode='+validCode+'&checkCode='+c
1723heckCode+'&jsonp=svcrm.formBuilderScripts.getCaptchaLookupResults' 1724 document.body.appendChild(s); 1725 } 1726 }; 1727 1728 svcrm.formBuilderScripts.getCaptchaLookupResults = function(rtn){ 1729 if (rtn) { 1730 svcrm.formBuilderScripts.setCaptchaImg(true); 1731 }else { 1732 svcrm.formBuilderScripts.setCaptchaImg(false); 1733 } 1734 }; 1735 1736 svcrm.formBuilderScripts.setCaptchaImg = function(ok) { 1737 var existingCIMG = document.getElementById('capimage'); 1738 if (!existingCIMG || existingCIMG.length == 0){ 1739 var cimgtag = document.createElement('IMG'); 1740 cimgtag.id = 'capimage'; 1741 cimgtag.alt= "Verification"; 1742 1743 svcrm.formBuilderScripts.validCodeElement.parentNode.appendChild(cimgtag); 1744 existingCIMG = document.getElementById('capimage'); 1745 } 1746 1747 if (ok) { 1748 existingCIMG.src = 'https://philadelphiapa.simpleviewcrm.com/core_crm/resources/images/true_ico.gif'; 1749 svcrm.formBuilderScripts.captchaValid = true; 1750 }else { 1751 existingCIMG.src = 'https://philadelphiapa.simpleviewcrm.com/core_crm/resources/images/false_ico.gif'; 1752 svcrm.formBuilderScripts.captchaValid = false; 1753 } 1754 }; 1755 1756 1757 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS /includes/scripts/formValidations.js +++++++++++++++++++++++++++++++++++++*/ 1758 /*Utility Functions, namespaced for nodejs cms sites*/ 1759 //Function to format floats 1760 //returns false if invalid 1761 //dec = number of decimal places to show 1762 svcrm.formBuilderScripts.fmtFloat = function(obj, dec){ 1763 var lt = "", rt = "", str = "" 1764 var inc = 0, num = 0, tmp = 0 1765 1766 if (obj.value.length == 0) 1767 obj.value = "0"; 1768 1769 if (!svcrm.formBuilderScripts.checkChars(obj.value, ".,0123456789")) return false; 1770 1771 // Check for valid number 1772 svcrm.formBuilderScripts.stripChars(obj, ","); 1773 if (!svcrm.formBuilderScripts.checkNumber(obj.value)) return false; 1774 1775 //Split number 1776 inc = Math.pow(10, dec); 1777 num = (obj.value * 1.0); 1778 num = Math.round(num * inc) / inc; 1779 str = "" + num; 1780 1781 tmp = str.indexOf("."); 1782 if (tmp < 0) { 1783 str += "."; 1784 tmp = str.indexOf("."); 1785 } 1786 1787 if ((str.length - tmp) <= dec) 1788 for (var i = (str.length - tmp); i <= dec; i++) 1789 str += "0"; 1790 1791 obj.value = str; 1792 return true; 1793 }; 1794 1795 //Function to format integers 1796 //returns false if invalid 1797 svcrm.formBuilderScripts.fmtInt = function(obj){ 1798 if (obj.value.length == 0) { 1799 return true; 1800 } 1801 1802 return (svcrm.formBuilderScripts.checkInteger(obj.value)); 1803 }; 1804 1805 //Function to formats money fields 1806 //returns false if invalid 1807 svcrm.formBuilderScripts.fmtMoney = function(obj){ 1808 var dec = 0, num = "", sign = 0 1809 var dollars = "", cents = "" 1810 var count = 0, tmp = "" 1811 1812 if (obj.value.length == 0) { 1813 tmp = "0"; 1814 cents = ".00"; 1815 } else { 1816 if (!svcrm.formBuilderScripts.checkChars(obj.value, "$.,0123456789")) return false; 1817 1818 // Check for valid number 1819 svcrm.formBuilderScripts.stripChars(obj, ","); 1820 sign = obj.value.indexOf("$"); 1821 if (sign > 0) 1822 return false; 1823 else { 1824 if (sign == 0) 1825 num = obj.value.substring(1,obj.value.length); 1826 else 1827 num = obj.value; 1828 1829 if (!svcrm.formBuilderScripts.checkNumber(num)) 1830 return false; 1831 } 1832 1833 // Check precision, round-up if necessary 1834 if (num.indexOf(".") != -1) 1835 num = "" + (Math.round(num * 100) / 100.0); 1836 1837 dec = num.indexOf("."); 1838 cents = ((dec > 0) ? num.substring(dec,num.length) : ".00"); 1839 if (cents.length == 2) cents += "0"; 1840 1841 // Add commas 1842 dollars = "" + parseInt(num); 1843 for (var i = dollars.length - 1; i >= 0; i--) { 1844 if (count == 3) { 1845 tmp = "," + tmp; 1846 count = 1; 1847 } else 1848 count ++; 1849 1850 tmp = dollars.charAt(i) + tmp; 1851 } 1852 } 1853 1854 // Format number 1855 num = "$" + tmp + cents; 1856 obj.value = num; 1857 return true; 1858 }; 1859 1860 //Function to format phone numbers 1861 //returns false if invalid 1862 svcrm.formBuilderScripts.fmtPhone = function(obj){ 1863 var phone = ""; 1864 var oldphone = ""; 1865 1866 if (obj.value.length == 0) return true; 1867 1868 //Remove formatting 1869 oldphone = obj.value;
1870 svcrm.formBuilderScripts.stripChars(obj, "- ()"); 1871 phone = obj.value; 1872 if (!svcrm.formBuilderScripts.checkChars(phone, "0123456789")) return false; 1873 1874 if (phone.length == 10) 1875 obj.value = "(" + phone.substring(0,3) + ") " + phone.substring(3,6) +"-" + phone.substring(6,10); 1876 else { 1877 obj.value = oldphone; 1878 return false; 1879 } 1880 1881 return true; 1882 }; 1883 1884 //Function to format social security numbers 1885 //returns false if invalid 1886 svcrm.formBuilderScripts.fmtSSN = function(obj){ 1887 var ssn = "" 1888 1889 if (obj.value.length == 0) return true; 1890 1891 //Remove all dashes 1892 svcrm.formBuilderScripts.stripChars(obj, "-"); 1893 ssn = obj.value; 1894 if (!svcrm.formBuilderScripts.checkChars(ssn, "0123456789")) return false; 1895 1896 if (ssn.length == 9) 1897 obj.value = ssn.substring(0,3) + "-" + ssn.substring(3,5) + "-" + ssn.substring(5,9); 1898 else 1899 return false; 1900 1901 return true; 1902 }; 1903 1904 //Function to verify valid URL 1905 svcrm.formBuilderScripts.fmtURL = function(obj){ 1906 if (obj.value.length == 0) return true; 1907 1908 if (obj.value.substring(0,7) != "http://") 1909 obj.value = "http://" + obj.value; 1910 1911 if (obj.value.length < 10) return false; 1912 1913 return true; 1914 }; 1915 1916 //Function to format zip codes 1917 //returns false if invalid 1918 svcrm.formBuilderScripts.fmtZip = function(obj){ 1919 var numberlist = "0123456789", zip = "" 1920 1921 if (obj.value.length == 0) return true; 1922 1923 // Remove dashes 1924 svcrm.formBuilderScripts.stripChars(obj, "-"); 1925 zip = obj.value; 1926 if (!svcrm.formBuilderScripts.checkChars(zip, numberlist)) return false; 1927 1928 if (zip.length == 5) 1929 obj.value = zip; 1930 else if (zip.length == 9) 1931 obj.value = zip.substring(0,5) + "-" + zip.substring(5,9) 1932 else 1933 return false; 1934 1935 //Passed all tests 1936 return true; 1937 }; 1938 1939 //Returns true if every character is in string list 1940 //otherwise false 1941 svcrm.formBuilderScripts.checkChars = function(val, charlist){ 1942 for (var i = 0; i < val.length; i++) 1943 if (charlist.indexOf(val.charAt(i)) < 0) 1944 return false; 1945 1946 //String passed so it is valid 1947 return true; 1948 }; 1949 1950 //Returns true if valid email 1951 //otherwise returns false 1952 svcrm.formBuilderScripts.checkEmail = function(obj){ 1953 if (obj.value.length != 0) { 1954 var pattern = /^['&a-zA-Z0-9._%+-]+@(?:[&a-zA-Z0-9-]+\.)+(([a-zA-Z]{2,4})|(aero|coop|info|museum|name|travel))$/; 1955 if (!pattern.test(obj.value)) { 1956 return false; 1957 } else { 1958 return true; 1959 } 1960 } 1961 1962 // Valid, passed all tests 1963 return true; 1964 }; 1965 1966 //Returns true if valid phone 1967 //otherwise returns false 1968 svcrm.formBuilderScripts.checkPhone = function(obj){ 1969 if (obj.value.length != 0) { 1970 var pattern = /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/; 1971 if (!pattern.test(obj.value)) { 1972 return false; 1973 } else { 1974 return true; 1975 } 1976 } 1977 1978 // Valid, passed all tests 1979 return true; 1980 }; 1981 1982 //Returns true if value is a number or is NULL 1983 //otherwise returns false 1984 svcrm.formBuilderScripts.checkInteger = function(object_value){ 1985 if (object_value.length == 0) 1986 return true; 1987 1988 if (object_value.indexOf(".") < 1) 1989 return svcrm.formBuilderScripts.checkNumber(object_value); 1990 else 1991 return false; 1992 }; 1993 1994 //Returns true if value is a number or is NULL 1995 //otherwise returns false 1996 svcrm.formBuilderScripts.checkNumber = function(object_value){ 1997 if (object_value.length == 0) 1998 return true; 1999 2000 //Returns true if value is a number defined as 2001 // having an optional leading + or -. 2002 // having at most 1 decimal point. 2003 // otherwise containing only the characters 0-9. 2004 var start_format = " .+-0123456789"; 2005 var number_format = " .0123456789"; 2006 var check_char; 2007 var decimal = false; 2008 var trailing_blank = false; 2009 var digits = false; 2010 2011 //The first character can be + - . blank or a digit. 2012 check_char = start_format.indexOf(object_value.charAt(0)) 2013 //Was it a decimal? 2014 if (check_char == 1) 2015 decimal = true; 2016 else if (check_char < 1) 2017 return false; 2018 2019 //Remaining characters can be only . or a digit, but only one decimal. 2020 for (var i = 1; i < object_value.length; i++) { 2021 check_char = number_format.indexOf(object_value.charAt(i)) 2022 if (check_char < 0) 2023 return false; 2024 else if (check_char == 1) { 2025 if (decimal) // Second decimal. 2026 return false; 2027 else 2028 decimal = true; 2029 } else if (check_char == 0) { 2030 if (decimal || digits) 2031 trailing_blank = true; 2032 // ignore leading blanks 2033 } else if (trailing_blank) 2034 return false; 2035 else 2036 digits = true; 2037 } 2038 2039 //All tests passed 2040 return true 2041 }; 2042 2043 //Returns true if value is a posiitve integer or is NULL 2044 //otherwise returns false 2045 svcrm.formBuilderScripts.checkPosInteger = function(object_value){ 2046 if (object_value.indexOf("-") != -1) 2047 return false; 2048 else 2049 return (svcrm.formBuilderScripts.checkInteger(object_value)); 2050 }; 2051 2052 //Function to find any char in charlist in the passed string 2053 //Returns true if a character is found 2054 //Otherwise false
2055 svcrm.formBuilderScripts.findChars = function(str, charlist){ 2056 for (var i = 0; i < charlist.length; i++) { 2057 if (str.indexOf(charlist.charAt(i)) != -1) 2058 return true; 2059 } 2060 2061 return false; 2062 }; 2063 2064 //Function to remove all occurances of chars in charlist 2065 svcrm.formBuilderScripts.stripChars = function(obj, charlist){ 2066 var i = 0, pos = 0 2067 var val = obj.value 2068 2069 while (i < val.length) { 2070 pos = charlist.indexOf(val.charAt(i)); 2071 if (pos != -1) 2072 val = val.substring(0,i) + val.substring(i + 1, val.length); 2073 else 2074 i++; 2075 } 2076 2077 obj.value = val; 2078 return true; 2079 }; 2080 2081 svcrm.formBuilderScripts.cntChars = function(val, charlist){ 2082 var i = 0, pos = 0, cnt = 0 2083 2084 for (i = 0; i < val.length; i++) { 2085 pos = charlist.indexOf(val.charAt(i)); 2086 if (pos != -1) cnt++; 2087 } 2088 2089 return cnt; 2090 }; 2091 2092 svcrm.formBuilderScripts.fmtTime = function(fld){ 2093 var hr = 0, mn = 0; 2094 var val = fld.value; 2095 2096 if (val.length == 0) return true; 2097 2098 var tt = svcrm.formBuilderScripts.strChars(val, '0123456789: '); 2099 2100 if (tt.length > 0) { 2101 tt = tt.toUpperCase(); 2102 if (tt != 'AM' && tt != 'PM') return false; 2103 2104 val = svcrm.formBuilderScripts.strChars(val, ' ampAMP'); 2105 } 2106 2107 var sepr = val.indexOf(':') 2108 if (sepr == -1) { 2109 hr = val; 2110 mn = 0; 2111 } else { 2112 hr = val.substring(0, sepr); 2113 mn = val.substring(sepr + 1, val.length); 2114 }
2115 if (isNaN(mn)) mn = 0; 2116 2117 if (!svcrm.formBuilderScripts.chkChars(hr, '0123456789')) return false; 2118 if (!svcrm.formBuilderScripts.chkChars(mn, '0123456789')) return false; 2119 if (hr < 0 || hr > 23) return false; 2120 if (mn < 0 || mn > 59) return false; 2121 2122 if (hr > 12) { 2123 tt = 'PM'; 2124 hr = hr - 12; 2125 } else if (hr == 0) { 2126 tt = 'AM'; 2127 hr = 12; 2128 } 2129 if (mn.toString().length == 0) mn = 0; 2130 if (tt.length == 0) { 2131 if (hr == 12) 2132 tt = 'PM'; 2133 else if (hr < 7) 2134 tt = 'PM'; 2135 else 2136 tt = 'AM'; 2137 } 2138 2139 str = hr; 2140 if (mn.toString().length == 1) 2141 str = str + ':0' + mn; 2142 else 2143 str = str + ':' + mn; 2144 str = str + ' ' + tt; 2145 2146 fld.value = str; 2147 return true; 2148 }; 2149 2150 //Function to remove all occurances of chars in charlist 2151 svcrm.formBuilderScripts.strChars = function(val, charlist){ 2152 var i = 0, pos = 0 2153 2154 while (i < val.length) { 2155 pos = charlist.indexOf(val.charAt(i)); 2156 if (pos != -1) 2157 val = val.substring(0,i) + val.substring(i + 1, val.length); 2158 else 2159 i++; 2160 } 2161 2162 return val; 2163 }; 2164 2165 svcrm.formBuilderScripts.chkChars = function (val, charlist){ 2166 for (var i = 0; i < val.length; i++) 2167 if (charlist.indexOf(val.charAt(i)) < 0) 2168 return false; 2169 2170 return true; 2171 }; 2172 /* +++++++++++++++++++++++++++ END Script copied from OLD CMS /includes/scripts/formValidations.js +++++++++++++++++++++++++++++++++++++*/ 2173 2174 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS /includes/scripts/dateValidate.js +++++++++++++++++++++++++++++++++++++*/ 2175 // Author: Bill Simpson 2176 // Company: 220solutions.com 2177 // Email: [email protected] 2178 // Date Created: 02-09-2001 2179 // 2180 // Verifies and converts date strings to a valid format 2181 // 2182 // Valid input dates = 2183 // mdyy, mmdyy, mmddyy, mmmddyy, mmddyyyy, mmmddyyyy, 2184 // m/d/yy, m/dd/yy, mm/d/yy, mm/dd/yy, mmm/d/yy, mmm/dd/yy, 2185 // m/d/yyyy, m/dd/yyyy, mm/d/yyyy, mm/dd/yyyy, mmm/d/yyyy, mmm/dd/yyyy 2186 // Valid date seperators = '-./:_, ' 2187 // 2188 // Notes: Please feel free to use/edit this script. 2189 // If you do please keep comments and header 2190 // 2191 // Code based on functions from 2192 // Author: Simon Kneafsey 2193 // Email: [email protected] 2194 // WebSite: www.simonkneafsey.co.uk 2195 2196 2197 // Function to convert supplied date string 'fld' 2198 // fld: field containing date string 2199 // sep: seperator to use e.g. '-' or '/' 2200 // returns false if date string is invalid 2201 svcrm.formBuilderScripts.fmtDate = function(fld,sep){ 2202 var len = fld.value.length; 2203 var seps = new Array('-','.','/',':','_',',',' '); // Array of seperators. 2204 var d = '', m = '', y = ''; // date part holders 2205 //var div = ''; // divider holder 2206 //var outdate1 = null; // formatted date to send back to calling field holder 2207 var sepholder = new Array('0','0','0'); // array to hold positions of dividers in dates 2208 var s = String(fld.value); 2209 var outdate = ''; 2210 2211 if (len == 0 ) return true; 2212 2213 // Accept 'today' or 'now' 2214 if (fld.value.toUpperCase() == 'NOW' || fld.value.toUpperCase() == 'TODAY' ) { 2215 var newDate = new Date(); 2216 var myDay = newDate.getDate(); 2217 var myMonth = newDate.getMonth() + 1; 2218 if (navigator.appName == 'Netscape') 2219 var myYear = newDate.getYear() + 2000; 2220 else 2221 var myYear = newDate.getYear(); 2222 2223 fld.value = myMonth + "-" + myDay + "-" + myYear; 2224 // update string info 2225 len = fld.value.length; 2226 s = String(fld.value); 2227 } 2228 2229 // Check the date is a valid length 2230 if (len < 4 || len > 11) return false; 2231 2232 // Find positions of divider in the date 2233 var cnt = 0; 2234 for (var i = 0; i < 3; i++) { 2235 for (var j = 0; j < seps.length; j++) { 2236 if (s.indexOf(seps[j],cnt) != -1) { 2237 div = seps[j]; 2238 sepholder[i] = s.indexOf(seps[j],cnt); 2239 cnt = sepholder[i] + 1; 2240 break; 2241 } 2242 } 2243 } 2244 2245 // If element 2 is not 0 then more than 2 dividers have been found so date is invali
2245d. 2246 if (sepholder[2] != 0) return false; 2247 2248 // if no dividers are found strip out date parts 2249 if (sepholder[0] == 0 && sepholder[1] == 0) { 2250 switch (len) { 2251 case 4: // mdyy 2252 m = '0' + s.substring(0,1); 2253 d = '0' + s.substring(1,2); 2254 y = s.substring(2,4); 2255 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false) return false; 2256 break; 2257 case 5: // mmdyy 2258 m = s.substring(0,2); 2259 d = '0' + s.substring(2,3); 2260 y = s.substring(3,5); 2261 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false) return false; 2262 break; 2263 case 6: // mmddyy 2264 m = s.substring(0,2); 2265 d = s.substring(2,4); 2266 y = s.substring(4,6); 2267 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false) return false; 2268 break; 2269 case 7: //mmmddyy 2270 m = s.substring(0,3); 2271 d = s.substring(3,5); 2272 y = s.substring(5,7); 2273 if ((m = svcrm.formBuilderScripts.chkMonth(m)) == false) return false; 2274 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false) return false; 2275 break; 2276 case 8: //mmddyyyy 2277 m = s.substring(0,2); 2278 d = s.substring(2,4); 2279 y = s.substring(4,8); 2280 break; 2281 case 9: //mmmddyyyy 2282 m = s.substring(0,3); 2283 d = s.substring(3,5); 2284 y = s.substring(5,9); 2285 if ((m = svcrm.formBuilderScripts.chkMonth(m)) == false) return false; 2286 break; 2287 default: 2288 return false; 2289 } 2290 2291 if ((outdate = svcrm.formBuilderScripts.chkDate(m,d,y,sep)) == false) return false; 2292 2293 // valid date 2294 fld.value = outdate; 2295 return true; 2296 } else if (sepholder[0] != 0 && sepholder[1] != 0) { 2297 // process with dividers 2298 m = s.substring(0, sepholder[0]); 2299 d = s.substring(sepholder[0] + 1, sepholder[1]); 2300 y = s.substring(sepholder[1] + 1, s.length); 2301 } else 2302 // Only one divider 2303 return false; 2304 2305 // Check day and year are numeric 2306 if (isNaN(d) && isNaN(y)) return false; 2307 2308 // Make d day dd 2309 if (d.length == 1) d = '0' + d; 2310 // Make m month mm 2311 if (m.length == 1) m = '0' + m; 2312 // Make yy year yyyy 2313 if (y.length == 2) 2314 if ((y = svcrm.formBuilderScripts.chkYear(y)) == false ) return false; 2315 2316 // Make mmm month mm 2317 if (m.length == 3 || m.length == 4) { 2318 if ((m = svcrm.formBuilderScripts.chkMonth(m)) == false) return false; 2319 } 2320 2321 // Date components are OK 2322 if (d.length != 2 || m.length != 2 || y.length != 4) return false; 2323 2324 // Validate the date 2325 if ((outdate = svcrm.formBuilderScripts.chkDate(m,d,y,sep)) == false) return false; 2326 2327 // Valid date 2328 fld.value = outdate; 2329 return true; 2330 }; 2331 2332 // checks for a valid date 2333 // m: month part (2 digit) 2334 // d: day part (2 digit) 2335 // y: year part (4 digit) 2336 // returns: date string formatted if valid, false if invalid 2337 svcrm.formBuilderScripts.chkDate = function(m, d, y, sep){ 2338 var dayArray = new Array(31,28,31,30,31,30,31,31,30,31,30,31); 2339 var dstr = m + d + y; 2340 var filter=/^[0-9]{2}[0-9]{2}[0-9]{4}$/; 2341 2342 // Check mmddyyyy date supplied 2343 if (!filter.test(dstr)) return false; 2344 2345 // Check valid month 2346 filter=/01|02|03|04|05|06|07|08|09|10|11|12/; 2347 if (!filter.test(m)) return false; 2348 2349 // Check year 2350 if (y < 1900 || y > 2078) return false; 2351 2352 // Check for leap year 2353 var n = Number(y); 2354 if (n % 4 == 0 && (n % 100 != 0 || n % 400 == 0)) dayArray[1] = 29; 2355 2356 // Check for valid days for month 2357 var mnum = Number(m); 2358 if (d > dayArray[mnum - 1] || d <= 0) return false; 2359 2360 // Valid date 2361 return m + sep + d + sep + y; 2362 }; 2363 2364 // Checks for valid month 2365 // m: month part (3 or 4 digit)
2366 // returns: 2 digit month if valid, false is invalid 2367 svcrm.formBuilderScripts.chkMonth = function(m){ 2368 var months = new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'); 2369 2370 m = m.toUpperCase(); 2371 if (m.length == 3) { 2372 for (var i = 0; i < 12; i++) { 2373 if (m == months[i]) { 2374 m = i + 1; 2375 if (i < 10) 2376 m = '0' + m; 2377 return m; 2378 } 2379 } 2380 } else if (m.length == 4 && m == 'SEPT') { 2381 m = '09'; 2382 return m; 2383 } else 2384 return false; 2385 }; 2386 2387 // Check for a valid year 2388 // y: year part (2 digit) 2389 // returns: 4 digit year if valid, false if invalid 2390 svcrm.formBuilderScripts.chkYear = function(y){ 2391 if (y < 75) { 2392 y = "20" + y; 2393 return y; 2394 } else if (y >= 75) { 2395 y = "19" + y; 2396 return y; 2397 } else 2398 return false; 2399 }; 2400 2401 svcrm.formBuilderScripts.showDate = function(baseURL, fld, frm) { 2402 var urlSeparator = '?'; 2403 2404 if("https://philadelphiapa.simpleviewcrm.com/webapi/formbuilder/formbuilder.cfm".indexOf('?') != -1){ 2405 urlSeparator = '&'; 2406 } 2407 2408 var str = "https://philadelphiapa.simpleviewcrm.com/webapi/formbuilder/formbuilder.cfm" + urlSeparator + "action=popupCal&frm=" + frm + "&fld=" + fld + '&randid=' + new Date().getTime(); 2409 if (eval("document." + frm + "." + fld).value.length > 0) 2410 str = str + "&cdate=" + eval("document." + frm + "." + fld).value; 2411 2412 svcrm.formBuilderScripts.openPopup(str, "calwin", 210, 210, "width=210,height=210,toolbar=no,status=no,directories=no,menubar=no,resizable=no,scrollable=no", true); 2413 }; 2414 2415 svcrm.formBuilderScripts.openPopup = function(url, name, pWidth, pHeight, features, snapToLastMousePosition) { 2416 svcrm.formBuilderScripts.openPopupFocus(url, name, pWidth, pHeight, features, snapToLastMousePosition, true); 2417 }; 2418 2419 svcrm.formBuilderScripts.closePopup = function(){ 2420 if (svcrm.formBuilderScripts.curPopupWindow != null) { 2421 2422 if (!svcrm.formBuilderScripts.curPopupWindow.closed) 2423 svcrm.formBuilderScripts.curPopupWindow.close(); 2424 2425 svcrm.formBuilderScripts.curPopupWindow = null; 2426 } 2427 }; 2428 2429 svcrm.formBuilderScripts.openPopupFocus = function(url, name, pWidth, pHeight, features, snapToLastMousePosition, closeOnLoseFocus) { 2430 svcrm.formBuilderScripts.closePopup(); 2431 2432 if (snapToLastMousePosition) { 2433 if (svcrm.formBuilderScripts.lastMouseX - pWidth < 0) { 2434 svcrm.formBuilderScripts.lastMouseX = pWidth; 2435 } 2436 if (svcrm.formBuilderScripts.lastMouseY + pHeight > screen.height) { 2437 svcrm.formBuilderScripts.lastMouseY -= (svcrm.formBuilderScripts.lastMouseY + pHeight + 50) - screen.height; 2438 } 2439 svcrm.formBuilderScripts.lastMouseX -= pWidth; 2440 svcrm.formBuilderScripts.lastMouseY += 10; 2441 features += "screenX=" + svcrm.formBuilderScripts.lastMouseX + ",left=" + svcrm.formBuilderScripts.lastMouseX + "screenY=" + svcrm.formBuilderScripts.lastMouseY + ",top=" + svcrm.formBuilderScripts.lastMouseY; 2442 } 2443 2444 if (closeOnLoseFocus) { 2445 curPopupWindow = window.open(url, name, features, false); 2446 curPopupWindow.focus(); 2447 } else { 2448 win = window.open(url, name, features, false); 2449 win.focus(); 2450 } 2451 }; 2452 2453 svcrm.formBuilderScripts.setLastMousePosition = function(e) { 2454 if (navigator.appName.indexOf("Microsoft") != -1) e = window.event; 2455 svcrm.formBuilderScripts.lastMouseX = e.screenX; 2456 svcrm.formBuilderScripts.lastMouseY = e.screenY; 2457 }; 2458 /* +++++++++++++++++++++++++++ END Script copied from OLD CMS /includes/scripts/dateValidate.js +++++++++++++++++++++++++++++++++++++*/ 2459 2460 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS /includes/scripts/ziplookup.js +++++++++++++++++++++++++++++++++++++*/ 2461 svcrm.formBuilderScripts.zipLookup = function(fuseroot, zip, fldCity, fldState){ 2462 var scriptID = 'zipLookupJSONP'; 2463 2464 //kill the existing one if we have one 2465 if(document.getElementById(scriptID)){ 2466 document.getElementById(scriptID).parentNode.removeChild(document.getElementById(scriptID)); 2467 } 2468 2469 if (svcrm.formBuilderScripts.trim(zip).length != 5 || !svcrm.formBuilderScripts.checkChars(zip, "0123456789")){ 2470 return false; 2471 }else{ 2472 //jsonP this thing over 2473 var s = document.createElement('script'); 2474 s.id = scriptID; 2475 s.type = 'application/javascript'; 2476 s.src = 'https://philadelphiapa.simpleviewcrm.com/webapi/formbuilder/ziplookup.cfm?zip='+zip+'&fldCityId='+fldCity.id+'&fldStateId='+fldState.id+'&jsonp=svcrm.formBuilderScripts.processZipChange' 2477 document.body.appendChild(s); 2478 } 2479 }; 2480 2481 svcrm.formBuilderScripts.processZipChange = function(rtn){ 2482 var fldCity = document.getElementById(rtn.fldCityId); 2483 var fldState = document.getElementById(rtn.fldStateId); 2484 2485 if (rtn.city.length > 0 && fldCity != '')
2486 fldCity.value = rtn.city; 2487 else if (fldCity != '') 2488 fldCity.value = ''; 2489 2490 if (rtn.state.length > 0 && fldState != '') { 2491 for (var i = 0; i < fldState.options.length; i++) { 2492 if (fldState.options[i].value == rtn.state) { 2493 fldState.selectedIndex = i; 2494 break; 2495 } 2496 } 2497 if (i == fldState.options.length) fldState.selectedIndex = 0; 2498 } else if (fldState != '') 2499 fldState.selectedIndex = 0; 2500 }; 2501 /* +++++++++++++++++++++++++++ END Script copied from OLD CMS /includes/scripts/ziplookup.js +++++++++++++++++++++++++++++++++++++*/ 2502 2503 /* +++++++++++++++++++++++++++ START Script Calendar +++++++++++++++++++++++++++++++++++++*/ 2504 svcrm.formBuilderScripts.fbCalendar = { 2505 today: new Date(), 2506 monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], 2507 dayList: ['S','M','T','W','T','F','S'], 2508 2509 dayListTds: function(){ 2510 var rtn = ''; 2511 for(var i = 0; i < this.dayList.length; i++){ 2512 rtn += '<td align="center" class="Day" width="22">' + this.dayList[i] + '</td>'; 2513 } 2514 return rtn; 2515 }, 2516 2517 getPrevMonthDate: function (curDate) { 2518 var y = curDate.getFullYear(); 2519 var m = curDate.getMonth(); 2520 if (m === 0) { y -= 1; m = 12; } 2521 if (m.toString().length == 1) { m = '0' + m.toString(); } 2522 return m + '/01/' + y; 2523 }, 2524 2525 getNextMonthDate: function (curDate) { 2526 var y = curDate.getFullYear(); 2527 var m = curDate.getMonth() + 2; 2528 if (m == 13) { y += 1; m = 1; } 2529 if (m.toString().length == 1) { m = '0' + m.toString(); } 2530 return m + '/01/' + y; 2531 }, 2532 2533 getPrevYearDate: function(curDate){ 2534 var y = curDate.getFullYear()-1; 2535 var m = curDate.getMonth()+1; 2536 if (m.toString().length == 1) { m = '0' + m.toString(); } 2537 return m + '/01/' + y; 2538 }, 2539 2540 getNextYearDate: function (curDate) { 2541 var y = curDate.getFullYear() + 1; 2542 var m = curDate.getMonth()+1; 2543 if (m.toString().length == 1) { m = '0' + m.toString(); } 2544 return m + '/01/' + y; 2545 }, 2546 2547 getCurMonthName: function (curDate) { 2548 return this.monthNames[curDate.getMonth()]; 2549 }, 2550 2551 createCal: function (id, sDate, useToday) { 2552 try{ 2553 if(sDate){ 2554 sDate = new Date(sDate); 2555 }else{ 2556 sDate = this.today; 2557 } 2558 } catch (e) { 2559 sDate = this.today; 2560 } 2561 2562 var d = { 2563 inDate: sDate, 2564 today: this.today, 2565 day: sDate.getDate(), 2566 month: sDate.getMonth() + 1, 2567 year: sDate.getFullYear(), 2568 prevMonth: this.getPrevMonthDate(sDate), 2569 nextMonth: this.getNextMonthDate(sDate), 2570 2571 calendar: ' '+ 2572 '<div id="fbCalendar" align="center"> ' + 2573 '<div class="fbCalCloseBtn" onclick="svcrm.formBuilderScripts.fbCalendar.showDatePicker(document.getElementById(' + "'datepicker_" + id + "'" + '));"> </div> '+ 2574 '<table border="0" cellpadding="2" cellspacing="1" width="154"> '+ 2575 '<tr> '+ 2576 '<td class="CH"> '+ 2577 '<a class="CH" href="javascript:svcrm.formBuilderScripts.fbCalendar.replaceCal(\'' + id + '\',\'' + this.getPrevMonthDate(sDate) + '\');"><<</a> ' + this.getCurMonthName(sDate) + ' <a class="CH" href="javascript:svcrm.formBuilderScripts.fbCalendar.replaceCal(\'' + id + '\',\'' + this.getNextMonthDate(sDate) + '\');">>></a> '+ 2578 '</td> '+ 2579 '<td align="right" class="CH"> '+ 2580 '<a class="CH" href="javascript:svcrm.formBuilderScripts.fbCalendar.replaceCal(\'' + id + '\',\'' + this.getPrevYearDate(sDate) + '\');"><<</a> ' + sDate.getFullYear() + ' <a class="CH" href="javascript:svcrm.formBuilderScripts.fbCalendar.replaceCal(\'' + id + '\',\'' + this.getNextYearDate(sDate) + '\');">>></a>'+ 2581 '</td> '+ 2582 '</tr> '+ 2583 '</table> '+ 2584 '<table border="0" cellpadding="2" cellspacing="1" width="154"> '+ 2585 '<tr bgcolor="#ffffff">' + this.dayListTds() + '</tr>' + this.calDays(id, sDate, useToday) + 2586 '</table> '+ 2587 '</div>' 2588 }; 2589 2590 return d.calendar; 2591 }, 2592 2593 calDays: function(id, curDate, useToday){ 2594 var rtnvar = ''; 2595 var numDaysInMonth = new Date(curDate.getFullYear(), curDate.getMonth()+1, 0).getDate();
2596 var startofmonth = new Date(); 2597 startofmonth = new Date(curDate.getFullYear(),curDate.getMonth(),1); 2598 var rows = Math.ceil((startofmonth.getDay()+numDaysInMonth)/7); 2599 var cday = 1; 2600 var firstday = startofmonth.getDay()+1; 2601 var lastday = numDaysInMonth; 2602 2603 2604 var loopstart = 0; 2605 var loopend = 0; 2606 var currentDate = new Date(); 2607 currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()); 2608 2609 for(var i = 1; i <= rows; i++){ 2610 rtnvar += '<tr bgcolor="#ffffff">'; 2611 loopstart = ((i-1)*7)+1; 2612 loopend = loopstart+6; 2613 for(var d = loopstart; d <= loopend; d++){ 2614 rtnvar += '<td align="center" bgcolor="#ffffff" class="Day">'; 2615 if(d >= firstday && cday <= lastday){ 2616 var dt = new Date(curDate.getFullYear(), curDate.getMonth(), cday); 2617 var tmpDt = new Date(curDate.getFullYear(), curDate.getMonth(), curDate.getDate()); 2618 var className = (dt.getTime() == tmpDt.getTime() && useToday) ? 'today' : 'Day'; 2619 className += dt.getTime() == currentDate.getTime() ? ' currentDay' : ''; 2620 2621 var thisdate = this.convertToUserDate(parseInt(dt.getMonth()+1,10) +'/'+parseInt(dt.getDate(),10)+'/'+parseInt(dt.getFullYear(), 10)); 2622 2623 rtnvar += '<a class="' + className + '" href="javascript:svcrm.formBuilderScripts.fbCalendar.updateDate(\'' + id + '\',\'' + thisdate + '\');">' + cday + '</a><br>'; 2624 cday++; 2625 }else{ 2626 rtnvar += ' <br />'; 2627 } 2628 } 2629 rtnvar += '</tr>'; 2630 } 2631 2632 return rtnvar; 2633 }, 2634 2635 replaceCal: function (id, sDate) { 2636 var cal = this.createCal(id, sDate, false); 2637 if (document.getElementById(id + '_calendar')) { 2638 document.getElementById(id + '_calendar').innerHTML = cal; 2639 } else { 2640 var newDomElm = document.createElement('div'); 2641 newDomElm.style.position = 'absolute'; 2642 newDomElm.innerHTML = cal; 2643 newDomElm.id = id + '_calendar'; 2644 if (document.getElementById('fieldcontainer_' + id)) { 2645 document.getElementById('fieldcontainer_' + id).appendChild(newDomElm); 2646 } 2647 } 2648 2649 return; 2650 }, 2651 2652 updateDate: function(id, curDate){ 2653 document.getElementById(id).value = curDate; 2654 //document.getElementById(id).onchange(); 2655 if(document.getElementById(id + '_calendar')){ 2656 document.getElementById('fieldcontainer_' + id).removeChild(document.getElementById(id + '_calendar')); 2657 } 2658 2659 if(document.getElementById('datepicker_' + id)){ 2660 document.getElementById('datepicker_' + id).onclick = function(){ 2661 svcrm.formBuilderScripts.fbCalendar.showDatePicker(document.getElementById(id), document.getElementById(id).value); 2662 }; 2663 } 2664 2665 }, 2666 2667 showDatePicker: function(domElm, curDate){ 2668 var cleanID = domElm.id.replace('datepicker_', ''); 2669 var sDate = new Date(); 2670 if(!document.getElementById(cleanID + '_calendar')){ 2671 if(document.getElementById(cleanID)){ 2672 try{ 2673 if(curDate){ 2674 sDate = this.convertToUSDate(curDate); 2675 if(sDate == 'Invalid Date'){ 2676 sDate = new Date(); 2677 } 2678 } 2679 }catch(e){ 2680 sDate = new Date(); 2681 } 2682 this.getCalendar(cleanID, sDate); 2683 } 2684 }else{ 2685 document.getElementById('fieldcontainer_' + cleanID).removeChild(document.getElementById(cleanID + '_calendar')); 2686 } 2687 }, 2688 2689 getCalendar: function(id, curDate){ 2690 var newDomElm = document.createElement('div'); 2691 newDomElm.style.position = 'absolute'; 2692 newDomElm.innerHTML = this.createCal(id, curDate, true); 2693 newDomElm.id = id + '_calendar'; 2694 newDomElm.className = 'svcrm_datepicker'; 2695 document.getElementById('fieldcontainer_' + id).appendChild(newDomElm); 2696 }, 2697 2698 convertToUSDate: function(dte){ 2699 var rtnvar = false; 2700 var wrk = dte.split(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2701 var wrkdate = []; 2702 var mydate = ''; 2703 if(wrk.length > 0){ 2704 wrkdate[0] = parseInt(wrk[crm_locale.YAHOO_MDY_DAY_POSITION-1],10); //always holds the day 2705 wrkdate[1] = parseInt(wrk[crm_locale.YAHOO_MDY_MONTH_POSITION-1],10); //always holds the month 2706 wrkdate[2] = parseInt(wrk[crm_locale.YAHOO_MDY_YEAR_POSITION-1],10); //always holds the year 2707 2708 if(wrkdate[1] > 0 && wrkdate[1] < 13){ //Validate the months 2709 var monthsWithDaysRegExp = new RegExp("(4|6|9|11)", "gi"); 2710 var numdays = 31; 2711 if(wrkdate[1] == 2){//feb 2712 numdays = 28; 2713 //check if leap year 2714 if (wrkdate[2] % 4 === 0 && (wrkdate[2] % 100 !== 0 || wrkdate[2] % 400 === 0)){ 2715 numdays = 29; 2716 } 2717 }else if(monthsWithDaysRegExp.test(wrkdate[1])){ 2718 numdays = 30; 2719 } 2720 2721 if(wrkdate[0] > 0 && wrkdate[0] <= numdays){ //validate the days in this month 2722 if(wrkdate[2].toString().length == 2){ //if we have a two digit year pad it 2723 wrkdate[2] = chkYear(wrkdate[2]); 2724 } 2725 2726 if(wrkdate[2].toString().length == 4 && !isNaN(wrkdate[2])){ //validate the year, could expand this 2727 /* 2728 we are here we have a valid month 2729 and we have a valid day for that month 2730 and we have a valid 4 digit year 2731 */ 2732 //fld.value = wrkdate.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2733 wrk[1] = wrkdate[0]; //put the day back where it should be 2734 wrk[0] = wrkdate[1]; //put the month back where it should be 2735 wrk[2] = wrkdate[2]; //put the year back where it should be 2736 wrkdate = wrk.join("/"); //join on the us delim and return valid 2737 rtnvar = true; 2738 } 2739 } 2740 } 2741 } 2742 2743 if(!rtnvar){ //if we didn't get a good date from above we use today 2744 wrkdate = new Date(); 2745 } 2746 return wrkdate; 2747 }, 2748 2749 convertToUserDate: function(dte){ 2750 var rtnvar = false; 2751 var wrk = dte.split("/"); 2752 var wrkdate = []; 2753 var mydate = ''; 2754 if(wrk.length > 0){ 2755 wrkdate[0] = parseInt(wrk[1],10); //always holds the day 2756 wrkdate[1] = parseInt(wrk[0],10); //always holds the month 2757 wrkdate[2] = parseInt(wrk[2],10); //always holds the year 2758 2759 if(wrkdate[1] > 0 && wrkdate[1] < 13){ //Validate the months 2760 var monthsWithDaysRegExp = new RegExp("(4|6|9|11)", "gi"); 2761 var numdays = 31; 2762 if(wrkdate[1] == 2){//feb 2763 numdays = 28; 2764 //check if leap year 2765 if (wrkdate[2] % 4 === 0 && (wrkdate[2] % 100 !== 0 || wrkdate[2] % 400 === 0)){ 2766 numdays = 29; 2767 } 2768 }else if(monthsWithDaysRegExp.test(wrkdate[1])){ 2769 numdays = 30; 2770 } 2771 2772 if(wrkdate[0] > 0 && wrkdate[0] <= numdays){ //validate the days in this month 2773 if(wrkdate[2].toString().length == 2){ //if we have a two digit year pad it 2774 wrkdate[2] = chkYear(wrkdate[2]); 2775 } 2776 2777 if(wrkdate[2].toString().length == 4 && !isNaN(wrkdate[2])){ //validate the year, could expand this 2778 /* 2779 we are here we have a valid month 2780 and we have a valid day for that month 2781 and we have a valid 4 digit year 2782 */ 2783 //fld.value = wrkdate.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2784 wrk[crm_locale.YAHOO_MDY_DAY_POSITION-1] = wrkdate[0]; //put the day back where it should be 2785 wrk[crm_locale.YAHOO_MDY_MONTH_POSITION-1] = wrkdate[1]; //put the month back where it should be 2786 wrk[crm_locale.YAHOO_MDY_YEAR_POSITION-1] = wrkdate[2]; //put the year back where it should be 2787 wrkdate = wrk.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); //join on the correct delim and return valid 2788 rtnvar = true; 2789 } 2790 } 2791 } 2792 } 2793 2794 if(!rtnvar){ //I dont really know what to do here i guess just use today and convert to their date 2795 var t = new Date(); 2796 t = t.getMonth()+1 + '/' + t.getDay() + '/' + t.getFullYear(); 2797 wrkdate = this.convertToUserDate(t); 2798 } 2799 return wrkdate; 2800 }, 2801 2802 convertToUserMDOnlyDate: function(dte){ 2803 var dateFormat_MDOnly = crm_locale.DATEFMT_MDONLY.split(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2804 var _day = dte.getDate().toString();
2805 var _month = (dte.getMonth() + 1).toString(); 2806 var _dayFormat = ''; 2807 var _monthFormat = ''; 2808 var _dayPostion = ''; 2809 var _monthPostion = ''; 2810 2811 if(dateFormat_MDOnly[0].indexOf('d') != -1){ 2812 _dayFormat = dateFormat_MDOnly[0]; 2813 _monthFormat = dateFormat_MDOnly[1]; 2814 _dayPostion = 0; 2815 _monthPostion = 1; 2816 }else{ 2817 _dayFormat = dateFormat_MDOnly[1]; 2818 _monthFormat = dateFormat_MDOnly[0]; 2819 _dayPostion = 1; 2820 _monthPostion = 0; 2821 } 2822 2823 if(_dayFormat == 'dd' && _day.length != 2){ 2824 _day = '0' + _day; 2825 } 2826 if(_monthFormat == 'mm' && _month.length != 2){ 2827 _month = '0' + _month; 2828 } 2829 2830 var dsp = []; 2831 dsp[_dayPostion] = _day; 2832 dsp[_monthPostion] = _month; 2833 dsp = dsp.join(crm_locale.YAHOO_DATE_FIELD_DELIMITER); 2834 return dsp; 2835 } 2836 2837 }; 2838 /* +++++++++++++++++++++++++++ END Script Calendar +++++++++++++++++++++++++++++++++++++*/ 2839 2840 if (window.addEventListener) { 2841 window.addEventListener('load', svcrm.formBuilderScripts.__onload_function, false); 2842 } else if (window.attachEvent) { 2843 window.attachEvent('onload', svcrm.formBuilderScripts.__onload_function); 2844 } 2845 })(); 2846 /* +++++++++++++++++++++++++++ BEGIN Script copied from OLD CMS loadCRMForm +++++++++++++++++++++++++++++++++++++*/ 2847 </script>
2847 2848 2849 <style type="text/css"> 2850 /*** Styling for Forms ***/ 2851 form.simpleForm {} 2852 form.simpleForm fieldset {} 2853 form.simpleForm legend {} 2854 form.simpleForm label {} 2855 form.simpleForm label.label_hidden { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;} 2856 form.simpleForm .formreq { color: #B30000;} 2857 form.simpleForm input[type="radio"], form.simpleForm input[type="checkbox"] {} 2858 form.simpleForm input[type="text"] {} 2859 form.simpleForm input.date { cursor: pointer;} 2860 form.simpleForm select {} 2861 form.simpleForm table { background: none; border: none; margin: 0;} 2862 form.simpleForm table tr td { padding: 0;} 2863 form.simpleForm .captcha {} 2864 2865 #capimage { height: 17px; width:17px;} 2866 2867 form.simpleForm .svcrm_datepicker { 2868 z-index: 3; 2869 } 2870 #fbCalendar{ 2871 background-color: white; 2872 border:1px solid #336699; 2873 border-radius:2px; 2874 box-shadow: #336699 1px 1px; 2875 } 2876 #fbCalendar TD { font-size: 12px; font-family: Arial } 2877 #fbCalendar .Day { font-size: 12px; color: #000000; border:1px solid transparent;} 2878 #fbCalendar .CH { font-size: 12px; color: #336699; font-weight: bold; bgcolor: #cccccc; } 2879 #fbCalendar A.today:link, #fbCalendar A.today:visited{text-decoration:none; color:#000000; font-weight: bold;} 2880 #fbCalendar A.today:hover{text-decoration:none; color:#CC3300; font-weight: bold;} 2881 #fbCalendar A.Day:link, #fbCalendar A.Day:visited{text-decoration:none; color:#990000; font-weight: normal;} 2882 #fbCalendar A.Day:hover{text-decoration:none; color:#CC3300; font-weight: normal; border:1px solid #000000;} 2883 #fbCalendar A.CH:link, #fbCalendar A.CH:visited{text-decoration:none; color:#336699;} 2884 #fbCalendar A.CH:hover{text-decoration:none; color:#0033FF;} 2885 #fbCalendar A.close:link, #fbCalendar A.close:visited{font-size: 10px; text-decoration:none; color:#666666;} 2886 #fbCalendar A.close:hover{font-size: 10px; text-decoration:underline; color:#666666;} 2887 #fbCalendar A:link, #fbCalendar A:visited{text-decoration:none; color:#000099;} 2888 #fbCalendar A:hover{text-decoration:none; color:#0000FF;} 2889 #fbCalendar .currentDay{border:1px solid #336699; padding: 2px;} 2890 #fbCalendar div.fbCalCloseBtn{ 2891 background:transparent url(http://PhiladelphiaPA.simpleviewcrm.com/core_crm/Resources/images/calx.gif) no-repeat; 2892 width:17px; 2893 height:13px; 2894 float:right; 2895 border:2px solid #ffffff; 2896 } 2897 #fbCalendar div.fbCalCloseBtn:hover{ 2898 cursor: pointer; 2899 border:2px solid #336699; 2900 } 2901 2902 /*** Mobile ***/ 2903 @media only screen and (max-width: 40em) {} 2904 /*** Tablet ***/ 2905 @media only screen and (min-width: 40.063em) and (max-width: 64em) {} 2906 2907 /*** Desktop ***/ 2908 @media only screen and (min-width: 64.063em) { 2909 form.simpleForm label { max-width: 430px; text-align: right;} 2910 } 2911 </style> 2912 </div> 2913 </div> 2914 2915</div><!-- close #site --> 2916 2917
2918<script type="speculationrules"> 2919{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/pcvb/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 2920</script>
vendor: 1 bytes, line 2920
2920
2921<script id="ajax-map-js-extra"> 2922var myAjax = {"ajaxurl":"https://www.discoverphl.com/wp-admin/admin-ajax.php"}; 2923//# sourceURL=ajax-map-js-extra 2924</script>
vendor: 1 bytes, line 2924
2924
2925<script id="ajax-map-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/js/map/ajax-map.js?ver=7.2"></script>
vendor: 1 bytes, line 2925
2925
2926<script id="push10-ajax-handler-js-extra"> 2927var myAjax = {"ajaxurl":"https://www.discoverphl.com/wp-admin/admin-ajax.php"}; 2928//# sourceURL=push10-ajax-handler-js-extra 2929</script>
vendor: 1 bytes, line 2929
2929
2930<script id="push10-ajax-handler-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/Push10AjaxHandler/js/ajax/push10-ajax.js?ver=1"></script>
vendor: 1 bytes, line 2930
2930
2931<script id="map-js" src="https://api.mapbox.com/mapbox-gl-js/v2.9.2/mapbox-gl.js?ver=1"></script>
vendor: 1 bytes, line 2931
2931
2932<script id="map_geo-js" src="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-geocoder/v4.7.0/mapbox-gl-geocoder.min.js?ver=1"></script>
vendor: 1 bytes, line 2932
2932
2933<script id="simple_pagination-js" src="https://cdnjs.cloudflare.com/ajax/libs/simplePagination.js/1.6/jquery.simplePagination.js?ver=1"></script>
vendor: 1 bytes, line 2933
2933
2934<script id="custom-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/dist/javascript.min.js?ver=1790150693"></script>
vendor: 1 bytes, line 2934
2934
2935<script id="pcvb-newsletter-pop-out-script-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/newsletter-pop-out/pcvb-newsletter-popout.js?ver=1790150694"></script>
vendor: 1 bytes, line 2935
2935
2936<script id="gt_widget_script_36616898-js-before"> 2937window.gtranslateSettings = /* document.write */ window.gtranslateSettings || {};window.gtranslateSettings['36616898'] = {"default_language":"en","languages":["zh-CN","nl","en","fr","de","it","pt","ru","es"],"url_structure":"none","detect_browser_language":1,"wrapper_selector":"#gt-wrapper-36616898","horizontal_position":"inline","flags_location":"\/wp-content\/plugins\/gtranslate\/flags\/"}; 2938//# sourceURL=gt_widget_script_36616898-js-before 2939</script>
2939<script src="https://www.discoverphl.com/wp-content/plugins/gtranslate/js/ln.js?ver=3.1.1" data-no-optimize="1" data-no-minify="1" data-gt-orig-url="/blog-post/philadelphia-2026/" data-gt-orig-domain="www.discoverphl.com" data-gt-widget-id="36616898" defer></script>
2939<script id="gt_widget_script_35308157-js-before"> 2940window.gtranslateSettings = /* document.write */ window.gtranslateSettings || {};window.gtranslateSettings['35308157'] = {"default_language":"en","languages":["zh-CN","nl","en","fr","de","it","pt","ru","es"],"url_structure":"none","detect_browser_language":1,"wrapper_selector":"#gt-wrapper-35308157","horizontal_position":"inline","flags_location":"\/wp-content\/plugins\/gtranslate\/flags\/"}; 2941//# sourceURL=gt_widget_script_35308157-js-before 2942</script>
2942<script src="https://www.discoverphl.com/wp-content/plugins/gtranslate/js/ln.js?ver=3.1.1" data-no-optimize="1" data-no-minify="1" data-gt-orig-url="/blog-post/philadelphia-2026/" data-gt-orig-domain="www.discoverphl.com" data-gt-widget-id="35308157" defer></script>
2942<script id="cb05_related_content_columns-js" src="https://www.discoverphl.com/wp-content/themes/pcvb/assets/js/blocks/cb05_related_content_columns.js?ver=1790150694"></script>
vendor: 1 bytes, line 2942
2942
2943<script id="wp-emoji-settings" type="application/json"> 2944{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.discoverphl.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1"}} 2945</script>
vendor: 1 bytes, line 2945
2945
2946<script type="module"> 2947/*! This file is auto-generated */ 2948var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!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!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));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(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 2949//# sourceURL=https://www.discoverphl.com/wp-includes/js/wp-emoji-loader.min.js 2950</script>
2950 2951
2952<script> 2953 /*<![CDATA[*/ 2954 (function(w, a, b, d, s) { 2955 w[a] = w[a] || {}; 2956 w[a][b] = w[a][b] || { 2957 q: [], 2958 track: function(r, e, t) { 2959 this.q.push({ 2960 r: r, 2961 e: e, 2962 t: t || +new Date 2963 }); 2964 } 2965 }; 2966 var e = d.createElement(s); 2967 var f = d.getElementsByTagName(s)[0]; 2968 e.async = 1; 2969 e.src = '//marketing.discoverphl.com/cdnr/forpci85/acton/bn/tracker/45609'; 2970 f.parentNode.insertBefore(e, f); 2971 })(window, 'ActOn', 'Beacon', document, 'script'); 2972 ActOn.Beacon.track(); /*]]>*/ 2973</script>
vendor: 1 bytes, line 2973
2973
2974<script type="text/javascript"> 2975 ! function() { 2976 if (!document.querySelector("[src*='7512D3C0-5EF5-ABB9-7FDD-7C76C78FA269']")) { 2977 var e = document.createElement("script"); 2978 e.type = "text/javascript", e.async = !0, e.src = "//www.rtb123.com/tags/7512D3C0-5EF5-ABB9-7FDD-7C76C78FA269/btp.js"; 2979 var t = document.getElementsByTagName("head")[0]; 2980 t ? t.appendChild(e, t) : (t = document.getElementsByTagName("script")[0]).parentNode.insertBefore(e, t) 2981 } 2982 }(); 2983</script>
2983 2984 2985
2986<script> 2987 document.addEventListener('DOMContentLoaded', function() { 2988 var popup = document.getElementById('popup'); 2989 var closePopupBtn = document.getElementById('closePopupBtn'); 2990 var popupButton = document.getElementById('popupButton'); 2991 2992 function showPopup() { 2993 if (popup) { 2994 2995 popup.style.display = 'flex'; 2996 } 2997 } 2998 2999 function hidePopup() { 3000 if (popup) { 3001 3002 popup.style.display = 'none'; 3003 } 3004 localStorage.setItem('popupDisplayed', new Date().toISOString()); 3005 } 3006 3007 function shouldShowPopup() { 3008 var lastDisplayed = localStorage.getItem('popupDisplayed'); 3009 if (!lastDisplayed) return true; 3010 3011 var lastDisplayedDate = new Date(lastDisplayed); 3012 var now = new Date(); 3013 3014 return lastDisplayedDate.toDateString() !== now.toDateString(); 3015 } 3016 3017 if (shouldShowPopup()) { 3018 showPopup(); 3019 } 3020 3021 closePopupBtn.onclick = hidePopup; 3022 popupButton.onclick = hidePopup; 3023 3024 window.onclick = function(event) { 3025 if (event.target == popup) { 3026 hidePopup(); 3027 } 3028 } 3029 }); 3030 3031 function clickready() { 3032 jQuery("#cb27-keyword-clear").on('click', function() { 3033 jQuery('#cb27-keyword-submit')[0].click(); 3034 }) 3035 } 3036 3037 setTimeout(clickready, 3000); 3038</script>
3038 3039
3040<script> 3041 document.addEventListener("DOMContentLoaded", function() { 3042 if (document.body.classList.contains('page-id-12466')) { 3043 // Detect iOS Safari only 3044 3045 3046 // Only run on iOS devices 3047 const isIOS = /iphone|ipad|ipod/i.test(navigator.userAgent) && !!navigator.maxTouchPoints; 3048 if (!isIOS) return; 3049 3050 const tables = document.querySelectorAll(".page-id-12466.interior-page .wysiwyg .tablepress"); 3051 3052 tables.forEach(function(table) { 3053 3054 // Create track + thumb 3055 const track = document.createElement("div"); 3056 track.classList.add("ios-scroll-track"); 3057 3058 const thumb = document.createElement("div"); 3059 thumb.classList.add("ios-scroll-thumb"); 3060 3061 track.appendChild(thumb); 3062 table.parentNode.insertBefore(track, table.nextSibling); 3063 3064 // Calculate and update thumb width + position 3065 function updateThumb() { 3066 const ratio = table.clientWidth / table.scrollWidth; 3067 if (ratio >= 1) { 3068 track.style.display = "none"; // Hide if no scroll needed 3069 return; 3070 } 3071 track.style.display = "block"; 3072 const thumbWidth = Math.max(ratio * track.offsetWidth, 30); 3073 const maxScroll = table.scrollWidth - table.clientWidth; 3074 const scrollRatio = maxScroll > 0 ? table.scrollLeft / maxScroll : 0; 3075 const maxThumbLeft = track.offsetWidth - thumbWidth; 3076 3077 thumb.style.width = thumbWidth + "px"; 3078 thumb.style.left = (scrollRatio * maxThumbLeft) + "px"; 3079 } 3080 3081 // Small delay so layout is fully rendered before first calculation 3082 setTimeout(updateThumb, 100); 3083 window.addEventListener("resize", updateThumb); 3084 3085 // Sync table scroll â thumb 3086 table.addEventListener("scroll", updateThumb); 3087 3088 // Click on track â jump table scroll 3089 track.addEventListener("click", function(e) { 3090 if (e.target === thumb) return; // ignore clicks on thumb itself 3091 const rect = track.getBoundingClientRect(); 3092 const clickX = e.clientX - rect.left; 3093 const ratio = clickX / track.offsetWidth; 3094 table.scrollLeft = ratio * (table.scrollWidth - table.clientWidth); 3095 }); 3096 3097 // Drag thumb to scroll table 3098 let isDragging = false; 3099 let startX = 0; 3100 let startScrollLeft = 0; 3101 3102 thumb.addEventListener("touchstart", function(e) { 3103 isDragging = true; 3104 startX = e.touches[0].clientX; 3105 startScrollLeft = table.scrollLeft; 3106 e.preventDefault(); // Prevent page scroll while dragging thumb 3107 }, { 3108 passive: false 3109 }); 3110 3111 document.addEventListener("touchmove", function(e) { 3112 if (!isDragging) return; 3113 const dx = e.touches[0].clientX - startX; 3114 const trackScrollableWidth = track.offsetWidth - thumb.offsetWidth; 3115 if (trackScrollableWidth <= 0) return; 3116 const scrollRatio = (table.scrollWidth - table.clientWidth) / trackScrollableWidth; 3117 table.scrollLeft = startScrollLeft + (dx * scrollRatio); 3118 updateThumb(); 3119 }, { 3120 passive: true 3121 }); 3122 3123 document.addEventListener("touchend", function() { 3124 isDragging = false; 3125 }); 3126 3127 }); 3128 3129 3130 } 3131 }); 3132</script>
3132 3133
3134<script id='satisfiScript' src='https://chat.satis.fi/popup/embedder?popupId=18789'></script>
3134 3135<img src="//advertiser-conversion.clicktripz.com/api/advertisers/v2/conversions?advertiserID=682&format=image" />
3136<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-ffbc3c15bbce2bcb1ca","applicationID":"1318524340","transactionName":"bgNbbUtRWUVVBRIMDldJeFpNWVhYGxUPCwZVAw==","queueTime":0,"applicationTime":2653,"atts":"QkRYGwNLSks=","errorBeacon":"bam.nr-data.net","agent":""}</script>
3136</body> 3137
3138<script type="text/javascript" src="https://snapsea.fra1.cdn.digitaloceanspaces.com/assets/12162022-gallery.js" async></script>
3138 3139 3140</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.