contract DelegatedPaymentSplitter is PaymentSplitterUpgradeable {
    /**
    @dev Initializes the PaymentSplitter, akin to a constructor. MUST be called
    by the Factory, in the same transaction as deployment, as there are no
    protections in place.
     */
    function initialize(address[] memory payees, uint256[] memory shares)
        external
        payable
        initializer
    {
        __PaymentSplitter_init(payees, shares);
    }
}
/**
 @notice This contract functions identically to a standard OpenZeppelin
 PaymentSplitter except that it can be cheaply cloned and deployed via the
 PaymentSplitterFactory. The upgradeable functionality is not used, but is
 required for cloning with an EIP-1677 minimal contract proxy.
 @dev Cloning only replicates the implementation logic, but not the data
 associated with each clone. See EIP-1677 for details.
 
 NOTE: there is likely no need to import this contract directly; instead see the
 ethier documentation for the deployed factory addresses.
 */
function initialize(address[] memory payees, uint256[] memory shares)
    external
    payable
    initializer
{
    __PaymentSplitter_init(payees, shares);
}

/**
 @dev Initializes the PaymentSplitter, akin to a constructor. MUST be called
 by the Factory, in the same transaction as deployment, as there are no
 protections in place.
 */