Implementation contract is not upgraded after a contract upgrade

Hi everyone, I'm currently using UUPS to upgrade my contracts but I've encountered a problem while verifying one of my contracts.
I have a factory at: 0xc47e2EF1ad576ac5bB942aBC4339b8283C206534. The implementation address of this contract is: 0x9aaeacf1d8e6f8131155584ea521f19e1bd55ddd. The problem is that I've upgraded the contract using this script:

import { ethers, upgrades } from "hardhat";
import addresses from '../addresses.proxy.json';
// scripts/prepare_upgrade.js
async function main() {
    const proxyAddress = addresses.mumbai.pass;
    const Pass = await ethers.getContractFactory("Pass");
    console.log("Preparing upgrade...");
    const newPassAddress = await upgrades.prepareUpgrade(proxyAddress, Pass);
    console.log("New pass at:", newPassAddress);
    .then(() => process.exit(0))
    .catch(error => {

After I run the command:

npx hardhat verify 0x496170da27fb9372531dfce552712152c74c05f3 --network mumbai --show-stack-trace

The terminal shown this message:

Successfully verified contract Pass on Etherscan.

The logic should now be updated! But it is not. When I go to the proxy contract page on Polyscan I'm still seeing the old implementation address with the old ABI like you can see in the screenshot below.

I nice guy on Discord told me that I needed to call the "ethers.upgradeProxy" method and not just the "ethers.prepareUpgrade" method. This is the answer