def _chobrut(choi, csg_rempl, _defaultP):
    '''
    Calcule les allocations chômage brute à partir des allocations imposables
    '''
    P = _defaultP.csg.chom
    plaf_ss = 12 * _defaultP.cotsoc.gen.plaf_ss
    csg = scaleBaremes(BaremeDict('csg', P), plaf_ss)
    taux_plein = csg['plein']['deduc']
    taux_reduit = csg['reduit']['deduc']

    chom_plein = taux_plein.inverse()
    chom_reduit = taux_reduit.inverse()
    chobrut = (csg_rempl == 1) * choi + (csg_rempl == 2) * chom_reduit.calc(choi) + (csg_rempl == 3) * chom_plein.calc(choi)
    isexo = exo_csg_chom(chobrut, csg_rempl, _defaultP)
    chobrut = not_(isexo) * chobrut + (isexo) * choi

    return chobrut
def _chobrut_from_chonet(chonet, csg_rempl, _defaultP):
    '''
    Calcule les allocations chômage brute à partir des allocations imposables
    '''
    P = _defaultP.csg.chom
    plaf_ss = 12 * _defaultP.cotsoc.gen.plaf_ss
    csg = scale_tax_scales(TaxScaleDict('csg', P), plaf_ss)
    crds = scale_tax_scales(_defaultP.crds.rst, plaf_ss)  # crds.rst est la CRDS sur les revenus de remplacement donc valable aussi pour le chômage

    taux_plein = combine_tax_scales(csg['plein'])
    taux_reduit = combine_tax_scales(csg['reduit'])
    taux_plein.add_tax_scale(crds)
    taux_reduit.add_tax_scale(crds)
    chom_plein = taux_plein.inverse()
    chom_reduit = taux_reduit.inverse()

    chobrut = (csg_rempl == 1) * chonet + (csg_rempl == 2) * chom_reduit.calc(chonet) + (csg_rempl == 3) * chom_plein.calc(chonet)
    isexo = exo_csg_chom(chobrut, csg_rempl, _defaultP)
    chobrut = not_(isexo) * chobrut + (isexo) * chonet
    return chobrut