```\nFile: ProportionalRebalancingStrategy.sol\n    function calculateRebalance(\n        IPrimeCashHoldingsOracle oracle,\n        uint8[] calldata rebalancingTargets\n    ) external view override onlyNotional returns (RebalancingData memory rebalancingData) {\n        address[] memory holdings = oracle.holdings();\n..SNIP..\n        for (uint256 i; i < holdings.length;) {\n            address holding = holdings[i];\n            uint256 targetAmount = totalValue * rebalancingTargets[i] / uint256(Constants.PERCENTAGE_DECIMALS);\n            uint256 currentAmount = values[i];\n\n            redeemHoldings[i] = holding;\n            depositHoldings[i] = holding;\n..SNIP..\n        }\n\n        rebalancingData.redeemData = oracle.getRedemptionCalldataForRebalancing(redeemHoldings, redeemAmounts);\n        rebalancingData.depositData = oracle.getDepositCalldataForRebalancing(depositHoldings, depositAmounts);\n    }\n```\n