On Tuesday, Harper — an imprint of HarperCollins Publishing — announced the release of Shapiro’s forthcoming memoir, Where We Keep the Light: Stories From a Life of Service, which will hit shelves on Jan. 27, 2026.
Shapiro, 52, has worked in some level of government for his entire career: on Capitol Hill as a staffer, in Montgomery County as a commissioner, and in Harrisburg as a state representative, attorney general, and now governor. He has noted that he has never lost an election, going back to his election as student body president his freshman year at the University of Rochester. Along the way, elected officials have whispered about his talents as a politician, orator, and rumored presidential ambitions.
The Montgomery County native has become a key player in the national Democratic Party, touting a brand as a governor of a split legislature in the most sought-after swing state. His administration’s motto is “Get Stuff Done,” which he defines as bringing Democrats and Republicans together to accomplish long-delayed reforms, or restarting residents’ trust by improving their interactions with state government. (Pennsylvania still has not finished its state budget, which was due July 1, as legislators from the Democratic-controlled House and GOP-controlled Senate cannot agree on how much they should spend this fiscal year and causing school districts, counties, and nonprofits to take out significant loans to continue offering services during the 113-day budget impasse.)
Shapiro’s rise through the Democratic Party ranks skyrocketed last year, when he became a front-runner for vice president during Harris’ whirlwind, 107-day presidential campaign, in which she ultimately chose Minnesota Gov. Tim Walz as her running mate. Harris also released a book this year, which includes stories from her interview with Shapiro for the role.
Shapiro, who was born in Kansas City, Mo., before moving to Montgomery County, has credited his upbringing by his parents — his father a pediatrician, and his mother an educator — as laying the foundation for his life in public service. Shapiro has four children and is married to his high school sweetheart, Lori. He and his family still live in Abington Township and split their time between their family home and the governor’s mansion in Harrisburg.
Steve Hirst relies on virtual visits with his urologist, whose office is an hour away from his Broomall home, to stay on top of his treatment plan and renew medications.
But earlier this month Hirst, 70, got a notice from his doctor’s office informing him that it could no longer schedule telemedicine visits for patients like him who have Medicare because of new federal policy changes.
Medicare began covering telemedicine services during the COVID-19 pandemic and has maintained the popular offering through temporary waivers approved by Congress since. But the most recent of those waivers expired at the end of September when Congress failed to reach a budget deal and the government shut down.
The change specifically affects traditional Medicare, which is administered by the government for people 65 and older and some with disabilities. People with Medicare Advantage plans, which are administered by private insurers, should check with their plan.
Some of the Philadelphia area’s leading health systems, including Temple Health and Penn Medicine, have said they are continuing to provide telehealth services to people with Medicare and temporarily suspending billing for those services, with hope that coverage will be reinstated when a budget deal is eventually reached.
But smaller provider practices may not have the luxury of delaying payment for thousands of dollars in services for an indefinite period of time.
With the government shutdown in its third week, Republicans and Democrats seem no closer to reaching a deal. The next vote is scheduled for Monday evening, though no deal is expected.
Another health policy issue — tax credits for people who buy insurance through Affordable Care Act marketplaces, including Pennie in Pennsylvania — has been a major sticking point in the ongoing federal budget debate. Democrats want the enhanced subsidies extended permanently as part of the budget deal, and Republicans have refused, arguing that lawmakers could address the issue separately, before the subsidies expire at the end of the year.
Meanwhile, the waiver’s expiration has left Hirst and others who are covered by Medicare unsure how they will access needed health services.
Telehealth rose in popularity during the COVID-19 pandemic, when people were urged to avoid hospitals unless they were having an emergency and when most routine procedures were canceled.
The approach was especially helpful to older adults and people with disabilities, who needed to stay in contact with doctors for ongoing treatment and who were considered particularly vulnerable to severe illness from COVID-19.
After the pandemic ended, many private insurers, Medicaid, and Medicare permanently adopted telehealth coverage for certain services, such as mental health, because of its popularity during the pandemic.
Medicare has used temporary waivers to continue telehealth coverage for other types of doctors’ visits.
Beyond patient popularity, research has found that telehealth visits can be as effective as in-person visits for certain types of care, such as palliative care for cancer patients, while improving access to patients with transportation challenges.
Philadelphia health systems respond
Philadelphia’s largest health systems said they are optimistic that coverage will be reinstated — either by a new temporary waiver or a permanent change — when Congress reaches a new budget agreement and the shutdown ends.
Temple Health will continue to provide telehealth services to Medicare patients for the next three weeks, in anticipation of Congress reaching a deal.
Penn Medicine has not billed Medicare patients for telehealth visits since the shutdown began and has paused its process for filing claims until the government reopens, a spokesperson said.
“Congress has been vocal in its support of telehealth and its value, and we are hopeful that legislation will be passed to ensure permanent Medicare telehealth coverage and flexibilities once the government reopens,” Penn said in a statement.
Main Line Health has been reaching out to affected patients to help them change previously scheduled virtual visits into in-person appointments or reschedule virtual visits that can be put off.
Jefferson Health did not respond to a request for comment in time for publication.
Patients in limbo
Hirst drives into Philadelphia to see his urologist in person once a year. Every three months, he has a virtual visit to check in and renew prescriptions.
Driving to Philadelphia for every appointment would be inconvenient, but Hirst will probably do it “for now,” he said.
But he worries about older adults and people with disabilities who can’t safely drive to the doctor’s office, and for whom virtual care is a lifeline. They could end up putting themselves or others at risk being on the road when they shouldn’t be. Or they may end up skipping needed care because they don’t have a ride.
A Montgomery County judge sharply rebuked a Dresher woman Monday before sentencing her to 25 to 50 years in state prison in the murder of her son, telling her that she failed in her fundamental duties as a parent by allowing him to waste away to just 59 pounds.
During the hearing before Judge Wendy Rothstein, Sherrilynn Hawkins, 43, wept, calling Tylim Hatchett her “first love” and best friend while pleading guilty to third-degree murder, neglect, and related crimes in his September 2024 death.
She described how the 21-year-old fought all his life to overcome cerebral palsy, blindness and other debilitating medical issues, and required constant care to, among other things, feed himself.
“I made Tylim a promise to keep him safe, and after 21 years, I failed and broke that promise,” Hawkins said. “And I will always be sorry for that.”
Despite Hawkins’ professed remorse, prosecutors said, in the last three weeks of her son’s life, she frequently left him alone in her apartment, sometimes for 24 hours at a time.
All the while, she accepted funding from Aveanna, a home healthcare agency, to work as her son’s primary caregiver. She also included Lorretta Harris, one of her friends, on that payroll to receive a portion of the money to care for him part-time.
In reality, neither woman spent much time with Hatchett and falsified their records with the agency, despite being paid more than $48,000 combined, according to evidence presented in court Monday.
Prosecutors said Tylim Hatchett weighed just 59 pounds when he died last September.
Harris, 49, pleaded guilty to neglect of a care-dependent person earlier this year. Her sentencing is scheduled for December.
In handing down Hawkins’ sentence Monday, Rothstein said Hawkins had betrayed her son’s trust and, even worse, had prioritized scamming Aveanna for financial gain.
“You utilized state funding and let your child die,” she said, telling Hawkins that her conduct was despicable. “And you did all this while driving around in a Mercedes.
“I’d like to say more, but I’m left speechless that a parent could do this.”
Hatchett was found dead Sept. 18, 2024, inside his mother’s apartment at the Residences at the Promenade, according to investigators.Police were called to the apartment by the man’s father. An autopsy found that he was severely malnourished and dehydrated.
Evidence pulled from Hawkins’ phone by detectives showed that in the weeks leading up to her son’s death, she spent the majority of her time with her younger son, whom she brought with her to her boyfriend’s house in Philadelphia, according to the affidavit or probable cause for her arrest.
During this time, she texted Vernon Hatchett, her son’s father, telling him “this might be it” for their son, and later that she would let him know when to make funeral arrangements.
The elder Hatchett, 40, has been charged with neglect, abuse, and conspiracy. However, he has been a fugitive from justice for more than a year and is currently being sought by the U.S. Marshals Service.
Hawkins also lied to concerned family members, saying she had taken her son to a nearby hospital for treatment, according to prosecutors.
But First Assistant District Attorney Ed McCann said Monday that the only time Hawkins sought medical care for her son in 2024 was at the beginning of the year, when he weighed 90 pounds.
Hatchett, McCann said, had lost more than third of his body weight between then and his death and had been “left alone in that apartment to die.”
“It’s horrific. It doesn’t have anything to do with being a parent; it has everything to do with being a human being,” he said. “I think the defendant failed at the fundamentals of being a human being by allowing this to happen.”
Hawkins’ family members and friends took turns Monday imploring Rothstein to be lenient. They told the judge that Hawkins had struggled with fertility issues in her youth and that she had endeavored to keep her son healthy and happy through his many medical issues.
They said that she had frequently asked for assistance in caring for Hatchett and that those pleas had been ignored.
Hawkins’ attorney, Joseph Schultz, said she is a caring and loving mother that had simply become overwhelmed.
“Today, she took responsibility, and she’s going to have to live with this the rest of her life,” Schultz said.
This Willistown Township home, for sale for nearly $2 million, was designed by Robert McElroy and has a wing that was devoted to his wife Annamaria’s art studio.
McElroy, who is credited with building more than 200 homes around the Main Line, designed and built this home for his own family in 1975, according to Marion Dinofa, Compass RE Realtor and modern home specialist.
Tucked far off Rabbit Run Road in Willistown Township, McElroy’s three-bedroom, 3½-bath home features a contemporary design and floor-to-ceiling windows that let in abundant natural light.
“I see a lot of really cool houses, but this one, almost more than any other house, is truly like you’re living in a work of art, between the craftsmanship of the woodworking, the views through the windows that are ever changing with the seasons, and the design of the home itself,” Dinofa said.
Wooden details make Robert McElroy’s former home in Willistown Township unique, said Realtor Marion Dinofa.
Almost every piece of wood in the home was crafted by Horace Hartshaw, who collaborated with the renowned sculptural furniture maker Wharton Esherick. This includes everything from the wood doors to the custom kitchen cabinets to the staircases, including a spiral one at its center.
McElroy wasn’t the only artist who resided in the home: His wife, Annamaria, a painter and sculptor, also left her mark, showcasing her artwork on the walls and using a wing of the home as her studio.
Dinofa noted that the house also includes a detached two-story garage that could be converted into more creative space.
The secluded home features custom wood features that were crafted by renowned artist Horace Hartshaw and lots of windows.
Between Robert’s vision and Annamaria’s artistic touches, their home “was a labor of love,” Dinofa said. “And it’s really well preserved. You can tell it hasn’t changed much.”
Annamaria and Robert lived at the home into their 90s, Dinofa said. They died in 2023 and 2024, respectively. Dinofa said the home is being sold by their daughter, Loretta.
Dinofa said she could see the property being bought by artists or by adventurous young parents who want to raise their children amid nature.
“It would be such a fun place for kids to play outside,” with a stream in the backyard and plenty of space to run around, Dinofa said. “I can only imagine the wildlife that they have viewed from that house.”
The remainder of Cheltenham High’s football season has been canceled as officials deepen an investigation into alleged hazing by team members, which the school district said involves “inappropriate physical contact.”
Superintendent Brian Scriven told families late Sunday night in an email that officials made the call “with a deep sense of regret” as the district extends its investigation.
“We do not condone or tolerate hazing or abuse of any kind in our sports programs or in our schools,” Scriven wrote. “It is our duty and obligation to protect and prioritize student safety and well being, even when we know that our decisions may come with consequences and disappointment.”
Scriven canceled Friday’s home football game — the team was supposed to play Bristol Township’s Harry S. Truman High School at nearby Springfield High, as Cheltenham’s field was unavailable — hours before the game was to begin. At that time, he called it a temporary suspension of the season.
The decision caused shock and anger. Senior Night was scheduled, with recognition ceremonies planned for athletes and members of the cheerleading, pep band, color guard, and drum line programs.
“We are very sensitive to the emotions of those most directly impacted,” Scriven wrote.
Only one game remained on the schedule — Friday at Quakertown.
Officials learned of multiple incidents
News of the alleged hazing came three weeks ago, Scriven said, when someone reported that a student was assaulted in the football locker room.
Officials alerted ChildLine, the state’s abuse-reporting system, which they are legally mandated to notify when alleged abuse happens. They also notified Cheltenham police, which began its own investigation.
At the time, they believed the incident to be isolated, Scriven said in the letter.
But as the investigation developed, “additional information came to light indicating that hazing and/or inappropriate physical conduct may be occurring more broadly in the program. Last Friday, we received additional information, including reports indicating multiple team members engaged in hazing through physical contact.”
That’s when officials decided to temporarily suspend the season and investigate further. The district began working with an external consultant over the weekend, Scriven said, and the investigation remains ongoing.
The police investigation is alsoongoing, said Scriven, who urged anyone with information to contact Cheltenham police. He said the district is cooperating with police and has also been in touch with the Montgomery County District Attorney’s Office.
“Hazing is a very serious and significant issue in school athletic programs and can lead to criminal charges,” Scriven wrote. “We ask for continued patience and respect for our obligation to thoroughly investigate these allegations. We also ask that our school community not rush to judgment against any of our student-athletes or coaches.”
Saving Senior Night
Senior Night will be recreated in some ways, Scriven said — for those football players, cheerleaders, and members of the pep band, drum line, and color guard uninvolved in the alleged hazing.
“We will do our very best to involve students as we develop new plans to honor our seniors,” Scriven said.
“As a parent, educator, and former coach and student-athlete, I am troubled by this matter on numerous levels,” Scriven said. “This decision is not one that was made lightly. I will continue to communicate as openly as possible as we work through this in the coming days and weeks.
“We must move forward as a district and school community committed to student safety and respect, and do all we can to uphold those values.”
The Philadelphia region is once again back in the spotlight at HBO, this time courtesy of Task, from the makers of Mare of Easttown. The show was spotted last year filming everywhere from Center City to Coatesville.
And, boy, did we make the cut.
story continues after advertisement
With the show underway, it's clear that the Philadelphia region is integral to Task. Here, we'll be rounding up all the local spots — sans private homes — we can identify in Task, updating each Sunday after episodes air. Check out the map below to see what locations wound up in the show, and why the series takes us there.
Loading…
Coatesville
High Bridge
This instantly recognizable Coatesville landmark serves as the location for where County Chief Dorsey (Raphael Sbarge) appears to seal Grasso's (Fabien Frankel) fate with the Dark Hearts.
Media
Delaware County Courthouse and Government Center
Courtesy of Delaware County Government Center and Courthouse
Here, Tom (Mark Ruffalo) gives a touching family statement at a court hearing for his son, Ethan (Andrew Russel), in what is the emotional climax of the series. As The Inquirer reported last year, the production took over Courtroom 15 for filming.
West Chester
Stroud Preserve
David Swanson / Staff Photographer
The last we see of Maeve (Emilia Jones) in the series, she is driving past Stroud Preserve's Creek Road parking lot with her cousins in tow. Where they're heading is anybody's guess, but we hope it's somewhere with fewer Dark Hearts members.
story continues after advertisement
That was every location we could spot in this week’s episode. Let us know below if we missed anything.
Otherwise, explore the map of all locations featured to date. Tap onHover overa pin to learn more.
What did we miss?
Did you spot any locations in this week’s episode that we missed? Let us know.
That's it for Task. But rest assured, if HBO decides to focus on Philly again, we'll be back. Until then, see youse later.
Staff Contributors
Design and Development: Sam Morris
Reporting: Nick Vadala
Editing: Emily Babay
First seen in episode
(()=>{var gr=Object.create;var et=Object.defineProperty;var mr=Object.getOwnPropertyDescriptor;var yr=Object.getOwnPropertyNames;var wr=Object.getPrototypeOf,br=Object.prototype.hasOwnProperty;var tt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Mr=(e,t,r,n)=>{if(t&&typeof t==”object”||typeof t==”function”)for(let i of yr(t))!br.call(e,i)&&i!==r&&et(e,i,{get:()=>t[i],enumerable:!(n=mr(t,i))||n.enumerable});return e};var Sr=(e,t,r)=>(r=e!=null?gr(wr(e)):{},Mr(t||!e||!e.__esModule?et(r,”default”,{value:e,enumerable:!0}):r,e));var dt=tt(U=>{var Lr={0:”Jan.”,1:”Feb.”,2:”March”,3:”April”,4:”May”,5:”June”,6:”July”,7:”Aug.”,8:”Sept.”,9:”Oct.”,10:”Nov.”,11:”Dec.”};function lt(e){return e===void 0&&(e=new Date),Lr[e.getMonth()]}var Pr={0:”Jan”,1:”Feb”,2:”Mar”,3:”Apr”,4:”May”,5:”Jun”,6:”Jul”,7:”Aug”,8:”Sep”,9:”Oct”,10:”Nov”,11:”Dec”};function ut(e){return e===void 0&&(e=new Date),Pr[e.getMonth()]}function ne(e){return e==null}function ft(e){return typeof e==”number”&&isFinite(e)}function Se(e){return ft(e)&&Math.floor(e)===e}var kr=[“one”,”two”,”three”,”four”,”five”,”six”,”seven”,”eight”,”nine”],Dr=[“million”,”billion”,”trillion”,”quadrillion”,”quintillion”,”sextillion”,”septillion”,”octillion”,”nonillion”,”decillion”],ct=[“th”,”st”,”nd”,”rd”,”th”,”th”,”th”,”th”,”th”,”th”],Ar=[11,12,13];function ht(e){if(ne(e))return””;var t=+e;return Se(t)?Ar.indexOf(t%100)>-1?ct[0]:ct[t%10]:””}var Er=[“first”,”second”,”third”,”fourth”,”fifth”,”sixth”,”seventh”,”eighth”,”ninth”],$r=new RegExp(/s+([^s]*)s*$/);U.apdate=function(e){return e===void 0&&(e=new Date),lt(e)+” “+e.getDate()+”, “+e.getFullYear()},U.apdatetab=function(e){return e===void 0&&(e=new Date),ut(e)+” “+e.getDate()+”, “+e.getFullYear()},U.apmonth=lt,U.apmonthtab=ut,U.apnumber=function(e){if(ne(e))return””;var t=+e;return Se(t)?t=10?e.toString():kr[t-1]:e.toString()},U.aptime=function(e){e===void 0&&(e=new Date);var t,r,n=e.getHours(),i=e.getMinutes(),o=i===0;if(o){if(n===0)return”midnight”;if(n===12)return”noon”}return n0?n:12):(t=”p.m.”,r=n===12?n:n-12),o?r+” “+t:r+”:”+(i<10?"0"+i:i)+" "+t},U.capfirst=function(e){if(ne(e))return"";var t=String(e);return""+t.charAt(0).toUpperCase()+t.slice(1)},U.intcomma=function(e){if(ne(e))return"";var t,r=+e;return ft(r)?((t=r.toString().split("."))[0]=t[0].replace(/B(?=(d{3})+(?!d))/g,","),t.join(".")):e.toString()},U.intword=function(e){if(ne(e))return"";var t=+e;if(!Se(t))return e.toString();var r=Math.abs(t);if(r<1e6)return e.toString();var n=Math.ceil(Math.log(r+1)/Math.LN10)-1,i=n-n%3,o=t/Math.pow(10,i);return(o=Math.round(10*o)/10)+" "+Dr[Math.floor(i/3)-2]},U.ordinal=function(e,t){if(t===void 0&&(t=!1),ne(e))return"";var r=+e;return Se(r)?t&&r{(function(e,t){typeof je==”object”&&typeof Je<"u"?Je.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis=h?m:””+Array(h+1-p.length).join(u)+m},K={s:O,z:function(m){var h=-m.utcOffset(),u=Math.abs(h),p=Math.floor(u/60),c=u%60;return(h<=0?"+":"-")+O(p,2,"0")+":"+O(c,2,"0")},m:function m(h,u){if(h.date()<u.date())return-m(u,h);var p=12*(u.year()-h.year())+(u.month()-h.month()),c=h.clone().add(p,f),y=u-c<0,w=h.clone().add(p+(y?-1:1),f);return+(-(p+(u-c)/(y?c-w:w-c))||0)},a:function(m){return m1)return m(w[0])}else{var b=h.name;$[b]=h,c=b}return!p&&c&&(C=c),c||!p&&C},D=function(m,h){if(ie(m))return m.clone();var u=typeof h==”object”?h:{};return u.date=m,u.args=arguments,new te(u)},M=K;M.l=oe,M.i=ie,M.w=function(m,h){return D(m,{locale:h.$L,utc:h.$u,x:h.$x,$offset:h.$offset})};var te=function(){function m(u){this.$L=oe(u.locale,null,!0),this.parse(u),this.$x=this.$x||u.x||{},this[I]=!0}var h=m.prototype;return h.parse=function(u){this.$d=function(p){var c=p.date,y=p.utc;if(c===null)return new Date(NaN);if(M.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c==”string”&&!/Z$/i.test(c)){var w=c.match(F);if(w){var b=w[2]-1||0,k=(w[7]||”0″).substring(0,3);return y?new Date(Date.UTC(w[1],b,w[3]||1,w[4]||0,w[5]||0,w[6]||0,k)):new Date(w[1],b,w[3]||1,w[4]||0,w[5]||0,w[6]||0,k)}}return new Date(c)}(u),this.init()},h.init=function(){var u=this.$d;this.$y=u.getFullYear(),this.$M=u.getMonth(),this.$D=u.getDate(),this.$W=u.getDay(),this.$H=u.getHours(),this.$m=u.getMinutes(),this.$s=u.getSeconds(),this.$ms=u.getMilliseconds()},h.$utils=function(){return M},h.isValid=function(){return this.$d.toString()!==x},h.isSame=function(u,p){var c=D(u);return this.startOf(p)<=c&&c<=this.endOf(p)},h.isAfter=function(u,p){return D(u)<this.startOf(p)},h.isBefore=function(u,p){return this.endOf(p)<D(u)},h.$g=function(u,p,c){return M.u(u)?this[p]:this.set(c,u)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(u,p){var c=this,y=!!M.u(p)||p,w=M.p(u),b=function(j,H){var J=M.w(c.$u?Date.UTC(c.$y,H,j):new Date(c.$y,H,j),c);return y?J:J.endOf(a)},k=function(j,H){return M.w(c.toDate()[j].apply(c.toDate("s"),(y?[0,0,0,0]:[23,59,59,999]).slice(H)),c)},A=this.$W,E=this.$M,z=this.$D,X="set"+(this.$u?"UTC":"");switch(w){case l:return y?b(1,0):b(31,11);case f:return y?b(1,E):b(0,E+1);case d:var q=this.$locale().weekStart||0,Q=(A<q?A+7:A)-q;return b(y?z-Q:z+(6-Q),E);case a:case v:return k(X+"Hours",0);case s:return k(X+"Minutes",1);case o:return k(X+"Seconds",2);case i:return k(X+"Milliseconds",3);default:return this.clone()}},h.endOf=function(u){return this.startOf(u,!1)},h.$set=function(u,p){var c,y=M.p(u),w="set"+(this.$u?"UTC":""),b=(c={},c[a]=w+"Date",c[v]=w+"Date",c[f]=w+"Month",c[l]=w+"FullYear",c[s]=w+"Hours",c[o]=w+"Minutes",c[i]=w+"Seconds",c[n]=w+"Milliseconds",c)[y],k=y===a?this.$D+(p-this.$W):p;if(y===f||y===l){var A=this.clone().set(v,1);A.$d[b](k),A.init(),this.$d=A.set(v,Math.min(this.$D,A.daysInMonth())).$d}else b&&this.$d[b](k);return this.init(),this},h.set=function(u,p){return this.clone().$set(u,p)},h.get=function(u){return this[M.p(u)]()},h.add=function(u,p){var c,y=this;u=Number(u);var w=M.p(p),b=function(E){var z=D(y);return M.w(z.date(z.date()+Math.round(E*u)),y)};if(w===f)return this.set(f,this.$M+u);if(w===l)return this.set(l,this.$y+u);if(w===a)return b(1);if(w===d)return b(7);var k=(c={},c[o]=t,c[s]=r,c[i]=e,c)[w]||1,A=this.$d.getTime()+u*k;return M.w(A,this)},h.subtract=function(u,p){return this.add(-1*u,p)},h.format=function(u){var p=this,c=this.$locale();if(!this.isValid())return c.invalidDate||x;var y=u||"YYYY-MM-DDTHH:mm:ssZ",w=M.z(this),b=this.$H,k=this.$m,A=this.$M,E=c.weekdays,z=c.months,X=c.meridiem,q=function(H,J,se,ae){return H&&(H[J]||H(p,y))||se[J].slice(0,ae)},Q=function(H){return M.s(b%12||12,H,"0")},j=X||function(H,J,se){var ae=H{window.addEventListener(“resize”,()=>{nt(),$e()}),window.addEventListener(“scroll”,()=>{$e()})},nt=()=>{xr.setAttribute(“viewBox”,`0 0 ${window.innerWidth} ${window.innerHeight}`)},$e=()=>{let e=document.querySelector(“.js-steps”).dataset.current;re!==e&&(re=e,st()),!re||re==”all”?ot():it()},it=()=>{if(re){let e=document.querySelector(`.js-steps-step[data-step=”${re}”] .js-steps-pin`),t=document.querySelector(“.js-map-location.is-current .js-map-pin”);if(t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect(),o=document.querySelector(“.js-steps”).getBoundingClientRect(),s=o.top>0?o.top:0,a=r.width/2;ce.setAttribute(“y1”,r.top+a-s),ce.setAttribute(“x1”,r.left+a),ce.setAttribute(“y2”,n.top+a-s),ce.setAttribute(“x2”,n.left+a)}}},ot=()=>{ce.classList.add(“is-hidden”)},Cr=()=>{ce.classList.remove(“is-hidden”)},st=()=>{ot(),clearTimeout(rt),rt=setTimeout(()=>{re!==void 0&&re!==”all”&&(it(),Cr())},1200)},at={init:()=>{Tr(),nt(),$e()},onChange:()=>{st()}};var Wn=dt();var ze=e=>{if(e)return e.trim().toLowerCase().normalize(“NFD”).replace(/[u0300-u036f]/g,””).replace(/[^A-Z0-9 ]/gi,””).trim().replace(/ /g,”-“)};var pt=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);var pe=(e,t=null,r=null)=>{r||(r=document.querySelector(“head”));let n=document.createElement(“script”);n.type=”text/javascript”,n.src=e,t&&(n.onload=t),r.appendChild(n)},vt=()=>(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.state===”Subscribed”,gt=()=>{let t=(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.state;return window.location.host.includes(“zzz-systest”)||window.location.host.includes(“pmn.arcpublishing.com”)||window.location.host.includes(“stage.fusion.inquirer.com”)||typeof t>”u”},mt=()=>{let t=(window.PMNdataLayer?.[0]!==void 0&&window.PMNdataLayer[0])?.analytics?.user?.hasAdsFreeReading;return!!(t&&t==1)},Be=()=>window.location.host.includes(“localhost”),xe=(e,t=””)=>{let r=document.querySelector(`template#${e}`);if(!r||!(r instanceof HTMLTemplateElement))return console.log(`Couldn’t find .`),null;let n=r.content.cloneNode(!0).childNodes;if(n.length==0)return console.log(`Template ${r} has no children, returning null.`),null;n.length>1&&console.log(`Template ${r} has multiple children, only returning the first.`);let i=n[0];return i.setAttribute(“data-id”,t),i},Te=(e,t)=>{let r=[…e.querySelectorAll(“[data-populate]”)];e.dataset.populate&&r.unshift(e);let n=r.filter(i=>{let o=i.closest(“[data-populate-context]”);return!o||o==e});for(let i of n){let s=i.dataset.populate.trim().split(/s*,s*/).map(a=>a.split(/s*:s*/));for(let[a,d]of s){let g=a.split(“.”).reduce((x,F)=>x?.[F],t),l=g==null||g==null,v=d?.split(/s+/)||[“innerHTML”];for(let x of v)x.startsWith(“.”)&&i.classList.toggle(x.substring(1),l?!1:g),!l&&(x==”innerHTML”?i.innerHTML=g:x.startsWith(“@”)?i.setAttribute(x.substring(1),g):x.startsWith(“–“)&&i.style.setProperty(x,g))}}};var zr=()=>{mt()&&document.querySelectorAll(“.js-adbox”).forEach(t=>{t.classList.add(“is-hidden”)})},yt={init:()=>{zr()}};var wt=async(e,t)=>(await fetch(`https://inq-junto.herokuapp.com/${e}`,{method:”POST”,headers:{“Content-Type”:”application/json”},mode:”cors”,body:JSON.stringify(t)})).json(),Fe=()=>{let t=document.querySelector(“.js-inno”).dataset.junto;if(t)return t;throw new Error(“no junto id found”)},bt={getDefaultId:()=>Fe(),vote:(e,t=Fe())=>{wt(“vote”,{poll:t,ballot:e})},results:async(e=Fe())=>await wt(“results”,{poll:e})};var Br=()=>{document.querySelectorAll(“.js-form”).forEach(e=>{e.addEventListener(“submit”,t=>{t.preventDefault(),Fr(e)})})},Fr=e=>{let t=e.dataset.id,r=new FormData(e),n=new Object;for(let i of r)n[`form-${t}-${i[0]}`]=i[1];bt.vote({…n,[`form-${t}`]:Object.values(n).join(“///”)}),e.classList.add(“has-submitted”),e.querySelector(“.js-button-label”).textContent=”Form submitted!”,setTimeout(()=>{e.querySelector(“.js-form-button”).disabled=!0},500)},Mt={init:()=>{Br()}};var le,St,Hr=()=>{le=document.getElementById(“js-inno-toast”)},Or=e=>{if(!le)return;le.innerHTML=e,le.classList.add(“inno-toast–active”);let t=()=>{le.addEventListener(“transitionend”,Ir,{once:!0}),le.classList.remove(“inno-toast–active”)};clearTimeout(St),St=setTimeout(t,5e3)},Ir=()=>{le.innerHTML=””},ue={init:()=>{Hr()},showToast:Or};var Ce,xt=!1,Rr=async()=>new Promise(e=>{setTimeout(()=>{console.log(“simulating createShareLink for localhost”),e(“https://inquirer.com/interactives”),Ur()},100)}),Ur=()=>{let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||setTimeout(()=>{let t=e?.querySelector(“span”);t&&(t.innerHTML=”Gift link copied to clipboard“)},20)},qr=()=>{let e=window.services?.createShareLink;e&&(Ce=e),Be()&&(Ce=Rr),Ce&&Nr()},Gr=async e=>{let t=”text/plain”,r=async()=>{try{return await Ce(window.location.pathname)}catch{e.dataset.state=”error”,ue.showToast(“Hmm, we couldn’t generate a gift link…”)}},n=new ClipboardItem({[t]:r()});await navigator.clipboard.write([n]).catch(i=>{console.log(i),ue.showToast(“Couldn’t copy to clipboard, try again?”),e.dataset.state=”error”}),ue.showToast(“Gift link copied to clipboard!”),e.dataset.state=”complete”},Nr=()=>{document.querySelectorAll(“.js-gift”).forEach(t=>{(vt()||Be()||gt())&&t.classList.add(“is-available”)}),document.querySelectorAll(“.js-gift-button”).forEach(t=>{t instanceof HTMLButtonElement&&t.addEventListener(“click”,()=>{t.classList.contains(“disabled”)||(t.dataset.state=”loading”,xt=!0,Gr(t),setTimeout(()=>{t.dataset.state=”ready”},2e3))})});let e=document.querySelector(“.js-gift-toast-receiver”);!e||!(e instanceof HTMLElement)||Wr(e)},Wr=e=>{new MutationObserver(r=>{for(let n of r){let i=[…n.addedNodes].at(0);if(!(i instanceof HTMLElement))return;xt&&ue.showToast(i.outerHTML)}}).observe(e,{subtree:!0,childList:!0})},Tt={init:()=>{qr()}};var Zr=()=>{window.addEventListener(“message”,e=>{if(e.data[“datawrapper-height”]){let t=e.data[“datawrapper-height”];for(let r in t)document.querySelector(`#datawrapper-chart-${r}`).setAttribute(“height”,t[r])}})},jr=()=>{document.querySelectorAll(“.js-datawrapper-graphic”).forEach(e=>{pe(`https://datawrapper.dwcdn.net/${e.dataset.id}/embed.js`,null,e)})},Jr=()=>{window.addEventListener(“message”,e=>{let t=e.data;document.querySelectorAll(`iframe[src*=”${t.id}”]`).forEach(n=>{n.style.height=`${t.height}px`})},!1)},Yr=()=>{document.querySelectorAll(“.js-pym-graphic”).forEach(e=>{if(typeof window{new window.pym.Parent(e.id,e.dataset.iframe)};typeof window.pym>”u”?pe(“https://pym.nprapps.org/pym.v1.min.js”,t):t()}})},Ct={init:()=>{Zr(),jr(),Yr(),Jr()}};var ve,Vr=()=>{document.querySelectorAll(“.js-hover”).forEach(e=>{e.addEventListener(“click”,()=>{Lt(e)}),e.addEventListener(“mouseenter”,()=>{Lt(e)}),e.addEventListener(“mouseout”,()=>{Pt(e)})}),window.addEventListener(“scroll”,()=>{ve!==null&&Kr()})},Kr=()=>{(ve>window.scrollY+100||ve{Pt(e)})},Lt=e=>{e.classList.add(“is-visible”),ve=window.scrollY},Pt=e=>{e.classList.remove(“is-visible”),ve=null},kt={init:()=>{Vr()}};var N=Uint8Array,he=Uint16Array,Xr=Int32Array,Dt=new N([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),At=new N([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Qr=new N([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Et=function(e,t){for(var r=new he(31),n=0;n<31;++n)r[n]=t+=1<<e[n-1];for(var i=new Xr(r[30]),n=1;n<30;++n)for(var o=r[n];o<r[n+1];++o)i[o]=o-r[n]<<5|n;return{b:r,r:i}},$t=Et(Dt,2),zt=$t.b,_r=$t.r;zt[28]=258,_r[258]=28;var Bt=Et(At,0),en=Bt.b,ii=Bt.r,Ie=new he(32768);for(S=0;S>1|(S&21845)<>2|(_&13107)<>4|(_&3855)<>8|(_&255)<>1;var _,S,ge=function(e,t,r){for(var n=e.length,i=0,o=new he(t);i<n;++i)e[i]&&++o[e[i]-1];var s=new he(t);for(i=1;i<t;++i)s[i]=s[i-1]+o[i-1]<<1;var a;if(r){a=new he(1<<t);var d=15-t;for(i=0;i<n;++i)if(e[i])for(var f=i<<4|e[i],g=t-e[i],l=s[e[i]-1]++<<g,v=l|(1<<g)-1;l>d]=f}else for(a=new he(n),i=0;i>15-e[i]);return a},me=new N(288);for(S=0;S<144;++S)me[S]=8;var S;for(S=144;S<256;++S)me[S]=9;var S;for(S=256;S<280;++S)me[S]=7;var S;for(S=280;S<288;++S)me[S]=8;var S,Ft=new N(32);for(S=0;S<32;++S)Ft[S]=5;var S;var tn=ge(me,9,1);var rn=ge(Ft,5,1),He=function(e){for(var t=e[0],r=1;rt&&(t=e[r]);return t},Y=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<>(t&7)&r},Oe=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<>(t&7)},nn=function(e){return(e+7)/8|0},on=function(e,t,r){return(t==null||te.length)&&(r=e.length),new N(e.subarray(t,r))};var sn=[“unexpected EOF”,”invalid block type”,”invalid length/literal”,”invalid distance”,”stream finished”,”no stream handler”,,”no callback”,”invalid UTF-8 data”,”extra field too long”,”date not in range 1980-2099″,”filename too long”,”stream finishing”,”invalid zip data”],G=function(e,t,r){var n=new Error(t||sn[e]);if(n.code=e,Error.captureStackTrace&&Error.captureStackTrace(n,G),!r)throw n;return n},Re=function(e,t,r,n){var i=e.length,o=n?n.length:0;if(!i||t.f&&!t.l)return r||new N(0);var s=!r,a=s||t.i!=2,d=t.i;s&&(r=new N(i*3));var f=function(ae){var Qe=r.length;if(ae>Qe){var _e=new N(Math.max(Qe*2,ae));_e.set(r),r=_e}},g=t.f||0,l=t.p||0,v=t.b||0,x=t.l,F=t.d,P=t.m,V=t.n,O=i*8;do{if(!x){g=Y(e,l,1);var K=Y(e,l+1,3);if(l+=3,K)if(K==1)x=tn,F=rn,P=9,V=5;else if(K==2){var ie=Y(e,l,31)+257,oe=Y(e,l+10,15)+4,D=ie+Y(e,l+5,31)+1;l+=14;for(var M=new N(D),te=new N(19),R=0;R<oe;++R)te[Qr[R]]=Y(e,l+R*3,7);l+=oe*3;for(var m=He(te),h=(1<<m)-1,u=ge(te,m,1),R=0;R>4;if(C<16)M[R++]=C;else{var c=0,y=0;for(C==16?(y=3+Y(e,l,3),l+=2,c=M[R-1]):C==17?(y=3+Y(e,l,7),l+=3):C==18&&(y=11+Y(e,l,127),l+=7);y–;)M[R++]=c}}var w=M.subarray(0,ie),b=M.subarray(ie);P=He(w),V=He(b),x=ge(w,P,1),F=ge(b,V,1)}else G(1);else{var C=nn(l)+4,$=e[C-4]|e[C-3]<i){d&&G(0);break}a&&f(v+$),r.set(e.subarray(C,I),v),t.b=v+=$,t.p=l=I*8,t.f=g;continue}if(l>O){d&&G(0);break}}a&&f(v+131072);for(var k=(1<<P)-1,A=(1<>4;if(l+=c&15,l>O){d&&G(0);break}if(c||G(2),z264){var R=z-257,q=Dt[R];X=Y(e,l,(1<>4;Q||G(3),l+=Q&15;var b=en[j];if(j>3){var q=At[j];b+=Oe(e,l)&(1<O){d&&G(0);break}a&&f(v+131072);var H=v+X;if(v<b){var J=o-b,se=Math.min(b,H);for(J+v<0&&G(3);v<se;++v)r[v]=n[J+v]}for(;v<H;++v)r[v]=r[v-b]}}t.l=x,t.p=E,t.b=v,t.f=g,x&&(g=1,t.m=P,t.d=F,t.n=V)}while(!g);return v!=r.length&&s?on(r,0,v):r.subarray(0,v)};var an=new N(0);var ln=function(e){(e[0]!=31||e[1]!=139||e[2]!=8)&&G(6,"invalid gzip data");var t=e[3],r=10;t&4&&(r+=(e[10]|e[11]<>3&1)+(t>>4&1);n>0;n-=!e[r++]);return r+(t&2)},un=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<>>0};var cn=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<>5&1)==+!t&&G(6,”invalid zlib data: “+(e[1]&32?”need”:”unexpected”)+” dictionary”),(e[1]>>3&4)+2};function hn(e,t){return Re(e,{i:2},t&&t.out,t&&t.dictionary)}function fn(e,t){var r=ln(e);return r+8>e.length&&G(6,”invalid gzip data”),Re(e.subarray(r,-8),{i:2},t&&t.out||new N(un(e)),t&&t.dictionary)}function dn(e,t){return Re(e.subarray(cn(e,t&&t.dictionary),-4),{i:2},t&&t.out,t&&t.dictionary)}function Ht(e,t){return e[0]==31&&e[1]==139&&e[2]==8?fn(e,t):(e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31?hn(e,t):dn(e,t)}var pn=typeof TextDecodergn(e,”name”,{value:t,configurable:!0}),B=(e,t,r)=>new Promise((n,i)=>{var o=d=>{try{a(r.next(d))}catch(f){i(f)}},s=d=>{try{a(r.throw(d))}catch(f){i(f)}},a=d=>d.done?n(d.value):Promise.resolve(d.value).then(o,s);a((r=r.apply(e,t)).next())}),ai=T((e,t)=>{let r=!1,n=””,i=L.GridLayer.extend({createTile:T((o,s)=>{let a=document.createElement(“img”),d=new AbortController,f=d.signal;return a.cancel=()=>{d.abort()},r||(e.getHeader().then(g=>{g.tileType===1?console.error(“Error: archive contains MVT vector tiles, but leafletRasterLayer is for displaying raster tiles. See https://github.com/protomaps/PMTiles/tree/main/js for details.”):g.tileType===2?n=”image/png”:g.tileType===3?n=”image/jpeg”:g.tileType===4?n=”image/webp”:g.tileType===5&&(n=”image/avif”)}),r=!0),e.getZxy(o.z,o.x,o.y,f).then(g=>{if(g){let l=new Blob([g.data],{type:n}),v=window.URL.createObjectURL(l);a.src=v,a.cancel=void 0,s(void 0,a)}}).catch(g=>{if(g.name!==”AbortError”)throw g}),a},”createTile”),_removeTile:T(function(o){let s=this._tiles[o];s&&(s.el.cancel&&s.el.cancel(),s.el.width=0,s.el.height=0,s.el.deleted=!0,L.DomUtil.remove(s.el),delete this._tiles[o],this.fire(“tileunload”,{tile:s.el,coords:this._keyToTileCoords(o)}))},”_removeTile”)});return new i(t)},”leafletRasterLayer”),mn=T(e=>(t,r)=>{if(r instanceof AbortController)return e(t,r);let n=new AbortController;return e(t,n).then(i=>r(void 0,i.data,i.cacheControl||””,i.expires||””),i=>r(i)).catch(i=>r(i)),{cancel:T(()=>n.abort(),”cancel”)}},”v3compat”),Ot=class{constructor(t){this.tilev4=T((r,n)=>B(this,null,function*(){if(r.type===”json”){let x=r.url.substr(10),F=this.tiles.get(x);if(F||(F=new Le(x),this.tiles.set(x,F)),this.metadata)return{data:yield F.getTileJson(r.url)};let P=yield F.getHeader();return(P.minLon>=P.maxLon||P.minLat>=P.maxLat)&&console.error(`Bounds of PMTiles archive ${P.minLon},${P.minLat},${P.maxLon},${P.maxLat} are not valid.`),{data:{tiles:[`${r.url}/{z}/{x}/{y}`],minzoom:P.minZoom,maxzoom:P.maxZoom,bounds:[P.minLon,P.minLat,P.maxLon,P.maxLat]}}}let i=new RegExp(/pmtiles://(.+)/(d+)/(d+)/(d+)/),o=r.url.match(i);if(!o)throw new Error(“Invalid PMTiles protocol URL”);let s=o[1],a=this.tiles.get(s);a||(a=new Le(s),this.tiles.set(s,a));let d=o[2],f=o[3],g=o[4],l=yield a.getHeader(),v=yield a?.getZxy(+d,+f,+g,n.signal);if(v)return{data:new Uint8Array(v.data),cacheControl:v.cacheControl,expires:v.expires};if(l.tileType===1){if(this.errorOnMissingTile)throw new Error(“Tile not found.”);return{data:new Uint8Array}}return{data:null}}),”tilev4″),this.tile=mn(this.tilev4),this.tiles=new Map,this.metadata=t?.metadata||!1,this.errorOnMissingTile=t?.errorOnMissingTile||!1}add(t){this.tiles.set(t.source.getKey(),t)}get(t){return this.tiles.get(t)}};T(Ot,”Protocol”);var It=Ot;function Rt(e,t){return(t>>>0)*4294967296+(e>>>0)}T(Rt,”toNum”);function Ut(e,t){let r=t.buf,n=r[t.pos++],i=(n&112)>>4;if(n<128||(n=r[t.pos++],i|=(n&127)<<3,n<128)||(n=r[t.pos++],i|=(n&127)<<10,n<128)||(n=r[t.pos++],i|=(n&127)<<17,n<128)||(n=r[t.pos++],i|=(n&127)<<24,n<128)||(n=r[t.pos++],i|=(n&1)<<31,n<128))return Rt(e,i);throw new Error("Expected varint not more than 10 bytes")}T(Ut,"readVarintRemainder");function fe(e){let t=e.buf,r=t[e.pos++],n=r&127;return r<128||(r=t[e.pos++],n|=(r&127)<<7,r<128)||(r=t[e.pos++],n|=(r&127)<<14,r<128)||(r=t[e.pos++],n|=(r&127)<<21,r<128)?n:(r=t[e.pos],n|=(r&15)<<28,Ut(n,e))}T(fe,"readVarint");function qe(e,t,r,n){if(n===0){r===1&&(t[0]=e-1-t[0],t[1]=e-1-t[1]);let i=t[0];t[0]=t[1],t[1]=i}}T(qe,"rotate");function qt(e,t){let r=ye(2,e),n=t,i=t,o=t,s=[0,0],a=1;for(;a26)throw new Error(“Tile zoom level exceeds max safe number limit (26)”);if(t>ye(2,e)-1||r>ye(2,e)-1)throw new Error(“tile x/y outside zoom level bounds”);let n=yn[e],i=ye(2,e),o=0,s=0,a=0,d=[t,r],f=i/2;for(;f>0;)o=(d[0]&f)>0?1:0,s=(d[1]&f)>0?1:0,a+=f*f*(3*o^s),qe(f,d,o,s),f=f/2;return n+a}T(Gt,”zxyToTileId”);function wn(e){let t=0,r=0;for(let n=0;n<27;n++){let i=(1<<n)*(1<e)return qt(n,e-t);t+=i}throw new Error(“Tile zoom level exceeds max safe number limit (26)”)}T(wn,”tileIdToZxy”);var bn=(e=>(e[e.Unknown=0]=”Unknown”,e[e.None=1]=”None”,e[e.Gzip=2]=”Gzip”,e[e.Brotli=3]=”Brotli”,e[e.Zstd=4]=”Zstd”,e))(bn||{});function Pe(e,t){return B(this,null,function*(){if(t===1||t===0)return e;if(t===2){if(typeof globalThis.DecompressionStream>”u”)return Ht(new Uint8Array(e));let r=new Response(e).body;if(!r)throw new Error(“Failed to read response stream”);let n=r.pipeThrough(new globalThis.DecompressionStream(“gzip”));return new Response(n).arrayBuffer()}throw new Error(“Compression method not supported”)})}T(Pe,”defaultDecompress”);var Mn=(e=>(e[e.Unknown=0]=”Unknown”,e[e.Mvt=1]=”Mvt”,e[e.Png=2]=”Png”,e[e.Jpeg=3]=”Jpeg”,e[e.Webp=4]=”Webp”,e[e.Avif=5]=”Avif”,e))(Mn||{});function Nt(e){return e===1?”.mvt”:e===2?”.png”:e===3?”.jpg”:e===4?”.webp”:e===5?”.avif”:””}T(Nt,”tileTypeExt”);var Sn=127;function Wt(e,t){let r=0,n=e.length-1;for(;r>1,o=t-e[i].tileId;if(o>0)r=i+1;else if(o=0&&(e[n].runLength===0||t-e[n].tileId-1,o=/Chrome|Chromium|Edg|OPR|Brave/.test(n);this.chromeWindowsNoCache=!1,i&&o&&(this.chromeWindowsNoCache=!0)}getKey(){return this.url}setHeaders(t){this.customHeaders=t}getBytes(t,r,n,i){return B(this,null,function*(){let o,s;n?s=n:(o=new AbortController,s=o.signal);let a=new Headers(this.customHeaders);a.set(“range”,`bytes=${t}-${t+r-1}`);let d;this.mustReload?d=”reload”:this.chromeWindowsNoCache&&(d=”no-store”);let f=yield fetch(this.url,{signal:s,cache:d,headers:a});if(t===0&&f.status===416){let v=f.headers.get(“Content-Range”);if(!v||!v.startsWith(“bytes */”))throw new Error(“Missing content-length on 416 response”);let x=+v.substr(8);f=yield fetch(this.url,{signal:s,cache:”reload”,headers:{range:`bytes=0-${x-1}`}})}let g=f.headers.get(“Etag”);if(g!=null&&g.startsWith(“W/”)&&(g=null),f.status===416||i&&g&&g!==i)throw this.mustReload=!0,new Ue(`Server returned non-matching ETag ${i} after one retry. Check browser extensions and servers for issues that may affect correct ETag headers.`);if(f.status>=300)throw new Error(`Bad response code: ${f.status}`);let l=f.headers.get(“Content-Length”);if(f.status===200&&(!l||+l>r))throw o&&o.abort(),new Error(“Server returned no content-length header or content-length exceeding request. Check that your storage backend supports HTTP Byte Serving.”);return{data:yield f.arrayBuffer(),etag:g||void 0,cacheControl:f.headers.get(“Cache-Control”)||void 0,expires:f.headers.get(“Expires”)||void 0}})}};T(Zt,”FetchSource”);var Tn=Zt;function Z(e,t){let r=e.getUint32(t+4,!0),n=e.getUint32(t+0,!0);return r*ye(2,32)+n}T(Z,”getUint64″);function jt(e,t){let r=new DataView(e),n=r.getUint8(7);if(n>3)throw new Error(`Archive is spec version ${n} but this library supports up to spec version 3`);return{specVersion:n,rootDirectoryOffset:Z(r,8),rootDirectoryLength:Z(r,16),jsonMetadataOffset:Z(r,24),jsonMetadataLength:Z(r,32),leafDirectoryOffset:Z(r,40),leafDirectoryLength:Z(r,48),tileDataOffset:Z(r,56),tileDataLength:Z(r,64),numAddressedTiles:Z(r,72),numTileEntries:Z(r,80),numTileContents:Z(r,88),clustered:r.getUint8(96)===1,internalCompression:r.getUint8(97),tileCompression:r.getUint8(98),tileType:r.getUint8(99),minZoom:r.getUint8(100),maxZoom:r.getUint8(101),minLon:r.getInt32(102,!0)/1e7,minLat:r.getInt32(106,!0)/1e7,maxLon:r.getInt32(110,!0)/1e7,maxLat:r.getInt32(114,!0)/1e7,centerZoom:r.getUint8(118),centerLon:r.getInt32(119,!0)/1e7,centerLat:r.getInt32(123,!0)/1e7,etag:t}}T(jt,”bytesToHeader”);function Ge(e){let t={buf:new Uint8Array(e),pos:0},r=fe(t),n=[],i=0;for(let o=0;o<r;o++){let s=fe(t);n.push({tileId:i+s,offset:0,length:0,runLength:1}),i+=s}for(let o=0;o<r;o++)n[o].runLength=fe(t);for(let o=0;o<r;o++)n[o].length=fe(t);for(let o=0;o0?n[o].offset=n[o-1].offset+n[o-1].length:n[o].offset=s-1}return n}T(Ge,”deserializeIndex”);var Jt=class extends Error{};T(Jt,”EtagMismatch”);var Ue=Jt;function Ne(e,t){return B(this,null,function*(){let r=yield e.getBytes(0,16384);if(new DataView(r.data).getUint16(0,!0)!==19792)throw new Error(“Wrong magic number for PMTiles archive”);let n=r.data.slice(0,Sn),i=jt(n,r.etag),o=r.data.slice(i.rootDirectoryOffset,i.rootDirectoryOffset+i.rootDirectoryLength),s=`${e.getKey()}|${i.etag||””}|${i.rootDirectoryOffset}|${i.rootDirectoryLength}`,a=Ge(yield t(o,i.internalCompression));return[i,[s,a.length,a]]})}T(Ne,”getHeaderAndRoot”);function We(e,t,r,n,i){return B(this,null,function*(){let o=yield e.getBytes(r,n,void 0,i.etag),s=yield t(o.data,i.internalCompression),a=Ge(s);if(a.length===0)throw new Error(“Empty directory is invalid”);return a})}T(We,”getDirectory”);var Cn=class{constructor(t=100,r=!0,n=Pe){this.cache=new Map,this.maxCacheEntries=t,this.counter=1,this.decompress=n}getHeader(t){return B(this,null,function*(){let r=t.getKey(),n=this.cache.get(r);if(n)return n.lastUsed=this.counter++,n.data;let i=yield Ne(t,this.decompress);return i[1]&&this.cache.set(i[1][0],{lastUsed:this.counter++,data:i[1][2]}),this.cache.set(r,{lastUsed:this.counter++,data:i[0]}),this.prune(),i[0]})}getDirectory(t,r,n,i){return B(this,null,function*(){let o=`${t.getKey()}|${i.etag||””}|${r}|${n}`,s=this.cache.get(o);if(s)return s.lastUsed=this.counter++,s.data;let a=yield We(t,this.decompress,r,n,i);return this.cache.set(o,{lastUsed:this.counter++,data:a}),this.prune(),a})}prune(){if(this.cache.size>this.maxCacheEntries){let t=1/0,r;this.cache.forEach((n,i)=>{n.lastUsed{Ne(t,this.decompress).then(a=>{a[1]&&this.cache.set(a[1][0],{lastUsed:this.counter++,data:Promise.resolve(a[1][2])}),o(a[0]),this.prune()}).catch(a=>{s(a)})});return this.cache.set(r,{lastUsed:this.counter++,data:i}),i})}getDirectory(t,r,n,i){return B(this,null,function*(){let o=`${t.getKey()}|${i.etag||””}|${r}|${n}`,s=this.cache.get(o);if(s)return s.lastUsed=this.counter++,yield s.data;let a=new Promise((d,f)=>{We(t,this.decompress,r,n,i).then(g=>{d(g),this.prune()}).catch(g=>{f(g)})});return this.cache.set(o,{lastUsed:this.counter++,data:a}),a})}prune(){if(this.cache.size>=this.maxCacheEntries){let t=1/0,r;this.cache.forEach((n,i)=>{n.lastUsed{this.getHeader(t).then(s=>{i(),this.invalidations.delete(r)}).catch(s=>{o(s)})});this.invalidations.set(r,n)})}};T(Yt,”SharedPromiseCache”);var Ln=Yt,Vt=class{constructor(t,r,n){typeof t==”string”?this.source=new Tn(t):this.source=t,n?this.decompress=n:this.decompress=Pe,r?this.cache=r:this.cache=new Ln}getHeader(){return B(this,null,function*(){return yield this.cache.getHeader(this.source)})}getZxyAttempt(t,r,n,i){return B(this,null,function*(){let o=Gt(t,r,n),s=yield this.cache.getHeader(this.source);if(ts.maxZoom)return;let a=s.rootDirectoryOffset,d=s.rootDirectoryLength;for(let f=0;f0){let v=yield this.source.getBytes(s.tileDataOffset+l.offset,l.length,i,s.etag);return{data:yield this.decompress(v.data,s.tileCompression),cacheControl:v.cacheControl,expires:v.expires}}a=s.leafDirectoryOffset+l.offset,d=l.length}else return}throw new Error(“Maximum directory depth exceeded”)})}getZxy(t,r,n,i){return B(this,null,function*(){try{return yield this.getZxyAttempt(t,r,n,i)}catch(o){if(o instanceof Ue)return this.cache.invalidate(this.source),yield this.getZxyAttempt(t,r,n,i);throw o}})}getMetadataAttempt(){return B(this,null,function*(){let t=yield this.cache.getHeader(this.source),r=yield this.source.getBytes(t.jsonMetadataOffset,t.jsonMetadataLength,void 0,t.etag),n=yield this.decompress(r.data,t.internalCompression),i=new TextDecoder(“utf-8″);return JSON.parse(i.decode(n))})}getMetadata(){return B(this,null,function*(){try{return yield this.getMetadataAttempt()}catch(t){if(t instanceof Ue)return this.cache.invalidate(this.source),yield this.getMetadataAttempt();throw t}})}getTileJson(t){return B(this,null,function*(){let r=yield this.getHeader(),n=yield this.getMetadata(),i=Nt(r.tileType);return{tilejson:”3.0.0″,scheme:”xyz”,tiles:[`${t}/{z}/{x}/{y}${i}`],vector_layers:n.vector_layers,attribution:n.attribution,description:n.description,name:n.name,version:n.version,bounds:[r.minLon,r.minLat,r.maxLon,r.maxLat],center:[r.centerLon,r.centerLat,r.centerZoom],minzoom:r.minZoom,maxzoom:r.maxZoom}})}};T(Vt,”PMTiles”);var Le=Vt;var we=[{name:”Mirenda Center at Neumann University”,town:”Aston Township”,coordinates:”39.87518295957942, -75.44287264018742″,photo:”CUFT75EQJFCNXF6TBJWB47IZBE”,description:”Tom (Mark Ruffalo) mans a table at a job fair here while temporarily working as a recruiter for the FBI. Next to his station, the distinctive pillars of the centeru2019s atrium are visible.”,episode:”1″},{name:”Rita’s Italian Ice & Frozen Custard”,town:”Collingdale”,coordinates:”39.91438144966683, -75.27198755476991″,photo:”PVN6FY7AZVH57NJJ5QZMPSORVQ”,description:”Emily (Silvia Dionicio), Tomu2019s daughter, works her part-time job here. In the scene where it is shown, Tom orders a black cherry water ice, a flavor choice of which we approve.”,episode:”1″},{name:”Former Philadelphia Police Department Headquarters”,town:”Philadelphia”,coordinates:”39.95454212611587, -75.15196309318775″,photo:”L7RTCVGETVB6BGP3OI6FGI75II”,description:”We get a brief glimpse of the exterior of the former Philadelphia police headquarters, colloquially known as the Roundhouse. Whether the interior is the same building is unclear, but in the show, this appears to be where the FBIu2019s Philly field office is located.”,episode:”1″},{name:”Bangor Quarry”,town:”Bangor”,coordinates:”40.870304770450126, -75.20395382209078″,photo:””,description:”Robbie (Tom Pelphrey), Cliff (RaxFAl Castillo), and Peaches (Owen Teague) head here for a post-robbery swim. On a real-life note, you should not do the same u2014 not only is it dangerous, but itu2019s also trespassing, according to the Bangor Borough Police Department.”,episode:”1″},{name:”Lincoln Highway and 2nd Avenue”,town:”Coatesville”,coordinates:”39.98367030794463, -75.82206085300957″,photo:”DKXFYZ5EGBEHJJKLSUGLQQDAR4″,description:”The Dark Hearts motorcycle gang rides through this intersection in formation, the giveaway being Presence Bank in the background in one shot.”,episode:”2″},{name:”Polish American Citizens Club”,town:”Coatesville”,coordinates:”39.98079295642107, -75.83090353169075″,photo:”WICMTOVTBFE3HANVTH2PSHED5M”,description:”Done up as the so-called Leftyu2019s Taproom in the show, this location serves as the Dark Heartsu2019 clubhouse and watering hole. In real life, itu2019s just off Lincoln Highway, lending a bit of realism to the gangu2019s ride through downtown Coatesville.”,episode:”2″},{name:”Martin’s Taphouse”,town:”Aston Township”,coordinates:”39.89042265129427, -75.43449503510138″,photo:””,description:”Martin’s stands in as the exterior of the Tip Top Lounge in the series, which we see in this episode stacked with motorcycles parked outside the front door.”,episode:”2″},{name:”Dixon’s Lounge”,town:”Sharon Hill”,coordinates:”39.897139107273794, -75.27191565278125″,photo:”BHMNCU4FFJGOBPUKYCZBB2XEOA”,description:”While the exterior of the Tip Top Lounge is in Aston, the interior bears a striking resemblance to Delcou2019s own Dixonu2019s Lounge. Here, Robbie and Cliff are stood up by an, ahem, u201Cbusiness partneru201D before walking out on an order of crabfries.”,episode:”2″},{name:”Willowbrook Shopping Center”,town:”Boothwyn”,coordinates:”39.83646391291799, -75.44319408140227″,photo:”ZU5QXUIDONETHIPPADUJYMAKCY”,description:”Maeve (Emilia Jones) takes Sam (Ben Lewis Doherty) to a fictional u201CVal-U Corneru201D store here with the intent of dropping him off for police to find before the plan goes awry. The store is located near the real Blue Cherry Ice Cream and Bakery, which is visible in the background.”,episode:”2″},{name:”Phoenixville Area High School”,town:”Phoenixville”,coordinates:”40.11868357112564, -75.51793551723154″,photo:””,description:”During his search for his daughter, Emily (Silvia Dionicio), Tom (Mark Ruffalo) finds her in the dugout of a baseball field that, in real life, is at Phoenixville Area High School. Its distinctive backstop is visible from a bird’s-eye view in the series.”,episode:”2″},{name:”Ralph’s Italian Restaurant”,town:”Philadelphia”,coordinates:”39.94006065749021, -75.15774535245488″,photo:”GMDZYMAHRNFGPBTYLRABBDJYHM”,description:”Dark Hearts leaders Jayson (Sam Keeley) and Perry (Jamie McShane) walk through the kitchen here to meet with local drug kingpin Freddy Frias (Elvis Nolasco), but in the show, it doesnu2019t appear to be serving the Italian food weu2019re used to in real life.”,episode:”3″},{name:”Mount Hope Cemetery”,town:”Aston Township”,coordinates:”39.871593701306836, -75.4390865914003″,photo:”4PCNSW4SPBAW7L2WFSJ2STJ3IM”,description:”Itu2019s a very quick shot, but itu2019s there just under four minutes into the episode. In the background, you can see the Commodore Barry Bridge, and graves on a hill in the cemetery in the foreground.”,episode:”3″},{name:”Sixpenny Creek Quarry”,town:”Union Township”,coordinates:”40.23700358370588, -75.78650582204335″,photo:”PLM34YOMIRCPPDVCGTFXM5FGME”,description:”Robbie (Tom Pelphrey) and Cliff (RaxFAl Castillo) finally get their meeting with Eryn (Margarita Levieva), their Dark Hearts insider, but it doesnu2019t go according to plan.”,episode:”3″},{name:”Llanerch Diner”,town:”Upper Darby”,coordinates:”39.96894828437008, -75.29301814827437″,photo:”6QXQDIMGKVDR5J64W4PVS3WP3E”,description:”Taskforce members Aleah (Thuso Mbedu) and Lizzie (Alison Oliver) head to Upper Darby’s famed Llanerch Diner for a tip on the drug house robberies they’re investigating, and get a break in the case.”,episode:”3″},{name:”Rosedon Plaza”,town:”Lansdowne”,coordinates:”39.94225704587108, -75.26528827286353″,photo:”SCB2N67GLFACZO33OOA7CLXQMM”,description:”In the background of one shot during the chase for Ray (Peter Patrikios), you can see the old Doc’s Deli (Deli Green). That puts Ray in the corner of the Rosedon Plaza parking lot as Lizzie (Alison Oliver) makes the arrest.”,episode:”3″},{name:”Coatesville Police Department”,town:”Coatesville”,coordinates:”39.982144078230384, -75.82033869646108″,photo:”XTADWTS6UNEDHOJGNIMWPBBOLE”,description:”Whether the interior is the same station isnu2019t clear, but an exterior shot sets this spot up as the place where the Task team interrogates Ray (Peter Patrikios) and Shelley (Mickey Sumner). Out front, a police cruiser reads u201CDelaware County Sheriff,u201D which is a little far from home.”,episode:”3″},{name:”The Ridley House”,town:”Holmes”,coordinates:”39.89753600427107, -75.31137880453917″,photo:”F2JJYIIZWFA3FFTHDPSXFI5M5A”,description:”Following the chase and interrogation, Lizzie (Alison Oliver) and Grasso (Fabien Frankel) head to this local bar to unwind. Grasso indicates it is a Barnabyu2019s, which, in real life, was true at one point u2013 until the location became the Ridley House in 2019.”,episode:”3″},{name:”Pennsylvania Turnpike on-ramp”,town:”King of Prussia”,coordinates:”40.08960425823238, -75.39689126886788″,photo:”BURLUGM6TRDX3CE46XSFYGJK7M”,description:”Itu2019s a quick shot as Tom (Mark Ruffalo) drives around at the beginning of the episode, but you can just make out the LasikPlus building on Mall Boulevard in the background. That puts this Pennsylvania Turnpike entrance in King of Prussia.”,episode:”4″},{name:”I-76 Exit 320″,town:”Malvern”,coordinates:”40.073716457225665, -75.52365668680957″,photo:””,description:”Tom (Mark Ruffalo) appears to take this exit as he is driving to meet his fellow taskforce members.”,episode:”4″},{name:”Marcus Hook Community Center”,town:”Marcus Hook”,coordinates:”39.81198192114949, -75.41200706776057″,photo:”B76EM6PKTFEB7KFWEUWGOWYDL4″,description:”As County Chief Dorsey (Raphael Sbarge) exits the building, you can see a door tagged with u201CDelaware County Sheriffu2019s Office.u201D But the green awning above him is a dead giveaway u2014 thatu2019s the Marcus Hook Community Center.”,episode:”4″},{name:”Rockdale Industrial Center”,town:”Aston Township “,coordinates:”39.885281970146785, -75.44479191780039″,photo:””,description:”It’s disguised as a trucking depot in the series, but this is where Robbie (Tom Pelphrey) and Cliff (RaxFAl Castillo) travel with Sam (Ben Lewis Doherty) to arrange transportation for their escape into Canada before being confronted by a Good Samaritan. “,episode:”4″},{name:”Upland Diner”,town:”Chester”,coordinates:”39.85816357241053, -75.37189095611281″,photo:”PVJMMBSI2ZBGJNQO46VYY5P6GQ”,description:”Upland Dineru2019s parking lot serves as Robbieu2019s (Tom Pelphrey) holding area during this episodeu2019s drug deal. Unfortunately, we only get an exterior shot of the building, but the restaurantu2019s vintage-style sign is proudly on display. Great pancakes, for the record.”,episode:”4″},{name:”Ridley Creek State Park entrance”,town:”Newtown Square”,coordinates:”39.95853496065017, -75.43948479664033″,photo:”KOSWCMRRHRAB7MLGNLQIF535UM”,description:”Cliff (RaxFAl Castillo) can be seen turning onto North Sandy Flash Drive from Gradyville Road as he heads to the drug deal meeting spot. If you look closely, you can just barely make out a sign for Ridley Creek State Park.”,episode:”4″},{name:”Beaver Creek”,town:”Wilmington, Del.”,coordinates:”39.839261612846315, -75.57139152554225″,photo:””,description:”It’s tough to spot, but the dam that Cliff (RaxFAl Castillo) parks his car next to during this episode’s failed drug deal u2014 or, more accurately, the Dark Hearts’ setup u2014 appears to be in Beaver Creek on the Delaware-Pennsylvania border.”,episode:”4″},{name:”City Clock Apartments”,town:”Coatesville”,coordinates:”39.98382540387415, -75.8211284189516″,photo:”3BYXFXCYUFFRZBUSN5UAPYVYOA”,description:”Another brief shot, but the clock face on the tower of the City Clock Apartments is prominently featured. The building formerly was the National Bank of Coatesville, and has been on the National Register of Historic Places since 1977.”,episode:”4″},{name:”Coatesville-Downingtown Bypass”,town:”Downingtown”,coordinates:”40.01895444780408, -75.70181027552258″,photo:””,description:”FBI Boss Kathleen McGinty (Martha Plimpton) and the rest of the task force swerve across traffic here while looking for Tom (Mark Ruffalo). In the background, you can just make out the sign for Pacer Pool Services & Supplies.”,episode:”5″},{name:”Marsh Creek State Park”,town:”Downingtown”,coordinates:”40.06782560219195, -75.72000193749815″,photo:”NT5JGVMLZFDJTGHC6M7BZFI7Y4″,description:”After surviving his encounter with Robbie (Tom Pelphrey), Tom (Mark Ruffalo) emerges from the woods to see a beautiful summer scene of families enjoying the lake at Marsh Creek State Park.”,episode:”5″},{name:”I-95 Pennsylvania Welcome Center”,town:”Boothwyn”,coordinates:”39.82418322018552, -75.43745107822149″,photo:”5HPTTXFG3ZA2HGAW54OXM4D5ZY”,description:”FBI boss Kathleen McGinty (Martha Plimpton) stuffs her face with fast food at the center’s picnic tables as the task crew looks for their leader. As McGinty explains, she is u201Can emotional eater.u201D”,episode:”5″},{name:”Woy Bridge”,town:”Everett”,coordinates:”40.0150517796881, -78.304498566625″,photo:””,description:”In what is likely the farthest-flung filming location u2013 at least in relation to the rest of the local spots u2013 we get some shots of Everettu2019s Woy Bridge in Bedford County as the taskforce closes in on Robbie (Tom Pelphrey).”,episode:”5″},{name:”Wissahickon Valley Park”,town:”Philadelphia”,coordinates:”40.05627328492142, -75.21733258122025″,photo:”GIK3XIGHEBGOFNM4S2PBSJFG3M”,description:”Many of the series’ woodsy scenes appear to have been filmed in the Wissahickon, though few u2014 if any u2014 notable landmarks make an appearance. Crews were spotted filming around the park last year, and many Inquirer readers have written in to say the recognize certain parts of the creek and landscape in this episode.”,episode:”6″},{name:”Our Lady of Peace Parish”,town:”Milmont Park”,coordinates:”39.88193514095659, -75.33589782814482″,photo:”HGPPGXLRFZFUFE5WBNNXP3DXFM”,description:”Though disguised well as a juvenile detention facility in the show, this little Delco parish provides at least the exterior shots for where Tom (Mark Ruffalo) meets Sam (Ben Lewis Doherty) for the first time.”,episode:”6″},{name:”High Bridge”,town:”Coatesville”,coordinates:”39.98390784773821, -75.82749681114403″,photo:””,description:”This instantly recognizable Coatesville landmark serves as the location for where County Chief Dorsey (Raphael Sbarge) appears to seal Grasso’s (Fabien Frankel) fate with the Dark Hearts.”,episode:”7″},{name:”Delaware County Courthouse and Government Center”,town:”Media”,coordinates:”39.92029464476607, -75.39155431097433″,photo:”NWW6JA6A4FBAJHW7ZIXSIPZ2YA”,description:”Here, Tom (Mark Ruffalo) gives a touching family statement at a court hearing for his son, Ethan (Andrew Russel), in what is the emotional climax of the series. As The Inquirer reported last year, the production took over Courtroom 15 for filming.”,episode:”7″},{name:”Stroud Preserve”,town:”West Chester”,coordinates:”39.95296099101273, -75.64754780607977″,photo:”6ZJWJVNYQFAZJJPFWLZE4ZWXVY”,description:”The last we see of Maeve (Emilia Jones) in the series, she is driving past Stroud Preserve’s Creek Road parking lot with her cousins in tow. Where they’re heading is anybody’s guess, but we hope it’s somewhere with fewer Dark Hearts members.”,episode:”7″}];var W=63710088e-1,gi={centimeters:W*100,centimetres:W*100,degrees:360/(2*Math.PI),feet:W*3.28084,inches:W*39.37,kilometers:W/1e3,kilometres:W/1e3,meters:W,metres:W,miles:W/1609.344,millimeters:W*1e3,millimetres:W*1e3,nauticalmiles:W/1852,radians:1,yards:W*1.0936};function Dn(e,t,r={}){let n={type:”Feature”};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function Kt(e,t,r={}){return Dn({type:”MultiPoint”,coordinates:e},t,r)}function Ze(e,t,r){if(e!==null)for(var n,i,o,s,a,d,f,g=0,l=0,v,x=e.type,F=x===”FeatureCollection”,P=x===”Feature”,V=F?e.features.length:1,O=0;O<V;O++){f=F?e.features[O].geometry:P?e.geometry:e,v=f?f.type==="GeometryCollection":!1,a=v?f.geometries.length:1;for(var K=0;K<a;K++){var C=0,$=0;if(s=v?f.geometries[K]:f,s!==null){d=s.coordinates;var I=s.type;switch(g=r&&(I==="Polygon"||I==="MultiPolygon")?1:0,I){case null:break;case"Point":if(t(d,l,O,C,$)===!1)return!1;l++,C++;break;case"LineString":case"MultiPoint":for(n=0;n<d.length;n++){if(t(d[n],l,O,C,$)===!1)return!1;l++,I==="MultiPoint"&&C++}I==="LineString"&&C++;break;case"Polygon":case"MultiLineString":for(n=0;n<d.length;n++){for(i=0;i<d[n].length-g;i++){if(t(d[n][i],l,O,C,$)===!1)return!1;l++}I==="MultiLineString"&&C++,I==="Polygon"&&$++}I==="Polygon"&&C++;break;case"MultiPolygon":for(n=0;n<d.length;n++){for($=0,i=0;i<d[n].length;i++){for(o=0;o<d[n][i].length-g;o++){if(t(d[n][i][o],l,O,C,$)===!1)return!1;l++}$++}C++}break;case"GeometryCollection":for(n=0;n{r[0]>n[0]&&(r[0]=n[0]),r[1]>n[1]&&(r[1]=n[1]),r[2]<n[0]&&(r[2]=n[0]),r[3]{pe(“https://interactives.inquirer.com/storage/dependencies/maplibre/5.3.0/maplibre-gl.js”,()=>{let e=new It;be=window.maplibregl,be.addProtocol(“pmtiles”,e.tile);let t=”https://interactives.inquirer.com/melish/1.2″,r=`${t}/us-latest.pmtiles`,n=new Le(r);e.add(n),n.getHeader().then(async()=>{let o=await(await fetch(`${t}/styles/neutral.json`)).json();ee=new be.Map({container:”map”,zoom:13,center:[-75.165222,39.952583],cooperativeGestures:!0,attributionControl:!1,padding,style:{…o,sources:{openmaptiles:{type:”vector”,url:`pmtiles://${r}`}}}}),ee.scrollZoom.disable(),ee.touchPitch.disable(),ee.addControl(new be.NavigationControl({showCompass:!1,showZoom:!0,visualizePitch:!1}),”bottom-right”),ee.on(“load”,()=>{En(),De!==”all”?ke=we.filter(s=>parseInt(s.episode)parseFloat(d)).reverse(),s.id=ze(s.name),s.photo&&(s.imageSrc=`https://interactives.inquirer.com/secondbank/arc/${s.photo}/650.webp`);let a=xe(“js-map-stub”);Te(a,s),a.addEventListener(“click”,()=>{Qt(a)}),a.addEventListener(“mouseover”,()=>{Qt(a)}),a.addEventListener(“mouseout”,()=>{tr()}),new be.Marker({element:a}).setLngLat(s.coordinates).addTo(ee)}document.querySelector(“.js-map”).classList.add(“is-loaded”),er=!0,Me!=””&&(ir(Me),nr(Me))})})})},Qt=e=>{tr(),e.classList.add(“is-highlight”)},tr=()=>{document.querySelectorAll(“.js-map-location”).forEach(e=>{e.classList.remove(“is-highlight”)})},En=()=>{De=document.querySelector(“.js-steps”).dataset.episodeForPage},rr=()=>{let e=window.innerWidth>960;padding={top:50,bottom:e?50:window.innerHeight/2,left:e?window.innerWidth/2+50:50,right:50}},$n=()=>{window.addEventListener(“resize”,()=>{rr()})},nr=e=>{if(Me=null,e==null){let t=we.filter(r=>r.episode==De);ee.fitBounds(_t(t),{animate:!0})}else if(e.step==”all”)ee.fitBounds(_t(ke),{animate:!0});else{let t=we.filter(r=>ze(r.name)==e.step);t.length>0&&ee.flyTo({center:t[0].coordinates,padding,zoom:13,animate:!0,duration:1e3})}},ir=e=>{document.querySelectorAll(“.js-map-location”).forEach(t=>{t.classList.remove(“is-current”)}),e&&e.step!==”all”&&document.querySelector(`.js-map-location[data-id=”${e.step}”]`).classList.add(“is-current”)},_t=e=>{let t=Kt(e.map(n=>n.coordinates));return Xt(t)},Ae={init:()=>{An(),rr(),$n()},update:e=>{er?(nr(e),ir(e)):Me=e}};var Ye=Sr(or());var zn=async()=>{let t=await(await fetch(“https://interactives.inquirer.com/pepper/2025-task-locations/data.json”)).json();t=t.nav,console.log(t);let r=(0,Ye.default)();t=t.filter(i=>r.isAfter((0,Ye.default)(`${i.date} 22:00`))),t=t.filter(i=>i.link);let n=document.querySelector(“.js-nav-links”);for(let i of t){i.text=`Episode ${i.episode}`;let o=xe(“js-nav-link-stub”);Te(o,i),n.appendChild(o)}},sr={init:()=>{zn()}};var Ee,Bn=(e,t)=>{Ee=Ee||window.PMNdataLayer,Ee?Ee.push({event:”misc_event”,eventAction:e,eventLabel:t}):window.location.hostname.includes(“localhost”)?console.log(“Analytics event:”,e,t,”(not actually being sent due to localhost)”):console.log(“Failed to push analytics event”,e,t)},ar={event:(e,t)=>{Bn(e,t)}};var lr=1,Ve=class{constructor(t){this.el=t,this.contentPosition=”default”,this.possibleSteps=new Array,this.currentStep=null,this.offset=window.innerHeight*.5,this.instanceOfSteps=lr,this.hasMap=!!t.dataset.map,lr++,this.setOffset(),this.setPossibleSteps(),this.updateContent(),this.bindings()}setPossibleSteps(){this.el.querySelectorAll(“.js-steps-step”).forEach(t=>{t.dataset.step&&this.possibleSteps.push(t.dataset.step)})}bindings(){window.addEventListener(“scroll”,()=>{this.updateContent()}),window.addEventListener(“resize”,()=>{this.updateContent(),this.setOffset()})}setOffset(){window.innerWidth>960?this.offset=window.innerHeight*.5:this.offset=window.innerHeight*.8}updateContent(){this.updateCurrentStep()}updateCurrentStep(){let t,r;if(this.el.querySelectorAll(“.js-steps-step”).forEach((i,o)=>{i.getBoundingClientRect().top{let a=”is-“+o,d=”is-“+s;this.possibleSteps.indexOf(o){document.querySelectorAll(“.js-steps”).forEach(e=>{new Ve(e)})}};var Fn=()=>{},cr={init:()=>{Fn()}};var de,Ke,Xe=!0,Hn=()=>{de=document.querySelectorAll(“.js-video-autoplay”)},On=()=>{window.addEventListener(“resize”,()=>{hr()}),window.addEventListener(“scroll”,()=>{hr()}),de.forEach(e=>{e.addEventListener(“volumechange”,t=>{e.muted!==Xe&&!pt()&&(Xe=e.muted,In())})})},hr=()=>{let e;de.forEach((t,r)=>{let n=t.getBoundingClientRect(),i=n.height/2;n.y-i&&(e=t)}),e!==Ke&&(Ke=e,de.forEach(t=>{t.pause()}),e?e.play():Ke=null)},In=()=>{de.forEach(e=>{e.muted=Xe})},fr={init:()=>{Hn(),de&&On()}};var dr={init:()=>{at.init?.(),yt.init?.(),Mt.init?.(),Tt.init?.(),Ct.init?.(),kt.init?.(),Ae.init?.(),sr.init?.(),ur.init?.(),cr.init?.(),fr.init?.(),ue.init?.()}};var Rn=()=>{},pr={init:()=>{Rn()}};var Un=document.querySelector(“.js-inno”),vr=()=>{dr.init(),pr.init()};Un?vr():new MutationObserver((t,r)=>{if(document.querySelector(“.js-inno”)){r.disconnect(),vr();return}}).observe(document,{attributes:!0,childList:!0,subtree:!0});})();
Bucks County Republicans are stoking fears about crime in Philadelphia even as violent crime in the city steadily drops from its high during the pandemic.
Republicans in the purple collar county hope the message will boost the GOP incumbents, District Attorney Jen Schorn and Sheriff Fred Harran, as they face off this fall against their respective Democratic challengers, Joe Khan and Danny Ceisler.
“We’re letting anarchy take over our country in certain places, and that’s not something we want in Bucks,” said Pat Poprik, the chair of the Bucks County Republican Party.
“Democrats are far more enthusiastic about voting precisely because they see what’s happening on the national level. They are really infuriated by what Donald Trump is doing,” State Sen. Steve Santarsiero, who chairs the Bucks County Democratic Party, said. “They’re going to make their displeasure heard by coming to the polls.”
The local races in the key county, which Trump narrowly won last year,will be a temperature check on how swing voters are responding to Trump’s second term and will gauge their enthusiasm ahead of the 2026 midterms, when Shapiro stands for reelection.
As the Nov. 4 election approaches, early signs indicate Democrats’ message might be working — polling conducted by a Democratic firm in September found their candidates ahead, and three weeks before Election Day, Democrats had requested more than twice as many mail ballots as Republicans.
“I think the Republican Party has the same problem it always does. … They turn out when Trump’s on the ticket, but when he’s not, there’s less enthusiasm,” said Jim Worthington, who has run pro-Trump organizations in Bucks County. “Truth be told, the Democrats do a hell of a job just turning out their voters.”
State Treasurer Stacy Garrity, a Republican running for Pa. governor, poses with Bucks County elected officers following her campaign rally Sat the Newtown Sports & Events Center. From left: Bucks County Sheriff Fred Harran; Bucks County District Attorney Jennifer Schorn; Garrity; and Pamela Van Blunk, Bucks County Controller.
GOP warns of ‘dangerous’ policies
Republican messaging in the two races focuses on the idea that Bucks County is safe, but its neighbors are not.
GOP ads, which have run over the course of four months, suggest that Khan and Ceisler would enact “dangerous” policies in Bucks County such as “releasing criminals without bail” and “giving sanctuary to violent gang members.”
They frame Harran and Schorn in stark contrast to their opponents as lifelong Bucks County law enforcement officers with histories of holding criminals accountable.
“I think it resonates beyond the Republican base,” said Guy Ciarrocchi, a Republican analyst, who contended frequent news coverage of Krasner makes the message more viable.
Khan, a former assistant Philly district attorney who unsuccessfully ran against Krasner in the 2017 primary, has noted that he campaigned “very, very vigorously” against Krasner and challenged his ideas on how to serve the city.
“I accept the reality that I didn’t win that election,” said Khan, whose platform in 2017 included a proposal to stop prosecuting most low-level drug offenses. “Unlike my opponent, who seems to basically enjoy the sport of scoring political points by sparring with the DA of Philadelphia.”
Schorn, however, is adamant that politics has never played a role in her prosecutorial decisions. Her mission, she said, is “simply to get justice.”
A lifelong Bucks County resident who has been a prosecutor in the county since 1999, Schorn handled some of the county’s most high-profile cases and spearheaded the formation of a task force for internet crimes against children.
Bucks County District Attorney Jennifer Schorn speaks at a Republican rally at the Newtown Sports & Events Center in September.
“This has been my life’s mission, prosecuting cases here in Bucks County, the county where I was raised,” she said. “I didn’t do it for any notoriety. I didn’t do it for self-promotion. I did it because it’s what I went to law school to do.”
Harran spent decades as Bensalem’s public safety director before first running for sheriff in 2021. He is seeking reelection amid controversy caused by his decision to partner his agency with ICE, a move that a Bucks County judge upheld last week after a legal challenge.
“Being Bucks County Sheriff isn’t a position you can learn on the job. For 39 years, I’ve woken up every day focused on keeping our communities safe,” Harran said in an email to The Inquirer in which he criticized Ceisler as lacking experience.
Although Ceisler has never worked directly in law enforcement, he argues the sheriff’s job is one of leadership in public safety. That’s something he says he’s well versed in as a senior public safety official in Shapiro’s administration who previously served on the Pentagon’s COVID-19 crisis management team.
Harran, who described his opponent as a “political strategist,” criticized “politicians” for bringing “half-baked ideas like ‘no-cash bail’” into law enforcement. The concept, which is repeatedly derided in the GOP ads, sets up a system by which defendants are either released free of charge or held without the opportunity for bail based on their risk to the community and likelihood of returning to court.
Khan and Ceisler each voiced support for the concept in prior runs for Philadelphia district attorney and Bucks County district attorney, respectively.
Both say they still support cashless bail. Neither, however, would have the authority to implement the policy if elected, though Khan as district attorney could establish policies preventing county prosecutors from seeking cash bail in certain cases.
Joe Khan, a Democratic candidate running for Bucks County DA, walks from his polling place in Doylestown, Pa. in April 2024 when he was running for attorney general.
“When a defendant is arrested and they come into court, every prosecutor answers this question: Should this person be detained or not?” Khan said. “If the answer is yes, then your position in court is that this person shouldn’t be let out, and it doesn’t matter how much money they have. And if the answer is no, then you need to figure out what conditions you need to make sure they come to court.”
Democrats claim to ‘keep politics out’
Even as Democrats view voter anger at Trump as a key piece of their path to victory, they are working to present themselves as apolitical.
Democraticads attack Schorn for not investigating a pipeline leak in Upper Makefield and Harran as caring about nothing but himself. Positive ads highlight Ceisler’s military background and Khan’s career as a federal prosecutor.
Khan and Ceisler, the Democratic Party’s ads argue, will “stop child predators, stand up to corruption, and they’ll keep politics out of public safety.”
The jet fuelcase was turned over to the environmental crimes unit in Pennsylvania Attorney General Dave Sunday’s office. And prosecutorial rules bar Schorn from discussing the alleged abuse.
“During the last, I don’t know, 13 years when [Khan] has been pursuing politics, I’ve been a public servant,” Schorn said.“For someone accusing me of putting politics first, he seems to be using politics to further his own agenda.”
At a September rally in Newtown for Treasurer Stacy Garrity, a Republican running for governor, Harran cracked jokes about former President Joe Biden’s age as he climbed onto the stage and falsely told voters that they will “lose [their] right to vote” if they don’t vote out three Pennsylvania Supreme Court justices standing for retention.
“I’m a cop who ran to keep being a cop. This isn’t about politics for me — it’s about doing everything I can to keep my community safe,” Harran said.
Harran’s opponent, Ceisler, paints a different picture as he draws a direct line between the sheriff and the president.
Danny Ceisler, a Democrat, is running for Bucks County sheriff.
Trump, Ceisler said, has inserted politics into public safety in his second term, and he contended that Harran has done the same.
“[Harran] used his bully pulpit to help get the president elected, so to that extent he is linked to the president for better or worse,” Ceisler said in an interview.
Ceisler has pledged to take politics out of the office and end the department’s partnership with ICE if elected.
At an event in Warminster last month, voters were quick to ask Ceisler which party he was running with. Ceisler asked them to hear his pitch about how he would run the office first.
“Don’t hold it against me,” he quipped as he ultimately admitted to one voter he’s a Democrat.
Staff writer Fallon Roth contributed to this article.
This suburban content is produced with support from the Leslie Miller and Richard Worley Foundation and The Lenfest Institute for Journalism. Editorial content is created independently of the project donors. Gifts to support The Inquirer’s high-impact journalism can be made at inquirer.com/donate. A list of Lenfest Institute donors can be found at lenfestinstitute.org/supporters.
Voters will decide whether the Pennsylvania Supreme Court should be transformed for years to come when they are asked next month whether they should retain three justices for another 10-year term or oust them.
Now the justices will appear individually on Pennsylvania ballots, where voters will be asked “yes” or “no” on whether each should be retained for another 10-year term.
The GOP has spent millions to try to oust the three justices, while Democrats have spent even more to try to keep them on the bench. As of Friday, Republicans had spent or reserved nearly $2.5 million in ad buys, while Democrats had spent more than $7 million.
The Inquirer spoke with the justices about their last 10 years on the bench, what it has been like to campaign in a hyper-partisan environment for what is intended to be a nonpartisan election, and more.
Kevin Dougherty
A small group of volunteers gathered in aNortheast Philadelphia parking lot on a gloomy Saturday afternoon in early September to knock on doors and urge residents to retain the current members of the Pennsylvania Supreme Court.
Milling among the volunteers was Dougherty. Despite having been on the ballot for local or state office three times, Dougherty, of Philadelphia, never knocked on voters’ doors until this year.
And he was disgusted by the fact that it was necessary.
“Judges shouldn’t have to canvass,” Dougherty said several times over the course of the afternoon.
Justice Kevin Dougherty talks with volunteers before they head out the canvass in Fox Chase Sunday Sept. 7, 2025. Dougherty is one of three Pennsylvania Supreme Court justices up for retention.
He then proceeded to walk a Northeast Philly neighborhood alongside his son, State Rep. Sean Dougherty, a first-term Democrat who represents the area, and a family friend.
Before running for the Pennsylvania Supreme Court, Dougherty spent nearly 15 years on the Common Pleas Court bench in Philadelphia, with much of that time spent serving in the family division.
Justice Kevin Dougherty (right) canvasses with his son, State Rep. Sean Dougherty (left), in Fox Chase Sunday Sept. 7, 2025.
As a Supreme Court justice, Dougherty has highlighted his work on the autism in courts initiative as a key accomplishment. This program works to educate judges about the particular challenges people with autism spectrum disorder may face when dealing with the justice system, and has grown further into sensory-friendly courtrooms in more than a dozen counties.
The program, Dougherty said, was inspired by his own experience on the bench when a child stood in his courtroom for a delinquency case showing “all the signs of an incorrigible person.” Then, Dougherty said, the child’s mother pulled him aside and told him her son was on the autism spectrum.
“It was like a punch in my mouth because I had never been exposed,” Dougherty said. “You’re only ignorant once.”
Dougherty said he self-educated and began working in Philadelphia to reform the way the court interacts with individuals with autism and brought those efforts to a statewide focus as a justice.
Justice Kevin Dougherty (left) canvasses with his son, State Rep. Sean Dougherty (center), in Fox Chase Sunday Sept. 7, 2025, stopping at the home of voter Skip Nelson (right).
“You need to make the system fair,” Dougherty said.
On the court, Dougherty has often sided with the liberal majority. He recently wrote the majority opinion in a case that allowed local governments to use zoning law to limit where gun ranges could be located. In oral arguments, when attorneys get a chance to argue their cases before the Supreme Court’s seven justices, Dougherty often presses lawyers to refine their arguments.
Christine Donohue
Donohue is often the first justice to ask questions during oral arguments.
Her quick interjections are because of her 27 years as a trial attorney prior to her career on the bench, she said. She cannot help but be inordinately prepared when she puts on her judicial robes and sits on the state’s highest court.
“Thoroughness is one of my ‘things,’” she said, with a laugh.
Justice Christine Donohue speaks during a fireside chat at Central High School.
Donohue, 72, would be able to serve for only two years of another 10-year term. But it wasn’t even a question to her whether she should step aside sooner. She believes she has fulfilled her duty as a justice, and she is prepared to do so until she hits the voter-set maximum age for a justice, 75.
Donohue authored the court’s ruling last year that signaled some members of the court are prepared to find that the Pennsylvania Constitution secures the right to an abortion. But less discussed from that same opinion, Donohue said, she is proud to have shored up the state’s Equal Rights Amendment.
Pennsylvania was the first state in the nation to amend its constitution to enshrine that every person has equal rights that cannot be “denied or abridged” because of an individual’s sex in 1971, and the first state to show support for amending the U.S. Constitution to guarantee the same.
But a 1984 ruling by the state Supreme Court “diluted” the ERA in Pennsylvania, Donohue said. It wasn’t until the justices decided the Allegheny Reproductive Health case 40 years later that the court revisited the state’s Equal Rights Amendment to make it “perfectly clear that a biological difference cannot serve as the basis for a denial or an abridgment of a right,” she said.
“To me, I’m very proud of many of the decisions I’ve been able to be involved with, but that one really sort of sets the record straight,” Donohue said.
Outside her legal work on thestateSupreme Court, she has been an advocate to offer more young lawyers the opportunity to try a case before a jury, which has become less and less frequent in recent years. Ensuring that the next generation of lawyers knows how to try a case before a jury is critical to guaranteeing the right to a fair trial, and would prevent a potential competency gap for future lawyers.
David Wecht
Like many of the justices on the Pennsylvania Supreme Court, Wecht spends much of his free time thinking about legal questions or ethical dilemmas. Or going on walks and listening to podcasts that deal with the same issues. (He recommends Amarica’s Constitution by Yale Law professor Akhil Amar or any of the podcasts by Jeffrey Rosen at the National Constitution Center, among others.)
He works from his chambers in Pittsburgh each day, unless the court is at one of the state’s many satellite courtrooms for oral arguments. There are times when he is in his chambers reading and writing all day long, which he described as “very, very fun, and very, very interesting and exciting.”
Justice David Wecht speaks with moderator Cherri Gregg during a fireside chat on retention at Central High School.
“The work is interesting. It is varied, It is never stagnant. We deal with all areas of the law,” Wecht said. “I’m very grateful that the voters gave me this job 10 years ago, and I hope they’ll see fit to provide me an additional term.”
Wecht is a true student of the law and said he enjoys probing attorneys’ arguments and the back-and-forth between justices on the bench.
He sees his role on the court as to decide cases. “Nothing grander, and nothing more,” he said.
He and the whole court, he said, operate under a “philosophy of judicial restraint.”
The court’s liberal majority has faced criticism from Republicans during the last 10 years — especially during the COVID-19 pandemic — for decisions they claimed were made by an “activist court.”
But those rulings, Wecht said, were the justices’ best attempts at deciding what a law passed by the General Assembly means when the lawmakers left it ambiguous, or their best attempt to understand what the framers of the state constitution intended, even if he doesn’t agree with it.
“It’s not our business whether we like them,” he said.
Early Vote Action, a Republican group, urges voters to vote against retaining the justices at a Republican rally in Bucks County on Sept. 25, 2025 at the Newtown Sports & Events Center. The event was headlined by Treasurer Stacy Garrity, a Republican running for governor.
Republican groups have attempted to mislead voters in mailers, Wecht has said, about the justices’ role in a 2018 decision that found Pennsylvania’s congressional maps were unconstitutionally gerrymandered. The GOP groups have had similarly misleading ads about the court’s actions on abortion and voting rights, even recently invoking the anti-Trump “No Kings” language to try to sway voters to vote “no.”
Wecht is a professor at Duquesne School of Law and the University of Pittsburgh, where he has been teaching for years. He is also a visiting professor at Reichman University in Israel each year, and regularly teaches continuing legal education courses for attorneys, which are courses that all lawyers must complete on an annual basis to maintain their active attorney’s license in Pennsylvania.
The FBI on Friday announced criminal charges against two men in connection with an attempted robbery of an armored truck on Oct. 3 that led to school lockdowns and a shelter-in-place order in Lower Merion Township.
Dante Shackleford, 26, also was charged by indictment with two attempted robberies of armored trucks in Philadelphia in July and an armored truck heist in Elkins Park in August in which $119,100 was stolen.
Mujahid Davis, 24, and Shackleford were charged with the Oct. 3 attempted robbery of an armored truck on the Philadelphia side of City Avenue that led to a pursuit and an hours-long incident. Several suspects were finally arrested in Lower Merion.
The FBI announcement came just hours after another attempted robbery of an armored truck, this time outside a Wawa store in Philadelphia.
Shortly before 8 a.m. on the 7700 block of Frankford Avenue, two male suspects attempted to rob a Loomis truck when the driver fired two shots at the suspects, who then fled. Police reported no injuries or arrests.
The indictment against Shackleford and Davis filed in federal court on Thursday provided few details about the prior armored truck crimes.
On July 15 and on July 22, Shackleford and others allegedly attempted to rob Brink’s trucks in Philadelphia, according to the indictment.
On Aug. 12, Shackleford and others allegedly robbed a Brink’s truck in Elkins Park and got away with approximately $119,100 and the Brink’s employee’s gun.
Then on Oct. 3, Shackleford and Davis allegedly attempted to rob a Brink’s truck in Philadelphia, which reportedly occurred in the area of City Avenue.
Davis also is charged in Montgomery County Court with multiple counts related to what happened on Oct. 3, including fleeing law enforcement and evading arrest.
It always figured to be an emotional day when the Alter family gathered at Har Jehuda Cemetery in Upper Darby. They were commemorating their mother’s first yahrzeit, the anniversary of death in the Jewish tradition.
But when the family arrived at her grave, they found it in devastating condition.
Beatrice Reina Alter, 93, was buried last year next to her husband, Milton Alter, in plots that the couple bought in the Jewish cemetery in the 1990s. When their family came together for her yahrzeit in August, they expected there to be a new headstone to match Milton’s.
Instead, her grave was covered in a fresh mound of dirt. The corner of a plywood board stuck out. And there was no headstone to be seen.
“We were shaken and appalled,” said Daniel Alter, one of the couple’s five children.
Yet issues at the cemetery — and for the burial industry — extend beyond placing headstones on time. Har Jehuda reflects an industry facing serious challenges to its longevity, where sometimes small, antiquated businesses must reinvent themselves. The country’s relationships with cemeteries and burials are changing, putting a seemingly timeless business at risk.
Har Jehuda, for instance,has been an important institution for the region’s Jewish community since its founding in the 1890s, holding more than 20,000 graves. But today, its grounds are largely overgrown and unkept, and numerous gravestones have fallen into disrepair. A volunteer group has stepped in to cover some of the maintenance and landscaping costs but fears it cannot sustain the cemetery for long.
Overgrown weeds and displaced headstones at Har Jehuda Cemetery in Upper Darby.
“The reality is that there are not enough staff or funds to maintain the cemetery, and there hasn’t been for years,” Randi Raskin Nash, a member of the Friends of Har Jehuda Cemetery group, said by email.
The cremation boom
A hundred years ago, cremation was an unusual choice in the United States. Things started to shift in 1963, when the Catholic Church lifted its prohibition of the practice and Jessica Mitford’s book The American Way of Death, an exposé of the death industry, was published. Before then the cremation rate was reported to be in the single digits, and even as it rose, by 1999 only about 25% of Americans were cremated. But that is changing.
Cremations are expected to double the number of burials in 2025, according to a report from the National Funeral Directors Association. By 2045, the cremation rate in Pennsylvania is projected to reach over 82%, with burials dropping to just under 14%.
Several factors appear to be driving the shift, according to Christopher Robinson, the president of the association’s board of directors. Those include costs, environmental concerns, declines in religious affiliation, and growing cultural acceptance of cremation.
window.addEventListener(“message”,function(a){if(void 0!==a.data[“datawrapper-height”]){var e=document.querySelectorAll(“iframe”);for(var t in a.data[“datawrapper-height”])for(var r,i=0;r=e[i];i++)if(r.contentWindow===a.source){var d=a.data[“datawrapper-height”][t]+”px”;r.style.height=d}}});
But that is not the business model that most cemeteries were built upon.
When folks secure a plot for interment, they are really buying an easement for burial rights, or essentially a license to use the cemetery’s land. Plots can cost thousands of dollars and areoften nonrefundable.
Once it comes time for a person to be buried, the cemetery may charge for other parts of the process, like digging and closing the plot, creating a headstone monument, or supplying a vault for the casket.
Most cemeteries sustain themselves for the future by putting a portion of that revenue into an endowment fund, where the return on investment can be used for maintenance and repairs. Friends of Har Jehuda estimates that it requires roughly $50,000 to$75,000 just to cover lawn mowing and weeding per season.
Cremations are much less profitable, particularly if a cemetery does not actually perform it — a walled recess with an engraved cover for a loved one’s urn may cost only a few hundred dollars.
It’s unknown exactly how many cemeteries have formally closed or been abandoned in recent years, since the statistic does not appear to be widely tracked. What is clear is that cremation trends and dwindling space for future burials have left cemeteries struggling.
“There’s going to be a lot of cemeteries going out of business in the next 20 years,” said Tanya Marsh, a law professor at Wake Forest University who teaches funeral and cemetery law, in an episode of The Economics of Everyday Things podcast last year.
Would you get married at a cemetery?
Some cemeteries have embraced the changes and creatively diversified their offerings.
“We’re an outdoor museum. We’re a sculpture garden, we’re an arboretum … we’re more than just a cemetery,” said Nancy Goldenberg, CEO of Laurel Hill Cemeteries in Philadelphia.
Laurel Hill uses its combined 265 acres on both sides of the Schuylkill to its advantage. On a given day at the historic cemetery, you might see visitors on a history tour, stretching out to watch a movie screening, attending a wedding, or meeting with the official book club, Boneyard Bookworms.
The 49 Burning Condors singer Kimber Dulin, Christopher Tremogile on guitar and Jason Gooch on drums play as folks shop for unusual antiques, vintage items, artwork and handmade wares at the Market of the Macabre at the Laurel Hill Cemetery in 2021.
Goldenberg said the extensive offerings are meant to build connections between people and the cemetery: They will be more likely to contribute money, or when they eventually need a resting place for their loved ones, they will look therefirst.
This all used to be more common — the first U.S. cemeteries in the mid-19th century also served as the country’s first public parks, with open grassy fields fit for a picnic. Before then, people buried their dead in smaller graveyards that eventually became overcrowded and sources of disease.
Laurel Hill is readying itself for a changing death industry, too. Goldenberg said she anticipates a rise in “green burials,” in which a person is buried without embalming or a casket, and said the cemetery was designating a section for them.
Visitors view a display behind a hearse during the 13th Car & Hearse Show presented by the Mohnton Professional Car Club at Laurel Hill Cemetery in 2021.
And while Goldenberg said she would be long gone before the cemetery runs out of space for new burials, it is a reality officials are planning for.
Laurel Hill is adding space for an additional 225 niches for cremated remains.
“There are small cemeteries, and once they fill up, that’s the revenue stream. … You have to be prepared for that,” she said.
“If you don’t, that’s when you fall on hard times.”
If a cemetery reachesthe point of closure or abandonment, it’s not alwaysclear what would happen to it. Last year, Gov. Josh Shapiro signed into law a bill sponsored by StateRep. Tim Brennan (D., Bucks) that would give financial relief to municipalities that take over abandoned cemeteries, since doing so can be a costly burden that local governments want to avoid.
Uncertain futures for cemeteries
Days after the Alter family made it through the prayers and memorial they planned, the emotional weight of the experience hit them even harder.
Daniel Alter later confirmed with Har Jehuda that a fresh grave had been dug where he believed his mother was buried. Recently, he hired a ground-penetrating radar company to examine the burial site, which determined the freshly dug grave was directly adjacent to where his mother was buried. While Alter was relieved to learn his mother’s grave had not been disturbed, he said Har Jehuda could have prevented the anguish he and his family have felt over the last few months.
Har Jehuda Cemetery’s owner, Larry Moskowitz, declined to comment for this article. Moskowitz was previously prosecuted by the state attorney general’s office over allegations that his other business, Wertheimer Monuments, had failed to deliver headstones to people who had paid for them. Complaints like these against the burial industry happen occasionally — the attorney general’s office also sued another Philadelphia monuments company in 2023 for failing to deliver headstones. There are multiple organizationsdedicated to protecting consumers against predatory burial providers.
The Alters, like other families, continue to visit and bury their loved ones at Har Jehuda, but they hope that no one else goes through their experience.
“Our collective wish is that it never, ever, ever happens again to anyone in the Philly area,” Daniel Alter said.