DENVER (AP) — Republican Sen. Cory Gardner remained on the attack in a crucial debate Friday night, the first one in the closely-watched Senate race that was televised live and coincided with ballots being shipped out to 4 million Colorado voters.

Just as in previous debates, Gardner has spared nothing in assaulting his Democratic challenger, former Gov. John Hickenlooper. On Friday he claimed Hickenlooper botched pandemic planning as governor and made inappropriate judicial appointments, and repeatedly cited a finding the former governor had violated state ethics laws.

But the toughest moment of the debate came when Gardner was asked why he switched from opposing President Donald Trump in 2016 to supporting his reelection now.

Gardner rescinded his endorsement of Trump four years ago after the then-candidate was caught bragging on tape about sexually assaulting women. Gardner said he was afraid Trump would lose to Hillary Clinton.

“I'm not going to support a socialist,” Gardner, 46, said of his current endorsement of Trump.

The socialism charge is a tough fit on Trump's opponent, Joe Biden, who beat a self-described Democratic Socialist to win his party's nomination, or Hickenlooper, a self-made millionaire who founded a mini-empire of brewpubs and briefly ran for the Democratic presidential nomination on an anti-socialism platform.

Hickenlooper at times had trouble responding to Gardner's barrage. “Cory is a fast speaker, very slick,” Hickenlooper, 68, said. “I think you’re going to hear tonight a lot of distortions.”

Both candidates forcefully condemned white supremacy, said they supported nationalized legal recreational marijuana and citizenship for the vast majority of people in the country illegally. When asked if he supported expanding the number of justices on the supreme court, Hickenlooper said: “Once we get new people into Washington, I think the system will right itself. That will change the institution more than immediately changing the rules.”

Asked repeatedly by Gardner to say yes or no, Hickenlooper said he answered the question.

Gardner was also asked repeatedly if he was proud to support Trump and, instead of saying yes or no, focused on their accomplishments, including the GOP's 2017 tax cut and a public lands bill the senator coauthored and often touts on the campaign trail.

“I'm proud of the work we've done together,” Gardner said.

Gardner is widely considered one of the most vulnerable Republican senators because Colorado has shifted sharply to the left under Trump. The president lost the state by 5 percentage points in 2016 and several operatives in both parties expect him to do worse this year.

That partly explained why the freshman senator has remained on the attack. He claimed Hickenlooper didn't do adequate pandemic planning as governor and repeatedly noted that a state judge Hickenlooper appointed had recently pleaded guilty to obstructing a federal investigation into a cocaine trafficking ring.

Gardner also hit upon the state's nonpartisan ethics finding that a flight on a private plane and a limousine trip in Rome that Hickenlooper took as governor violated state ethics law. “This is somebody you can't trust because he thinks it's all about him,” Gardner said of his opponent.

Hickenlooper has called the ethics violation a paperwork issue unearthed by Republican operatives, and he noted his judicial appointments are made from candidates recommended by a bipartisan panel. But the former governor, who famously refused to run negative ads in his previous campaigns, admitted he'd hit his limit in this race.

Asked to grade whether he'd run a positive campaign, he only gave himself a B. “I really thought I'd get through this campaign without doing any negative ads,” Hickenlooper said. But, he said, Gardner and Republicans have been so negative he had to be negative, too.