/*
 * Copyright 2018-2022 adorsys GmbH & Co KG
 *
 * This program is free software: you can redistribute it and/or modify it
 * under the terms of the GNU Affero General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or (at
 * your option) any later version. This program is distributed in the hope that
 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see https://www.gnu.org/licenses/.
 *
 * This project is also available under a separate commercial license. You can
 * contact us at psd2@adorsys.com.
 */

package de.adorsys.xs2a.adapter.api.model;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

import javax.annotation.Generated;

@Generated("xs2a-adapter-codegen")
public enum PurposeCode {
    BKDF("BKDF"),

    BKFE("BKFE"),

    BKFM("BKFM"),

    BKIP("BKIP"),

    BKPP("BKPP"),

    CBLK("CBLK"),

    CDCB("CDCB"),

    CDCD("CDCD"),

    CDCS("CDCS"),

    CDDP("CDDP"),

    CDOC("CDOC"),

    CDQC("CDQC"),

    ETUP("ETUP"),

    FCOL("FCOL"),

    MTUP("MTUP"),

    ACCT("ACCT"),

    CASH("CASH"),

    COLL("COLL"),

    CSDB("CSDB"),

    DEPT("DEPT"),

    INTC("INTC"),

    LIMA("LIMA"),

    NETT("NETT"),

    BFWD("BFWD"),

    CCIR("CCIR"),

    CCPC("CCPC"),

    CCPM("CCPM"),

    CCSM("CCSM"),

    CRDS("CRDS"),

    CRPR("CRPR"),

    CRSP("CRSP"),

    CRTL("CRTL"),

    EQPT("EQPT"),

    EQUS("EQUS"),

    EXPT("EXPT"),

    EXTD("EXTD"),

    FIXI("FIXI"),

    FWBC("FWBC"),

    FWCC("FWCC"),

    FWSB("FWSB"),

    FWSC("FWSC"),

    MARG("MARG"),

    MBSB("MBSB"),

    MBSC("MBSC"),

    MGCC("MGCC"),

    MGSC("MGSC"),

    OCCC("OCCC"),

    OPBC("OPBC"),

    OPCC("OPCC"),

    OPSB("OPSB"),

    OPSC("OPSC"),

    OPTN("OPTN"),

    OTCD("OTCD"),

    REPO("REPO"),

    RPBC("RPBC"),

    RPCC("RPCC"),

    RPSB("RPSB"),

    RPSC("RPSC"),

    RVPO("RVPO"),

    SBSC("SBSC"),

    SCIE("SCIE"),

    SCIR("SCIR"),

    SCRP("SCRP"),

    SHBC("SHBC"),

    SHCC("SHCC"),

    SHSL("SHSL"),

    SLEB("SLEB"),

    SLOA("SLOA"),

    SWBC("SWBC"),

    SWCC("SWCC"),

    SWPT("SWPT"),

    SWSB("SWSB"),

    SWSC("SWSC"),

    TBAS("TBAS"),

    TBBC("TBBC"),

    TBCC("TBCC"),

    TRCP("TRCP"),

    AGRT("AGRT"),

    AREN("AREN"),

    BEXP("BEXP"),

    BOCE("BOCE"),

    COMC("COMC"),

    CPYR("CPYR"),

    GDDS("GDDS"),

    GDSV("GDSV"),

    GSCB("GSCB"),

    LICF("LICF"),

    MP2B("MP2B"),

    POPE("POPE"),

    ROYA("ROYA"),

    SCVE("SCVE"),

    SERV("SERV"),

    SUBS("SUBS"),

    SUPP("SUPP"),

    TRAD("TRAD"),

    CHAR("CHAR"),

    COMT("COMT"),

    MP2P("MP2P"),

    ECPG("ECPG"),

    ECPR("ECPR"),

    ECPU("ECPU"),

    EPAY("EPAY"),

    CLPR("CLPR"),

    COMP("COMP"),

    DBTC("DBTC"),

    GOVI("GOVI"),

    HLRP("HLRP"),

    HLST("HLST"),

    INPC("INPC"),

    INPR("INPR"),

    INSC("INSC"),

    INSU("INSU"),

    INTE("INTE"),

    LBRI("LBRI"),

    LIFI("LIFI"),

    LOAN("LOAN"),

    LOAR("LOAR"),

    PENO("PENO"),

    PPTI("PPTI"),

    RELG("RELG"),

    RINP("RINP"),

    TRFD("TRFD"),

    FORW("FORW"),

    FXNT("FXNT"),

    ADMG("ADMG"),

    ADVA("ADVA"),

    BCDM("BCDM"),

    BCFG("BCFG"),

    BLDM("BLDM"),

    BNET("BNET"),

    CBFF("CBFF"),

    CBFR("CBFR"),

    CCRD("CCRD"),

    CDBL("CDBL"),

    CFEE("CFEE"),

    CGDD("CGDD"),

    CORT("CORT"),

    COST("COST"),

    CPKC("CPKC"),

