UNPKG

ibankit

Version:

Validation, field extraction and creation of IBAN, BBAN, BIC numbers

282 lines 78.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BbanStructure = void 0; const structurePart_1 = require("./structurePart"); const country_1 = require("./country"); const exceptions_1 = require("./exceptions"); function mod11(value, weights) { return ((11 - (value.split("").reduce((acc, s, idx) => acc + parseInt(s, 10) * weights[idx % weights.length], 0) % 11)) % 11); } function nationalES(bban, structure) { const weights = [1, 2, 4, 8, 5, 10, 9, 7, 3, 6]; const combined = [structurePart_1.PartType.BANK_CODE, structurePart_1.PartType.BRANCH_CODE].map((p) => structure.extractValueMust(bban, p)).join(""); function to11(v) { if (v === 10) { return 1; } else if (v === 11) { return 0; } return v; } const d1 = to11(mod11(`00${combined}`, weights)); const d2 = to11(mod11(structure.extractValueMust(bban, structurePart_1.PartType.ACCOUNT_NUMBER), weights)); return `${d1}${d2}`; } function nationalFR(bban, structure) { const replaceChars = { ["[AJ]"]: "1", ["[BKS]"]: "2", ["[CLT]"]: "3", ["[DMU]"]: "4", ["[ENV]"]: "5", ["[FOW]"]: "6", ["[GPX]"]: "7", ["[HQY]"]: "8", ["[IRZ]"]: "9", }; let combined = [structurePart_1.PartType.BANK_CODE, structurePart_1.PartType.BRANCH_CODE, structurePart_1.PartType.ACCOUNT_NUMBER] .map((p) => String(structure.extractValue(bban, p))) .join("") + "00"; Object.entries(replaceChars).map(([k, v]) => (combined = combined.replace(new RegExp(k, "g"), v))); const expected = 97 - combined.split("").reduce((acc, v) => (acc * 10 + parseInt(v)) % 97, 0); return String(expected).padStart(2, "0"); } function nationalIT(bban, structure) { const even = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]; const odd = [1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23]; const V0 = "0".charCodeAt(0); const V9 = "9".charCodeAt(0); const VA = "A".charCodeAt(0); const value = [structurePart_1.PartType.BANK_CODE, structurePart_1.PartType.BRANCH_CODE, structurePart_1.PartType.ACCOUNT_NUMBER] .map((p) => structure.extractValueMust(bban, p)) .join("") .split("") .map((v) => v.toUpperCase().charCodeAt(0)) .map((v) => v - (V0 <= v && v <= V9 ? V0 : VA)) .reduce((acc, v, idx) => acc + (idx % 2 === 0 ? odd[v] : even[v]), 0) % 26; return String.fromCharCode(VA + value); } function nationalNO(bban, structure) { const value = [structurePart_1.PartType.BANK_CODE, structurePart_1.PartType.ACCOUNT_NUMBER].map((p) => structure.extractValueMust(bban, p)).join(""); return String(mod11(value, [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]) % 10); } function nationalPT(bban, structure) { const V0 = "0".charCodeAt(0); const weights = [73, 17, 89, 38, 62, 45, 53, 15, 50, 5, 49, 34, 81, 76, 27, 90, 9, 30, 3]; const remainder = [structurePart_1.PartType.BANK_CODE, structurePart_1.PartType.BRANCH_CODE, structurePart_1.PartType.ACCOUNT_NUMBER] .map((p) => structure.extractValueMust(bban, p)) .join("") .split("") .map((v) => v.charCodeAt(0)) .reduce((acc, v, idx) => (acc + (v - V0) * weights[idx]) % 97, 0); return String(98 - remainder).padStart(2, "0"); } class BbanStructure { constructor(...entries) { this.entries = entries; } getParts() { return this.entries; } validate(bban) { this.validateBbanLength(bban); this.validateBbanEntries(bban); } extractValue(bban, partType) { let bbanPartOffset = 0; let result = null; for (const part of this.getParts()) { const partLength = part.getLength(); const partValue = bban.substring(bbanPartOffset, bbanPartOffset + partLength); bbanPartOffset = bbanPartOffset + partLength; if (part.getPartType() == partType) { result = (result || "") + partValue; } } return result; } extractValueMust(bban, partType) { const value = this.extractValue(bban, partType); if (value === null) { throw new exceptions_1.RequiredPartTypeMissing(`Required part type [${partType}] missing`); } return value; } static forCountry(countryCode) { if (!countryCode) { return null; } return this.structures[countryCode] || null; } static getEntries() { return Object.values(this.structures); } static supportedCountries() { return Object.keys(this.structures); } getBbanLength() { return this.entries.reduce((acc, e) => acc + e.getLength(), 0); } validateBbanLength(bban) { const expectedBbanLength = this.getBbanLength(); const bbanLength = bban.length; if (expectedBbanLength != bbanLength) { throw new exceptions_1.FormatException(exceptions_1.FormatViolation.BBAN_LENGTH, `[${bban}] length is ${bbanLength}, expected BBAN length is: ${expectedBbanLength}`, String(bbanLength), String(expectedBbanLength)); } } validateBbanEntries(bban) { let offset = 0; for (const part of this.getParts()) { const partLength = part.getLength(); const entryValue = bban.substring(offset, offset + partLength); offset = offset + partLength; this.validateBbanEntryCharacterType(bban, part, entryValue); } } validateBbanEntryCharacterType(bban, part, entryValue) { if (!part.validate(entryValue)) { switch (part.getCharacterType()) { case structurePart_1.CharacterType.a: throw new exceptions_1.FormatException(exceptions_1.FormatViolation.BBAN_ONLY_UPPER_CASE_LETTERS, `[${entryValue}] must contain only upper case letters.`, entryValue); case structurePart_1.CharacterType.c: throw new exceptions_1.FormatException(exceptions_1.FormatViolation.BBAN_ONLY_DIGITS_OR_LETTERS, `[${entryValue}] must contain only digits or letters.`, entryValue); case structurePart_1.CharacterType.n: throw new exceptions_1.FormatException(exceptions_1.FormatViolation.BBAN_ONLY_DIGITS, `[${entryValue}] must contain only digits.`, entryValue); } } if (part.getPartType() === structurePart_1.PartType.NATIONAL_CHECK_DIGIT && part.hasGenerator) { const expected = part.generate(bban, this); if (entryValue !== expected) { throw new exceptions_1.FormatException(exceptions_1.FormatViolation.NATIONAL_CHECK_DIGIT, `national check digit(s) don't match expect=[${expected}] actual=[${entryValue}]`, expected, entryValue); } } } } exports.BbanStructure = BbanStructure; BbanStructure.bbanFR = new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n, nationalFR)); BbanStructure.structures = { [country_1.CountryCode.AD]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.c)), [country_1.CountryCode.AE]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.c)), [country_1.CountryCode.AL]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.c)), [country_1.CountryCode.AO]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(21, structurePart_1.CharacterType.n)), [country_1.CountryCode.AT]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.n)), [country_1.CountryCode.AZ]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(20, structurePart_1.CharacterType.c)), [country_1.CountryCode.BA]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(8, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.BE]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(7, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n, (bban, structure) => { const accountNumber = structure.extractValue(bban, structurePart_1.PartType.ACCOUNT_NUMBER); const bankCode = structure.extractValue(bban, structurePart_1.PartType.BANK_CODE); if (accountNumber === null || bankCode === null) { throw new exceptions_1.FormatException(exceptions_1.FormatViolation.NOT_EMPTY, "account number or bank code missing"); } const value = parseInt(`${bankCode}${accountNumber}`, 10); const remainder = Math.floor(value / 97); let expected = value - remainder * 97; if (expected === 0) { expected = 97; } return String(expected).padStart(2, "0"); })), [country_1.CountryCode.BF]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(23, structurePart_1.CharacterType.n)), [country_1.CountryCode.BG]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountType(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(8, structurePart_1.CharacterType.c)), [country_1.CountryCode.BH]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(14, structurePart_1.CharacterType.c)), [country_1.CountryCode.BI]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.BJ]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n, nationalFR)), [country_1.CountryCode.BR]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(8, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountType(1, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.ownerAccountNumber(1, structurePart_1.CharacterType.c)), [country_1.CountryCode.BY]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.accountType(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.c)), [country_1.CountryCode.CF]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(23, structurePart_1.CharacterType.n)), [country_1.CountryCode.CG]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(23, structurePart_1.CharacterType.n)), [country_1.CountryCode.CH]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.c)), [country_1.CountryCode.CI]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.accountNumber(22, structurePart_1.CharacterType.n)), [country_1.CountryCode.CM]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(23, structurePart_1.CharacterType.n)), [country_1.CountryCode.CR]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(14, structurePart_1.CharacterType.n)), [country_1.CountryCode.CV]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(21, structurePart_1.CharacterType.n)), [country_1.CountryCode.CY]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.c)), [country_1.CountryCode.CZ]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(6, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.n)), [country_1.CountryCode.DE]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(8, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.n)), [country_1.CountryCode.DJ]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.DK]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.n)), [country_1.CountryCode.DO]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.accountNumber(20, structurePart_1.CharacterType.n)), [country_1.CountryCode.DZ]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(20, structurePart_1.CharacterType.n)), [country_1.CountryCode.EE]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.n)), [country_1.CountryCode.EG]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(17, structurePart_1.CharacterType.n)), [country_1.CountryCode.ES]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n, nationalES), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.n)), [country_1.CountryCode.FI]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.n)), [country_1.CountryCode.FK]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.n)), [country_1.CountryCode.FO]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(9, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.n)), [country_1.CountryCode.FR]: BbanStructure.bbanFR, [country_1.CountryCode.GA]: BbanStructure.bbanFR, [country_1.CountryCode.GB]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.branchCode(6, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(8, structurePart_1.CharacterType.n)), [country_1.CountryCode.GE]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.n)), [country_1.CountryCode.GI]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(15, structurePart_1.CharacterType.c)), [country_1.CountryCode.GL]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.n)), [country_1.CountryCode.GQ]: BbanStructure.bbanFR, [country_1.CountryCode.GR]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.c)), [country_1.CountryCode.GT]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.currencyType(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountType(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.c)), [country_1.CountryCode.HR]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(7, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.n)), [country_1.CountryCode.HN]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(20, structurePart_1.CharacterType.n)), [country_1.CountryCode.HU]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCheckDigit(1, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(15, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.n)), [country_1.CountryCode.IE]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.branchCode(6, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(8, structurePart_1.CharacterType.n)), [country_1.CountryCode.IL]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(13, structurePart_1.CharacterType.n)), [country_1.CountryCode.IQ]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.branchCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.n)), [country_1.CountryCode.IR]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(19, structurePart_1.CharacterType.n)), [country_1.CountryCode.IS]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(6, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.identificationNumber(10, structurePart_1.CharacterType.n)), [country_1.CountryCode.IT]: new BbanStructure(structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.a, nationalIT), structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.c)), [country_1.CountryCode.JO]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(18, structurePart_1.CharacterType.c)), [country_1.CountryCode.KM]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(23, structurePart_1.CharacterType.n)), [country_1.CountryCode.KW]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(22, structurePart_1.CharacterType.c)), [country_1.CountryCode.KZ]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(13, structurePart_1.CharacterType.c)), [country_1.CountryCode.LB]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(20, structurePart_1.CharacterType.c)), [country_1.CountryCode.LC]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(24, structurePart_1.CharacterType.n)), [country_1.CountryCode.LI]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.c)), [country_1.CountryCode.LT]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.n)), [country_1.CountryCode.LU]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(13, structurePart_1.CharacterType.c)), [country_1.CountryCode.LV]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(13, structurePart_1.CharacterType.c)), [country_1.CountryCode.LY]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(15, structurePart_1.CharacterType.n)), [country_1.CountryCode.MA]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(24, structurePart_1.CharacterType.n)), [country_1.CountryCode.MC]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n, nationalFR)), [country_1.CountryCode.MD]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.accountNumber(18, structurePart_1.CharacterType.c)), [country_1.CountryCode.ME]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(13, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.MG]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.MK]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.ML]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(1, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(25, structurePart_1.CharacterType.n)), [country_1.CountryCode.MN]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.n)), [country_1.CountryCode.MR]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.MT]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(18, structurePart_1.CharacterType.c)), [country_1.CountryCode.MU]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(6, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.branchCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.accountType(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.currencyType(3, structurePart_1.CharacterType.a)), [country_1.CountryCode.MZ]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(21, structurePart_1.CharacterType.n)), [country_1.CountryCode.NE]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(22, structurePart_1.CharacterType.n)), [country_1.CountryCode.NI]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(20, structurePart_1.CharacterType.n)), [country_1.CountryCode.NL]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.n)), [country_1.CountryCode.NO]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(6, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.n, nationalNO)), [country_1.CountryCode.OM]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.n)), [country_1.CountryCode.PK]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.c)), [country_1.CountryCode.PL]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.n)), [country_1.CountryCode.PS]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(21, structurePart_1.CharacterType.c)), [country_1.CountryCode.PT]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(11, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n, nationalPT)), [country_1.CountryCode.QA]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(21, structurePart_1.CharacterType.c)), [country_1.CountryCode.RO]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.c)), [country_1.CountryCode.RS]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(13, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.RU]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(9, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(15, structurePart_1.CharacterType.c)), [country_1.CountryCode.SA]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(18, structurePart_1.CharacterType.c)), [country_1.CountryCode.SC]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.branchCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCheckDigit(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.currencyType(3, structurePart_1.CharacterType.a)), [country_1.CountryCode.SD]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.n)), [country_1.CountryCode.SE]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.n)), [country_1.CountryCode.SI]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(8, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.SK]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.n)), [country_1.CountryCode.SM]: new BbanStructure(structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.a, nationalIT), structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.c)), [country_1.CountryCode.SN]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.branchCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(14, structurePart_1.CharacterType.n)), [country_1.CountryCode.SO]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(12, structurePart_1.CharacterType.n)), [country_1.CountryCode.ST]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(13, structurePart_1.CharacterType.n)), [country_1.CountryCode.SV]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.branchCode(4, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.n)), [country_1.CountryCode.TG]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(22, structurePart_1.CharacterType.n)), [country_1.CountryCode.TD]: new BbanStructure(structurePart_1.BbanStructurePart.accountNumber(23, structurePart_1.CharacterType.n)), [country_1.CountryCode.TL]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(14, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), [country_1.CountryCode.TN]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(3, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(13, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.c)), [country_1.CountryCode.TR]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(5, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(1, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.c)), [country_1.CountryCode.UA]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(6, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(19, structurePart_1.CharacterType.n)), [country_1.CountryCode.VA]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(3, structurePart_1.CharacterType.c), structurePart_1.BbanStructurePart.accountNumber(15, structurePart_1.CharacterType.n)), [country_1.CountryCode.VG]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(4, structurePart_1.CharacterType.a), structurePart_1.BbanStructurePart.accountNumber(16, structurePart_1.CharacterType.n)), [country_1.CountryCode.XK]: new BbanStructure(structurePart_1.BbanStructurePart.bankCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.branchCode(2, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.accountNumber(10, structurePart_1.CharacterType.n), structurePart_1.BbanStructurePart.nationalCheckDigit(2, structurePart_1.CharacterType.n)), }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJhblN0cnVjdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYmFuU3RydWN0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUE2RTtBQUM3RSx1Q0FBd0M7QUFDeEMsNkNBQXlGO0FBS3pGLFNBQVMsS0FBSyxDQUFDLEtBQWEsRUFBRSxPQUFpQjtJQUM3QyxPQUFPLENBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FDckgsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFZLEVBQUUsU0FBd0I7SUFDeEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxNQUFNLFFBQVEsR0FBRyxDQUFDLHdCQUFRLENBQUMsU0FBUyxFQUFFLHdCQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXJILFNBQVMsSUFBSSxDQUFDLENBQVM7UUFDckIsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osT0FBTyxDQUFDLENBQUM7U0FDVjthQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDakQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLHdCQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUUzRixPQUFPLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3RCLENBQUM7QUFLRCxTQUFTLFVBQVUsQ0FBQyxJQUFZLEVBQUUsU0FBd0I7SUFDeEQsTUFBTSxZQUFZLEdBQUc7UUFDbkIsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHO1FBQ2IsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ2QsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ2QsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ2QsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ2QsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ2QsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ2QsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHO1FBQ2QsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHO0tBQ2YsQ0FBQztJQUNGLElBQUksUUFBUSxHQUNWLENBQUMsd0JBQVEsQ0FBQyxTQUFTLEVBQUUsd0JBQVEsQ0FBQyxXQUFXLEVBQUUsd0JBQVEsQ0FBQyxjQUFjLENBQUM7U0FDaEUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuRCxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUduRyxNQUFNLFFBQVEsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTlGLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQVksRUFBRSxTQUF3QjtJQUN4RCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1RyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUs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