    DCRD("DCRD"),

    DSMT("DSMT"),

    DVPM("DVPM"),

    EDUC("EDUC"),

    FACT("FACT"),

    FAND("FAND"),

    FCPM("FCPM"),

    FEES("FEES"),

    GOVT("GOVT"),

    ICCP("ICCP"),

    IDCP("IDCP"),

    IHRP("IHRP"),

    INSM("INSM"),

    IVPT("IVPT"),

    MCDM("MCDM"),

    MCFG("MCFG"),

    MSVC("MSVC"),

    NOWS("NOWS"),

    OCDM("OCDM"),

    OCFG("OCFG"),

    OFEE("OFEE"),

    OTHR("OTHR"),

    PADD("PADD"),

    PTSP("PTSP"),

    RCKE("RCKE"),

    RCPT("RCPT"),

    REBT("REBT"),

    REFU("REFU"),

    RENT("RENT"),

    REOD("REOD"),

    RIMB("RIMB"),

    RPNT("RPNT"),

    RRBN("RRBN"),

    RVPM("RVPM"),

    SLPI("SLPI"),

    SPLT("SPLT"),

    STDY("STDY"),

    TBAN("TBAN"),

    TBIL("TBIL"),

    TCSC("TCSC"),

    TELI("TELI"),

    TMPG("TMPG"),

    TPRI("TPRI"),

    TPRP("TPRP"),

    TRNC("TRNC"),

    TRVC("TRVC"),

    WEBI("WEBI"),

    ANNI("ANNI"),

    CAFI("CAFI"),

    CFDI("CFDI"),

    CMDT("CMDT"),

    DERI("DERI"),

    DIVD("DIVD"),

    FREX("FREX"),

    HEDG("HEDG"),

    INVS("INVS"),

    PRME("PRME"),

    SAVG("SAVG"),

    SECU("SECU"),

    SEPI("SEPI"),

    TREA("TREA"),

    UNIT("UNIT"),

    FNET("FNET"),

    FUTR("FUTR"),

    ANTS("ANTS"),

    CVCF("CVCF"),

    DMEQ("DMEQ"),

    DNTS("DNTS"),

    HLTC("HLTC"),

    HLTI("HLTI"),

    HSPC("HSPC"),

    ICRF("ICRF"),

    LTCF("LTCF"),

    MAFC("MAFC"),

    MARF("MARF"),

    MDCS("MDCS"),

    VIEW("VIEW"),

    CDEP("CDEP"),

    SWFP("SWFP"),

    SWPP("SWPP"),

    SWRS("SWRS"),

    SWUF("SWUF"),

    ADCS("ADCS"),

    AEMP("AEMP"),

    ALLW("ALLW"),

    ALMY("ALMY"),

    BBSC("BBSC"),

    BECH("BECH"),

    BENE("BENE"),

    BONU("BONU"),

    CCHD("CCHD"),

    COMM("COMM"),

    CSLP("CSLP"),

    GFRP("GFRP"),

    GVEA("GVEA"),

    GVEB("GVEB"),

    GVEC("GVEC"),

    GVED("GVED"),

    GWLT("GWLT"),

    HREC("HREC"),

    PAYR("PAYR"),

    PEFC("PEFC"),

    PENS("PENS"),

    PRCP("PRCP"),

    RHBS("RHBS"),

    SALA("SALA"),

    SSBE("SSBE"),

    LBIN("LBIN"),

    LCOL("LCOL"),

    LFEE("LFEE"),

    LMEQ("LMEQ"),

    LMFI("LMFI"),

    LMRK("LMRK"),

    LREB("LREB"),

    LREV("LREV"),

    LSFL("LSFL"),

    ESTX("ESTX"),

    FWLV("FWLV"),

    GSTX("GSTX"),

    HSTX("HSTX"),

    INTX("INTX"),

    NITX("NITX"),

    PTXP("PTXP"),

    RDTX("RDTX"),

    TAXS("TAXS"),

    VATX("VATX"),

    WHLD("WHLD"),

    TAXR("TAXR"),

    B112("B112"),

    BR12("BR12"),

    TLRF("TLRF"),

    TLRR("TLRR"),

    AIRB("AIRB"),

    BUSB("BUSB"),

    FERB("FERB"),

    RLWY("RLWY"),

    TRPT("TRPT"),

    CBTV("CBTV"),

    ELEC("ELEC"),

    ENRG("ENRG"),

    GASB("GASB"),

    NWCH("NWCH"),

    NWCM("NWCM"),

    OTLC("OTLC"),

    PHON("PHON"),

    UBIL("UBIL"),

    WTER("WTER");

    private String value;

    PurposeCode(String value) {
        this.value = value;
    }

    @JsonCreator
    public static PurposeCode fromValue(String value) {
        for (PurposeCode e : PurposeCode.values()) {
            if (e.value.equals(value)) {
                return e;
            }
        }
        return null;
    }

    @Override
    @JsonValue
    public String toString() {
        return value;
    }
}
