{"version":3,"file":"brazilian-utils.umd.cjs","names":["PATTERN","OBFUSCATED_PATTERN","OBFUSCATED_PATTERN","PATTERN","PATTERN","PATTERN","MODULUS","MODULUS","DATA","STATE_CODES","STATE_CODES","SEPARATORS_REGEX","SEPARATORS_REGEX","FORMAT_REGEX","isValidChecksum","FORMAT_REGEX","MODULUS","cache","WHITESPACE_REGEX","WHITESPACE_REGEX","PATTERN","PATTERN","PATTERN","PATTERN","MASK","MASK","AMOUNT_REGEX","AMOUNT_REGEX","BASE_LENGTH","DATA","isStateCode","isStateCode","getCheckDigit","CITIES_DATA","SEPARATORS_REGEX","CITIES_DATA","DATA","getMunicipalityByCode","CITIES_DATA","DATA","CITIES_DATA","FORMAT_REGEX","FORMAT_REGEX","DATA","DATA","DATA","DATA","FORMAT_REGEX","SEPARATORS_REGEX","FORMAT_REGEX","SEPARATORS_REGEX","FORMAT_REGEX","SEPARATORS_REGEX","isStateCode","FORMAT_REGEX","SEPARATORS_REGEX"],"sources":["../src/_internals/format/format.ts","../src/_internals/is-nullish/is-nullish.ts","../src/_internals/to-string-safe/to-string-safe.ts","../src/_internals/sanitize-to-digits/sanitize-to-digits.ts","../src/format-cep/format-cep.ts","../src/_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric.ts","../src/_internals/sanitize-cnpj/sanitize-cnpj.ts","../src/format-cnpj/constants.ts","../src/format-cnpj/format-cnpj.ts","../src/format-cpf/constants.ts","../src/format-cpf/format-cpf.ts","../src/_internals/calculate-cnpj-check-digit/calculate-cnpj-check-digit.ts","../src/_internals/constants/cnpj.ts","../src/_internals/generate-random-number/generate-random-number.ts","../src/_internals/is-repeated-digits/is-repeated-digits.ts","../src/generate-cnpj/generate-cnpj.ts","../src/_internals/calculate-cpf-check-digit/calculate-cpf-check-digit.ts","../src/_internals/constants/states.ts","../src/generate-cpf/constants.ts","../src/generate-cpf/generate-cpf.ts","../src/_internals/constants/separators.ts","../src/is-valid-cep/is-valid-cep.ts","../src/is-valid-cnpj/is-valid-cnpj.ts","../src/is-valid-cpf/is-valid-cpf.ts","../src/_internals/mod10/mod10.ts","../src/is-valid-ie/constants.ts","../src/is-valid-ie/is-valid-ie.ts","../src/_internals/constants/pis.ts","../src/_internals/calculate-pis-check-digit/calculate-pis-check-digit.ts","../src/is-valid-pis/is-valid-pis.ts","../src/_internals/constants/holidays.ts","../src/_internals/is-supported-holiday-year/is-supported-holiday-year.ts","../src/_internals/is-valid-date/is-valid-date.ts","../src/_internals/resolve-state-holiday-date/resolve-state-holiday-date.ts","../src/get-holidays/constants.ts","../src/get-holidays/get-holidays.ts","../src/is-business-day/is-business-day.ts","../src/add-business-days/add-business-days.ts","../src/_internals/constants/state-codes.ts","../src/capitalize/constants.ts","../src/capitalize/capitalize.ts","../src/_internals/constants/number-words.ts","../src/_internals/number-to-words/number-to-words.ts","../src/convert-currency-to-words/convert-currency-to-words.ts","../src/convert-date-to-words/convert-date-to-words.ts","../src/get-format-license-plate/constants.ts","../src/get-format-license-plate/get-format-license-plate.ts","../src/parse-license-plate/parse-license-plate.ts","../src/convert-license-plate-to-mercosul/constants.ts","../src/convert-license-plate-to-mercosul/convert-license-plate-to-mercosul.ts","../src/convert-number-to-words/convert-number-to-words.ts","../src/difference-in-business-days/difference-in-business-days.ts","../src/_internals/constants/arrecadacao.ts","../src/format-boleto/constants.ts","../src/format-boleto/format-boleto.ts","../src/format-caepf/constants.ts","../src/format-caepf/format-caepf.ts","../src/_internals/constants/cei.ts","../src/format-cei/format-cei.ts","../src/_internals/constants/certidao.ts","../src/format-certidao/format-certidao.ts","../src/format-cnae/format-cnae.ts","../src/format-cnh/format-cnh.ts","../src/format-cno/format-cno.ts","../src/format-cns/format-cns.ts","../src/_internals/clamp-precision/clamp-precision.ts","../src/_internals/parse-decimal/parse-decimal.ts","../src/format-currency/format-currency.ts","../src/_internals/constants/iban.ts","../src/format-iban/format-iban.ts","../src/format-legal-nature/format-legal-nature.ts","../src/format-license-plate/format-license-plate.ts","../src/format-ncm/format-ncm.ts","../src/format-nfe-key/constants.ts","../src/format-nfe-key/format-nfe-key.ts","../src/parse-passport/parse-passport.ts","../src/format-passport/format-passport.ts","../src/_internals/constants/phone.ts","../src/_internals/constants/service-phone.ts","../src/_internals/normalize-phone/normalize-phone.ts","../src/is-valid-service-phone/is-valid-service-phone.ts","../src/_internals/strip-phone-country-code/strip-phone-country-code.ts","../src/_internals/resolve-service-phone-digits/resolve-service-phone-digits.ts","../src/format-phone/constants.ts","../src/format-phone/format-phone.ts","../src/format-pis/format-pis.ts","../src/format-processo-juridico/format-processo-juridico.ts","../src/_internals/constants/voter-id.ts","../src/format-voter-id/format-voter-id.ts","../src/_internals/mod11/mod11.ts","../src/generate-boleto/generate-boleto.ts","../src/generate-cep/generate-cep.ts","../src/_internals/calculate-cnh-first-verifier/calculate-cnh-first-verifier.ts","../src/_internals/calculate-cnh-second-verifier/calculate-cnh-second-verifier.ts","../src/generate-cnh/generate-cnh.ts","../src/is-valid-legal-nature/constants.ts","../src/_internals/is-legacy-legal-nature/is-legacy-legal-nature.ts","../src/generate-legal-nature/generate-legal-nature.ts","../src/generate-license-plate/generate-license-plate.ts","../src/generate-passport/generate-passport.ts","../src/_internals/constants/area-codes.ts","../src/_internals/pick-random/pick-random.ts","../src/generate-phone/generate-phone.ts","../src/generate-pis/generate-pis.ts","../src/_internals/constants/pix.ts","../src/_internals/crc16-ccitt/crc16-ccitt.ts","../src/_internals/format-tlv/format-tlv.ts","../src/_internals/is-valid-pix-url/is-valid-pix-url.ts","../src/_internals/sanitize-to-ascii/sanitize-to-ascii.ts","../src/is-valid-email/is-valid-email.ts","../src/_internals/is-valid-ddd/is-valid-ddd.ts","../src/is-valid-landline-phone/constants.ts","../src/is-valid-landline-phone/is-valid-landline-phone.ts","../src/is-valid-mobile-phone/constants.ts","../src/is-valid-mobile-phone/is-valid-mobile-phone.ts","../src/is-valid-phone/constants.ts","../src/is-valid-phone/is-valid-phone.ts","../src/parse-cnpj/parse-cnpj.ts","../src/get-pix-key-info/constants.ts","../src/get-pix-key-info/get-pix-key-info.ts","../src/generate-pix-payload/constants.ts","../src/generate-pix-payload/generate-pix-payload.ts","../src/_internals/constants/processo-juridico.ts","../src/_internals/calculate-processo-juridico-check-digits/calculate-processo-juridico-check-digits.ts","../src/generate-processo-juridico/generate-processo-juridico.ts","../src/_internals/calculate-renavam-check-digit/calculate-renavam-check-digit.ts","../src/generate-renavam/generate-renavam.ts","../src/_internals/calculate-voter-id-first-digit/calculate-voter-id-first-digit.ts","../src/_internals/calculate-voter-id-second-digit/calculate-voter-id-second-digit.ts","../src/is-valid-voter-id/constants.ts","../src/generate-voter-id/generate-voter-id.ts","../src/_internals/fetch-with-retry/fetch-with-retry.ts","../src/get-address-info-by-cep/get-address-info-by-cep.ts","../src/_internals/is-lookup-code/is-lookup-code.ts","../src/get-area-code-info/get-area-code-info.ts","../src/get-area-codes-by-state/get-area-codes-by-state.ts","../src/_internals/constants/banks.ts","../src/get-bank-by-code/get-bank-by-code.ts","../src/get-bank-by-ispb/get-bank-by-ispb.ts","../src/get-banks/get-banks.ts","../src/_internals/parse-arrecadacao/parse-arrecadacao.ts","../src/is-valid-boleto/constants.ts","../src/is-valid-boleto/is-valid-boleto.ts","../src/get-boleto-info/constants.ts","../src/get-boleto-info/get-boleto-info.ts","../src/_internals/constants/cbo.ts","../src/_internals/pad-lookup-code/pad-lookup-code.ts","../src/get-cbo/get-cbo.ts","../src/_internals/is-state-code/is-state-code.ts","../src/remove-accents/remove-accents.ts","../src/get-cep-info-by-address/get-cep-info-by-address.ts","../src/get-certidao-info/constants.ts","../src/is-valid-certidao/is-valid-certidao.ts","../src/get-certidao-info/get-certidao-info.ts","../src/_internals/constants/cfop.ts","../src/get-cfop/get-cfop.ts","../src/_internals/constants/cities.ts","../src/get-cities/get-cities.ts","../src/_internals/constants/cnae.ts","../src/get-cnae/get-cnae.ts","../src/is-valid-iban/is-valid-iban.ts","../src/get-iban-info/get-iban-info.ts","../src/_internals/constants/legal-nature-categories.ts","../src/get-legal-nature/get-legal-nature.ts","../src/get-legal-natures/get-legal-natures.ts","../src/get-legal-natures-by-category/get-legal-natures-by-category.ts","../src/get-municipalities/get-municipalities.ts","../src/_internals/normalize-municipality-name/normalize-municipality-name.ts","../src/get-municipality/get-municipality.ts","../src/get-municipality-by-code/get-municipality-by-code.ts","../src/_internals/constants/ibge-uf-codes.ts","../src/_internals/constants/nfe-key.ts","../src/get-nfe-key-info/constants.ts","../src/get-nfe-key-info/get-nfe-key-info.ts","../src/_internals/parse-tlv/parse-tlv.ts","../src/get-pix-payload-info/get-pix-payload-info.ts","../src/get-state-by-ibge-code/get-state-by-ibge-code.ts","../src/get-state-code-by-name/get-state-code-by-name.ts","../src/get-state-name-by-code/get-state-name-by-code.ts","../src/get-states/get-states.ts","../src/get-timezone-by-state/constants.ts","../src/get-timezone-by-state/get-timezone-by-state.ts","../src/is-holiday/is-holiday.ts","../src/_internals/generate-checksum/generate-checksum.ts","../src/is-valid-bank-account/constants.ts","../src/is-valid-bank-account/is-valid-bank-account.ts","../src/is-valid-caepf/constants.ts","../src/is-valid-caepf/is-valid-caepf.ts","../src/is-valid-cbo/is-valid-cbo.ts","../src/_internals/calculate-cei-check-digit/calculate-cei-check-digit.ts","../src/_internals/is-valid-cei-cno-number/is-valid-cei-cno-number.ts","../src/is-valid-cei/is-valid-cei.ts","../src/is-valid-cfop/is-valid-cfop.ts","../src/is-valid-cnae/is-valid-cnae.ts","../src/is-valid-cnh/is-valid-cnh.ts","../src/is-valid-cno/is-valid-cno.ts","../src/_internals/constants/cns.ts","../src/is-valid-cns/is-valid-cns.ts","../src/is-valid-credit-card/is-valid-credit-card.ts","../src/is-valid-csosn/constants.ts","../src/is-valid-csosn/is-valid-csosn.ts","../src/is-valid-cst/constants.ts","../src/is-valid-cst/is-valid-cst.ts","../src/is-valid-legal-nature/is-valid-legal-nature.ts","../src/is-valid-license-plate/is-valid-license-plate.ts","../src/is-valid-ncm/constants.ts","../src/is-valid-ncm/is-valid-ncm.ts","../src/is-valid-nfe-key/is-valid-nfe-key.ts","../src/is-valid-passport/constants.ts","../src/is-valid-passport/is-valid-passport.ts","../src/is-valid-pix-key/is-valid-pix-key.ts","../src/is-valid-pix-payload/is-valid-pix-payload.ts","../src/is-valid-processo-juridico/is-valid-processo-juridico.ts","../src/is-valid-registro-profissional/constants.ts","../src/is-valid-registro-profissional/is-valid-registro-profissional.ts","../src/is-valid-renavam/is-valid-renavam.ts","../src/is-valid-vin/constants.ts","../src/is-valid-vin/is-valid-vin.ts","../src/is-valid-voter-id/is-valid-voter-id.ts","../src/parse-boleto/parse-boleto.ts","../src/parse-caepf/parse-caepf.ts","../src/parse-cbo/parse-cbo.ts","../src/parse-cei/parse-cei.ts","../src/parse-cep/parse-cep.ts","../src/parse-certidao/parse-certidao.ts","../src/parse-cfop/parse-cfop.ts","../src/parse-cnae/parse-cnae.ts","../src/parse-cnh/parse-cnh.ts","../src/parse-cno/parse-cno.ts","../src/parse-cns/parse-cns.ts","../src/parse-cpf/parse-cpf.ts","../src/parse-currency/parse-currency.ts","../src/parse-iban/parse-iban.ts","../src/parse-legal-nature/parse-legal-nature.ts","../src/parse-ncm/parse-ncm.ts","../src/parse-nfe-key/parse-nfe-key.ts","../src/parse-phone/parse-phone.ts","../src/parse-pis/parse-pis.ts","../src/parse-processo-juridico/parse-processo-juridico.ts","../src/parse-voter-id/parse-voter-id.ts","../src/sub-business-days/sub-business-days.ts","../src/index.ts"],"sourcesContent":["export type FormatParams = {\n\t/** The raw value to format, already sanitized to the characters the pattern consumes. */\n\tvalue: string;\n\t/** The pattern to format against: `0` copies one input character, `*` hides one, anything else is a literal separator. */\n\tpattern: string;\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a given value according to a specified pattern.\n *\n * The pattern is read character by character:\n * - `0` consumes one character of `value` and copies it;\n * - `*` consumes one character of `value` and emits `*` in its place, hiding it;\n * - anything else is a literal separator, emitted only while `value` still has characters left.\n *\n * `pad` counts both `0` and `*` as slots, so a value shorter than the pattern is left padded\n * with zeros before it is consumed.\n *\n * @param {FormatParams} params - The parameters for formatting.\n * @param {string} params.value - The value to be formatted.\n * @param {string} params.pattern - The pattern to format the value against.\n * @param {boolean} [params.pad] - Whether to pad the value with leading zeros.\n * @returns {string} The formatted value.\n *\n * @example\n * ```typescript\n * format({ value: \"123456\", pattern: \"000-000\" }); // \"123-456\"\n * format({ value: \"123\", pattern: \"0000-000\", pad: true }); // \"0000-123\"\n * format({ value: \"12345678909\", pattern: \"***.000.000-**\" }); // \"***.456.789-**\"\n * ```\n */\nexport const format = ({ pad, value, pattern }: FormatParams): string => {\n\tlet formatted = \"\";\n\tlet valueIndex = 0;\n\tlet paddedValue = value;\n\n\tif (pad ?? false) {\n\t\tconst separatorsLength = pattern.replaceAll(/[0*]/g, \"\").length;\n\t\tpaddedValue = value.padStart(pattern.length - separatorsLength, \"0\");\n\t}\n\n\tfor (const char of pattern) {\n\t\tif (char === \"0\" || char === \"*\") {\n\t\t\tif (valueIndex >= paddedValue.length) break;\n\t\t\tformatted += char === \"*\" ? \"*\" : paddedValue[valueIndex];\n\t\t\tvalueIndex++;\n\t\t} else if (valueIndex < paddedValue.length) {\n\t\t\tformatted += char;\n\t\t}\n\t}\n\n\treturn formatted;\n};\n","/**\n * Checks whether a value is `null` or `undefined`.\n *\n * Public functions of this library must never throw on bad input, so every entry point\n * guards its argument with this helper before handing it to a sanitizer and returns the\n * empty value of its family instead (`\"\"` for `format*`/`parse*`, `false` for `isValid*`,\n * `null` where the family already uses `null` and `[]` for list getters).\n *\n * @param {unknown} value - The value to check.\n * @returns {boolean} True when the value is `null` or `undefined`.\n *\n * @example\n * ```typescript\n * isNullish(null); // true\n * isNullish(undefined); // true\n * isNullish(\"\"); // false\n * isNullish(0); // false\n * ```\n */\nexport const isNullish = (value: unknown): value is null | undefined =>\n\tvalue === null || value === undefined;\n","/**\n * Reads a value as a string the way `String(value)` does, but returns `\"\"` when the value has no\n * string conversion (an object with a null prototype, an object whose `toString` throws) instead\n * of throwing, so a formatter handed hostile input never throws.\n *\n * @param {unknown} value - The value to read.\n * @returns {string} `String(value)`, or `\"\"` when that conversion throws.\n *\n * @example\n * ```typescript\n * toStringSafe(123) // \"123\"\n * toStringSafe([1, 2]) // \"1,2\"\n * toStringSafe(Object.create(null)) // \"\"\n * ```\n */\nexport const toStringSafe = (value: unknown): string => {\n\ttry {\n\t\treturn String(value);\n\t} catch {\n\t\treturn \"\";\n\t}\n};\n","import { toStringSafe } from \"../to-string-safe/to-string-safe\";\n\n/**\n * Sanitizes the input value by removing all non-digit characters. A value with no string\n * conversion (an object with a null prototype) reads as `\"\"` instead of throwing.\n *\n * @param {string|number} value - The input value to be sanitized. It can be a string or a number.\n * @returns {string} A string containing only the digit characters from the input value.\n *\n * @example\n * ```typescript\n * sanitizeToDigits(\"abc123\") // \"123\"\n * sanitizeToDigits(\"1a2b3c\") // \"123\"\n * sanitizeToDigits(12345)    // \"12345\"\n * sanitizeToDigits(\"001-234\") // \"001234\"\n * ```\n */\nexport const sanitizeToDigits = (value: string | number): string =>\n\ttoStringSafe(value).replaceAll(/\\D/g, \"\");\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatCep`. */\nexport type FormatCepOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a given value as a Brazilian postal code (CEP).\n *\n * @param {string|number} value - The value to be formatted, either as a string or a number.\n * @param {FormatCepOptions} [options] - Optional formatting options.\n * @param {boolean} options.pad - Whether to pad the value with leading zeros.\n * @returns {string} The formatted CEP string in the pattern \"00000-000\".\n *\n * @example\n * ```typescript\n * formatCep(\"01310930\"); // \"01310-930\"\n * formatCep(\"1310930\", { pad: true }); // \"01310-930\"\n * ```\n *\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/tudo-sobre-cep\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/guia-de-enderecamento/guia-de-enderecamento\n */\nexport const formatCep = (value: string | number, options?: FormatCepOptions): string =>\n\tisNullish(value)\n\t\t? \"\"\n\t\t: format({\n\t\t\t\tpad: options?.pad,\n\t\t\t\tvalue: sanitizeToDigits(value),\n\t\t\t\tpattern: \"00000-000\",\n\t\t\t});\n","import { toStringSafe } from \"../to-string-safe/to-string-safe\";\n\n/**\n * Sanitizes the input value by removing all non-alphanumeric characters and uppercasing the result.\n * A value with no string conversion (an object with a null prototype) reads as `\"\"` instead of throwing.\n *\n * @param {string|number} value - The input value to be sanitized. It can be a string or a number.\n * @returns {string} A string containing only uppercase alphanumeric characters from the input value.\n *\n * @example\n * ```typescript\n * sanitizeToAlphanumeric(\"abc123\") // \"ABC123\"\n * sanitizeToAlphanumeric(\"Ab-12.3\") // \"AB123\"\n * sanitizeToAlphanumeric(12345) // \"12345\"\n * ```\n */\nexport const sanitizeToAlphanumeric = (value: string | number): string =>\n\ttoStringSafe(value)\n\t\t.replaceAll(/[^A-Za-z0-9]/g, \"\")\n\t\t.toUpperCase();\n","import { sanitizeToAlphanumeric } from \"../sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { sanitizeToDigits } from \"../sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Sanitizes a CNPJ value to the characters its version is written with: the digits of the\n * numeric CNPJ (version `1`, the default), or the upper cased letters and digits of the\n * alphanumeric one (version `2`).\n *\n * Shared by `formatCnpj` and `parseCnpj`, which read a value the very same way.\n *\n * @param {string|number} value - The CNPJ value to sanitize.\n * @param {1|2} [version] - The CNPJ version to read the value as. Defaults to the numeric one.\n * @returns {string} The sanitized value.\n *\n * @example\n * ```typescript\n * sanitizeCnpj(\"11.222.333/0001-81\"); // \"11222333000181\"\n * sanitizeCnpj(\"12.ABC.345/01DE-35\", 2); // \"12ABC34501DE35\"\n * sanitizeCnpj(\"12.ABC.345/01DE-35\"); // \"123450135\", the digits only\n * ```\n */\nexport const sanitizeCnpj = (value: string | number, version?: 1 | 2): string => {\n\tif (version === 2) {\n\t\treturn sanitizeToAlphanumeric(value);\n\t}\n\n\treturn sanitizeToDigits(value);\n};\n","export const PATTERN = \"00.000.000/0000-00\";\n\n/**\n * gov.br / Receita Federal display convention: hides the first 2 digits and the 2 check\n * digits, e.g. \"**.345.678/0001-**\". Also used for the alphanumeric CNPJ (`version: 2`),\n * which shares the same digit/separator positions.\n */\nexport const OBFUSCATED_PATTERN = \"**.000.000/0000-**\";\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeCnpj } from \"../_internals/sanitize-cnpj/sanitize-cnpj\";\nimport { OBFUSCATED_PATTERN, PATTERN } from \"./constants\";\n\n/** Options of `formatCnpj`. */\nexport type FormatCnpjOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n\t/** Which CNPJ format to read: `1` numeric only, `2` alphanumeric (default: `1`). */\n\tversion?: 1 | 2;\n\t/** Whether to hide the first 2 digits and the 2 check digits with `*` (default: `false`, read for truthiness like `pad`). */\n\tobfuscate?: boolean;\n};\n\n/**\n * Formats a given CNPJ (Cadastro Nacional da Pessoa Jurídica) value according to the specified options.\n *\n * @param {string|number} value - The CNPJ value to be formatted. It can be a string or a number.\n * @param {FormatCnpjOptions} [options] - Optional configuration for formatting the CNPJ.\n * @param {boolean} options.pad - If true, the value will be padded with leading zeros if necessary.\n * @param {1|2} options.version - The version of the CNPJ to be sanitized.\n * @param {boolean} options.obfuscate - If truthy, hides the first 2 digits and the 2 check\n * digits. Read for truthiness, the way `pad` is, so a non-boolean such as `1` obfuscates too.\n * @returns {string} The formatted CNPJ string in the pattern \"00.000.000/0000-00\".\n *\n * @example\n * ```typescript\n * formatCnpj(\"12345678000195\"); // \"12.345.678/0001-95\"\n * formatCnpj(12345678000195); // \"12.345.678/0001-95\"\n * formatCnpj(\"12345678000195\", { pad: true }); // \"12.345.678/0001-95\"\n * formatCnpj(\"12345678\", { pad: true }); // \"00.000.012/3456-78\"\n * formatCnpj(\"q0SLFMBD7VX439\", { version: 2 }); // \"Q0.SLF.MBD/7VX4-39\"\n * formatCnpj(\"12345678000195\", { obfuscate: true }); // \"**.345.678/0001-**\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cnpj\n * @see Official: https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/documentos-tecnicos/cnpj/manual-dv-cnpj.pdf\n * @see Official: https://www.gov.br/receitafederal/pt-br/acesso-a-informacao/acoes-e-programas/programas-e-atividades/cnpj-alfanumerico\n */\nexport const formatCnpj = (value: string | number, options?: FormatCnpjOptions): string => {\n\tif (isNullish(value)) return \"\";\n\n\treturn format({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeCnpj(value, options?.version),\n\t\tpattern: (options?.obfuscate ?? false) ? OBFUSCATED_PATTERN : PATTERN,\n\t});\n};\n","export const PATTERN = \"000.000.000-00\";\n\n/**\n * gov.br / Receita Federal display convention: hides the first 3 digits and the 2 check\n * digits, e.g. \"***.456.789-**\".\n */\nexport const OBFUSCATED_PATTERN = \"***.000.000-**\";\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { OBFUSCATED_PATTERN, PATTERN } from \"./constants\";\n\n/** Options of `formatCpf`. */\nexport type FormatCpfOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n\t/** Whether to hide the first 3 digits and the 2 check digits with `*` (default: `false`, read for truthiness like `pad`). */\n\tobfuscate?: boolean;\n};\n\n/**\n * Formats a given CPF (Cadastro de Pessoas Físicas) value according to the Brazilian standard.\n *\n * @param {string|number} value - The CPF value to be formatted. It can be a string or a number.\n * @param {FormatCpfOptions} [options] - Optional formatting options.\n * @param {boolean} options.pad - If true, the value will be padded with leading zeros if necessary.\n * @param {boolean} options.obfuscate - If truthy, hides the first 3 digits and the 2 check\n * digits. Read for truthiness, the way `pad` is, so a non-boolean such as `1` obfuscates too.\n * @returns {string} The formatted CPF string in the pattern \"000.000.000-00\".\n *\n * @example\n * ```typescript\n * formatCpf(\"12345678909\"); // \"123.456.789-09\"\n * formatCpf(12345678909); // \"123.456.789-09\"\n * formatCpf(\"123456789\", { pad: true }); // \"001.234.567-89\"\n * formatCpf(\"12345678909\", { obfuscate: true }); // \"***.456.789-**\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/meu-cpf\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/cpf.py\n */\nexport const formatCpf = (value: string | number, options?: FormatCpfOptions): string => {\n\tif (isNullish(value)) return \"\";\n\n\treturn format({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: (options?.obfuscate ?? false) ? OBFUSCATED_PATTERN : PATTERN,\n\t});\n};\n","const MODULUS = 11;\n\n/**\n * Calculates a check digit of a CNPJ (Cadastro Nacional da Pessoa Jurídica) base, under the rule\n * both CNPJ versions share.\n *\n * Each character of the base is read as its code point minus 48, which is the digit itself for\n * `0` to `9` and the value the alphanumeric CNPJ assigns to `A` to `Z` (17 to 42), so the numeric\n * version goes through the very same calculation instead of a second, digits-only one. Each value\n * is multiplied by the weight at its position, and the check digit is 11 minus the remainder of\n * the weighted sum by 11, or 0 when that remainder is 0 or 1.\n *\n * @param {string} base - The characters that precede the check digit, at least as long as `weights`.\n * @param {readonly number[]} weights - The weight of each character of the base, from left to right.\n * @returns {number} The check digit, 0 to 9.\n *\n * @example\n * ```typescript\n * calculateCnpjCheckDigit(\"123456780001\", [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]); // 9\n * calculateCnpjCheckDigit(\"Q0SLFMBD7VX4\", [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]); // 3\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/documentos-tecnicos/cnpj/manual-dv-cnpj.pdf\n */\nexport const calculateCnpjCheckDigit = (base: string, weights: readonly number[]): number => {\n\tlet sum = 0;\n\n\tfor (let index = 0; index < weights.length; index++) {\n\t\tsum += (base.charCodeAt(index) - 48) * weights[index];\n\t}\n\n\tconst remainder = sum % MODULUS;\n\n\treturn remainder < 2 ? 0 : MODULUS - remainder;\n};\n","/** Characters of a CNPJ (numeric or alphanumeric). */\nexport const CNPJ_LENGTH = 14;\n\nexport const CNPJ_FIRST_DIGIT_WEIGHTS = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\nexport const CNPJ_SECOND_DIGIT_WEIGHTS = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n","/**\n * Generates a random numeric string of specified length.\n *\n * @param {number} length - The length of the random number string to generate.\n * @returns {string} A string containing random digits (0-9) of the specified length.\n *\n * @example\n * ```typescript\n * generateRandomNumber(3); // \"123\"\n * generateRandomNumber(5); // \"67890\"\n * generateRandomNumber(11); // \"12345678901\"\n * ```\n */\nexport const generateRandomNumber = (length: number): string => {\n\tlet result = \"\";\n\tfor (let i = 0; i < length; i++) {\n\t\tresult += Math.floor(Math.random() * 10).toString();\n\t}\n\treturn result;\n};\n","/**\n * Checks whether every character in a string is the same (e.g. \"00000000000\" or \"11111111111\").\n *\n * @param {string} value - The string to check.\n * @returns {boolean} True if the string is non-empty and all its characters are identical.\n *\n * @example\n * ```typescript\n * isRepeatedDigits(\"00000000000\"); // true\n * isRepeatedDigits(\"12345678909\"); // false\n * isRepeatedDigits(\"\"); // false\n * ```\n */\nexport const isRepeatedDigits = (value: string): boolean =>\n\tvalue !== \"\" && value === value.charAt(0).repeat(value.length);\n","import { calculateCnpjCheckDigit } from \"../_internals/calculate-cnpj-check-digit/calculate-cnpj-check-digit\";\nimport { CNPJ_FIRST_DIGIT_WEIGHTS, CNPJ_SECOND_DIGIT_WEIGHTS } from \"../_internals/constants/cnpj\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\n\nconst ROOT_LENGTH = 8;\n\nconst BRANCH_LENGTH = 4;\n\nconst MIN_BRANCH = 1;\n\nconst MAX_BRANCH = 9999;\n\nconst VALID_CNPJ_CHARS = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\n/**\n * The parameters `generateCnpj` accepts, an alternative to passing the version positionally.\n */\nexport type GenerateCnpjParams = {\n\t/**\n\t * The version of the CNPJ to be generated: `1` for the numeric CNPJ and `2` for the\n\t * alphanumeric one. Defaults to `1`, and any other runtime value also generates a version 1\n\t * (numeric) CNPJ.\n\t */\n\tversion?: 1 | 2;\n\t/**\n\t * The \"número de ordem\" (filial) block, positions 9 to 12 of the CNPJ: an integer from 1 to\n\t * 9999, written zero padded to four characters (`3` becomes `\"0003\"`). Defaults to a random\n\t * block, and an integer outside that range, a fractional number or any other runtime value is\n\t * ignored, so a random block is used for those as well. The block stays numeric on the\n\t * alphanumeric version, which the IN RFB nº 2.229/2024 layout allows.\n\t */\n\tbranch?: number;\n};\n\nconst generateRandomCnpjChars = (length: number): string => {\n\tlet chars = \"\";\n\tfor (let i = 0; i < length; i++) {\n\t\tchars += VALID_CNPJ_CHARS.charAt(Math.floor(Math.random() * VALID_CNPJ_CHARS.length));\n\t}\n\treturn chars;\n};\n\n// `Number.isInteger` as a type guard, so an out of range `branch` narrows to `number`.\nconst isInteger = (value: unknown): value is number => Number.isInteger(value);\n\nconst isBranchInRange = (branch: number | undefined): branch is number =>\n\tisInteger(branch) && branch >= MIN_BRANCH && branch <= MAX_BRANCH;\n\nconst generateBase = (\n\tbranch: number | undefined,\n\tgeneratePart: (length: number) => string,\n): string =>\n\tgeneratePart(ROOT_LENGTH) +\n\t(isBranchInRange(branch)\n\t\t? branch.toString().padStart(BRANCH_LENGTH, \"0\")\n\t\t: generatePart(BRANCH_LENGTH));\n\nconst generateNonRepeatedBase = (generate: () => string): string => {\n\tlet base = generate();\n\twhile (isRepeatedDigits(base)) {\n\t\tbase = generate();\n\t}\n\treturn base;\n};\n\nconst generateCnpjWith = (\n\tbranch: number | undefined,\n\tgeneratePart: (length: number) => string,\n): string => {\n\tconst base = generateNonRepeatedBase(() => generateBase(branch, generatePart));\n\tconst firstCheckDigit = String(calculateCnpjCheckDigit(base, CNPJ_FIRST_DIGIT_WEIGHTS));\n\tconst secondCheckDigit = String(\n\t\tcalculateCnpjCheckDigit(base + firstCheckDigit, CNPJ_SECOND_DIGIT_WEIGHTS),\n\t);\n\treturn base + firstCheckDigit + secondCheckDigit;\n};\n\nconst isGenerateCnpjParams = (\n\tversionOrParams: 1 | 2 | GenerateCnpjParams,\n): versionOrParams is GenerateCnpjParams =>\n\ttypeof versionOrParams === \"object\" && versionOrParams !== null;\n\n/**\n * Generates a valid random CNPJ (Cadastro Nacional da Pessoa Jurídica).\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * The first argument is either the version, as it has always been, or a `GenerateCnpjParams`\n * object carrying that same version plus the \"número de ordem\" (filial) block to write in\n * positions 9 to 12.\n *\n * @param {1 | 2 | GenerateCnpjParams} [versionOrParams] - The version of the CNPJ to be\n * generated: `1` for the numeric CNPJ and `2` for the alphanumeric one, or an options object.\n * Defaults to `1`, and never throws: `null`, `undefined` and any other runtime value that is\n * neither `2` nor an object also generate a version 1 (numeric) CNPJ.\n * @param {1 | 2} [versionOrParams.version] - The version of the CNPJ to be generated, as above.\n * @param {number} [versionOrParams.branch] - The \"número de ordem\" (filial) block, an integer\n * from 1 to 9999 written zero padded to four characters. Defaults to a random block, and an\n * invalid branch is ignored rather than reported, so a random block is used for it too.\n * @returns {string} A valid 14-digit CNPJ string without formatting.\n *\n * @example\n * ```typescript\n * generateCnpj(); // \"12345678000195\"\n * generateCnpj(2); // \"Q0SLFMBD7VX439\"\n * generateCnpj({ version: 2 }); // \"Q0SLFMBD7VX439\"\n * generateCnpj({ branch: 3 }); // \"12345678000372\", the ordem block is \"0003\"\n * generateCnpj({ version: 2, branch: 1 }); // \"Q0SLFMBD000148\", the ordem block is \"0001\"\n * generateCnpj({ branch: 0 }); // \"12345678472695\", an out of range branch draws a random block\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cnpj\n * @see Official: https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/documentos-tecnicos/cnpj/manual-dv-cnpj.pdf\n * @see Official: https://www.gov.br/receitafederal/pt-br/acesso-a-informacao/acoes-e-programas/programas-e-atividades/cnpj-alfanumerico\n */\nexport const generateCnpj = (versionOrParams: 1 | 2 | GenerateCnpjParams = 1): string => {\n\tconst params: GenerateCnpjParams = isGenerateCnpjParams(versionOrParams)\n\t\t? versionOrParams\n\t\t: { version: versionOrParams };\n\n\treturn generateCnpjWith(\n\t\tparams.branch,\n\t\tparams.version === 2 ? generateRandomCnpjChars : generateRandomNumber,\n\t);\n};\n","const MODULUS = 11;\n\n/**\n * Calculates a check digit of a CPF (Cadastro de Pessoas Físicas) base.\n *\n * Each digit of the base is multiplied by a weight that starts one above the length of the base\n * and decreases down to 2, so the 9 digit base of the first check digit weighs 10 to 2 and the\n * 10 digit base (the first 9 digits plus the first check digit) of the second one weighs 11 to\n * 2. The check digit is 11 minus the remainder of the weighted sum by 11, or 0 when that\n * remainder is 0 or 1.\n *\n * @param {string} base - The 9 or 10 digits that precede the check digit.\n * @returns {number} The check digit, 0 to 9.\n *\n * @example\n * ```typescript\n * calculateCpfCheckDigit(\"123456789\"); // 0\n * calculateCpfCheckDigit(\"1234567890\"); // 9\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cpf\n */\nexport const calculateCpfCheckDigit = (base: string): number => {\n\tlet sum = 0;\n\tlet weight = base.length + 1;\n\n\tfor (let index = 0; index < base.length; index++) {\n\t\tsum += (base.charCodeAt(index) - 48) * weight;\n\t\tweight--;\n\t}\n\n\tconst remainder = sum % MODULUS;\n\n\treturn remainder < 2 ? 0 : MODULUS - remainder;\n};\n","/**\n * One Brazilian state, as returned by `getStates`, `getStateByIbgeCode` and the other state\n * utils. Every state is its own member of the union, so the fields of a state are tied to each\n * other: `Extract<State, { code: \"SP\" }>[\"name\"]` is `\"São Paulo\"`, and narrowing a `State` by\n * `code` narrows its `name`, `regionCode`, `regionName` and `ibgeCode` too. An impossible\n * combination such as `{ code: \"SP\", name: \"Acre\" }` is not a `State`.\n *\n * Each member has the two letter code of the state (`code`, e.g. `\"SP\"`), its full name\n * (`name`, e.g. `\"São Paulo\"`), the code and the full name of the region it belongs to\n * (`regionCode` and `regionName`, e.g. `\"SE\"` and `\"Sudeste\"`) and the 2 digit IBGE code of the\n * Federative Unit (`ibgeCode`, the \"cUF\", e.g. `35`).\n */\nexport type State =\n\t| {\n\t\t\treadonly code: \"AC\";\n\t\t\treadonly name: \"Acre\";\n\t\t\treadonly regionCode: \"N\";\n\t\t\treadonly regionName: \"Norte\";\n\t\t\treadonly ibgeCode: 12;\n\t  }\n\t| {\n\t\t\treadonly code: \"AL\";\n\t\t\treadonly name: \"Alagoas\";\n\t\t\treadonly regionCode: \"NE\";\n\t\t\treadonly regionName: \"Nordeste\";\n\t\t\treadonly ibgeCode: 27;\n\t  }\n\t| {\n\t\t\treadonly code: \"AP\";\n\t\t\treadonly name: \"Amapá\";\n\t\t\treadonly regionCode: \"N\";\n\t\t\treadonly regionName: \"Norte\";\n\t\t\treadonly ibgeCode: 16;\n\t  }\n\t| {\n\t\t\treadonly code: \"AM\";\n\t\t\treadonly name: \"Amazonas\";\n\t\t\treadonly regionCode: \"N\";\n\t\t\treadonly regionName: \"Norte\";\n\t\t\treadonly ibgeCode: 13;\n\t  }\n\t| {\n\t\t\treadonly code: \"BA\";\n\t\t\treadonly name: \"Bahia\";\n\t\t\treadonly regionCode: \"NE\";\n\t\t\treadonly regionName: \"Nordeste\";\n\t\t\treadonly ibgeCode: 29;\n\t  }\n\t| {\n\t\t\treadonly code: \"CE\";\n\t\t\treadonly name: \"Ceará\";\n\t\t\treadonly regionCode: \"NE\";\n\t\t\treadonly regionName: \"Nordeste\";\n\t\t\treadonly ibgeCode: 23;\n\t  }\n\t| {\n\t\t\treadonly code: \"DF\";\n\t\t\treadonly name: \"Distrito Federal\";\n\t\t\treadonly regionCode: \"CO\";\n\t\t\treadonly regionName: \"Centro-Oeste\";\n\t\t\treadonly ibgeCode: 53;\n\t  }\n\t| {\n\t\t\treadonly code: \"ES\";\n\t\t\treadonly name: \"Espírito Santo\";\n\t\t\treadonly regionCode: \"SE\";\n\t\t\treadonly regionName: \"Sudeste\";\n\t\t\treadonly ibgeCode: 32;\n\t  }\n\t| {\n\t\t\treadonly code: \"GO\";\n\t\t\treadonly name: \"Goiás\";\n\t\t\treadonly regionCode: \"CO\";\n\t\t\treadonly regionName: \"Centro-Oeste\";\n\t\t\treadonly ibgeCode: 52;\n\t  }\n\t| {\n\t\t\treadonly code: \"MA\";\n\t\t\treadonly name: \"Maranhão\";\n\t\t\treadonly regionCode: \"NE\";\n\t\t\treadonly regionName: \"Nordeste\";\n\t\t\treadonly ibgeCode: 21;\n\t  }\n\t| {\n\t\t\treadonly code: \"MT\";\n\t\t\treadonly name: \"Mato Grosso\";\n\t\t\treadonly regionCode: \"CO\";\n\t\t\treadonly regionName: \"Centro-Oeste\";\n\t\t\treadonly ibgeCode: 51;\n\t  }\n\t| {\n\t\t\treadonly code: \"MS\";\n\t\t\treadonly name: \"Mato Grosso do Sul\";\n\t\t\treadonly regionCode: \"CO\";\n\t\t\treadonly regionName: \"Centro-Oeste\";\n\t\t\treadonly ibgeCode: 50;\n\t  }\n\t| {\n\t\t\treadonly code: \"MG\";\n\t\t\treadonly name: \"Minas Gerais\";\n\t\t\treadonly regionCode: \"SE\";\n\t\t\treadonly regionName: \"Sudeste\";\n\t\t\treadonly ibgeCode: 31;\n\t  }\n\t| {\n\t\t\treadonly code: \"PA\";\n\t\t\treadonly name: \"Pará\";\n\t\t\treadonly regionCode: \"N\";\n\t\t\treadonly regionName: \"Norte\";\n\t\t\treadonly ibgeCode: 15;\n\t  }\n\t| {\n\t\t\treadonly code: \"PB\";\n\t\t\treadonly name: \"Paraíba\";\n\t\t\treadonly regionCode: \"NE\";\n\t\t\treadonly regionName: \"Nordeste\";\n\t\t\treadonly ibgeCode: 25;\n\t  }\n\t| {\n\t\t\treadonly code: \"PR\";\n\t\t\treadonly name: \"Paraná\";\n\t\t\treadonly regionCode: \"S\";\n\t\t\treadonly regionName: \"Sul\";\n\t\t\treadonly ibgeCode: 41;\n\t  }\n\t| {\n\t\t\treadonly code: \"PE\";\n\t\t\treadonly name: \"Pernambuco\";\n\t\t\treadonly regionCode: \"NE\";\n\t\t\treadonly regionName: \"Nordeste\";\n\t\t\treadonly ibgeCode: 26;\n\t  }\n\t| {\n\t\t\treadonly code: \"PI\";\n\t\t\treadonly name: \"Piauí\";\n\t\t\treadonly regionCode: \"NE\";\n\t\t\treadonly regionName: \"Nordeste\";\n\t\t\treadonly ibgeCode: 22;\n\t  }\n\t| {\n\t\t\treadonly code: \"RJ\";\n\t\t\treadonly name: \"Rio de Janeiro\";\n\t\t\treadonly regionCode: \"SE\";\n\t\t\treadonly regionName: \"Sudeste\";\n\t\t\treadonly ibgeCode: 33;\n\t  }\n\t| {\n\t\t\treadonly code: \"RN\";\n\t\t\treadonly name: \"Rio Grande do Norte\";\n\t\t\treadonly regionCode: \"NE\";\n\t\t\treadonly regionName: \"Nordeste\";\n\t\t\treadonly ibgeCode: 24;\n\t  }\n\t| {\n\t\t\treadonly code: \"RS\";\n\t\t\treadonly name: \"Rio Grande do Sul\";\n\t\t\treadonly regionCode: \"S\";\n\t\t\treadonly regionName: \"Sul\";\n\t\t\treadonly ibgeCode: 43;\n\t  }\n\t| {\n\t\t\treadonly code: \"RO\";\n\t\t\treadonly name: \"Rondônia\";\n\t\t\treadonly regionCode: \"N\";\n\t\t\treadonly regionName: \"Norte\";\n\t\t\treadonly ibgeCode: 11;\n\t  }\n\t| {\n\t\t\treadonly code: \"RR\";\n\t\t\treadonly name: \"Roraima\";\n\t\t\treadonly regionCode: \"N\";\n\t\t\treadonly regionName: \"Norte\";\n\t\t\treadonly ibgeCode: 14;\n\t  }\n\t| {\n\t\t\treadonly code: \"SC\";\n\t\t\treadonly name: \"Santa Catarina\";\n\t\t\treadonly regionCode: \"S\";\n\t\t\treadonly regionName: \"Sul\";\n\t\t\treadonly ibgeCode: 42;\n\t  }\n\t| {\n\t\t\treadonly code: \"SP\";\n\t\t\treadonly name: \"São Paulo\";\n\t\t\treadonly regionCode: \"SE\";\n\t\t\treadonly regionName: \"Sudeste\";\n\t\t\treadonly ibgeCode: 35;\n\t  }\n\t| {\n\t\t\treadonly code: \"SE\";\n\t\t\treadonly name: \"Sergipe\";\n\t\t\treadonly regionCode: \"NE\";\n\t\t\treadonly regionName: \"Nordeste\";\n\t\t\treadonly ibgeCode: 28;\n\t  }\n\t| {\n\t\t\treadonly code: \"TO\";\n\t\t\treadonly name: \"Tocantins\";\n\t\t\treadonly regionCode: \"N\";\n\t\t\treadonly regionName: \"Norte\";\n\t\t\treadonly ibgeCode: 17;\n\t  };\n\n/** The two letter code of each Brazilian state, as published by the IBGE. */\nexport type StateCode = State[\"code\"];\n\n/** The name of each Brazilian state, as published by the IBGE. */\nexport type StateName = State[\"name\"];\n\n/**\n * Brazilian states published by the IBGE, sorted by name with `localeCompare` in the \"pt-BR\"\n * locale. `ibgeCode` is the 2-digit IBGE code of the Federative Unit (\"cUF\"), the same code\n * found in the first field of every DF-e access key (chave de acesso).\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport const DATA: readonly State[] = [\n\t{ code: \"AC\", name: \"Acre\", regionCode: \"N\", regionName: \"Norte\", ibgeCode: 12 },\n\t{ code: \"AL\", name: \"Alagoas\", regionCode: \"NE\", regionName: \"Nordeste\", ibgeCode: 27 },\n\t{ code: \"AP\", name: \"Amapá\", regionCode: \"N\", regionName: \"Norte\", ibgeCode: 16 },\n\t{ code: \"AM\", name: \"Amazonas\", regionCode: \"N\", regionName: \"Norte\", ibgeCode: 13 },\n\t{ code: \"BA\", name: \"Bahia\", regionCode: \"NE\", regionName: \"Nordeste\", ibgeCode: 29 },\n\t{ code: \"CE\", name: \"Ceará\", regionCode: \"NE\", regionName: \"Nordeste\", ibgeCode: 23 },\n\t{\n\t\tcode: \"DF\",\n\t\tname: \"Distrito Federal\",\n\t\tregionCode: \"CO\",\n\t\tregionName: \"Centro-Oeste\",\n\t\tibgeCode: 53,\n\t},\n\t{ code: \"ES\", name: \"Espírito Santo\", regionCode: \"SE\", regionName: \"Sudeste\", ibgeCode: 32 },\n\t{ code: \"GO\", name: \"Goiás\", regionCode: \"CO\", regionName: \"Centro-Oeste\", ibgeCode: 52 },\n\t{ code: \"MA\", name: \"Maranhão\", regionCode: \"NE\", regionName: \"Nordeste\", ibgeCode: 21 },\n\t{ code: \"MT\", name: \"Mato Grosso\", regionCode: \"CO\", regionName: \"Centro-Oeste\", ibgeCode: 51 },\n\t{\n\t\tcode: \"MS\",\n\t\tname: \"Mato Grosso do Sul\",\n\t\tregionCode: \"CO\",\n\t\tregionName: \"Centro-Oeste\",\n\t\tibgeCode: 50,\n\t},\n\t{ code: \"MG\", name: \"Minas Gerais\", regionCode: \"SE\", regionName: \"Sudeste\", ibgeCode: 31 },\n\t{ code: \"PA\", name: \"Pará\", regionCode: \"N\", regionName: \"Norte\", ibgeCode: 15 },\n\t{ code: \"PB\", name: \"Paraíba\", regionCode: \"NE\", regionName: \"Nordeste\", ibgeCode: 25 },\n\t{ code: \"PR\", name: \"Paraná\", regionCode: \"S\", regionName: \"Sul\", ibgeCode: 41 },\n\t{ code: \"PE\", name: \"Pernambuco\", regionCode: \"NE\", regionName: \"Nordeste\", ibgeCode: 26 },\n\t{ code: \"PI\", name: \"Piauí\", regionCode: \"NE\", regionName: \"Nordeste\", ibgeCode: 22 },\n\t{ code: \"RJ\", name: \"Rio de Janeiro\", regionCode: \"SE\", regionName: \"Sudeste\", ibgeCode: 33 },\n\t{\n\t\tcode: \"RN\",\n\t\tname: \"Rio Grande do Norte\",\n\t\tregionCode: \"NE\",\n\t\tregionName: \"Nordeste\",\n\t\tibgeCode: 24,\n\t},\n\t{ code: \"RS\", name: \"Rio Grande do Sul\", regionCode: \"S\", regionName: \"Sul\", ibgeCode: 43 },\n\t{ code: \"RO\", name: \"Rondônia\", regionCode: \"N\", regionName: \"Norte\", ibgeCode: 11 },\n\t{ code: \"RR\", name: \"Roraima\", regionCode: \"N\", regionName: \"Norte\", ibgeCode: 14 },\n\t{ code: \"SC\", name: \"Santa Catarina\", regionCode: \"S\", regionName: \"Sul\", ibgeCode: 42 },\n\t{ code: \"SP\", name: \"São Paulo\", regionCode: \"SE\", regionName: \"Sudeste\", ibgeCode: 35 },\n\t{ code: \"SE\", name: \"Sergipe\", regionCode: \"NE\", regionName: \"Nordeste\", ibgeCode: 28 },\n\t{ code: \"TO\", name: \"Tocantins\", regionCode: \"N\", regionName: \"Norte\", ibgeCode: 17 },\n];\n","import { type StateCode } from \"../_internals/constants/states\";\n\nexport const BASE_LENGTH = 8;\n\nexport const STATE_CODES: Record<StateCode, string> = {\n\tAC: \"2\",\n\tAL: \"4\",\n\tAP: \"2\",\n\tAM: \"2\",\n\tBA: \"5\",\n\tCE: \"3\",\n\tDF: \"1\",\n\tES: \"7\",\n\tGO: \"1\",\n\tMA: \"3\",\n\tMT: \"1\",\n\tMS: \"1\",\n\tMG: \"6\",\n\tPR: \"9\",\n\tPB: \"4\",\n\tPA: \"2\",\n\tPE: \"4\",\n\tPI: \"3\",\n\tRN: \"4\",\n\tRS: \"0\",\n\tRJ: \"7\",\n\tRO: \"2\",\n\tRR: \"2\",\n\tSC: \"9\",\n\tSE: \"5\",\n\tSP: \"8\",\n\tTO: \"1\",\n} as const;\n","import { calculateCpfCheckDigit } from \"../_internals/calculate-cpf-check-digit/calculate-cpf-check-digit\";\nimport { type StateCode } from \"../_internals/constants/states\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\nimport { BASE_LENGTH, STATE_CODES } from \"./constants\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\n/**\n * The região fiscal digit of a state, a random one for anything else. The state is read as a\n * string before the own property lookup, so a value with no string conversion (an object created\n * with `Object.create(null)`, one whose `toString` throws) is an unknown state rather than a\n * `TypeError` thrown while `Object.hasOwn` coerces it into a property key.\n *\n * @param {StateCode} [state] - The state code the CPF is generated for, if any.\n * @returns {string} The região fiscal digit of that state, or a random digit.\n */\nconst getStateCode = (state?: StateCode): string => {\n\tif (typeof state === \"string\" && Object.hasOwn(STATE_CODES, state)) return STATE_CODES[state];\n\treturn generateRandomNumber(1);\n};\n\n/**\n * Generates a valid random CPF (Cadastro de Pessoas Físicas).\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * @param {StateCode} [state] - The Brazilian state code to generate a CPF for. An unknown state\n * draws a random região fiscal digit instead of throwing, a key of the prototype chain\n * (`\"__proto__\"`, `\"constructor\"`) and a value with no string conversion included.\n * @returns {string} A valid 11-digit CPF string without formatting.\n *\n * @example\n * ```typescript\n * generateCpf(); // \"12345678909\"\n * generateCpf(\"SP\"); // \"12345678810\" (with the SP state code, 8, in the 9th digit)\n * ```\n *\n * The região fiscal digit in the 9th position comes from the Receita Federal's folheto\n * \"Cadastros: CPF e CNPJ\"; the check digit rule (`REGRA_VALIDA_CPF`) is specified, with the\n * worked example `280012389-38`, in the Receita Federal's Manual de Preenchimento da\n * e-Financeira, Anexo II — Leiautes Gerais, approved by the Ato Declaratório Executivo Cofis\n * nº 10, de 19 de maio de 2026 (DOU de 25/05/2026). The manual's own file used to be served from\n * `sped.rfb.gov.br`,\n * a host that no longer answers at all, so the approving act is cited below in its place; its\n * Receita Federal permalink redirects into the norms viewer, which has to be opened in a\n * browser.\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/meu-cpf\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/educacao-fiscal/educacao_fiscal/folhetos-orientativos/cadastros-dig.pdf\n * @see Official: https://normas.receita.fazenda.gov.br/sijut2consulta/link.action?idAto=151372\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/cpf.py\n */\nexport const generateCpf = (state?: StateCode): string => {\n\tlet base = generateRandomNumber(BASE_LENGTH) + getStateCode(state);\n\n\twhile (isRepeatedDigits(base)) {\n\t\tbase = generateRandomNumber(BASE_LENGTH) + getStateCode(state);\n\t}\n\n\tconst firstCheckDigit = String(calculateCpfCheckDigit(base));\n\tconst secondCheckDigit = String(calculateCpfCheckDigit(base + firstCheckDigit));\n\treturn base + firstCheckDigit + secondCheckDigit;\n};\n","/** Mask characters (whitespace, dot, hyphen) tolerated in a formatted identifier. */\nexport const SEPARATORS_REGEX = /[\\s.-]/g;\n","import { SEPARATORS_REGEX } from \"../_internals/constants/separators\";\n\nconst CEP_REGEX = /^\\d{8}$/;\n\n/**\n * Validates if a CEP (Brazilian postal code) is valid.\n *\n * Spaces, dots and hyphens are ignored, so every punctuated form of a CEP is accepted, but\n * any other character, a letter in particular, makes the value invalid.\n *\n * @param {string|number} cep - The CEP value to be validated.\n * @returns {boolean} True if the CEP is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCep(\"01310100\"); // true\n * isValidCep(\"01310-100\"); // true\n * isValidCep(\"92.500-000\"); // true\n * isValidCep(20040020); // true\n * isValidCep(\"abc01310100\"); // false (invalid format)\n * isValidCep(\"12345\"); // false (invalid length)\n * ```\n *\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/tudo-sobre-cep\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/guia-de-enderecamento/guia-de-enderecamento\n */\nexport const isValidCep = (cep: string | number): boolean => {\n\tif (typeof cep !== \"string\" && typeof cep !== \"number\") return false;\n\n\treturn CEP_REGEX.test(String(cep).replace(SEPARATORS_REGEX, \"\"));\n};\n","import { calculateCnpjCheckDigit } from \"../_internals/calculate-cnpj-check-digit/calculate-cnpj-check-digit\";\nimport { CNPJ_FIRST_DIGIT_WEIGHTS, CNPJ_SECOND_DIGIT_WEIGHTS } from \"../_internals/constants/cnpj\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\nimport { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `isValidCnpj`. */\nexport type IsValidCnpjOptions = {\n\t/** Which CNPJ format to accept: `1` numeric only, `2` alphanumeric (default: `1`). */\n\tversion?: 1 | 2;\n};\n\nconst FORMAT_REGEX =\n\t/^[0-9A-Z]{2}[\\s.\\-/]*[0-9A-Z]{3}[\\s.\\-/]*[0-9A-Z]{3}[\\s.\\-/]*[0-9A-Z]{4}[\\s.\\-/]*[0-9]{2}$/;\n\nconst NUMERIC_FORMAT_REGEX = /^\\d{2}[\\s.\\-/]*\\d{3}[\\s.\\-/]*\\d{3}[\\s.\\-/]*\\d{4}[\\s.\\-/]*\\d{2}$/;\n\nconst LETTER_REGEX = /[A-Z]/;\n\nconst isValidChecksum = (cnpj: string): boolean =>\n\tcnpj.charCodeAt(12) - 48 === calculateCnpjCheckDigit(cnpj, CNPJ_FIRST_DIGIT_WEIGHTS) &&\n\tcnpj.charCodeAt(13) - 48 === calculateCnpjCheckDigit(cnpj, CNPJ_SECOND_DIGIT_WEIGHTS);\n\n/**\n * Validates if a CNPJ (Cadastro Nacional da Pessoa Jurídica) is valid.\n * Supports both numeric (version 1) and alphanumeric (version 2) CNPJ formats.\n * Accepts the usual mask characters (`.`, `-`, `/`) and whitespace around and between groups.\n *\n * @param {string} cnpj - The CNPJ value to be validated.\n * @param {IsValidCnpjOptions} [options] - Optional options.\n * @param {1|2} [options.version] - `1` validates the numeric-only format (the default),\n * `2` validates both the numeric and the alphanumeric formats. Any other value is read as `1`,\n * as `formatCnpj` and `parseCnpj` do.\n * @returns {boolean} True if the CNPJ is valid, false otherwise.\n *\n * @example\n * ```typescript\n * // Version 1 (numeric - default)\n * isValidCnpj(\"12.345.678/0001-95\"); // true\n * isValidCnpj(\"12345678000195\"); // true\n * isValidCnpj(\"12 345 678 0001 95\"); // true (whitespace mask)\n * isValidCnpj(\"00000000000000\"); // false (reserved number)\n * isValidCnpj(\"12345678000190\"); // false (invalid checksum)\n *\n * // Version 2 (alphanumeric)\n * isValidCnpj(\"Q0.SLF.MBD/7VX4-39\", { version: 2 }); // true (alphanumeric)\n * isValidCnpj(\"Q0SLFMBD7VX439\", { version: 2 }); // true (alphanumeric)\n * isValidCnpj(\"q0slfmbd7vx439\", { version: 2 }); // true (case-insensitive)\n * ```\n *\n * Version 2 has no reserved-value list because the Receita Federal manual defines none for the\n * alphanumeric format, so a repeated-character alphanumeric base (e.g. all `A`s) that passes the\n * checksum is accepted, unlike the numeric reserved numbers rejected under version 1.\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cnpj\n * @see Official: https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/documentos-tecnicos/cnpj/manual-dv-cnpj.pdf\n * @see Official: https://www.gov.br/receitafederal/pt-br/acesso-a-informacao/acoes-e-programas/programas-e-atividades/cnpj-alfanumerico\n */\nexport const isValidCnpj = (cnpj: string, options?: IsValidCnpjOptions): boolean => {\n\tif (typeof cnpj !== \"string\") return false;\n\n\tconst trimmed = cnpj.trim();\n\n\tif (options?.version === 2) {\n\t\tconst cleaned = sanitizeToAlphanumeric(cnpj);\n\n\t\tif (LETTER_REGEX.test(cleaned)) {\n\t\t\treturn FORMAT_REGEX.test(trimmed.toUpperCase()) && isValidChecksum(cleaned);\n\t\t}\n\t}\n\n\tconst numeric = sanitizeToDigits(cnpj);\n\n\treturn (\n\t\tNUMERIC_FORMAT_REGEX.test(trimmed) && !isRepeatedDigits(numeric) && isValidChecksum(numeric)\n\t);\n};\n","import { calculateCpfCheckDigit } from \"../_internals/calculate-cpf-check-digit/calculate-cpf-check-digit\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nconst FORMAT_REGEX = /^\\d{3}[\\s.\\-/]*\\d{3}[\\s.\\-/]*\\d{3}[\\s.\\-/]*\\d{2}$/;\n\nconst isValidChecksum = (cpf: string): boolean =>\n\tcpf.charCodeAt(9) - 48 === calculateCpfCheckDigit(cpf.slice(0, 9)) &&\n\tcpf.charCodeAt(10) - 48 === calculateCpfCheckDigit(cpf.slice(0, 10));\n\n/**\n * Validates if a CPF (Cadastro de Pessoas Físicas) is valid.\n * Accepts the usual mask characters (`.`, `-`) and whitespace around and between groups.\n *\n * @param {string} cpf - The CPF value to be validated.\n * @returns {boolean} True if the CPF is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCpf(\"123.456.789-09\"); // true\n * isValidCpf(\"12345678909\"); // true\n * isValidCpf(\"123 456 789 09\"); // true (whitespace mask)\n * isValidCpf(\" 12345678909\"); // true (leading whitespace)\n * isValidCpf(\"00000000000\"); // false (reserved number)\n * isValidCpf(\"12345678900\"); // false (invalid checksum)\n * ```\n *\n * The check digit rule (`REGRA_VALIDA_CPF`) is specified, with the worked example\n * `280012389-38`, in the Receita Federal's Manual de Preenchimento da e-Financeira, Anexo II —\n * Leiautes Gerais, approved by the Ato Declaratório Executivo Cofis nº 10, de 19 de maio de\n * 2026 (DOU de 25/05/2026). The manual states the rule in its mirror form, weights 9 down to 1 \"a partir da\n * unidade\" with \"o resto 10 é considerado 0\", which is algebraically the same digit as the\n * weights 10 down to 2 with `11 - resto` implemented above. The manual's own file used to be\n * served from `sped.rfb.gov.br`, a host that no longer answers at all, so the approving act is\n * cited below in its place; its Receita Federal permalink redirects into the norms viewer, which\n * has to be opened in a browser.\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/meu-cpf\n * @see Official: https://normas.receita.fazenda.gov.br/sijut2consulta/link.action?idAto=151372\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/cpf.py\n */\nexport const isValidCpf = (cpf: string): boolean => {\n\tif (typeof cpf !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(cpf);\n\n\tif (!FORMAT_REGEX.test(cpf.trim())) return false;\n\n\tif (isRepeatedDigits(digits)) return false;\n\n\treturn isValidChecksum(digits);\n};\n","/**\n * Calculates the modulus 10 check digit for a given string.\n *\n * @param {string} str - The string to calculate the check digit for.\n * @returns {number} The calculated check digit (0-9).\n *\n * @example\n * ```typescript\n * mod10(\"001900000\"); // 9\n * ```\n */\nexport const mod10 = (str: string): number => {\n\tlet sum = 0;\n\tconst len = str.length;\n\tfor (let i = 0; i < len; i++) {\n\t\tconst digit = str.charCodeAt(len - 1 - i) - 48;\n\t\tconst result = digit * (i % 2 === 0 ? 2 : 1);\n\t\tsum += result > 9 ? result - 9 : result;\n\t}\n\tconst mod = sum % 10;\n\treturn mod > 0 ? 10 - mod : 0;\n};\n","/**\n * Per-state IE (Inscrição Estadual) validation tables.\n *\n * @see Official: http://www.sintegra.gov.br/insc_est.html\n */\n\nexport const AL_PREFIXES = [\"24\"];\n\nexport const BA_MOD_10_DIGITS = [0, 1, 2, 3, 4, 5, 8];\n\nexport const GO_PREFIXES = [\"10\", \"11\", \"15\"];\n\nexport const GO_DUAL_DIGIT_IE = 11_094_402;\n\nexport const GO_SPECIAL_RANGE_START = 10_103_105;\n\nexport const GO_SPECIAL_RANGE_END = 10_119_997;\n\nexport const MA_PREFIXES = [\"12\"];\n\nexport const MS_PREFIXES = [\"28\", \"50\"];\n\nexport const PA_PREFIXES = [\"15\", \"75\", \"76\", \"77\", \"78\", \"79\"];\n\nexport const SP_FIRST_WEIGHTS = [1, 3, 4, 5, 6, 7, 8, 10];\n\nexport const SP_SECOND_WEIGHTS = [3, 2, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n\nexport const TO_TYPES = [\"01\", \"02\", \"03\", \"99\"];\n","import { type StateCode } from \"../_internals/constants/states\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { mod10 } from \"../_internals/mod10/mod10\";\nimport { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport {\n\tAL_PREFIXES,\n\tBA_MOD_10_DIGITS,\n\tGO_DUAL_DIGIT_IE,\n\tGO_PREFIXES,\n\tGO_SPECIAL_RANGE_END,\n\tGO_SPECIAL_RANGE_START,\n\tMA_PREFIXES,\n\tMS_PREFIXES,\n\tPA_PREFIXES,\n\tSP_FIRST_WEIGHTS,\n\tSP_SECOND_WEIGHTS,\n\tTO_TYPES,\n} from \"./constants\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\n/** The parameters `isValidIe` takes: the registration and the state whose rule it is checked against. */\nexport type IsValidIeParams = {\n\t/** The inscrição estadual to validate. */\n\tvalue: string;\n\t/** The two letter state code the registration belongs to, e.g. `\"SP\"`. Case insensitive. */\n\tstateCode: StateCode;\n};\n\ntype IeValidator = (ie: string) => boolean;\n\nconst checkLength = (ie: string, length: number | number[]): boolean => {\n\tif (typeof length === \"number\") return ie.length === length;\n\treturn length.includes(ie.length);\n};\n\nconst startsWithAny = (ie: string, prefixes: readonly string[]): boolean =>\n\tprefixes.some((prefix) => ie.startsWith(prefix));\n\ntype WeightedSumParams = {\n\tsource: string;\n\tlength: number;\n\tstartWeight: number;\n\twrapTo?: number;\n};\n\nconst calcWeightedSum = ({ source, length, startWeight, wrapTo }: WeightedSumParams): number => {\n\tlet weight = startWeight;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < length; i++) {\n\t\tconst digit = source.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight--;\n\t\t// Stryker disable next-line ConditionalExpression: for every current caller that omits wrapTo, the weight sequence is built to reach 1 only on the final iteration, so replacing this guard with `weight === 1` alone still only resets the (unused) weight after the loop's last read, which is unobservable.\n\t\tif (wrapTo !== undefined && weight === 1) {\n\t\t\tweight = wrapTo;\n\t\t}\n\t}\n\n\treturn sum;\n};\n\nconst calcMod11CheckDigit = (sum: number, mod = 11): number => {\n\tconst rest = sum % mod;\n\tconst dig = mod - rest;\n\treturn dig >= 10 ? 0 : dig;\n};\n\nconst validateMod11Ie = (ie: string, prefixes?: readonly string[]): boolean => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (prefixes && !startsWithAny(ie, prefixes)) return false;\n\n\tconst body = ie.slice(0, 8);\n\tconst sum = calcWeightedSum({ source: body, length: body.length, startWeight: body.length + 1 });\n\tconst dig = calcMod11CheckDigit(sum);\n\n\treturn Number.parseInt(ie.charAt(8), 10) === dig;\n};\n\nconst calcDFDigit = (body: string): number => {\n\tconst sum = calcWeightedSum({\n\t\tsource: body,\n\t\tlength: body.length,\n\t\tstartWeight: body.length - 7,\n\t\twrapTo: 9,\n\t});\n\n\treturn calcMod11CheckDigit(sum);\n};\n\nconst SP_RURAL_PATTERN = /^P\\d{12}$/;\nconst SP_COMPANY_PATTERN = /^\\d{12}$/;\n\n/**\n * The 13 digit rule AC and DF share, each under its own prefix.\n * @param {string} ie - The sanitized registration.\n * @param {string} prefix - The two digits the state's registrations start with.\n * @returns {boolean} True when the registration follows the rule under that prefix.\n */\nconst validateAcDfRule = (ie: string, prefix: string): boolean => {\n\tif (!checkLength(ie, 13)) return false;\n\tif (!ie.startsWith(prefix)) return false;\n\n\tconst body = ie.slice(0, 11);\n\tconst firstDig = calcDFDigit(body);\n\tconst secondDig = calcDFDigit(body + firstDig);\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(11), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(12), 10) === secondDig\n\t);\n};\n\nconst validateAC: IeValidator = (ie) => validateAcDfRule(ie, \"01\");\n\n// AL writes its rule as the weighted sum times ten, modulo eleven, with a ten mapped back to 0,\n// which is the complement the shared modulus 11 rule takes: both give 0 for a remainder of 0 or\n// 1 and `11 - remainder` for every other one.\nconst validateAL: IeValidator = (ie) => validateMod11Ie(ie, AL_PREFIXES);\n\nconst validateAP: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (!ie.startsWith(\"03\")) return false;\n\n\tconst length = ie.length;\n\tconst position = length - 1;\n\tconst body = ie.slice(0, position);\n\tconst bodyInt = Number.parseInt(body, 10);\n\tlet p = 0;\n\tlet d = 0;\n\n\tif (bodyInt >= 3_000_001 && bodyInt <= 3_017_000) {\n\t\tp = 5;\n\t} else if (bodyInt >= 3_017_001 && bodyInt <= 3_019_022) {\n\t\tp = 9;\n\t\td = 1;\n\t}\n\n\tconst sum = p + calcWeightedSum({ source: ie, length: body.length, startWeight: length });\n\n\tlet dig = 11 - (sum % 11);\n\tif (dig === 10) {\n\t\tdig = 0;\n\t}\n\n\tif (dig === 11) {\n\t\tdig = d;\n\t}\n\n\treturn dig === Number.parseInt(ie.charAt(position), 10);\n};\n\nconst validateBA: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, [8, 9])) return false;\n\n\tconst pos = ie.length === 9 ? 1 : 0;\n\tconst charAt = Number.parseInt(ie.slice(pos, pos + 1), 10);\n\tconst mod = BA_MOD_10_DIGITS.includes(charAt) ? 10 : 11;\n\n\tconst body = ie.slice(0, -2);\n\tconst firstSum = calcWeightedSum({\n\t\tsource: ie,\n\t\tlength: body.length,\n\t\tstartWeight: body.length + 1,\n\t});\n\tconst secondDig = calcMod11CheckDigit(firstSum, mod);\n\n\tconst bodyWithSecond = body + secondDig;\n\tconst secondSum = calcWeightedSum({\n\t\tsource: bodyWithSecond,\n\t\tlength: bodyWithSecond.length,\n\t\tstartWeight: bodyWithSecond.length + 1,\n\t});\n\tconst firstDig = calcMod11CheckDigit(secondSum, mod);\n\n\treturn (\n\t\tNumber.parseInt(ie.slice(-2, -1), 10) === firstDig &&\n\t\tNumber.parseInt(ie.slice(-1), 10) === secondDig\n\t);\n};\n\nconst validateDF: IeValidator = (ie) => validateAcDfRule(ie, \"07\");\n\nconst validateGO: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (!startsWithAny(ie, GO_PREFIXES)) return false;\n\n\tconst body = ie.slice(0, 8);\n\tconst bodyInt = Number.parseInt(body, 10);\n\tconst checkDigit = Number.parseInt(ie.charAt(8), 10);\n\n\tif (bodyInt === GO_DUAL_DIGIT_IE) {\n\t\treturn checkDigit === 0 || checkDigit === 1;\n\t}\n\n\tconst sum = calcWeightedSum({ source: ie, length: body.length, startWeight: 9 });\n\tconst rest = sum % 11;\n\tlet dig: number;\n\n\tif (rest === 0) {\n\t\tdig = 0;\n\t} else if (rest === 1) {\n\t\tdig = bodyInt >= GO_SPECIAL_RANGE_START && bodyInt <= GO_SPECIAL_RANGE_END ? 1 : 0;\n\t} else {\n\t\tdig = 11 - rest;\n\t}\n\n\treturn checkDigit === dig;\n};\n\nconst validateMA: IeValidator = (ie) => validateMod11Ie(ie, MA_PREFIXES);\n\nconst validateMG: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 13)) return false;\n\n\tconst body = ie.slice(0, 11);\n\tconst bodyWithZero = `${body.slice(0, 3)}0${body.slice(3)}`;\n\n\t// The first digit doubles every second character from the right and adds the digits of each\n\t// product, the modulus 10 rule `mod10` implements.\n\tconst firstDig = mod10(bodyWithZero);\n\n\tconst bodyWithFirst = body + firstDig;\n\tconst secondSum = calcWeightedSum({\n\t\tsource: bodyWithFirst,\n\t\tlength: bodyWithFirst.length,\n\t\tstartWeight: 3,\n\t\twrapTo: 11,\n\t});\n\tconst secondDig = calcMod11CheckDigit(secondSum);\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(11), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(12), 10) === secondDig\n\t);\n};\n\nconst validateMT: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 11)) return false;\n\n\tconst body = ie.slice(0, 10);\n\tconst sum = calcWeightedSum({ source: ie, length: body.length, startWeight: 3, wrapTo: 9 });\n\tconst dig = calcMod11CheckDigit(sum);\n\n\treturn Number.parseInt(ie.charAt(10), 10) === dig;\n};\n\nconst validateMS: IeValidator = (ie) => validateMod11Ie(ie, MS_PREFIXES);\n\nconst validatePA: IeValidator = (ie) => validateMod11Ie(ie, PA_PREFIXES);\n\nconst validatePE: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\n\tconst body = ie.slice(0, 7);\n\tconst firstSum = calcWeightedSum({\n\t\tsource: ie,\n\t\tlength: body.length,\n\t\tstartWeight: body.length + 1,\n\t});\n\tconst firstDig = calcMod11CheckDigit(firstSum);\n\n\tconst bodyWithFirst = body + firstDig;\n\tconst secondSum = calcWeightedSum({\n\t\tsource: bodyWithFirst,\n\t\tlength: bodyWithFirst.length,\n\t\tstartWeight: bodyWithFirst.length + 1,\n\t});\n\tconst secondDig = calcMod11CheckDigit(secondSum);\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(7), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(8), 10) === secondDig\n\t);\n};\n\nconst validatePR: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 10)) return false;\n\n\tconst body = ie.slice(0, 8);\n\tconst firstSum = calcWeightedSum({\n\t\tsource: ie,\n\t\tlength: body.length,\n\t\tstartWeight: body.length - 5,\n\t\twrapTo: 7,\n\t});\n\tconst firstDig = calcMod11CheckDigit(firstSum);\n\n\tconst bodyWithFirst = body + firstDig;\n\tconst secondSum = calcWeightedSum({\n\t\tsource: bodyWithFirst,\n\t\tlength: bodyWithFirst.length,\n\t\tstartWeight: bodyWithFirst.length - 5,\n\t\twrapTo: 7,\n\t});\n\tconst secondDig = calcMod11CheckDigit(secondSum);\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(8), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(9), 10) === secondDig\n\t);\n};\n\nconst validateRJ: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 8)) return false;\n\n\tconst body = ie.slice(0, 7);\n\tconst sum = calcWeightedSum({ source: ie, length: body.length, startWeight: 2, wrapTo: 7 });\n\tconst dig = calcMod11CheckDigit(sum);\n\n\treturn Number.parseInt(ie.charAt(7), 10) === dig;\n};\n\nconst validateRN: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, [9, 10])) return false;\n\tif (!ie.startsWith(\"20\")) return false;\n\n\tconst length = ie.length;\n\tconst position = length - 1;\n\tconst body = ie.slice(0, position);\n\tconst sum = calcWeightedSum({ source: ie, length: body.length, startWeight: length });\n\tconst dig = calcMod11CheckDigit(sum);\n\n\treturn Number.parseInt(ie.charAt(position), 10) === dig;\n};\n\nconst validateRO: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 14)) return false;\n\n\tconst length = ie.length;\n\tconst position = length - 1;\n\tconst body = ie.slice(0, position);\n\tconst sum = calcWeightedSum({ source: ie, length: body.length, startWeight: 6, wrapTo: 9 });\n\n\tconst rest = sum % 11;\n\tlet dig = 11 - rest;\n\n\tif (dig >= 10) {\n\t\tdig -= 10;\n\t}\n\n\treturn dig === Number.parseInt(ie.charAt(position), 10);\n};\n\nconst validateRR: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 9)) return false;\n\tif (!ie.startsWith(\"24\")) return false;\n\n\tlet weight = 1;\n\tlet sum = 0;\n\n\t// Stryker disable next-line EqualityOperator: an extra iteration at i===8 would use weight 9, and any digit times 9 contributes 0 to the mod-9 result, so it is unobservable.\n\tfor (let i = 0; i < 8; i++) {\n\t\t// Stryker disable next-line ArithmeticOperator: charCodeAt(i)+48 shifts each digit by 96; with weights 1..8 (summing to 36) the total shift is 96*36=3456, a multiple of 9, so the mod-9 result is unaffected.\n\t\tconst digit = ie.charCodeAt(i) - 48;\n\t\tsum += digit * weight;\n\t\tweight++;\n\t}\n\n\tconst rest = sum % 9;\n\treturn Number.parseInt(ie.charAt(8), 10) === rest;\n};\n\nconst validateRS: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, 10)) return false;\n\n\tconst body = ie.slice(0, 9);\n\tconst sum = calcWeightedSum({ source: ie, length: body.length, startWeight: 2, wrapTo: 9 });\n\tconst dig = calcMod11CheckDigit(sum);\n\n\treturn Number.parseInt(ie.charAt(9), 10) === dig;\n};\n\nconst calcSPDigit = (body: string, weights: readonly number[]): number => {\n\tlet sum = 0;\n\n\tfor (let i = 0; i < body.length; i++) {\n\t\tsum += (body.charCodeAt(i) - 48) * weights[i];\n\t}\n\n\treturn (sum % 11) % 10;\n};\n\nconst validateSP: IeValidator = (ie: string) => {\n\tif (SP_RURAL_PATTERN.test(ie)) {\n\t\tconst body = ie.slice(1, 9);\n\t\tconst dig = calcSPDigit(body, SP_FIRST_WEIGHTS);\n\n\t\treturn Number.parseInt(ie.charAt(9), 10) === dig;\n\t}\n\n\tif (!SP_COMPANY_PATTERN.test(ie)) return false;\n\n\tconst firstDig = calcSPDigit(ie.slice(0, 8), SP_FIRST_WEIGHTS);\n\tconst secondDig = calcSPDigit(ie.slice(0, 11), SP_SECOND_WEIGHTS);\n\n\treturn (\n\t\tNumber.parseInt(ie.charAt(8), 10) === firstDig &&\n\t\tNumber.parseInt(ie.charAt(11), 10) === secondDig\n\t);\n};\n\nconst validateTO: IeValidator = (ie: string) => {\n\tif (!checkLength(ie, [9, 11])) return false;\n\n\tconst isLegacy = ie.length === 11;\n\n\tif (isLegacy && !TO_TYPES.includes(ie.slice(2, 4))) return false;\n\n\tconst body = isLegacy ? ie.slice(0, 2) + ie.slice(4, 10) : ie.slice(0, 8);\n\tconst position = isLegacy ? 10 : 8;\n\tconst sum = calcWeightedSum({ source: body, length: body.length, startWeight: 9 });\n\tconst dig = calcMod11CheckDigit(sum);\n\n\treturn Number.parseInt(ie.charAt(position), 10) === dig;\n};\n\nconst IE_VALIDATORS: Record<string, IeValidator | undefined> = {\n\tAC: validateAC,\n\tAL: validateAL,\n\tAP: validateAP,\n\tAM: validateMod11Ie,\n\tBA: validateBA,\n\tCE: validateMod11Ie,\n\tDF: validateDF,\n\tES: validateMod11Ie,\n\tGO: validateGO,\n\tMA: validateMA,\n\tMG: validateMG,\n\tMT: validateMT,\n\tMS: validateMS,\n\tPA: validatePA,\n\tPB: validateMod11Ie,\n\tPE: validatePE,\n\tPI: validateMod11Ie,\n\tPR: validatePR,\n\tRJ: validateRJ,\n\tRN: validateRN,\n\tRO: validateRO,\n\tRR: validateRR,\n\tRS: validateRS,\n\tSC: validateMod11Ie,\n\tSE: validateMod11Ie,\n\tSP: validateSP,\n\tTO: validateTO,\n} satisfies Record<StateCode, IeValidator>;\n\nconst validateIe = (stateCode: unknown, value: unknown): boolean => {\n\tif (typeof stateCode !== \"string\") return false;\n\tif (typeof value !== \"string\") return false;\n\n\tconst normalizedStateCode = stateCode.toUpperCase();\n\n\tconst validator = Object.hasOwn(IE_VALIDATORS, normalizedStateCode)\n\t\t? IE_VALIDATORS[normalizedStateCode]\n\t\t: undefined;\n\tif (!validator) return false;\n\n\tconst sanitize = normalizedStateCode === \"SP\" ? sanitizeToAlphanumeric : sanitizeToDigits;\n\n\treturn validator(sanitize(value));\n};\n\n/**\n * Validates a Brazilian state tax registration number (IE).\n *\n * Per state notes, all of them deliberate and unchanged since 2.3.0:\n * - DF: the SINTEGRA page is published but empty, and no SEFAZ-DF roteiro is published either,\n *   so DF follows the 13 digit AC rule under the prefix 07.\n * - GO: the SINTEGRA page is superseded by the SEFAZ-GO roteiro, which is the source of the\n *   prefixes 10, 11 and 15, of the 10103105 to 10119997 range and of the dual digit\n *   registration 11094402.\n * - RJ: the SINTEGRA page publishes only the modulus rule; the 8 digit length and the weights\n *   2, 7, 6, 5, 4, 3 and 2 come from the SINTEGRA validator itself, not from the page.\n * - SP: characters other than \"P\" and digits are rejected on purpose, a deliberate deviation\n *   from the Regra Geral of the SINTEGRA page, which ignores them instead.\n * - AL: the tipo de empresa digit (third position) is not restricted to 0, 3, 5, 7 and 8.\n * - PE: only the current 9 digit eFisco format is accepted; the old 14 digit CACEPE format\n *   documented on the same page is not.\n * - TO: the SINTEGRA page documents only the 11 digit form, the one carrying the tipo digits in\n *   positions 3 and 4. The 9 digit form is also accepted, applying the same modulus 11 rule with\n *   weights 9 down to 2 to the first eight digits; it is 2.3.0 behavior kept for compatibility\n *   and no published SEFAZ-TO roteiro covers it.\n * - An all zero registration is accepted for every state whose published formula yields a\n *   check digit of 0 for it (AM, BA with 8 or 9 digits, CE, ES, MG, MT, PB, PE, PI, PR, RJ, RS,\n *   SC, SE, SP and TO with 9 digits), unlike isValidCpf and isValidCnpj, which reject repeated\n *   digits. AM is on that list through the second branch of its published formula only: the\n *   page's first branch, \"Se Soma < 11 Então Dígito = 11 - Soma\", gives 11 for an all zero\n *   registration, while the \"resto <= 1 ⇒ 0\" branch, the one implemented here, gives 0.\n *\n * The state can also be passed first and the registration second, `isValidIe('SP', '110042490114')`,\n * the 2.3.0 form, which still works and is deprecated. The two forms are told apart by the first\n * argument: an object is the parameters of the current form, a string the state code of the\n * deprecated one, and anything else returns false.\n *\n * @param {IsValidIeParams} params - The registration to validate and the state to validate it against\n * @param {string} params.value - The state registration number to validate\n * @param {StateCode} params.stateCode - The state abbreviation (e.g., 'SP', 'RJ', 'MG')\n * @returns {boolean} True if the state registration number is valid, false otherwise\n *\n * @example\n * ```typescript\n * isValidIe({ value: '110042490114', stateCode: 'SP' }); // true\n * isValidIe({ value: 'P011004243002', stateCode: 'SP' }); // true\n * isValidIe({ value: '12345', stateCode: 'RJ' }); // false\n * isValidIe({ value: '109161793', stateCode: 'go' as StateCode }); // true (case-insensitive)\n * ```\n *\n * @see Official: http://www.sintegra.gov.br/insc_est.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_AC.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_AL.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_AM.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_AP.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_BA.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_CE.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_DF.html\n * The page is published but empty: it carries no format, no weights and no worked example,\n * and no SEFAZ-DF roteiro is published either, so DF follows the 13 digit AC rule under the\n * prefix 07.\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_ES.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_GO.html\n * Superseded for Goiás by the SEFAZ-GO roteiro below: this page still gives the prefixes as\n * 10, 11 or 20 to 29 and knows nothing of the special ranges.\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_MA.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_MG.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_MS.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_MT.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_PA.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_PB.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_PE.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_PI.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_PR.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_RJ.html\n * Publishes only the modulus rule: the 8 digit length and the weights 2, 7, 6, 5, 4, 3 and 2\n * come from the SINTEGRA validator itself, not from this page.\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_RN.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_RO.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_RR.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_RS.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_SC.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_SE.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_SP.html\n * @see Official: http://www.sintegra.gov.br/Cad_Estados/cad_TO.html\n * Documents only the 11 digit form, with the tipo digits 01, 02, 03 and 99 in positions 3 and 4;\n * the 9 digit form the validator also accepts is not covered by this page or by any other\n * published SEFAZ-TO roteiro.\n * @see Official: https://goias.gov.br/economia/roteiro-de-critica-da-inscricao-estadual-de-goias/\n * SEFAZ-GO's roteiro de crítica, the source of the Goiás prefixes and special ranges.\n */\nexport function isValidIe(params: IsValidIeParams): boolean;\n/**\n * Validates a Brazilian state tax registration number (IE) with the state given first. See the\n * overload taking the parameters object for the full documentation.\n *\n * @param {StateCode} stateCode - The state abbreviation (e.g., 'SP', 'RJ', 'MG')\n * @param {string} ie - The state registration number to validate\n * @returns {boolean} True if the state registration number is valid, false otherwise\n *\n * @deprecated Use the object form, `isValidIe({ value, stateCode })`.\n */\nexport function isValidIe(stateCode: StateCode, ie: string): boolean;\nexport function isValidIe(paramsOrStateCode: IsValidIeParams | StateCode, ie?: string): boolean {\n\t// The two call forms are told apart by the first argument alone: a string is the state code of\n\t// the deprecated `(stateCode, ie)` form, anything else is read as the parameters object of the\n\t// current one (a primitive has no `stateCode`, so it fails the validation like any bad input).\n\tif (typeof paramsOrStateCode === \"string\") return validateIe(paramsOrStateCode, ie);\n\tif (isNullish(paramsOrStateCode)) return false;\n\n\treturn validateIe(paramsOrStateCode.stateCode, paramsOrStateCode.value);\n}\n","/** Digits of a PIS (Programa de Integração Social) number. */\nexport const PIS_LENGTH = 11;\n\n/**\n * Weights used to calculate the PIS (Programa de Integração Social) check digit.\n */\nexport const PIS_WEIGHTS = [3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n","import { PIS_WEIGHTS } from \"../constants/pis\";\n\nconst MODULUS = 11;\n\n/**\n * Calculates the check digit of a PIS (Programa de Integração Social) base, the eleventh digit of\n * the number.\n *\n * The ten base digits are multiplied by the weights 3, 2, 9, 8, 7, 6, 5, 4, 3 and 2, from left to\n * right. The check digit is 11 minus the remainder of the weighted sum by 11, or 0 when that\n * difference is 10 or 11.\n *\n * @param {string} base - The ten digits that precede the check digit.\n * @returns {number} The check digit, 0 to 9.\n *\n * @example\n * ```typescript\n * calculatePisCheckDigit(\"1234567890\"); // 0\n * calculatePisCheckDigit(\"1000000000\"); // 8\n * ```\n */\nexport const calculatePisCheckDigit = (base: string): number => {\n\tlet sum = 0;\n\n\tfor (let index = 0; index < PIS_WEIGHTS.length; index++) {\n\t\tsum += (base.charCodeAt(index) - 48) * PIS_WEIGHTS[index];\n\t}\n\n\tconst digit = MODULUS - (sum % MODULUS);\n\n\treturn digit >= 10 ? 0 : digit;\n};\n","import { calculatePisCheckDigit } from \"../_internals/calculate-pis-check-digit/calculate-pis-check-digit\";\nimport { PIS_LENGTH } from \"../_internals/constants/pis\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Validates a Brazilian PIS (Programa de Integração Social) number.\n * Accepts the usual mask characters (`.`, `-`, `/`, `(`, `)`, `,`, `*`) and whitespace.\n *\n * @param {string} pis - The PIS number to validate.\n * @returns {boolean} True if the PIS number is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidPis(\"120.56874.10-7\"); // true\n * isValidPis(\"120/56874/10-7\"); // true\n * isValidPis(\"12056874107\"); // true\n * isValidPis(\"00000000000\"); // false (reserved number)\n * ```\n *\n * The eSocial MOS states the NIS must have 11 numeric digits including the check digit, and the\n * SIRC technical manual confirms the check digit is verified with módulo 11; neither publishes\n * the weight vector used below, which follows the community reference cited as `Based on:`.\n *\n * @see Official: https://www.gov.br/inss/pt-br/direitos-e-deveres/inscricao-e-contribuicao/inscricao\n * @see Official: https://www.gov.br/esocial/pt-br/documentacao-tecnica/manuais/mos-manual-de-orientacao-do-esocial-vs-2-4.pdf\n * @see Official: https://www.sirc.gov.br/wp-content/uploads/manual_sirc_recomendacoes_tecnicas_v7.pdf\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/pis.py\n */\nexport const isValidPis = (pis: string): boolean => {\n\tif (typeof pis !== \"string\") return false;\n\n\tconst hasInvalidChars = /[^0-9\\s().,*/-]/.test(pis);\n\n\tif (hasInvalidChars) return false;\n\n\tconst digits = sanitizeToDigits(pis);\n\n\tif (digits.length !== PIS_LENGTH) return false;\n\n\tif (isRepeatedDigits(digits)) return false;\n\n\treturn digits.charCodeAt(PIS_LENGTH - 1) - 48 === calculatePisCheckDigit(digits);\n};\n","/** First year `getHolidays` can compute, and therefore the first year the business-day utils accept. */\nexport const HOLIDAYS_MIN_YEAR = 1900;\n\n/** Last year `getHolidays` can compute, and therefore the last year the business-day utils accept. */\nexport const HOLIDAYS_MAX_YEAR = 2099;\n","import { HOLIDAYS_MAX_YEAR, HOLIDAYS_MIN_YEAR } from \"../constants/holidays\";\n\n/**\n * Checks whether a year is inside the range the holiday tables cover.\n *\n * `getHolidays` only computes 1900 through 2099, so every date utility built on top of it\n * (`isBusinessDay`, `addBusinessDays`, `subBusinessDays`, `differenceInBusinessDays`) refuses a\n * year outside that range instead of silently answering as if there were no holidays in it.\n *\n * @param {number} year - The full year to check, as `Date#getFullYear` reports it.\n * @returns {boolean} True when the bundled holiday tables cover the year.\n *\n * @example\n * ```typescript\n * isSupportedHolidayYear(2024); // true\n * isSupportedHolidayYear(1900); // true (inclusive lower bound)\n * isSupportedHolidayYear(2099); // true (inclusive upper bound)\n * isSupportedHolidayYear(2100); // false\n * ```\n */\nexport const isSupportedHolidayYear = (year: number): boolean =>\n\tyear >= HOLIDAYS_MIN_YEAR && year <= HOLIDAYS_MAX_YEAR;\n","/**\n * Checks whether a value is a `Date` that names a real instant.\n *\n * `new Date(\"nonsense\")` is still a `Date`, only one whose time is `NaN`, so every date utility\n * of this library checks both before it reads a value handed to it, and returns the empty value\n * of its family (`null` or `false`) instead of computing with `NaN`.\n *\n * @param {unknown} value - The value to check.\n * @returns {boolean} True when the value is a `Date` whose time is not `NaN`.\n *\n * @example\n * ```typescript\n * isValidDate(new Date(2024, 0, 1)); // true\n * isValidDate(new Date(\"nonsense\")); // false\n * isValidDate(\"2024-01-01\"); // false\n * isValidDate(null); // false\n * ```\n */\nexport const isValidDate = (value: unknown): value is Date =>\n\tvalue instanceof Date && !Number.isNaN(value.getTime());\n","/** How a holiday's date is defined: a fixed day and month, or an offset in days from Easter Sunday. */\nexport type HolidayDateRule = (\n\t| {\n\t\t\t/** Offset in days from Easter Sunday (Carnaval is -47, Corpus Christi is 60); Easter itself is 0. */\n\t\t\teasterOffset: number;\n\t  }\n\t| {\n\t\t\t/** Day of the month, 1 to 31, used together with `month`. */\n\t\t\tday: number;\n\t\t\t/** Month, 1 to 12, used together with `day`. */\n\t\t\tmonth: number;\n\t  }\n) & {\n\t/**\n\t * Whether the holiday is observed on the following Sunday when the date the rule resolves to\n\t * falls on a weekday (Monday to Friday), as Santa Catarina's two state holidays do.\n\t */\n\tnextSundayWhenWeekday?: boolean;\n};\n\nconst SUNDAY = 0;\nconst SATURDAY = 6;\nconst DAYS_IN_WEEK = 7;\n\nfunction calculateEaster(year: number): Date {\n\tconst a = year % 19;\n\tconst b = Math.floor(year / 100);\n\tconst c = year % 100;\n\tconst d = Math.floor(b / 4);\n\tconst e = b % 4;\n\tconst f = Math.floor((b + 8) / 25);\n\tconst g = Math.floor((b - f + 1) / 3);\n\tconst h = (19 * a + b - d - g + 15) % 30;\n\tconst i = Math.floor(c / 4);\n\tconst k = c % 4;\n\tconst l = (32 + 2 * e + 2 * i - h - k) % 7;\n\tconst m = Math.floor((a + 11 * h + 22 * l) / 451);\n\n\tconst month = Math.floor((h + l - 7 * m + 114) / 31) - 1;\n\tconst day = ((h + l - 7 * m + 114) % 31) + 1;\n\n\treturn new Date(year, month, day);\n}\n\nfunction calculateHolidayFromEaster(year: number, offset: number): Date {\n\tconst easterDate = calculateEaster(year);\n\tconst holidayDate = new Date(easterDate);\n\tholidayDate.setDate(easterDate.getDate() + offset);\n\treturn holidayDate;\n}\n\nfunction moveToNextSundayWhenWeekday(date: Date): Date {\n\tconst weekday = date.getDay();\n\n\tif (weekday === SUNDAY || weekday === SATURDAY) return date;\n\n\tconst observed = new Date(date);\n\tobserved.setDate(date.getDate() + (DAYS_IN_WEEK - weekday));\n\n\treturn observed;\n}\n\n/**\n * Resolves the date of a holiday in a given year: a fixed `day`/`month` pair, or an offset in\n * days from Easter Sunday, computed with the Meeus/Jones/Butcher algorithm. When the rule sets\n * `nextSundayWhenWeekday`, a date landing on a weekday is moved on to the following Sunday.\n *\n * @param {number} year - The four digit year.\n * @param {HolidayDateRule} rule - The fixed date or the Easter offset of the holiday.\n * @returns {Date} The holiday date in the local time zone.\n * @throws {Error} When the rule defines neither `easterOffset` nor both `day` and `month`.\n *\n * @example\n * ```typescript\n * resolveStateHolidayDate(2024, { easterOffset: 0 }); // 2024-03-31 (Easter Sunday)\n * resolveStateHolidayDate(2024, { easterOffset: 60 }); // 2024-05-30 (Corpus Christi)\n * resolveStateHolidayDate(2024, { day: 9, month: 7 }); // 2024-07-09\n * resolveStateHolidayDate(2025, { day: 11, month: 8, nextSundayWhenWeekday: true }); // 2025-08-17\n * ```\n *\n * @see Based on: https://en.wikipedia.org/wiki/Date_of_Easter#Anonymous_Gregorian_algorithm\n */\nexport const resolveStateHolidayDate = (year: number, rule: HolidayDateRule): Date => {\n\tconst date =\n\t\t\"easterOffset\" in rule\n\t\t\t? calculateHolidayFromEaster(year, rule.easterOffset)\n\t\t\t: new Date(year, rule.month - 1, rule.day);\n\n\treturn rule.nextSundayWhenWeekday === true ? moveToNextSundayWhenWeekday(date) : date;\n};\n","import { type StateCode } from \"../_internals/constants/states\";\nimport { type HolidayDateRule } from \"../_internals/resolve-state-holiday-date/resolve-state-holiday-date\";\nimport { type HolidayType } from \"./get-holidays\";\n\ntype StateHolidayEntry = HolidayDateRule & {\n\tname: string;\n\ttype?: HolidayType;\n\tsince?: number;\n\tuntil?: number;\n};\n\nexport const FIXED_HOLIDAYS = {\n\t\"Ano novo\": { day: 1, month: 1 },\n\tTiradentes: { day: 21, month: 4 },\n\t\"Dia do trabalhador\": { day: 1, month: 5 },\n\t\"Independência do Brasil\": { day: 7, month: 9 },\n\t\"Nossa Senhora Aparecida\": { day: 12, month: 10 },\n\tFinados: { day: 2, month: 11 },\n\t\"Proclamação da República\": { day: 15, month: 11 },\n\tNatal: { day: 25, month: 12 },\n} as const;\n\nexport const CONSCIENCIA_NEGRA_NATIONAL_SINCE_YEAR = 2024;\n\n/**\n * The name the 20 November entries are emitted under, national and state alike.\n *\n * No law spells it exactly this way. Art. 1º of Lei 14.759/2023 calls the national holiday \"Dia\n * Nacional de Zumbi e da Consciência Negra\", and the state laws behind the pre-2024 entries of\n * Mato Grosso, Rio de Janeiro and Amazonas are worded alike to each other: each institutes 20\n * November as a feriado estadual and names the date after the federal commemorative one, \"Dia\n * Nacional da Consciência Negra\" (see the `@see` entries below for the three texts). The form\n * below drops a \"Nacional\" that would read as wrong on a state entry, is the one 2.3.0 already\n * emitted for the national holiday, and keeps the name continuous across the 2023/2024 boundary\n * where the state entries give way to the national one. Amapá is the exception: art. 1º of its\n * Lei nº 1.169/2007 says \"Dia Estadual da Consciência Negra\" in so many words, so that entry\n * carries the name its own law uses.\n */\nexport const CONSCIENCIA_NEGRA_HOLIDAY_NAME = \"Dia da Consciência Negra\";\n\n/** First year Alagoas' 16 September is a feriado estadual, not a ponto facultativo (Lei AL nº 9.358/2024). */\nconst AL_EMANCIPACAO_FERIADO_SINCE_YEAR = 2024;\n\n/** First year Paraíba's 26 July is no longer a holiday: Lei PB nº 10.601/2015 revoked its basis on 17/12/2015. */\nconst PB_MORTE_JOAO_PESSOA_UNTIL_YEAR = 2016;\n\n/** First year Tocantins' 18 March is no longer a holiday: Lei TO nº 2.013/2009 repealed the feriado clause on 18/02/2009. */\nconst TO_AUTONOMIA_UNTIL_YEAR = 2009;\n\n/**\n * First year Santa Catarina's 25 November moves to the following Sunday: Lei SC nº 11.213, de\n * 11/11/1999, added the transfer clause to Lei SC nº 10.306/1996 and, by its art. 2º, entered\n * into force on the day it was published (DO 16.290, de 12/11/1999), thirteen days before that\n * year's 25 November.\n */\nconst SC_ALEXANDRIA_TRANSFER_SINCE_YEAR = 1999;\n\n/**\n * The one year Santa Catarina's 25 November is observed on the statutory date again: art. 3º of\n * Lei SC nº 12.906, de 22/01/2004, revoked Lei SC nº 11.213/1999 outright and its own art. 1º did\n * not carry the transfer clause forward, leaving 2004 without one until Lei SC nº 13.408/2005\n * reinstated it.\n */\nconst SC_ALEXANDRIA_TRANSFER_GAP_YEAR = 2004;\n\n/**\n * First year Santa Catarina's 11 August and 25 November both move to the following Sunday: Lei SC\n * nº 13.408, de 15/07/2005, added the transfer clause covering the two dates and entered into\n * force on the day it was published (DO 17.680, de 15/07/2005), before that year's 11 August. Up\n * to 2004 the 11 August holiday was always observed on the date itself.\n */\nconst SC_NEXT_SUNDAY_TRANSFER_SINCE_YEAR = 2005;\n\n/**\n * Feriados estaduais, um `@see` por entrada.\n *\n * Only one of these is a feriado civil under art. 1º, II of Lei 9.093/1995, which authorizes\n * \"a data magna do Estado fixada em lei estadual\", in the singular. The remaining entries rest\n * on ordinary state laws (and, for a few states, on the state constitution) that declare further\n * feriados estaduais; the library reports them because they are observed in practice, not\n * because art. 1º, II covers them.\n *\n * The statutory date is what is emitted. Four states shift the observed date and only Santa\n * Catarina's shift is modelled here (`nextSundayWhenWeekday`, from\n * `SC_ALEXANDRIA_TRANSFER_SINCE_YEAR` on for 25 November, apart from the\n * `SC_ALEXANDRIA_TRANSFER_GAP_YEAR` gap, and from `SC_NEXT_SUNDAY_TRANSFER_SINCE_YEAR` on for\n * 11 August): Acre moves feriados falling from\n * Tuesday to Thursday on to the following Friday (Lei AC nº 2.126/2009, except 15/06), and the\n * Goiás executive may move 26/07 and 28/10 to a nearby dia útil by decree (Lei GO nº 20.756/2020,\n * art. 269, § 1º), neither of which can be resolved from a year alone; São Paulo moved 09/07 to\n * 25/05 for 2020 alone (Lei SP nº 17.264/2020), a one-off this table does not carry.\n *\n * @see Official: https://legis.ac.gov.br/detalhar/1087\n * Lei AC nº 1.538/2004, Dia do Evangélico (23/01)\n * @see Official: https://legis.ac.gov.br/detalhar/1828\n * Lei AC nº 1.411/2001, Dia Internacional da Mulher (08/03)\n * @see Official: https://legis.ac.gov.br/detalhar/618\n * Lei AC nº 14/1964, Aniversário do Acre (15/06)\n * @see Official: https://legis.ac.gov.br/detalhar/940\n * Lei AC nº 243/1968, art. 2º, Dia da Amazônia (05/09): \"É considerado feriado estadual o dia 5 de\n * setembro em homenagem ao DIA DA AMAZÔNIA\". Lei AC nº 1.526/2004, cited here before, only adds\n * the date to the calendário oficial de eventos.\n * @see Official: https://legis.ac.gov.br/detalhar/688\n * Lei AC nº 57/1965, Assinatura do Tratado de Petrópolis (17/11)\n * @see Official: https://sapl.al.al.leg.br/norma/3363\n * Lei AL nº 5.508/1993, São João (24/06)\n * @see Official: https://sapl.al.al.leg.br/norma/3364\n * Lei AL nº 5.509/1993, São Pedro (29/06)\n * @see Official: https://sapl.al.al.leg.br/norma/3117\n * Lei AL nº 9.358, de 26/08/2024, Emancipação Política de Alagoas (16/09): \"DISPÕE SOBRE O FERIADO\n * ESTADUAL DA EMANCIPAÇÃO POLÍTICA DO ESTADO DE ALAGOAS - DIA 16 DE SETEMBRO\". Until 2023 the date\n * was only the ponto facultativo of the Decreto AL nº 68.782/2019.\n * @see Official: https://al.ap.leg.br/ver_texto_lei.php?iddocumento=17488\n * Lei AP nº 667/2002, art. 1º par. único, Dia de São José (19/03)\n * @see Official: https://silegis.al.ap.leg.br/proposicaopdf/2CEatualizadaeconsolidadaateEC071comSumario.pdf\n * Constituição Estadual do AP, art. 355, Criação do Território Federal do Amapá (13/09): \"O dia 13\n * de Setembro, data magna do Amapá, é feriado em todo o território do Estado\".\n * @see Official: https://al.ap.leg.br/ver_texto_lei.php?iddocumento=22214\n * Lei AP nº 1.169/2007, Dia Estadual da Consciência Negra (state holiday until it became national\n * in 2024)\n * @see Official: https://sapl.al.am.leg.br/norma/8919\n * Lei AM nº 25/1977, Elevação do Amazonas à categoria de Província (05/09)\n * @see Official: https://sapl.al.am.leg.br/norma/2873\n * Lei AM nº 84/2010, Dia da Consciência Negra (state holiday until it became national in 2024).\n * Its ementa carries the same wording as the Mato Grosso and Rio de Janeiro laws: \"INSTITUI no\n * Calendário Oficial do Estado do Amazonas o dia 20 de novembro, data de aniversário da morte de\n * Zumbi dos Palmares e Dia Nacional da Consciência Negra, como feriado estadual\".\n * @see Official: https://sapl.cmm.am.gov.br/norma/3932\n * Lei Municipal de Manaus nº 496/1999, Nossa Senhora da Conceição (08/12): \"INSTITUI feriado\n * religioso no Município de Manaus no dia 8 de dezembro\". No state norm declaring 08/12 was\n * located in the ALEAM records, so the entry is reported as an optional day, not as a feriado\n * estadual.\n * @see Official: https://www.legislabahia.ba.gov.br/documentos/constituicao-do-estado-da-bahia-de-05-de-outubro-de-1989\n * Constituição Estadual da BA, art. 6º § 3º, Independência da Bahia (02/07): \"O Dois de Julho,\n * data magna da Bahia ..., é feriado em todo o território do Estado\".\n * @see Official: https://belt.al.ce.gov.br/index.php/constituicao-do-ceara/emendas-a-constituicao-do-ceara/item/5643-emenda-constitucional-n-73-de-1-de-dezembro-de-2011-d-o-06-12-11\n * Constituição Estadual do CE, art. 18 par. único (EC nº 73/2011), Abolição da Escravidão no Ceará\n * (25/03): the text fixes the data magna, and the feriado follows from Lei 9.093/1995, art. 1º,\n * II.\n * @see Official: https://www.sinj.df.gov.br/sinj/Norma/18459/Lei_72_27_12_1989.html\n * Lei distrital nº 72/1989, art. 1º, I, Fundação de Brasília (21/04), and art. 1º par. único,\n * Corpus Christi: \"São, igualmente feriados, a Sexta-feira da Paixão e Corpus Christi, datas\n * móveis\".\n * @see Official: https://www.sinj.df.gov.br/sinj/Norma/48922/Lei_963_1995.html\n * Lei distrital nº 963/1995, Dia do Evangélico (30/11)\n * @see Official: https://www3.al.es.gov.br/Arquivo/Documents/legislacao/html/LEI110102019.html\n * Lei ES nº 11.010/2019, art. 1º par. único, Nossa Senhora da Penha (padroeira do estado, \"sempre\n * na segunda-feira, oitavo dia posterior ao domingo de Páscoa\")\n * @see Official: https://legisla.casacivil.go.gov.br/pesquisa_legislacao/100979/lei-20756\n * Lei GO nº 20.756/2020, art. 269, II, the three feriados estaduais of Goiás: \"a) 26 de julho,\n * consagrado à fundação da cidade de Goiás; b) 24 de outubro, comemorativo ao lançamento da pedra\n * fundamental de Goiânia; c) 28 de outubro, consagrado ao servidor público\".\n * @see Official: https://arquivos.al.ma.leg.br:8443/ged/legislacao/LEI_2457\n * Lei MA nº 2.457/1964, Adesão do Maranhão à Independência (28/07)\n * @see Official: https://www.al.mt.gov.br/norma-juridica/urn:lex:br;mato.grosso:estadual:lei.ordinaria:2002-12-27;7879\n * Lei MT nº 7.879, de 27/12/2002, Dia da Consciência Negra (state holiday until it became\n * national in 2024). Art. 1º, as published in the Diário Oficial do Estado de Mato Grosso of\n * 27/12/2002 (p. 6), the text the ALMT ficha técnica links: \"Fica instituído o dia 20 de\n * novembro, data do aniversário da morte de Zumbi dos Palmares e Dia Nacional da Consciência\n * Negra, como feriado estadual\"; its ementa repeats the same wording, and the ficha técnica\n * records \"Não consta revogação expressa\". The \"Lei MT nº 1.587/2002\" cited for this holiday\n * elsewhere is not in the ALMT norm base at all, under any norm type: 7.879/2002 is the law that\n * creates it.\n * @see Official: https://aacpdappls.net.ms.gov.br/appls/legislacao/secoge/govato.nsf/1b758e65922af3e904256b220050342a/a489a293563f506304256e450002e9f8\n * Lei MS nº 10/1979, Criação do Estado de Mato Grosso do Sul (11/10)\n * @see Official: https://bancodeleis.alepa.pa.gov.br/arquivos/lei5999_1996_93239.pdf\n * Lei PA nº 5.999/1996, Adesão do Pará à Independência (15/08)\n * @see Official: https://sapl.al.pb.leg.br/norma/11988\n * Lei PB nº 10.601/2015, Data Magna do Estado da Paraíba (05/08): \"INSTITUI COMO FERIADO CIVIL O\n * DIA 05 DE AGOSTO, DATA MAGNA DO ESTADO DA PARAÍBA\". Its art. 2º also revoked art. 2º of Lei PB\n * nº 3.489/1967, the basis of the 26/07 Morte de João Pessoa entry, which is therefore emitted\n * only up to 2015.\n * @see Official: https://www.legislacao.pr.gov.br/legislacao/pesquisarAto.do?action=exibir&codAto=134573\n * Lei PR nº 18.384/2014, Emancipação Política do Paraná (19/12), expressly \"não se constituindo em\n * feriado civil\"\n * @see Official: https://legis.alepe.pe.gov.br/texto.aspx?tiponorma=1&numero=16241&complemento=0&ano=2017&tipo=&url=\n * Lei PE nº 16.241/2017, art. 49, Revolução Pernambucana (06/03): \"Dia 6 de março: Data Magna do\n * Estado de Pernambuco e feriado civil no âmbito do Estado de Pernambuco\". Revoked the Lei PE nº\n * 16.059/2017 cited here before, which had itself superseded the movable \"primeiro domingo de\n * março\" of Lei PE nº 13.835/2009.\n * @see Official: https://sapl.al.pi.leg.br/norma/5849\n * Lei PI nº 176/1937, Dia do Piauí (19/10)\n * @see Official: http://alerjln1.alerj.rj.gov.br/CONTLEI.NSF/c8aa0900025feef6032564ec0060dfff/1baf90ca125ff96f8325740a00776600\n * Lei RJ nº 5.198/2008, São Jorge (23/04): the ALERJ text of the law. Its Ficha Técnica records\n * no ação de inconstitucionalidade; the STF case is cited separately below.\n * @see Official: https://portal.stf.jus.br/processos/detalhe.asp?incidente=2624787\n * STF ADI 4092, which upheld that law. Decisão de julgamento of 28/08/2023, Tribunal Pleno,\n * sessão virtual: \"O Tribunal, por maioria, declarou a constitucionalidade da Lei do Estado do Rio\n * de Janeiro n. 5.198, de 5 de março de 2008, e, por conseguinte, julgou improcedente a presente\n * ação direta … Plenário, Sessão Virtual de 18.8.2023 a 25.8.2023\"; trânsito em julgado 28/10/2023.\n * @see Official: http://alerjln1.alerj.rj.gov.br/CONTLEI.NSF/69d90307244602bb032567e800668618/80a541c3a5a9d63183256c7d0057bf25\n * Lei RJ nº 4.007, de 11/11/2002, Dia da Consciência Negra (state holiday until it became\n * national in 2024). Art. 1º: \"Fica instituído o dia 20 de novembro, data do aniversário da\n * morte de Zumbi dos Palmares e dia Nacional da consciência Negra, como feriado Estadual\", the\n * same wording Mato Grosso's law of the same year carries. Its Ficha Técnica records no ação de\n * inconstitucionalidade either.\n * @see Official: https://portal.stf.jus.br/processos/detalhe.asp?incidente=2636281\n * STF ADI 4131, cited here before as pending against Lei RJ nº 4.007/2002, in fact sought \"a\n * declaração de inconstitucionalidade da Lei n. 5.243, do Estado do Rio de Janeiro, de 14 de maio\n * de 2008\" and was não conhecida on 21/09/2018 (trânsito em julgado 25/10/2018).\n * @see Official: http://www.al.rn.leg.br/storage/legislacao//arq5064574f632ec.pdf\n * Lei RN nº 8.913/2006, Mártires de Cunhaú e Uruaçu (03/10), the single entry of Rio Grande do\n * Norte: a \"Resumo da Lei\" search for \"feriado\" in the ALRN legislation base\n * (https://www.al.rn.leg.br/legislacao/pesquisa) returns this law and no other.\n * @see Official: https://www.al.rn.leg.br/noticia/19157/rn-faz-519-anos-e-data-foi-criada-por-lei-estadual-em-alusao-ao-marco-de-touros\n * Lei RN nº 7.831, de 30/05/2000, the \"Dia do Rio Grande do Norte\" (07/08), which is *not* a\n * holiday and therefore has no entry. The ALRN records it as \"Lei Ord. nº 7.831, de 30/05/2000\"\n * and describes it in the Assembleia's own reporting on the date: the deputy \"propôs o projeto de\n * lei instituindo o dia 7 de agosto como data do aniversário do Rio Grande do Norte. A lei 7.831\n * foi aprovada no dia 30 de maio de 2000, sancionada no dia seguinte\". It creates a data\n * comemorativa and nothing else; the ALRN's own ementa index does not return it for \"feriado\",\n * and the state's 07/08 is a working day. The 07/09 \"Dia do Rio Grande do Norte\" this table\n * carried before 2.4.0 had no law behind it at all and merely duplicated the national\n * Independência do Brasil, which still makes `isHoliday` true on 07/09 for every state. The\n * ALRN's own download link for the 7.831 text\n * (https://www.al.rn.leg.br/storage/legislacao//Lei%20n%C2%BA%207.831.pdf) 404s, as do the links\n * of every other law it holds from that year.\n * @see Official: https://ww2.al.rs.gov.br/dal/LinkClick.aspx?fileticket=WQdIfqNoXO4%3d&tabid=3683&mid=5359\n * Constituição Estadual do RS compilada (the \"Veja em HTML\" document of the Assembleia's\n * Constituição Estadual page, linked below), art. 6º § 1º, Revolução Farroupilha (20/09): \"O dia\n * 20 de setembro é a data magna, sendo considerado feriado no Estado. (Redação dada pela Emenda\n * Constitucional n.º 11, de 03/10/95) … (Renumerado pela Emenda Constitucional n.º 83, de\n * 28/09/23)\".\n * @see Official: https://ww2.al.rs.gov.br/dal/Legisla%C3%A7%C3%A3o/Constitui%C3%A7%C3%A3oEstadual/tabid/3683/Default.aspx\n * The Assembleia Legislativa do RS page that publishes that compiled text; it is a link hub and\n * carries no article text of its own.\n * @see Official: https://sapl.al.ro.leg.br/norma/4958\n * Lei RO nº 2.291, de 22/04/2010, Criação do Estado de Rondônia (04/01): \"DECLARA O DIA 4 DE\n * JANEIRO DATA MAGNA E FERIADO CIVIL ESTADUAL\". Lei RO nº 3.170/2013, cited here before, is a\n * supplementary credit law: \"AUTORIZA O PODER EXECUTIVO A ABRIR CRÉDITO SUPLEMENTAR POR ANULAÇÃO\n * ... EM FAVOR DAS UNIDADES ORÇAMENTÁRIAS: DEPARTAMENTO DE ESTRADAS E RODAGEM - DER/RO,\n * SECRETARIA DE ESTADO DE ASSISTÊNCIA SOCIAL - SEAS\", nothing to do with holidays.\n * @see Official: https://sapl.al.ro.leg.br/norma/3003\n * Lei RO nº 1.026, de 20/12/2001, the other law cited for Rondônia, whose art. 1º did create a\n * second feriado estadual — \"Fica instituído feriado no Estado de Rondônia, o dia 18 de junho,\n * em homenagem aos evangélicos\" — but which the STF struck down, so 18/06 has no entry.\n * @see Official: https://portal.stf.jus.br/processos/detalhe.asp?incidente=2545186\n * STF ADI 3940, which voided that law. Decisão de julgamento of 20/03/2020, Tribunal Pleno,\n * sessão virtual: \"O Tribunal, por unanimidade, julgou procedente o pedido formulado na ação\n * direta para declarar a inconstitucionalidade da Lei nº 1.026, de 20 de dezembro de 2001, do\n * Estado de Rondônia, nos termos do voto do Relator ... Plenário, Sessão Virtual de 13.3.2020 a\n * 19.3.2020\"; trânsito em julgado 11/08/2020. The declaration is erga omnes and ex tunc, so the\n * date is absent for every year, not only from 2020 on.\n * @see Official: http://sapl.al.rr.leg.br/media/sapl/public/normajuridica/1991/3912/constituicao_estadual_do_estado_de_roraima.pdf\n * Constituição Estadual de RR, art. 9º, Criação do Estado de Roraima (05/10): \"Cinco de outubro,\n * data magna de Roraima, é feriado em todo o território do Estado\".\n * @see Official: http://leis.alesc.sc.gov.br/html/2022/18531_2022_lei.html\n * Lei SC nº 18.531/2022, the in-force consolidation, whose Anexo Único carries both Santa Catarina\n * holidays and the Sunday transfer: \"Sempre que o dia 11 de agosto coincidir com dia útil da\n * semana, o feriado e os eventos alusivos à data serão transferidos para o domingo subsequente\"\n * and the same clause for 25 de novembro.\n * @see Official: http://leis.alesc.sc.gov.br/html/1996/10306_1996_lei.html\n * Lei SC nº 10.306/1996, art. 1º, in the wording of Lei SC nº 12.906/2004: \"É considerada data\n * magna do Estado o dia 11 de agosto, Dia do Estado de Santa Catarina, e dia de Santa Catarina de\n * Alexandria, dia 25 de novembro\".\n * @see Official: http://leis.alesc.sc.gov.br/html/1999/11213_1999_lei.html\n * Lei SC nº 11.213, de 11 de novembro de 1999, which added to art. 1º of Lei SC nº 10.306/1996 the\n * parágrafo único transferring 25 November alone: \"Sempre que o dia 25 de novembro coincidir com\n * dia útil da semana, o feriado e os eventos alusivos à data serão transferidos para o domingo\n * subseqüente\". Its art. 2º put it in force on the day it was published (DO 16.290, de 12/11/1999),\n * thirteen days before that year's 25 November, so the 25 November transfer starts in 1999 and not\n * in 2005. The Anexo of the in-force Lei SC nº 18.531/2022 credits the same clause to \"10.306, de\n * 1996; 11.213, de 1999 e 12.906, de 2004\".\n * @see Official: http://leis.alesc.sc.gov.br/html/2004/12906_2004_lei.html\n * Lei SC nº 12.906, de 22 de janeiro de 2004, which added 11 August to the caput of art. 1º of Lei\n * SC nº 10.306/1996 and, by its art. 3º, \"Revoga-se a Lei nº 11.213, de 11 de novembro de 1999\"\n * without restating the transfer clause. It entered into force on the day it was published (DO\n * 17.320, de 22/01/2004), before that year's 25 November, so 2004 is the one year in which neither\n * date is transferred.\n * @see Official: http://leis.alesc.sc.gov.br/html/2005/13408_2005_lei.html\n * Lei SC nº 13.408, de 15/07/2005, which reinstated the parágrafo único, this time transferring\n * both dates to the following Sunday, and, by its art. 2º, entered into force on the day it was\n * published (DO 17.680, de 15/07/2005): \"Sempre que o dia 11 de agosto e o dia 25 de novembro\n * coincidirem com dias úteis da semana, os feriados e os eventos alusivos às datas serão\n * transferidos para o domingo subseqüente\". Both of that year's dates fall after it. The two\n * holidays are therefore split by year: 11 August is fixed up to 2004 and transferring from 2005\n * on, while 25 November is fixed up to 1998, transferring from 1999 to 2003, fixed again in 2004\n * and transferring from 2005 on. Lei SC nº 16.719/2015, cited here before, was revoked by Lei SC nº\n * 17.335/2017, itself consolidated and revoked by Lei SC nº 18.531/2022.\n * @see Official: https://www.al.sp.gov.br/repositorio/legislacao/lei/1997/lei-9497-05.03.1997.html\n * Lei SP nº 9.497, de 05/03/1997, Revolução Constitucionalista (09/07), art. 1º: \"Fica\n * instituído, como feriado civil, o dia 9 (nove) de julho, data magna do Estado de São Paulo,\n * conforme autorizado pelo Artigo 1.º, inciso II, da Lei Federal n. 9.093, de 12 de setembro de\n * 1995\". The \"710/1995\" cited for this holiday elsewhere is the number of the projeto de lei that\n * became it, not of a law. The same ALESP text records one exception this table does not model,\n * because it applies to a single year: Lei SP nº 17.264, de 22/05/2020, \"que determinou a\n * comemoração do feriado, excepcionalmente para o ano de 2020, em 25 de maio\".\n * @see Official: https://www.al.sp.gov.br/repositorio/legislacao/lei/2023/lei-17746-12.09.2023.html\n * Lei SP nº 17.746, de 12/09/2023, Dia da Consciência Negra: a permanent state holiday, listed\n * here only for 2023 because the national holiday of Lei 14.759/2023 takes over from 2024. Art.\n * 1º: \"Fica instituído, no âmbito do Estado, o dia 20 de novembro de cada ano, Dia Estadual da\n * Consciência Negra, como feriado estadual\". That is the Amapá wording, not the Mato Grosso one,\n * so this single-year entry is the one place the table reports a holiday under\n * `CONSCIENCIA_NEGRA_HOLIDAY_NAME` where the law itself says \"Dia Estadual\".\n * @see Official: https://aleselegis.al.se.leg.br/Arquivo/Documents/legislacao/html/CE11989.html\n * Constituição Estadual de SE, art. 269 (EC nº 20/2000), Independência de Sergipe (08/07): \"Será\n * feriado estadual o dia 08 de julho, data consagrada à Independência de Sergipe\".\n * @see Official: https://www.al.to.leg.br/arquivo/15717\n * Lei TO nº 960/1998, whose art. 1º caput only institutes the Dia da Autonomia (18/03); the\n * feriado estadual sat in the parágrafo único.\n * @see Official: https://www.al.to.leg.br/arquivo/15724\n * Lei TO nº 2.013, de 18/02/2009, which replaced that parágrafo único with a purely commemorative\n * provision, so 18/03 is emitted only up to 2008.\n * @see Official: https://www.al.to.leg.br/arquivo/6883\n * Lei TO nº 627/1993, Padroeira do Estado (Nossa Senhora da Natividade, 08/09)\n * @see Official: https://www.al.to.leg.br/arquivo/6358\n * Lei TO nº 98/1989, Criação do Estado do Tocantins (05/10)\n */\nexport const STATE_HOLIDAYS: Partial<Record<StateCode, StateHolidayEntry[]>> = {\n\tAC: [\n\t\t{ name: \"Dia do Evangélico\", day: 23, month: 1 },\n\t\t{ name: \"Dia Internacional da Mulher\", day: 8, month: 3 },\n\t\t{ name: \"Aniversário do Acre\", day: 15, month: 6 },\n\t\t{ name: \"Dia da Amazônia\", day: 5, month: 9 },\n\t\t{ name: \"Assinatura do Tratado de Petrópolis\", day: 17, month: 11 },\n\t],\n\tAL: [\n\t\t{ name: \"São João\", day: 24, month: 6 },\n\t\t{ name: \"São Pedro\", day: 29, month: 6 },\n\t\t{\n\t\t\tname: \"Emancipação Política de Alagoas\",\n\t\t\tday: 16,\n\t\t\tmonth: 9,\n\t\t\ttype: \"optional\",\n\t\t\tuntil: AL_EMANCIPACAO_FERIADO_SINCE_YEAR,\n\t\t},\n\t\t{\n\t\t\tname: \"Emancipação Política de Alagoas\",\n\t\t\tday: 16,\n\t\t\tmonth: 9,\n\t\t\tsince: AL_EMANCIPACAO_FERIADO_SINCE_YEAR,\n\t\t},\n\t],\n\tAP: [\n\t\t{ name: \"Dia de São José\", day: 19, month: 3 },\n\t\t{ name: \"Criação do Território Federal do Amapá\", day: 13, month: 9 },\n\t\t{\n\t\t\tname: \"Dia Estadual da Consciência Negra\",\n\t\t\tday: 20,\n\t\t\tmonth: 11,\n\t\t\tsince: 2007,\n\t\t\tuntil: CONSCIENCIA_NEGRA_NATIONAL_SINCE_YEAR,\n\t\t},\n\t],\n\tAM: [\n\t\t{ name: \"Elevação do Amazonas à categoria de Província\", day: 5, month: 9 },\n\t\t{\n\t\t\tname: CONSCIENCIA_NEGRA_HOLIDAY_NAME,\n\t\t\tday: 20,\n\t\t\tmonth: 11,\n\t\t\tsince: 2010,\n\t\t\tuntil: CONSCIENCIA_NEGRA_NATIONAL_SINCE_YEAR,\n\t\t},\n\t\t{ name: \"Nossa Senhora da Conceição\", day: 8, month: 12, type: \"optional\" },\n\t],\n\tBA: [{ name: \"Independência da Bahia\", day: 2, month: 7 }],\n\tCE: [{ name: \"Abolição da Escravidão no Ceará\", day: 25, month: 3 }],\n\tDF: [\n\t\t{ name: \"Fundação de Brasília\", day: 21, month: 4 },\n\t\t{ name: \"Corpus Christi\", easterOffset: 60 },\n\t\t{ name: \"Dia do Evangélico\", day: 30, month: 11 },\n\t],\n\tES: [{ name: \"Nossa Senhora da Penha\", easterOffset: 8 }],\n\tGO: [\n\t\t{ name: \"Fundação da Cidade de Goiás\", day: 26, month: 7 },\n\t\t{ name: \"Lançamento da Pedra Fundamental de Goiânia\", day: 24, month: 10 },\n\t\t{ name: \"Dia do Servidor Público\", day: 28, month: 10 },\n\t],\n\tMA: [{ name: \"Adesão do Maranhão à Independência\", day: 28, month: 7 }],\n\tMT: [\n\t\t{\n\t\t\tname: CONSCIENCIA_NEGRA_HOLIDAY_NAME,\n\t\t\tday: 20,\n\t\t\tmonth: 11,\n\t\t\tuntil: CONSCIENCIA_NEGRA_NATIONAL_SINCE_YEAR,\n\t\t},\n\t],\n\tMS: [{ name: \"Criação do Estado de Mato Grosso do Sul\", day: 11, month: 10 }],\n\tPA: [{ name: \"Adesão do Pará à Independência\", day: 15, month: 8 }],\n\tPB: [\n\t\t{ name: \"Data Magna do Estado da Paraíba\", day: 5, month: 8 },\n\t\t{\n\t\t\tname: \"Morte de João Pessoa\",\n\t\t\tday: 26,\n\t\t\tmonth: 7,\n\t\t\tuntil: PB_MORTE_JOAO_PESSOA_UNTIL_YEAR,\n\t\t},\n\t],\n\tPR: [{ name: \"Emancipação Política do Paraná\", day: 19, month: 12, type: \"optional\" }],\n\tPE: [{ name: \"Revolução Pernambucana\", day: 6, month: 3 }],\n\tPI: [{ name: \"Dia do Piauí\", day: 19, month: 10 }],\n\tRJ: [\n\t\t{ name: \"São Jorge\", day: 23, month: 4 },\n\t\t{\n\t\t\tname: CONSCIENCIA_NEGRA_HOLIDAY_NAME,\n\t\t\tday: 20,\n\t\t\tmonth: 11,\n\t\t\tuntil: CONSCIENCIA_NEGRA_NATIONAL_SINCE_YEAR,\n\t\t},\n\t],\n\tRN: [{ name: \"Mártires de Cunhaú e Uruaçu\", day: 3, month: 10 }],\n\tRS: [{ name: \"Revolução Farroupilha\", day: 20, month: 9 }],\n\tRO: [{ name: \"Criação do Estado de Rondônia\", day: 4, month: 1 }],\n\tRR: [{ name: \"Criação do Estado de Roraima\", day: 5, month: 10 }],\n\tSC: [\n\t\t{\n\t\t\tname: \"Dia do Estado de Santa Catarina\",\n\t\t\tday: 11,\n\t\t\tmonth: 8,\n\t\t\tuntil: SC_NEXT_SUNDAY_TRANSFER_SINCE_YEAR,\n\t\t},\n\t\t{\n\t\t\tname: \"Dia do Estado de Santa Catarina\",\n\t\t\tday: 11,\n\t\t\tmonth: 8,\n\t\t\tnextSundayWhenWeekday: true,\n\t\t\tsince: SC_NEXT_SUNDAY_TRANSFER_SINCE_YEAR,\n\t\t},\n\t\t{\n\t\t\tname: \"Dia de Santa Catarina de Alexandria\",\n\t\t\tday: 25,\n\t\t\tmonth: 11,\n\t\t\tuntil: SC_ALEXANDRIA_TRANSFER_SINCE_YEAR,\n\t\t},\n\t\t{\n\t\t\tname: \"Dia de Santa Catarina de Alexandria\",\n\t\t\tday: 25,\n\t\t\tmonth: 11,\n\t\t\tnextSundayWhenWeekday: true,\n\t\t\tsince: SC_ALEXANDRIA_TRANSFER_SINCE_YEAR,\n\t\t\tuntil: SC_ALEXANDRIA_TRANSFER_GAP_YEAR,\n\t\t},\n\t\t{\n\t\t\tname: \"Dia de Santa Catarina de Alexandria\",\n\t\t\tday: 25,\n\t\t\tmonth: 11,\n\t\t\tsince: SC_ALEXANDRIA_TRANSFER_GAP_YEAR,\n\t\t\tuntil: SC_NEXT_SUNDAY_TRANSFER_SINCE_YEAR,\n\t\t},\n\t\t{\n\t\t\tname: \"Dia de Santa Catarina de Alexandria\",\n\t\t\tday: 25,\n\t\t\tmonth: 11,\n\t\t\tnextSundayWhenWeekday: true,\n\t\t\tsince: SC_NEXT_SUNDAY_TRANSFER_SINCE_YEAR,\n\t\t},\n\t],\n\tSP: [\n\t\t{ name: \"Revolução Constitucionalista\", day: 9, month: 7 },\n\t\t{\n\t\t\tname: CONSCIENCIA_NEGRA_HOLIDAY_NAME,\n\t\t\tday: 20,\n\t\t\tmonth: 11,\n\t\t\tsince: 2023,\n\t\t\tuntil: CONSCIENCIA_NEGRA_NATIONAL_SINCE_YEAR,\n\t\t},\n\t],\n\tSE: [{ name: \"Independência de Sergipe\", day: 8, month: 7 }],\n\tTO: [\n\t\t{\n\t\t\tname: \"Autonomia do Estado do Tocantins\",\n\t\t\tday: 18,\n\t\t\tmonth: 3,\n\t\t\tuntil: TO_AUTONOMIA_UNTIL_YEAR,\n\t\t},\n\t\t{\n\t\t\tname: \"Padroeira do Estado (Nossa Senhora da Natividade)\",\n\t\t\tday: 8,\n\t\t\tmonth: 9,\n\t\t},\n\t\t{ name: \"Criação do Estado do Tocantins\", day: 5, month: 10 },\n\t],\n};\n","import { HOLIDAYS_MAX_YEAR, HOLIDAYS_MIN_YEAR } from \"../_internals/constants/holidays\";\nimport { type StateCode } from \"../_internals/constants/states\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { resolveStateHolidayDate } from \"../_internals/resolve-state-holiday-date/resolve-state-holiday-date\";\nimport {\n\tCONSCIENCIA_NEGRA_HOLIDAY_NAME,\n\tCONSCIENCIA_NEGRA_NATIONAL_SINCE_YEAR,\n\tFIXED_HOLIDAYS,\n\tSTATE_HOLIDAYS,\n} from \"./constants\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\n/** The class a holiday returned by `getHolidays` falls into. */\nexport type HolidayType = \"national\" | \"state\" | \"optional\" | \"religious\";\n\n/** One holiday returned by `getHolidays`. */\nexport type Holiday = {\n\t/** The holiday name in Brazilian Portuguese, e.g. `\"Sexta-feira Santa\"`. */\n\tname: string;\n\t/** The holiday date, at local midnight of the requested year. */\n\tdate: Date;\n\t/** How the holiday is observed: national, state, optional (ponto facultativo) or religious. */\n\ttype: HolidayType;\n};\n\n/** The object form `getHolidays` accepts, naming the year to list and, optionally, the state whose holidays are added. */\nexport type GetHolidaysParams = {\n\t/** The four digit year to list holidays for. Must be an integer between 1900 and 2099. */\n\tyear: number;\n\t/** Two letter state code whose state holidays are added to the national ones (default: national holidays only). */\n\tstateCode?: StateCode;\n};\n\n/**\n * The object form `getHolidays` accepts, the 2.3.0 name of `GetHolidaysParams`.\n *\n * @deprecated Use `GetHolidaysParams` instead.\n */\nexport type GetHolidaysOptions = GetHolidaysParams;\n\nconst cache = new Map<string, Holiday[]>();\n\nconst cloneHolidays = (holidays: Holiday[]): Holiday[] =>\n\tholidays.map((holiday) => ({ ...holiday, date: new Date(holiday.date) }));\n\nconst computeHolidays = (year: number, stateCode: StateCode | undefined): Holiday[] => {\n\tconst holidays: Holiday[] = [];\n\n\tfor (const [name, { day, month }] of Object.entries(FIXED_HOLIDAYS)) {\n\t\tholidays.push({\n\t\t\tname,\n\t\t\tdate: new Date(year, month - 1, day),\n\t\t\ttype: \"national\",\n\t\t});\n\t}\n\n\tif (year >= CONSCIENCIA_NEGRA_NATIONAL_SINCE_YEAR) {\n\t\tholidays.push({\n\t\t\tname: CONSCIENCIA_NEGRA_HOLIDAY_NAME,\n\t\t\tdate: new Date(year, 10, 20),\n\t\t\ttype: \"national\",\n\t\t});\n\t}\n\n\tconst easterDate = resolveStateHolidayDate(year, { easterOffset: 0 });\n\n\tholidays.push(\n\t\t{\n\t\t\tname: \"Carnaval (terça-feira)\",\n\t\t\tdate: resolveStateHolidayDate(year, { easterOffset: -47 }),\n\t\t\ttype: \"optional\",\n\t\t},\n\t\t{\n\t\t\tname: \"Sexta-feira Santa\",\n\t\t\tdate: resolveStateHolidayDate(year, { easterOffset: -2 }),\n\t\t\ttype: \"national\",\n\t\t},\n\t\t{\n\t\t\tname: \"Páscoa\",\n\t\t\tdate: easterDate,\n\t\t\ttype: \"religious\",\n\t\t},\n\t\t{\n\t\t\tname: \"Corpus Christi\",\n\t\t\tdate: resolveStateHolidayDate(year, { easterOffset: 60 }),\n\t\t\ttype: \"optional\",\n\t\t},\n\t);\n\n\t// An own entry lookup, so a prototype chain key (\"toString\", \"__proto__\", ...) is an unknown\n\t// state code like any other. `getHolidays` only passes a string or `undefined` down here.\n\t// Stryker disable next-line ConditionalExpression: `Object.hasOwn` reads an `undefined` key as the string \"undefined\", which is no state code either, so the guard only narrows the type.\n\tconst hasStateHolidays = stateCode !== undefined && Object.hasOwn(STATE_HOLIDAYS, stateCode);\n\n\tconst stateHolidays = hasStateHolidays ? STATE_HOLIDAYS[stateCode] : undefined;\n\n\tif (stateHolidays) {\n\t\tfor (const entry of stateHolidays) {\n\t\t\tconst { name, type, since, until } = entry;\n\t\t\t// Stryker disable next-line ConditionalExpression: `since` is undefined for most entries, and `year < undefined` is already always false, so the explicit `since !== undefined` guard never changes the outcome\n\t\t\tif (since !== undefined && year < since) continue;\n\t\t\t// Stryker disable next-line ConditionalExpression: `until` is undefined for most entries, and `year >= undefined` is already always false, so the explicit `until !== undefined` guard never changes the outcome\n\t\t\tif (until !== undefined && year >= until) continue;\n\n\t\t\tconst date = resolveStateHolidayDate(year, entry);\n\t\t\tconst stateHoliday: Holiday = { name, date, type: type ?? \"state\" };\n\t\t\t// Name and date together are the identity of a holiday here: a state entry only replaces\n\t\t\t// a national one when both match, so DF's Corpus Christi replaces the national optional\n\t\t\t// one while its Fundação de Brasília is listed next to Tiradentes, which falls on the\n\t\t\t// same 21 April under a different name.\n\t\t\tconst stateHolidayKey = `${name}|${date.getTime()}`;\n\t\t\tconst nationalIndex = holidays.findIndex(\n\t\t\t\t(holiday) => `${holiday.name}|${holiday.date.getTime()}` === stateHolidayKey,\n\t\t\t);\n\n\t\t\tif (nationalIndex === -1) {\n\t\t\t\tholidays.push(stateHoliday);\n\t\t\t} else {\n\t\t\t\tholidays[nationalIndex] = stateHoliday;\n\t\t\t}\n\t\t}\n\t}\n\n\tholidays.sort((a, b) => a.date.getTime() - b.date.getTime());\n\n\treturn holidays;\n};\n\n/**\n * Retrieves all Brazilian holidays for a given year.\n *\n * The function returns both fixed holidays (that occur on the same date every year)\n * and movable holidays (that are calculated based on Easter Sunday).\n * If a state code is provided, state-specific holidays are also included.\n *\n * Holidays are returned sorted by date (chronological order). Results are memoized\n * per `year`/`stateCode` combination; the returned array (and each `Holiday.date`) is\n * always a fresh copy, so mutating it never affects subsequent calls.\n *\n * If `stateCode` is provided but is not a valid/known state code, it is ignored and\n * only national holidays are returned (this mirrors passing no `stateCode` at all,\n * and is kept for backwards compatibility). The lookup is an own-property one, so a\n * prototype-chain key such as `\"__proto__\"`, `\"constructor\"` or `\"toString\"` is an unknown\n * state code like any other rather than a crash.\n *\n * When a state entry falls on the same date as a national one and carries the same name, the\n * state entry replaces it instead of being listed twice: this is how the Distrito Federal's\n * Corpus Christi, a feriado under Lei distrital nº 72/1989 art. 1º parágrafo único, comes back\n * typed `\"state\"` for `stateCode: \"DF\"` while staying `\"optional\"` everywhere else.\n *\n * Only one state holiday per UF is a feriado civil under Lei 9.093/1995 art. 1º, II, which\n * authorizes \"a data magna do Estado fixada em lei estadual\" in the singular; the other entries\n * of `STATE_HOLIDAYS` rest on ordinary state laws and are reported because they are observed in\n * practice. The date returned is the statutory one. Santa Catarina's two holidays are the only\n * observance shift the table models: each moves to the following Sunday when it falls Monday to\n * Friday, 11 August from 2005 on, when Lei SC nº 13.408/2005 extended the transfer to it, and\n * 25 November from 1999 on, when Lei SC nº 11.213/1999 first introduced it, except in 2004, the\n * year art. 3º of Lei SC nº 12.906/2004 left it without a transfer clause. Outside those ranges\n * each holiday stays on 11 August or 25 November. Acre's Tuesday-to-Thursday shift and the Goiás decrees\n * that may move 26/07 and 28/10 are not modelled, because neither can be resolved from a year\n * alone.\n *\n * @param {number} year - The year for which to retrieve holidays (must be between 1900 and 2099)\n * @returns {Holiday[]} An array of holidays sorted by date\n *\n * @example\n * ```typescript\n * // Get all national holidays\n * const holidays = getHolidays(2024);\n *\n * // Get holidays for a specific state\n * const spHolidays = getHolidays({ year: 2024, stateCode: 'SP' });\n * ```\n *\n * The national holiday laws are cited below; the state holiday laws are cited individually, one\n * `@see` per holiday, in `src/get-holidays/constants.ts`.\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l0662.htm\n * Lei 662/1949, the base national holidays law (Ano novo, Dia do trabalhador, Independência do\n * Brasil, Proclamação da República, Natal).\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/2002/l10607.htm\n * Lei 10.607/2002, rewrote that art. 1º into the list in force: it added Finados (2 November)\n * to the national holidays and folded in Tiradentes (21 April), already national since art. 3º\n * of Lei 1.266/1950, which its own art. 3º revoked.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/L1266.htm\n * Lei 1.266/1950, art. 3º, which first made Tiradentes a national holiday: \"É feriado nacional o\n * dia 21 de abril, consagrado à glorificação de Tiradentes\". Revoked by Lei 10.607/2002 only\n * after that law had carried 21 April into Lei 662/1949.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l6802.htm\n * Lei 6.802/1980, declared Nossa Senhora Aparecida (12 October) a national holiday.\n * @see Official: https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2023/lei/l14759.htm\n * Lei 14.759/2023, nationalized Dia da Consciência Negra (20 November) from\n * `CONSCIENCIA_NEGRA_NATIONAL_SINCE_YEAR` (2024) onward.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l9093.htm\n * Lei 9.093/1995, the framework law authorizing one state civil holiday (art. 1º, II, \"a data\n * magna do Estado fixada em lei estadual\") and up to four municipal religious holidays, \"neste\n * incluída a Sexta-Feira da Paixão\" (art. 2º); the legal basis for the data magna entries of\n * `STATE_HOLIDAYS`.\n * @see Official: https://www.in.gov.br/web/dou/-/portaria-mgi-n-11.460-de-29-de-dezembro-de-2025-678388627\n * Portaria MGI nº 11.460/2025, the federal executive's annual calendar of feriados nacionais and\n * pontos facultativos, reissued every December. It is the source of the typing of three of the\n * four entries derived from Easter, which no federal law declares: \"Paixão de Cristo (feriado\n * nacional)\" (Easter minus 2, emitted as `\"Sexta-feira Santa\"` typed `national`), \"Carnaval (ponto\n * facultativo)\" (Easter minus 47) and \"Corpus Christi (ponto facultativo)\" (Easter plus 60), both\n * typed `optional`. Sexta-feira Santa has no statutory basis of its own: Lei 9.093/1995 art. 2º\n * places it among the *municipal* religious holidays, and it is typed `national` here because the\n * portaria observes it nationwide. The fourth entry, Easter Sunday itself, is emitted as\n * `\"Páscoa\"` typed `religious` and has no normative basis at all: the portaria never mentions it,\n * no federal law declares it, and its date is derived arithmetically by `resolveStateHolidayDate`\n * with the Meeus/Jones/Butcher algorithm. It is a convenience entry, listed because callers\n * computing a liturgical calendar expect it, not because it is a holiday anyone observes as a day\n * off.\n */\nexport function getHolidays(year: number): Holiday[];\n/**\n * Retrieves all Brazilian holidays for a given year, optionally including the holidays of a\n * state. See the overload taking a year for the full documentation.\n *\n * @param {GetHolidaysParams} options - The year to list holidays for and, optionally, the state whose holidays are added\n * @returns {Holiday[]} An array of holidays sorted by date\n */\nexport function getHolidays(options: GetHolidaysParams): Holiday[];\nexport function getHolidays(yearOrOptions: number | GetHolidaysParams): Holiday[] {\n\tlet year: number;\n\tlet stateCode: StateCode | undefined;\n\n\tif (typeof yearOrOptions === \"number\") {\n\t\tyear = yearOrOptions;\n\t\tstateCode = undefined;\n\t} else {\n\t\tif (isNullish(yearOrOptions) || typeof yearOrOptions !== \"object\") {\n\t\t\treturn [];\n\t\t}\n\t\tyear = yearOrOptions.year;\n\t\tstateCode = yearOrOptions.stateCode;\n\t}\n\n\tif (!Number.isInteger(year) || year < HOLIDAYS_MIN_YEAR || year > HOLIDAYS_MAX_YEAR) {\n\t\treturn [];\n\t}\n\n\tconst normalizedStateCode = typeof stateCode === \"string\" ? stateCode : undefined;\n\n\t// Stryker disable next-line StringLiteral: the exact fallback text is never observable outside this module; it only has to be a value no real StateCode equals, which any fixed string satisfies\n\tconst cacheKey = `${year}|${normalizedStateCode ?? \"\"}`;\n\n\tconst cached = cache.get(cacheKey);\n\tif (cached) {\n\t\treturn cloneHolidays(cached);\n\t}\n\n\tconst holidays = computeHolidays(year, normalizedStateCode);\n\tcache.set(cacheKey, holidays);\n\n\treturn cloneHolidays(holidays);\n}\n","import { type StateCode } from \"../_internals/constants/states\";\nimport { isSupportedHolidayYear } from \"../_internals/is-supported-holiday-year/is-supported-holiday-year\";\nimport { isValidDate } from \"../_internals/is-valid-date/is-valid-date\";\nimport { getHolidays } from \"../get-holidays/get-holidays\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\n/**\n * Options shared by every business day util (`isBusinessDay`, `addBusinessDays`,\n * `subBusinessDays` and `differenceInBusinessDays`): which holidays count as non-business days.\n */\nexport type BusinessDayOptions = {\n\t/** Two letter state code whose state holidays are also treated as non-business days (default: national holidays only). */\n\tstateCode?: StateCode;\n\t/** Whether optional-type holidays (`Holiday.type === \"optional\"`, e.g. Carnaval, Corpus Christi) count as non-business days (default: `true`). */\n\tincludeOptional?: boolean;\n};\n\nconst WEEKEND_DAYS = new Set([0, 6]);\n\n/**\n * Checks whether a given date is a Brazilian business day (dia útil).\n *\n * A day is not a business day when it falls on Saturday or Sunday, or when it is a\n * Brazilian holiday returned by `getHolidays({ year, stateCode })` for `value`'s **local\n * calendar day** (its local year/month/day, as read by `Date#getFullYear`/`getMonth`/`getDate`),\n * the same convention used by `isHoliday`. Build `value` from local components\n * (`new Date(2024, 11, 25)`) rather than from a date-only ISO string when you mean a\n * specific local day, for the same reason documented in `isHoliday`.\n *\n * `options.includeOptional` defaults to `true`: holidays whose `Holiday.type` is\n * `\"optional\"` (Carnaval and Corpus Christi) are treated as non-business days even though\n * they are not statutory holidays. Pass `false` to only treat statutory (`\"national\"` and\n * `\"state\"`) holidays as non-business days.\n *\n * An invalid `options.stateCode` is treated in two different ways, depending on its type, the\n * same split `isHoliday` makes:\n *\n * - a string that is not a known state code is ignored, and only national holidays are\n *   considered, the same behavior as `getHolidays`. The lookup is an own-property one, so a\n *   prototype-chain key such as `\"__proto__\"` or `\"constructor\"` is an unknown state code like\n *   any other;\n * - a `stateCode` that is present and is not a string at all (a number, `null`, an object) is\n *   rejected rather than ignored: `isBusinessDay` returns `false` without looking at the date,\n *   even when that date is an ordinary Tuesday. `undefined`, or an absent property, is the only\n *   non-string value that stands for \"no state\" instead. `addBusinessDays`, `subBusinessDays`\n *   and `differenceInBusinessDays` reject the same value with `null`.\n *\n * Two state rules change what `includeOptional: false` answers. The Distrito Federal declares\n * Corpus Christi a feriado (Lei distrital nº 72/1989, art. 1º parágrafo único), so with\n * `stateCode: \"DF\"` it is typed `\"state\"` and still counts; and Santa Catarina's two holidays\n * are observed on the following Sunday when they fall Monday to Friday (Lei SC nº 18.531/2022),\n * so 11 August 2025, a Monday, is a business day there.\n *\n * Only years from 1900 through 2099 are supported, the range `getHolidays` computes; a date\n * outside it returns `false` rather than silently treating every weekday as a business day.\n *\n * @param {Date} value - The date to check.\n * @param {BusinessDayOptions} [options] - Which holidays count as non-business days.\n * @param {StateCode} [options.stateCode] - Brazilian state code whose state holidays are also considered.\n * @param {boolean} [options.includeOptional] - Whether optional holidays count as non-business days (default: `true`).\n * @returns {boolean} True when `value` is a business day, false otherwise. Bad input also\n * returns false: a `value` that is not a valid `Date` (including non-`Date` values), a\n * `value` outside the supported 1900-2099 range, or a `stateCode` that is present and is not a\n * string.\n *\n * @example\n * ```typescript\n * isBusinessDay(new Date(2024, 0, 2)); // true (Tuesday, not a holiday)\n * isBusinessDay(new Date(2024, 0, 1)); // false (Ano novo)\n * isBusinessDay(new Date(2024, 0, 6)); // false (Saturday)\n * isBusinessDay(new Date(2024, 1, 13)); // false (Carnaval, optional holiday, counted by default)\n * isBusinessDay(new Date(2024, 1, 13), { includeOptional: false }); // true\n * isBusinessDay(new Date(2024, 6, 9), { stateCode: \"SP\" }); // false (Revolução Constitucionalista)\n * isBusinessDay(new Date(2024, 6, 9)); // true (state holiday ignored without stateCode)\n * isBusinessDay(new Date(\"not a date\")); // false\n * isBusinessDay(new Date(2024, 6, 9), { stateCode: 5 }); // false (a non-string stateCode is rejected)\n * isBusinessDay(new Date(2100, 0, 4)); // false (a Monday, but 2100 is outside the supported range)\n * ```\n *\n * The underlying holidays are the ones `getHolidays` computes; see its JSDoc (and\n * `src/get-holidays/constants.ts` for state holidays) for the full set of laws behind them.\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l0662.htm\n * Lei 662/1949, the base national holidays law.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/2002/l10607.htm\n * Lei 10.607/2002, added Finados (2 November) and folded in Tiradentes (21 April), which had\n * been national since art. 3º of the Lei 1.266/1950 it revoked.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l6802.htm\n * Lei 6.802/1980, declared Nossa Senhora Aparecida a national holiday.\n * @see Official: https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2023/lei/l14759.htm\n * Lei 14.759/2023, nationalized Dia da Consciência Negra from 2024.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l9093.htm\n * Lei 9.093/1995, the framework law authorizing state and municipal holidays.\n * @see Official: https://www.in.gov.br/web/dou/-/portaria-mgi-n-11.460-de-29-de-dezembro-de-2025-678388627\n * Portaria MGI nº 11.460/2025, the federal executive's annual calendar of feriados nacionais and\n * pontos facultativos: the source of three of the four Easter-derived entries, namely\n * Sexta-feira Santa being observed nationally and Carnaval and Corpus Christi being ponto\n * facultativo, which is what `includeOptional` switches on. The fourth, Páscoa, has no entry in\n * the portaria; `getHolidays` derives Easter Sunday arithmetically with the Meeus/Jones/Butcher\n * algorithm, and it never affects this function because Easter is always a Sunday.\n */\nexport const isBusinessDay = (value: Date, options?: BusinessDayOptions): boolean => {\n\tif (!isValidDate(value)) return false;\n\n\tconst stateCode = options?.stateCode;\n\n\tif (stateCode !== undefined && typeof stateCode !== \"string\") return false;\n\n\tconst year = value.getFullYear();\n\n\tif (!isSupportedHolidayYear(year)) return false;\n\n\tif (WEEKEND_DAYS.has(value.getDay())) return false;\n\n\tconst includeOptional = options?.includeOptional ?? true;\n\n\tconst month = value.getMonth();\n\tconst date = value.getDate();\n\n\treturn !getHolidays({ year, stateCode }).some((holiday) => {\n\t\tif (!includeOptional && holiday.type === \"optional\") return false;\n\n\t\treturn holiday.date.getMonth() === month && holiday.date.getDate() === date;\n\t});\n};\n","import { isSupportedHolidayYear } from \"../_internals/is-supported-holiday-year/is-supported-holiday-year\";\nimport { isValidDate } from \"../_internals/is-valid-date/is-valid-date\";\nimport { type BusinessDayOptions, isBusinessDay } from \"../is-business-day/is-business-day\";\n\nexport type { BusinessDayOptions } from \"../is-business-day/is-business-day\";\n\n/**\n * Adds a number of Brazilian business days (dias úteis) to a date.\n *\n * A business day is a day for which `isBusinessDay` returns `true` (not a Saturday, a\n * Sunday, or a Brazilian holiday), evaluated with the same `options`. The function walks one\n * calendar day at a time, in the direction of `amount`, counting only business days, so it is\n * exact regardless of the arrangement of holidays around `date` (cheap in practice:\n * `getHolidays` is memoized per year).\n *\n * `amount: 0` returns a **new `Date` equal to `date`, unchanged**, even when `date` itself\n * falls on a weekend or holiday. This mirrors the verified behavior of date-fns'\n * `addBusinessDays(date, 0)`, which also returns the input date as-is rather than rolling\n * it to the next business day; see `@see` below. A negative `amount` walks backwards, one\n * business day at a time, exactly like date-fns; `subBusinessDays` is the same walk spelled\n * positively.\n *\n * The time-of-day (hours, minutes, seconds, milliseconds) of `date` is preserved in the\n * result, and `date` itself is never mutated.\n *\n * If `options.stateCode` is provided but is not a valid/known state code, it is ignored and\n * only national holidays are considered (same behavior as `getHolidays`/`isBusinessDay`), so a\n * prototype-chain key such as `\"__proto__\"` is an unknown state code like any other. An\n * `options` that is not an object at all is ignored, exactly as `isBusinessDay` ignores it.\n *\n * Only years from 1900 through 2099 are supported, the range `getHolidays` computes. A `date`\n * outside it, or a walk that leaves it, returns `null`.\n *\n * @param {Date} date - The date to count from. Never mutated: a new `Date` is returned.\n * @param {number} amount - The number of business days to add; a negative value walks backwards.\n * @param {BusinessDayOptions} [options] - Which holidays count as non-business days.\n * @param {StateCode} [options.stateCode] - Brazilian state code whose state holidays are also considered.\n * @param {boolean} [options.includeOptional] - Whether optional holidays count as non-business days (default: `true`).\n * @returns {Date | null} A new `Date`, `amount` business days after `date`. `null` on bad\n * input: a `date` that is not a valid `Date` or is outside 1900-2099, an `amount` that is not a\n * finite integer, a `stateCode` that is not a string, or a walk that leaves the supported years.\n *\n * @example\n * ```typescript\n * addBusinessDays(new Date(2024, 0, 2, 12), 1); // Wed 2024-01-03, 12:00 (the next day is already a business day)\n * addBusinessDays(new Date(2024, 11, 31, 12), 1); // Thu 2025-01-02, 12:00 (Jan 1 is Ano novo, skipped)\n * addBusinessDays(new Date(2024, 0, 5, 12), -1); // Thu 2024-01-04, 12:00 (walks backwards)\n * addBusinessDays(new Date(2024, 0, 6, 12), 0); // Sat 2024-01-06, 12:00 (unchanged, even though Saturday is not a business day)\n * addBusinessDays(new Date(2024, 6, 8, 12), 1, { stateCode: \"SP\" }); // Wed 2024-07-10, 12:00 (Jul 9 is a state holiday in SP)\n * addBusinessDays(new Date(\"not a date\"), 1); // null\n * addBusinessDays(new Date(2024, 0, 2), 1.5); // null (not an integer)\n * addBusinessDays(new Date(2099, 11, 31), 1); // null (the walk leaves the supported years)\n * addBusinessDays(null, 1); // null\n * ```\n *\n * @see Based on: https://date-fns.org/docs/addBusinessDays\n * Reference behavior for `amount: 0`,\n * for the positional `(date, amount)` argument order and for walking backwards on a negative\n * `amount`. The underlying holiday determination's official sources are cited in\n * `isBusinessDay`/`getHolidays`.\n */\nexport const addBusinessDays = (\n\tdate: Date,\n\tamount: number,\n\toptions?: BusinessDayOptions,\n): Date | null => {\n\tif (!isValidDate(date)) return null;\n\n\tif (!Number.isInteger(amount)) return null;\n\n\tconst stateCode = options?.stateCode;\n\n\tif (stateCode !== undefined && typeof stateCode !== \"string\") return null;\n\n\tif (!isSupportedHolidayYear(date.getFullYear())) return null;\n\n\tconst result = new Date(date);\n\n\tconst hours = result.getHours();\n\t// Stryker disable next-line EqualityOperator: when amount is 0, remaining is 0 below and the loop never reads step, so > vs >= here is unobservable\n\tconst step = amount > 0 ? 1 : -1;\n\tlet remaining = Math.abs(amount);\n\n\twhile (remaining > 0) {\n\t\tresult.setDate(result.getDate() + step);\n\n\t\tif (!isSupportedHolidayYear(result.getFullYear())) return null;\n\n\t\tif (isBusinessDay(result, options)) {\n\t\t\tremaining -= 1;\n\t\t}\n\t}\n\n\tresult.setHours(hours);\n\n\treturn result;\n};\n","import { type StateCode } from \"./states\";\n\n/**\n * The two letter code of each Brazilian state published by the IBGE, in the order of `DATA` in\n * `./states` (sorted by state name in the \"pt-BR\" locale), on its own so that a util which only\n * needs the codes does not carry the whole states table into a consumer's bundle.\n *\n * Generated by `node ./scripts/states.ts`. Do not edit by hand.\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport const STATE_CODES: readonly StateCode[] = [\n\t\"AC\",\n\t\"AL\",\n\t\"AP\",\n\t\"AM\",\n\t\"BA\",\n\t\"CE\",\n\t\"DF\",\n\t\"ES\",\n\t\"GO\",\n\t\"MA\",\n\t\"MT\",\n\t\"MS\",\n\t\"MG\",\n\t\"PA\",\n\t\"PB\",\n\t\"PR\",\n\t\"PE\",\n\t\"PI\",\n\t\"RJ\",\n\t\"RN\",\n\t\"RS\",\n\t\"RO\",\n\t\"RR\",\n\t\"SC\",\n\t\"SP\",\n\t\"SE\",\n\t\"TO\",\n];\n","/**\n * Prepositions, articles and conjunctions that stay in lower case inside a proper name, the\n * default `lowerCaseWords` of `capitalize`. The Manual de Redação da Presidência da República\n * states the convention twice: a cargo is \"redigido apenas com as iniciais maiúsculas. As\n * preposições que liguem as palavras do cargo devem ser grafadas em minúsculas\" (item 5.1.8 b),\n * and a title is written \"com inicial maiúscula em todas as palavras, exceto nas de ligação\"\n * (item 10.2 a). The same convention is used by the IBGE for the names of municipalities\n * (\"Mogi das Cruzes\", \"Santa Bárbara d'Oeste\"). The elided `d` of \"d'Oeste\" is not a member of\n * this list: on its own it is a designator (\"Rua D\", \"Quadra D\"), so `capitalize` lower-cases it\n * structurally, only when an apostrophe and a word follow it. Applying it to personal and institutional names\n * (\"Ministério da Justiça\", \"José da Silva\") is this library's extension of that rule; the\n * Manual does not spell those two cases out.\n *\n * @see Official: https://www4.planalto.gov.br/centrodeestudos/assuntos/manual-de-redacao-da-presidencia-da-republica/manual-de-redacao.pdf\n * Manual de Redação da Presidência da República, 3ª edição (Portaria nº 1.369, de 27/12/2018),\n * items 5.1.8 b) and 10.2 a). The landing page below only recounts the editions and links to\n * this PDF; the rule itself is in the PDF.\n * @see Official: https://www4.planalto.gov.br/centrodeestudos/assuntos/manual-de-redacao-da-presidencia-da-republica\n * The Presidência page that publishes it (\"Acesse aqui a íntegra da última edição publicada\").\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport const PREPOSITIONS = [\n\t\"a\",\n\t\"com\",\n\t\"da\",\n\t\"das\",\n\t\"de\",\n\t\"do\",\n\t\"dos\",\n\t\"del\",\n\t\"della\",\n\t\"den\",\n\t\"der\",\n\t\"di\",\n\t\"du\",\n\t\"e\",\n\t\"em\",\n\t\"na\",\n\t\"nas\",\n\t\"no\",\n\t\"nos\",\n\t\"o\",\n\t\"por\",\n\t\"sem\",\n\t\"van\",\n\t\"von\",\n];\n\n/**\n * Company designations that are written in upper case in Brazilian names, and the only words a\n * designation of `TRAILING_DESIGNATIONS` is upper case before. \"SA\" without punctuation is\n * deliberately absent: it is indistinguishable from the surname \"Sá\" typed without its accent,\n * which would turn \"Jose de Sa\" into \"Jose de SA\".\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l6404consol.htm\n * Lei nº 6.404/1976, art. 3º: the sociedade anônima is designated by \"companhia\" or \"sociedade\n * anônima\", \"expressas por extenso ou abreviadamente\", the abbreviations being CIA, S.A. and S/A.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/2002/l10406compilada.htm\n * Código Civil, art. 1.158: the sociedade limitada carries the final word \"limitada\" \"ou a sua\n * abreviatura\" (LTDA); art. 991 defines the sociedade em conta de participação (SCP), enrolled in\n * the CNPJ under that abbreviation; art. 980-A, which created the EIRELI, was revoked by the Lei\n * nº 14.382/2022, so the abbreviation is kept only because registered names still carry it.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/lcp/lcp123.htm\n * Lei Complementar nº 123/2006, art. 72, revoked by the Lei Complementar nº 155/2016, added\n * \"Microempresa ou Empresa de Pequeno Porte, ou suas respectivas abreviações, ME ou EPP\" to the\n * name; art. 18-A defines the Microempreendedor Individual (MEI).\n * @see Official: https://www.gov.br/empresas-e-negocios/pt-br/drei/legislacao/instrucoes-normativas/arquivos-instrucoes-normativas-em-vigor/anexo-iv-limitada_link.pdf\n * IN DREI nº 81/2020, Anexo IV (Manual de Registro de Sociedade Limitada), the rules the Juntas\n * Comerciais follow for the nome empresarial and for the \"conversão de sociedade simples ou\n * associação do cartório de registro de pessoas jurídicas para a Junta Comercial\". The S/S\n * abbreviation itself is registry practice: no DREI norm spells it out, and it is kept in this\n * list only because registered names carry it.\n * @see Official: https://www.gov.br/empresas-e-negocios/pt-br/drei/legislacao/instrucoes-normativas\n * The DREI index of instruções normativas in force, where that Anexo is published.\n */\nexport const COMPANY_DESIGNATIONS = [\n\t\"CIA\",\n\t\"EIRELI\",\n\t\"EPP\",\n\t\"LTDA\",\n\t\"ME\",\n\t\"MEI\",\n\t\"S.A.\",\n\t\"S.S.\",\n\t\"S/A\",\n\t\"S/S\",\n\t\"SCP\",\n];\n\n/** The document abbreviations that are written in upper case wherever they appear. */\nconst DOCUMENT_ABBREVIATIONS = [\"CEP\", \"CNPJ\", \"CPF\", \"RG\", \"UF\"];\n\n/**\n * Roman numerals that appear inside Brazilian names and addresses (\"João Paulo II\", \"Rua XV de\n * Novembro\", \"Avenida Papa João XXIII\"). The single letter numerals (V, X, L, C, D, M) are left\n * out because a single letter is already written in upper case by the default rule, and VI is\n * left out because it collides with the pt-BR verb form \"vi\".\n */\nconst ROMAN_NUMERALS = [\n\t\"II\",\n\t\"III\",\n\t\"IV\",\n\t\"VII\",\n\t\"VIII\",\n\t\"IX\",\n\t\"XI\",\n\t\"XII\",\n\t\"XIII\",\n\t\"XIV\",\n\t\"XV\",\n\t\"XVI\",\n\t\"XVII\",\n\t\"XVIII\",\n\t\"XIX\",\n\t\"XX\",\n\t\"XXI\",\n\t\"XXII\",\n\t\"XXIII\",\n];\n\n/** Words that are written in upper case wherever they appear, the default `upperCaseWords`. */\nexport const UPPER_CASE_WORDS = [\n\t...COMPANY_DESIGNATIONS,\n\t...DOCUMENT_ABBREVIATIONS,\n\t...ROMAN_NUMERALS,\n];\n\n/**\n * Word boundaries: runs of whitespace, hyphen and slash (kept in place), the apostrophe of\n * `d'Oeste`, and the punctuation that may wrap or follow a word without a space, so `(empresa)`\n * and `bairro:centro` still capitalize the word after the mark.\n */\nexport const SEPARATOR_REGEX = /(\\s+|[-/'’‘(){}[\\]\"“”:;,])/;\n\n/** A single separator token that is kept where it is, as opposed to a whitespace run. */\nexport const PUNCTUATION_REGEX = /^[-/'’‘(){}[\\]\"“”:;,]$/;\n\nexport const WHITESPACE_REGEX = /^\\s+$/;\n\n/**\n * A token that carries a word: one that holds at least one character that is not a separator. The\n * empty token that `String.prototype.split` leaves between two separators does not, and neither\n * does a whitespace run or a single punctuation mark.\n */\nexport const WORD_REGEX = /[^\\s/'’‘(){}[\\]\"“”:;,-]/;\n\n/**\n * The separators that join two words into one name (\"Rio-de-Janeiro\", \"Santa Bárbara d'Oeste\",\n * \"Porto Alegre/RS\"), as opposed to the punctuation that closes a phrase (`,`, `;`, `:`, brackets\n * and quotes). A word of the lower case list is only written in lower case when another word\n * follows it across separators of this kind; before a closing mark, or at the end of the value, it\n * is a designator (\"Rua D\", \"Quadra A, Lote B\") and keeps its capital.\n */\nexport const JOINER_REGEX = /^(?:\\s+|[-/'’‘])$/;\n\n/** The apostrophe that elides the particle of `d'Oeste` and marks the English possessive of `Bob's`. */\nexport const APOSTROPHE_REGEX = /^['’‘]$/;\n\n/** The elided particle of `Santa Bárbara d'Oeste`, lower case only when an apostrophe and a word follow it. */\nexport const ELIDED_PARTICLE = \"d\";\n\n/**\n * The separators that attach an enclitic pronoun to its verb (`\"diga-me\"`, `\"d'me\"`): a word of\n * `TRAILING_DESIGNATIONS` written right after one of them is the pronoun, never the designation.\n */\nexport const ENCLISIS_REGEX = /^[-'’‘]$/;\n\n/**\n * Designations that are only written in upper case in the designation position, that is, as the\n * last word of the name (\"Fulano Comércio ME\") or right before another company designation\n * (\"Fulano ME EPP\"), and never attached to the previous word by a hyphen or an apostrophe. `ME`\n * is also the pt-BR pronoun \"me\", so upper-casing it wherever it appears turned free text into\n * `\"Diga-ME a Verdade\"` and the municipality of Não-Me-Toque/RS into `\"Não-ME-Toque\"`; anywhere\n * else in the value it is written as an ordinary word.\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/lcp/lcp123.htm\n * Lei Complementar nº 123/2006, art. 72 (revoked by the Lei Complementar nº 155/2016): the\n * abbreviation is added \"ao final\" of the firma or denominação, which is the position this list\n * keeps it in.\n */\nexport const TRAILING_DESIGNATIONS = [\"ME\"];\n","import { STATE_CODES } from \"../_internals/constants/state-codes\";\nimport {\n\tAPOSTROPHE_REGEX,\n\tCOMPANY_DESIGNATIONS,\n\tELIDED_PARTICLE,\n\tENCLISIS_REGEX,\n\tJOINER_REGEX,\n\tPREPOSITIONS,\n\tPUNCTUATION_REGEX,\n\tSEPARATOR_REGEX,\n\tTRAILING_DESIGNATIONS,\n\tUPPER_CASE_WORDS,\n\tWHITESPACE_REGEX,\n\tWORD_REGEX,\n} from \"./constants\";\n\n/** Options of `capitalize`. */\nexport type CapitalizeOptions = {\n\t/** Words to keep in lower case when they are not the first word (default: the Portuguese prepositions). */\n\tlowerCaseWords?: string[];\n\t/** Words to keep in upper case wherever they appear (default: the Brazilian company designations, document abbreviations and roman numerals). */\n\tupperCaseWords?: string[];\n};\n\nconst stateCodeSet: Set<string> = new Set(STATE_CODES);\n\nconst trailingDesignationSet: Set<string> = new Set(TRAILING_DESIGNATIONS);\nconst companyDesignationSet: Set<string> = new Set(COMPANY_DESIGNATIONS);\n\nconst toWordSet = (\n\twords: unknown,\n\tfallback: readonly string[],\n\tfold: (word: string) => string,\n): Set<string> => {\n\tconst source: readonly unknown[] = Array.isArray(words) ? words : fallback;\n\n\treturn new Set(source.filter((word) => typeof word === \"string\").map((word) => fold(word)));\n};\n\n/**\n * A token that carries a word, as opposed to a separator or the empty token between two of them.\n *\n * @param {string} token - The token to classify.\n * @returns {boolean} `true` when the token is a word.\n */\nconst isWord = (token: string): boolean => WORD_REGEX.test(token);\n\n/**\n * An apostrophe token, the one that elides the particle of `d'Oeste` and marks the possessive of\n * `Bob's`.\n *\n * @param {string} token - The token to classify.\n * @returns {boolean} `true` when the token is an apostrophe.\n */\nconst isApostrophe = (token: string): boolean => APOSTROPHE_REGEX.test(token);\n\n/**\n * The index of the next word of the value after `index`, `tokens.length` when there is none.\n *\n * @param {string[]} tokens - Every token of the value, words and separators alike.\n * @param {number} index - The index to look ahead from.\n * @returns {number} The index of the next word.\n */\nconst nextWordIndex = (tokens: string[], index: number): number => {\n\tconst offset = tokens.slice(index + 1).findIndex((token) => isWord(token));\n\n\treturn offset === -1 ? tokens.length : index + 1 + offset;\n};\n\n/**\n * What follows the word at `index`: whether the next word is joined to it, that is, whether only\n * whitespace, `-`, `/` or an apostrophe stands between the two, and the designation the next\n * word forms, which is the word itself (`\"EPP\"`) or the word and the one after it when a slash\n * alone joins them (`\"S/A\"`); `\"\"` when no word follows.\n *\n * @param {string[]} tokens - Every token of the value, words and separators alike.\n * @param {number} index - The index of the word to look ahead from.\n * @returns {{ joined: boolean; designation: string }} Whether the next word is joined to the word at `index` and the designation it forms.\n */\nconst lookAhead = (tokens: string[], index: number): { joined: boolean; designation: string } => {\n\tconst position = nextWordIndex(tokens, index);\n\n\tif (position === tokens.length) return { joined: false, designation: \"\" };\n\n\tconst joined = tokens\n\t\t.slice(index + 1, position)\n\t\t.every((token) => token === \"\" || JOINER_REGEX.test(token));\n\tconst next = tokens[position];\n\tconst following = nextWordIndex(tokens, position);\n\tconst acrossSlash = tokens.slice(position + 1, following + 1).join(\"\");\n\n\treturn { joined, designation: acrossSlash.startsWith(\"/\") ? next + acrossSlash : next };\n};\n\n/**\n * The `d` of `d'Oeste`: an elided particle only when an apostrophe and a word follow it. Splitting\n * on the separators always leaves a token after each of them, so the token two places ahead of a\n * word followed by an apostrophe is always there, even when it is the empty one of `\"rua d'\"`.\n *\n * @param {string[]} tokens - Every token of the value, words and separators alike.\n * @param {number} index - The index of the word being written.\n * @param {string} word - That word, in lower case.\n * @returns {boolean} `true` when the word is the elided particle.\n */\nconst isElidedParticle = (tokens: string[], index: number, word: string): boolean =>\n\tword === ELIDED_PARTICLE && isApostrophe(tokens[index + 1]) && isWord(tokens[index + 2]);\n\n/**\n * The `s` of `Bob's`: the English possessive, a single letter written right after an apostrophe.\n *\n * @param {string[]} tokens - Every token of the value, words and separators alike.\n * @param {number} index - The index of the word being written.\n * @param {string} word - That word, in lower case.\n * @returns {boolean} `true` when the word is an English possessive.\n */\nconst isPossessive = (tokens: string[], index: number, word: string): boolean =>\n\tword.length === 1 && isApostrophe(tokens[index - 1]);\n\n/**\n * Whether a word of the upper case list stands where it is written in upper case. Every\n * designation but the ones of `TRAILING_DESIGNATIONS` is upper case wherever it appears; those\n * are upper case only as the last word of the value or right before an adjacent company\n * designation of the list in force (`\"EPP\"`, `\"S/A\"`), and never when a hyphen or an apostrophe\n * attaches them to the previous word, where they are the enclitic pronoun (`\"diga-me\"`).\n *\n * @param {string} word - The word being written, in upper case.\n * @param {boolean} enclitic - Whether a hyphen or an apostrophe attaches the word to the previous one.\n * @param {{ joined: boolean; designation: string }} ahead - What follows the word: whether the next word is joined to it and the designation it forms (`\"\"` when the word is the last one).\n * @param {Set<string>} upperCaseSet - The upper case word list in force.\n * @returns {boolean} `true` when the word is written in upper case where it stands.\n */\nconst isUpperCasePosition = (\n\tword: string,\n\tenclitic: boolean,\n\tahead: { joined: boolean; designation: string },\n\tupperCaseSet: Set<string>,\n): boolean => {\n\tif (!trailingDesignationSet.has(word)) return true;\n\tif (enclitic) return false;\n\tif (ahead.designation === \"\") return true;\n\n\tconst designation = ahead.designation.toLocaleUpperCase(\"pt-BR\");\n\n\treturn ahead.joined && companyDesignationSet.has(designation) && upperCaseSet.has(designation);\n};\n\n/**\n * Capitalizes a given string according to the way a Brazilian name, company name or address is\n * written, with no configuration needed: `\"jose da silva\"` becomes `\"Jose da Silva\"`,\n * `\"empresa ltda\"` becomes `\"Empresa LTDA\"` and `\"santana/rs\"` becomes `\"Santana/RS\"`.\n *\n * Words are separated by whitespace, by `-` and `/`, by the apostrophe (`\"d'oeste\"` becomes\n * `\"d'Oeste\"`) and by punctuation that touches a word (`\"(empresa)\"` becomes `\"(Empresa)\"`,\n * `\"bairro:centro\"` becomes `\"Bairro:Centro\"`), so `\"MOGI-GUAÇU\"` becomes `\"Mogi-Guaçu\"`. The\n * separators are kept where they are, while every run of whitespace (spaces, tabs, newlines)\n * collapses into a single space and the leading and trailing whitespace is dropped. The particles\n * of foreign-origin names (`del`, `della`, `di`, `du`, `van`, `von`, `der`, `den`) stay lower\n * case like the Portuguese prepositions, so `\"luiz von schmidt\"` becomes `\"Luiz von Schmidt\"`.\n *\n * - Words listed in `lowerCaseWords` are converted to lower case when they link two words, that\n *   is, when they are neither the first word nor the last one and another word follows them\n *   across whitespace, `-`, `/` or an apostrophe. The default list is the Portuguese\n *   prepositions, articles and conjunctions that stay in lower case inside a proper name (\"de\",\n *   \"da\", \"do\", \"e\", ...), so `\"JOSÉ DA SILVA\"` becomes `\"José da Silva\"`. A word of the list\n *   that ends the value or is followed by punctuation is a designator instead, and keeps its\n *   capital: `\"rua a, 100\"` becomes `\"Rua A, 100\"` and `\"condomínio a, quadra d, lote o\"` becomes\n *   `\"Condomínio A, Quadra D, Lote O\"`.\n * - The elided particle `d'` is written in lower case wherever it appears, including as the first\n *   word, but only when an apostrophe and a word follow it, so `\"santa bárbara d'oeste\"` becomes\n *   `\"Santa Bárbara d'Oeste\"` and `\"dias d'ávila\"` becomes `\"Dias d'Ávila\"` while the designator\n *   `\"rua d\"` becomes `\"Rua D\"`. A single letter written right after an apostrophe is the English\n *   possessive and stays in lower case, so `\"bob's\"` becomes `\"Bob's\"`, not `\"Bob'S\"`.\n * - Words listed in `upperCaseWords` are converted to upper case wherever they appear. The\n *   default list is the company designations and document abbreviations that are written in upper\n *   case in Brazilian usage (`LTDA`, `S.A.`, `S/A`, `S.S.`, `S/S`, `ME`, `EPP`, `MEI`, `EIRELI`,\n *   `CIA`, `SCP`, `CNPJ`, `CPF`, `RG`, `CEP`, `UF`) plus the roman numerals that appear in names\n *   and addresses (`II` through `XXIII`, except `VI`, so `\"joão paulo ii\"` becomes\n *   `\"João Paulo II\"` and `\"rua xv de novembro\"` becomes `\"Rua XV de Novembro\"`). `ME` is also\n *   the pt-BR pronoun \"me\", so it is only upper cased in the designation position, as the last\n *   word of the value (`\"fulano comércio me\"` becomes `\"Fulano Comércio ME\"`) or right before\n *   another designation (`\"fulano me epp\"` becomes `\"Fulano ME EPP\"`); anywhere else it is an\n *   ordinary word, so `\"diga-me a verdade\"` becomes `\"Diga-Me a Verdade\"` and the municipality\n *   `\"não-me-toque\"` becomes `\"Não-Me-Toque\"`. A designation\n *   written around a slash, `S/A` and `S/S`, is matched across that slash even though a slash\n *   separates words, so `\"casa de carnes s/a\"` becomes `\"Casa de Carnes S/A\"`.\n * - A two letter word that follows a `/` is converted to upper case when it is the code of a\n *   Brazilian state, the way a municipality and its Federative Unit are written together, so\n *   `\"porto alegre/rs\"` becomes `\"Porto Alegre/RS\"` while `\"santana/br\"` becomes `\"Santana/Br\"`.\n *   A state code that does not follow a `/` is left alone (`\"santana rs\"` becomes\n *   `\"Santana Rs\"`), and so is any other two letter word.\n * - All other words are capitalized (first letter upper case, rest lower case).\n *\n * Both lists are compared ignoring the case of the words, and either one given in `options`\n * replaces its default list entirely, so `capitalize(\"empresa ltda\", { upperCaseWords: [] })`\n * gives `\"Empresa Ltda\"`. A `lowerCaseWords`/`upperCaseWords` that is not an array falls back to\n * its default, and a member of either list that is not a string is ignored, so a malformed\n * option never throws.\n *\n * @param {string} value - The input string to be capitalized.\n * @param {CapitalizeOptions} [options] - Optional configuration for capitalization.\n * @param {string[]} [options.lowerCaseWords] - Array of words to keep in lower case (default: the Portuguese prepositions).\n * @param {string[]} [options.upperCaseWords] - Array of words to keep in upper case (default: the Brazilian company designations, document abbreviations and roman numerals).\n * @returns {string} The capitalized string according to the specified rules.\n *\n * The default `lowerCaseWords` list is the set of prepositions and conjunctions the Manual de\n * Redação da Presidência da República keeps in lower case inside a proper name, and the default\n * `upperCaseWords` list is sourced in `constants.ts` from the laws that create each designation.\n *\n * @see Official: https://www4.planalto.gov.br/centrodeestudos/assuntos/manual-de-redacao-da-presidencia-da-republica/manual-de-redacao.pdf\n * Manual de Redação da Presidência da República, 3ª edição (Portaria nº 1.369/2018), item 5.1.8\n * b) and item 10.2 a).\n * @see Official: https://www4.planalto.gov.br/centrodeestudos/assuntos/manual-de-redacao-da-presidencia-da-republica\n * The Presidência page that publishes it.\n *\n * @example\n * ```typescript\n * capitalize(\"JOSÉ DA SILVA\"); // \"José da Silva\"\n * capitalize(\"empresa ltda\"); // \"Empresa LTDA\"\n * capitalize(\"banco do brasil s.a.\"); // \"Banco do Brasil S.A.\"\n * capitalize(\"santa bárbara d'oeste\"); // \"Santa Bárbara d'Oeste\"\n * capitalize(\"bob's\"); // \"Bob's\"\n * capitalize(\"rua a, 100\"); // \"Rua A, 100\"\n * capitalize(\"fulano comércio me\"); // \"Fulano Comércio ME\"\n * capitalize(\"não-me-toque\"); // \"Não-Me-Toque\"\n * capitalize(\"(empresa) ltda\"); // \"(Empresa) LTDA\"\n * capitalize(\"luiz von schmidt\"); // \"Luiz von Schmidt\"\n * capitalize(\"casa de carnes s/a\"); // \"Casa de Carnes S/A\"\n * capitalize(\"MOGI-GUAÇU\"); // \"Mogi-Guaçu\"\n * capitalize(\"santana/rs\"); // \"Santana/RS\"\n * capitalize(\"rua xv de novembro\"); // \"Rua XV de Novembro\"\n * capitalize(\"empresa ltda\", { upperCaseWords: [] }); // \"Empresa Ltda\"\n * capitalize(\"joao\\tsilva\"); // \"Joao Silva\"\n * ```\n */\nexport const capitalize = (value: string, options?: CapitalizeOptions): string => {\n\tif (typeof value !== \"string\") return \"\";\n\n\tconst { lowerCaseWords, upperCaseWords } = options ?? {};\n\n\tconst lowerCaseSet = toWordSet(lowerCaseWords, PREPOSITIONS, (word) =>\n\t\tword.toLocaleLowerCase(\"pt-BR\"),\n\t);\n\n\tconst upperCaseSet = toWordSet(upperCaseWords, UPPER_CASE_WORDS, (word) =>\n\t\tword.toLocaleUpperCase(\"pt-BR\"),\n\t);\n\n\tconst tokens = value.trim().split(SEPARATOR_REGEX);\n\n\tconst output: string[] = [];\n\tlet wordIndex = 0;\n\tlet enclitic = false;\n\n\tfor (const [index, token] of tokens.entries()) {\n\t\tif (!token) continue;\n\n\t\tif (WHITESPACE_REGEX.test(token)) {\n\t\t\toutput.push(\" \");\n\t\t\tenclitic = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (PUNCTUATION_REGEX.test(token)) {\n\t\t\toutput.push(token);\n\t\t\tenclitic = ENCLISIS_REGEX.test(token);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst lowerCaseWord = token.toLocaleLowerCase(\"pt-BR\");\n\t\tconst upperCaseWord = token.toLocaleUpperCase(\"pt-BR\");\n\t\tconst designation = (output.slice(-2).join(\"\") + upperCaseWord).toLocaleUpperCase(\"pt-BR\");\n\t\tconst ahead = lookAhead(tokens, index);\n\n\t\tif (designation !== upperCaseWord && upperCaseSet.has(designation)) {\n\t\t\toutput.splice(-2, 2, designation);\n\t\t} else if (isPossessive(tokens, index, lowerCaseWord)) {\n\t\t\toutput.push(lowerCaseWord);\n\t\t} else if (isElidedParticle(tokens, index, lowerCaseWord)) {\n\t\t\toutput.push(lowerCaseWord);\n\t\t} else if (wordIndex > 0 && ahead.joined && lowerCaseSet.has(lowerCaseWord)) {\n\t\t\toutput.push(lowerCaseWord);\n\t\t} else if (\n\t\t\tupperCaseSet.has(upperCaseWord) &&\n\t\t\tisUpperCasePosition(upperCaseWord, enclitic, ahead, upperCaseSet)\n\t\t) {\n\t\t\toutput.push(upperCaseWord);\n\t\t} else if (output.at(-1) === \"/\" && stateCodeSet.has(upperCaseWord)) {\n\t\t\toutput.push(upperCaseWord);\n\t\t} else {\n\t\t\toutput.push(upperCaseWord.charAt(0) + lowerCaseWord.slice(1));\n\t\t}\n\n\t\twordIndex++;\n\t}\n\n\treturn output.join(\"\");\n};\n","/**\n * Portuguese (pt-BR) number-to-words tables, shared by `numberToWords` and by every public\n * \"por extenso\" formatter (`convertNumberToWords`, `convertCurrencyToWords`, `convertDateToWords`).\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2024/lei/L14822.htm\n * Lei nº 14.822/2024 (Lei Orçamentária Anual de 2024), which spells 14 \"quatorze\" in the caput of\n * art. 2º and in the caput of art. 3º, both writing the same amount out as \"cinco trilhões\n * quatrocentos e quatorze bilhões novecentos e dezenove milhões quatrocentos e noventa e dois mil\n * novecentos e oitenta e seis reais\" (the only two occurrences of the word in the law; art. 1º\n * writes an amount with no 14 in it), the form the official Brazilian texts use; the Vocabulário\n * Ortográfico admits both \"catorze\" and \"quatorze\", and num2words' Portuguese table (below) picks\n * \"quatorze\".\n * @see Based on: https://github.com/savoirfairelinux/num2words/blob/master/num2words/lang_PT.py\n * num2words' Portuguese table, the source of every other word of this file.\n */\n\nexport const ZERO_WORD = \"zero\";\n\nexport const UNITS: readonly string[] = [\n\t\"zero\",\n\t\"um\",\n\t\"dois\",\n\t\"três\",\n\t\"quatro\",\n\t\"cinco\",\n\t\"seis\",\n\t\"sete\",\n\t\"oito\",\n\t\"nove\",\n\t\"dez\",\n\t\"onze\",\n\t\"doze\",\n\t\"treze\",\n\t\"quatorze\",\n\t\"quinze\",\n\t\"dezesseis\",\n\t\"dezessete\",\n\t\"dezoito\",\n\t\"dezenove\",\n];\n\nexport const UNITS_FEMININE_OVERRIDES: Record<number, string> = {\n\t1: \"uma\",\n\t2: \"duas\",\n};\n\nexport const TENS: readonly string[] = [\n\t\"\",\n\t\"\",\n\t\"vinte\",\n\t\"trinta\",\n\t\"quarenta\",\n\t\"cinquenta\",\n\t\"sessenta\",\n\t\"setenta\",\n\t\"oitenta\",\n\t\"noventa\",\n];\n\nexport const HUNDRED_EXACT = \"cem\";\n\nexport const HUNDREDS_MASCULINE: readonly string[] = [\n\t\"\",\n\t\"cento\",\n\t\"duzentos\",\n\t\"trezentos\",\n\t\"quatrocentos\",\n\t\"quinhentos\",\n\t\"seiscentos\",\n\t\"setecentos\",\n\t\"oitocentos\",\n\t\"novecentos\",\n];\n\nexport const HUNDREDS_FEMININE: readonly string[] = [\n\t\"\",\n\t\"cento\",\n\t\"duzentas\",\n\t\"trezentas\",\n\t\"quatrocentas\",\n\t\"quinhentas\",\n\t\"seiscentas\",\n\t\"setecentas\",\n\t\"oitocentas\",\n\t\"novecentas\",\n];\n\ntype NumberScaleWord = {\n\t/** Word used for a group whose value is exactly 1 (e.g. `\"mil\"`, `\"milhão\"`). */\n\tsingular: string;\n\t/** Word used for a group whose value is 0 or 2-999 (e.g. `\"mil\"`, `\"milhões\"`). */\n\tplural: string;\n};\n\nexport const SCALE_WORDS: readonly NumberScaleWord[] = [\n\t{ singular: \"\", plural: \"\" },\n\t{ singular: \"mil\", plural: \"mil\" },\n\t{ singular: \"milhão\", plural: \"milhões\" },\n\t{ singular: \"bilhão\", plural: \"bilhões\" },\n\t{ singular: \"trilhão\", plural: \"trilhões\" },\n];\n\nexport const MONTH_NAMES: readonly string[] = [\n\t\"janeiro\",\n\t\"fevereiro\",\n\t\"março\",\n\t\"abril\",\n\t\"maio\",\n\t\"junho\",\n\t\"julho\",\n\t\"agosto\",\n\t\"setembro\",\n\t\"outubro\",\n\t\"novembro\",\n\t\"dezembro\",\n];\n\n/**\n * Portuguese (pt-BR) weekday names, indexed like `Date#getDay`/`Date#getUTCDay`\n * (0 = domingo, ..., 6 = sábado), used by `convertDateToWords`'s `weekday` option.\n */\nexport const WEEKDAY_NAMES: readonly string[] = [\n\t\"domingo\",\n\t\"segunda-feira\",\n\t\"terça-feira\",\n\t\"quarta-feira\",\n\t\"quinta-feira\",\n\t\"sexta-feira\",\n\t\"sábado\",\n];\n","import {\n\tHUNDRED_EXACT,\n\tHUNDREDS_FEMININE,\n\tHUNDREDS_MASCULINE,\n\tSCALE_WORDS,\n\tTENS,\n\tUNITS,\n\tUNITS_FEMININE_OVERRIDES,\n\tZERO_WORD,\n} from \"../constants/number-words\";\n\n/** The grammatical gender `convertNumberToWords` agrees the number it writes out with. */\nexport type NumberToWordsGender = \"masculine\" | \"feminine\";\n\nexport type NumberToWordsOptions = {\n\t/** Grammatical gender used to agree \"um/dois\" and the 100-999 group (\"duzentos/duzentas\", etc.) with the noun the number qualifies. Only the thousands group and the final 0-999 group are affected: the multiplier of \"milhão/bilhão/trilhão\" always agrees with those (masculine) nouns. Defaults to `\"masculine\"`. */\n\tgender?: NumberToWordsGender;\n};\n\n/**\n * The largest absolute value `numberToWords` converts: 999 trillion, 999 billion, 999 million,\n * 999 thousand and 999 (999999999999999), the highest value expressible with the \"trilhão\"\n * scale word before a new scale word would be required.\n */\nexport const NUMBER_TO_WORDS_MAX_VALUE = 999_999_999_999_999;\n\nconst unitWord = (digit: number, gender?: NumberToWordsGender): string =>\n\tgender === \"feminine\" && digit in UNITS_FEMININE_OVERRIDES\n\t\t? UNITS_FEMININE_OVERRIDES[digit]\n\t\t: UNITS[digit];\n\nconst groupToWords = (value: number, gender?: NumberToWordsGender): string => {\n\tconst hundredsDigit = Math.floor(value / 100);\n\tconst remainder = value % 100;\n\tconst segments: string[] = [];\n\n\tif (hundredsDigit > 0) {\n\t\tconst hundreds = gender === \"feminine\" ? HUNDREDS_FEMININE : HUNDREDS_MASCULINE;\n\t\tsegments.push(value === 100 ? HUNDRED_EXACT : hundreds[hundredsDigit]);\n\t}\n\n\tif (remainder > 0) {\n\t\tif (remainder < 20) {\n\t\t\tsegments.push(unitWord(remainder, gender));\n\t\t} else {\n\t\t\tconst tensDigit = Math.floor(remainder / 10);\n\t\t\tconst unitsDigit = remainder % 10;\n\t\t\tsegments.push(\n\t\t\t\tunitsDigit > 0 ? `${TENS[tensDigit]} e ${unitWord(unitsDigit, gender)}` : TENS[tensDigit],\n\t\t\t);\n\t\t}\n\t}\n\n\treturn segments.join(\" e \");\n};\n\nconst scaledGroupToWords = (\n\tgroupValue: number,\n\tscale: number,\n\tgender: NumberToWordsGender | undefined,\n): string => {\n\tconst scaleWord = SCALE_WORDS[scale];\n\n\tif (scale === 0) return groupToWords(groupValue, gender);\n\tif (scale === 1 && groupValue === 1) return scaleWord.singular;\n\n\treturn `${groupToWords(groupValue, gender)} ${groupValue === 1 ? scaleWord.singular : scaleWord.plural}`;\n};\n\nconst isRoundHundred = (value: number): boolean => value % 100 === 0;\n\n/**\n * Converts a non-negative integer into its Brazilian Portuguese cardinal number words\n * (\"por extenso\"), e.g. `1235` becomes `\"mil duzentos e trinta e cinco\"`.\n *\n * This is the shared engine behind every \"por extenso\" formatter of this library\n * (`convertNumberToWords`, `convertCurrencyToWords`, `convertDateToWords`): it only converts, it\n * never validates or sanitizes its input, so callers must pass a finite, non-negative integer\n * within `[0, NUMBER_TO_WORDS_MAX_VALUE]`. Groups are joined by a space, and \"e\" is used right\n * before the last group when that group is below 100 or is a round hundred (100, 200, ..., 900),\n * the way the official texts write amounts out: `1200` -> `\"mil e duzentos\"`, `1001` -> `\"mil e\n * um\"`, `1235` -> `\"mil duzentos e trinta e cinco\"`, `1045678` -> `\"um milhão quarenta e cinco mil\n * seiscentos e setenta e oito\"`. This is the spelling of the Lei Orçamentária Anual (\"cinco\n * trilhões quinhentos e sessenta e seis bilhões duzentos e oitenta e quatro milhões oitocentos e\n * dez mil trezentos e setenta e três reais\", Lei 14.822/2024, art. 1º, and \"novecentos e trinta e\n * um mil e oitenta e um reais\" for the \"e\" before a last group below 100, art. 2º, inciso III), of\n * the salário mínimo\n * decrees (\"mil quinhentos e dezoito reais\", Decreto 12.342/2024) and of the examples in the Manual\n * de Redação da Presidência da República (\"mil duzentos e cinquenta reais\", \"mil e quatrocentos\n * reais\"). It deviates from `num2words`' pt_BR locale, which separates the groups with commas\n * (\"mil, duzentos e trinta e cinco\") and writes \"e\" before an intermediate group below 100.\n *\n * @param {number} value - A non-negative integer in `[0, NUMBER_TO_WORDS_MAX_VALUE]`.\n * @param {NumberToWordsOptions} [options] - Optional conversion options.\n * @param {NumberToWordsGender} [options.gender] - Grammatical gender for \"um/dois\" and the hundreds group. Defaults to `\"masculine\"`.\n * @returns {string} The cardinal number written out in Portuguese.\n *\n * @example\n * ```typescript\n * numberToWords(0); // \"zero\"\n * numberToWords(21); // \"vinte e um\"\n * numberToWords(100); // \"cem\"\n * numberToWords(1100); // \"mil e cem\"\n * numberToWords(1235); // \"mil duzentos e trinta e cinco\"\n * numberToWords(2000000); // \"dois milhões\"\n * numberToWords(2, { gender: \"feminine\" }); // \"duas\"\n * numberToWords(2000, { gender: \"feminine\" }); // \"duas mil\"\n * ```\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2024/lei/L14822.htm\n * Lei nº 14.822, de 22 de janeiro de 2024 (Lei Orçamentária Anual de 2024): amounts written out with\n * the groups separated by spaces and \"e\" only inside a group (art. 1º), \"e\" before the last group\n * when that group is below 100 (\"novecentos e trinta e um mil e oitenta e um reais\", art. 2º,\n * inciso III) and \"quatorze\" for 14 (art. 2º and art. 3º, caput).\n * @see Official: https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2024/decreto/D12342.htm\n * Decreto nº 12.342, de 30 de dezembro de 2024, art. 1º: \"R$ 1.518,00 (mil quinhentos e dezoito reais)\".\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/currency.py\n */\nexport const numberToWords = (value: number, options?: NumberToWordsOptions): string => {\n\tif (value === 0) return ZERO_WORD;\n\n\tconst gender = options?.gender;\n\tconst groups: number[] = [];\n\tlet remaining = value;\n\n\twhile (remaining > 0) {\n\t\tgroups.unshift(remaining % 1000);\n\t\tremaining = Math.floor(remaining / 1000);\n\t}\n\n\tconst highestScale = groups.length - 1;\n\tconst lastNonZeroIndex = groups.findLastIndex((groupValue) => groupValue > 0);\n\n\tlet result = \"\";\n\n\tfor (const [index, groupValue] of groups.entries()) {\n\t\tif (groupValue === 0) continue;\n\n\t\tconst scale = highestScale - index;\n\t\tconst groupText = scaledGroupToWords(groupValue, scale, scale >= 2 ? undefined : gender);\n\n\t\tif (result === \"\") {\n\t\t\tresult = groupText;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst connector =\n\t\t\t// Stryker disable next-line EqualityOperator: equivalent, groupValue === 100 already satisfies isRoundHundred(groupValue)\n\t\t\tindex === lastNonZeroIndex && (groupValue < 100 || isRoundHundred(groupValue)) ? \" e \" : \" \";\n\n\t\tresult += connector + groupText;\n\t}\n\n\treturn result;\n};\n","import {\n\tNUMBER_TO_WORDS_MAX_VALUE,\n\tnumberToWords,\n} from \"../_internals/number-to-words/number-to-words\";\n\nconst MILLION_SCALE_SUFFIXES = [\"lhão\", \"lhões\"];\n\nconst ONE_CENTAVO = 0.01;\n\n/**\n * Scales an amount to whole cents, truncating it, without letting the floating point noise of\n * the multiplication decide the result. `absolute * 100` lands a hair off the integer it should\n * be (`1.15 * 100` is `114.99999999999999`, `0.57 * 100` is `56.99999999999999`) and that error\n * grows with the amount, up to a whole cent for the trillions (`1000000000000.0099 * 100` is\n * `100000000000000.98`, a hair below an integer while the amount holds no cents at all), so the\n * cents are read off the decimal notation of the amount instead of off the product.\n * `String(absolute)` is the shortest decimal that reads back as `absolute`, i.e. the amount as\n * it was written, and its first two fractional digits are the cents; anything after them is\n * truncated, as it must be (`1.999999999` is one real and 99 cents).\n * An amount below one cent has no cents to read, which also keeps `String(absolute)` in plain\n * decimal notation: the exponent form only shows up below `1e-6` and from `1e21` up, and an\n * amount that large is out of range for the caller.\n *\n * @param {number} absolute - The absolute amount in reais.\n * @returns {number} The amount truncated to whole cents.\n */\nconst toCents = (absolute: number): number => {\n\tif (absolute < ONE_CENTAVO) return 0;\n\n\tconst [wholeReais, fraction = \"\"] = String(absolute).split(\".\");\n\n\treturn Number(`${wholeReais}${fraction.slice(0, 2).padEnd(2, \"0\")}`);\n};\n\nconst endsInMillionScale = (words: string): boolean =>\n\tMILLION_SCALE_SUFFIXES.some((suffix) => words.endsWith(suffix));\n\n/**\n * Formats a monetary amount in Brazilian Reais as its \"por extenso\" textual representation,\n * the style used to write out the amount by hand on cheques and contracts, e.g. `1523.45`\n * becomes `\"mil quinhentos e vinte e três reais e quarenta e cinco centavos\"`.\n *\n * `value` is truncated (not rounded) to 2 decimal places before conversion, matching\n * `brutils`' `convert_real_to_text`. The singular noun is used for exactly 1 (\"um real\",\n * \"um centavo\") and \"de\" is inserted before \"reais\" when the amount is a round million,\n * billion or trillion of reais (\"um milhão de reais\", \"dois milhões de reais\"). An amount that\n * truncates to nothing becomes `\"zero reais\"`, with no \"menos\" prefix even when `value` is\n * negative (`-0.001` is not a debt of anything); any other negative amount is prefixed with\n * \"menos\". `NaN`/non-finite values and amounts whose reais exceed `NUMBER_TO_WORDS_MAX_VALUE`\n * (999 trillion) return `\"\"`. Above `Number.MAX_SAFE_INTEGER / 100` reais (about 90 trillion) a\n * double cannot carry cents at all, so the amount is read as a whole number of reais instead of\n * reporting cents that the input never held.\n *\n * The result is always lowercase; apply any other casing to it yourself.\n *\n * @param {number} value - The monetary amount to convert, in reais (e.g. `1523.45` for R$ 1.523,45).\n * @returns {string} The amount written out in Portuguese, or `\"\"` for invalid input.\n *\n * @example\n * ```typescript\n * convertCurrencyToWords(1523.45); // \"mil quinhentos e vinte e três reais e quarenta e cinco centavos\"\n * convertCurrencyToWords(1); // \"um real\"\n * convertCurrencyToWords(0.01); // \"um centavo\"\n * convertCurrencyToWords(1000000); // \"um milhão de reais\"\n * convertCurrencyToWords(0); // \"zero reais\"\n * convertCurrencyToWords(-5.5); // \"menos cinco reais e cinquenta centavos\"\n * convertCurrencyToWords(-0.001); // \"zero reais\"\n * ```\n *\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/currency.py\n */\nexport const convertCurrencyToWords = (value: number): string => {\n\tif (!Number.isFinite(value)) return \"\";\n\n\tconst absolute = Math.abs(value);\n\tconst hasExactCents = absolute * 100 <= Number.MAX_SAFE_INTEGER;\n\tconst totalCents = hasExactCents ? toCents(absolute) : 0;\n\n\tconst reais = hasExactCents ? Math.floor(totalCents / 100) : Math.trunc(absolute);\n\tconst centavos = hasExactCents ? totalCents % 100 : 0;\n\n\tif (reais > NUMBER_TO_WORDS_MAX_VALUE) return \"\";\n\n\tconst parts: string[] = [];\n\n\tif (reais > 0) {\n\t\tconst reaisWords = numberToWords(reais);\n\t\tconst connector = endsInMillionScale(reaisWords) ? \"de \" : \"\";\n\t\tparts.push(`${reaisWords} ${connector}${reais === 1 ? \"real\" : \"reais\"}`);\n\t}\n\n\tif (centavos > 0) {\n\t\tconst centavosText = `${numberToWords(centavos)} ${centavos === 1 ? \"centavo\" : \"centavos\"}`;\n\t\tparts.push(reais > 0 ? `e ${centavosText}` : centavosText);\n\t}\n\n\tif (reais === 0 && centavos === 0) return \"zero reais\";\n\n\tconst joined = parts.join(\" \");\n\n\t// Stryker disable next-line EqualityOperator: equivalent, value is never exactly 0 here (reais === 0 && centavos === 0 already returned above)\n\treturn value < 0 ? `menos ${joined}` : joined;\n};\n","import { MONTH_NAMES, WEEKDAY_NAMES } from \"../_internals/constants/number-words\";\nimport { numberToWords } from \"../_internals/number-to-words/number-to-words\";\n\n/** Options of `convertDateToWords`. */\nexport type ConvertDateToWordsOptions = {\n\t/** Output style: `\"full\"` spells out the day, month and year (`\"dois de março de dois mil e vinte e quatro\"`); `\"month\"` spells out only the month name and leaves the day and year as digits (`\"2 de março de 2024\"`, day 1 as `\"1º\"`). Defaults to `\"full\"`; an invalid value is ignored and `\"full\"` is used instead. */\n\tstyle?: \"full\" | \"month\";\n\t/** Prefixes the pt-BR weekday name (lowercase) followed by a comma, e.g. `\"sábado, dois de março de dois mil e vinte e quatro\"`. The weekday is derived from the resolved calendar date (the `Date`'s local calendar date, or the parsed civil date for a string). Defaults to `false`. */\n\tweekday?: boolean;\n};\n\nconst BR_DATE_REGEX = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\nconst ISO_DATE_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\nconst MONTH_LENGTHS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconst isLeapYear = (year: number): boolean =>\n\tyear % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n\nconst daysInMonth = (year: number, month: number): number =>\n\tmonth === 2 && isLeapYear(year) ? 29 : MONTH_LENGTHS[month - 1];\n\nconst getWeekdayIndex = (year: number, month: number, day: number): number => {\n\tconst date = new Date(0);\n\tdate.setUTCFullYear(year, month - 1, day);\n\treturn date.getUTCDay();\n};\n\nconst dayToWords = (day: number, monthStyle: boolean): string => {\n\tif (monthStyle) return day === 1 ? \"1º\" : String(day);\n\treturn day === 1 ? \"primeiro\" : numberToWords(day);\n};\n\n/**\n * Formats a date as its Brazilian Portuguese \"por extenso\" textual representation, e.g.\n * `\"01/01/2024\"` becomes `\"primeiro de janeiro de dois mil e vinte e quatro\"`.\n *\n * `value` can be a `Date` (read by its **local calendar date**, i.e. `getFullYear`/`getMonth`/\n * `getDate`, not its underlying UTC instant, the same convention used by `isHoliday`) or a\n * string in `\"dd/mm/yyyy\"` or ISO `\"yyyy-mm-dd\"` format, both parsed as plain calendar dates\n * with no timezone conversion. With the default `\"full\"` `options.style`, day 1 is written as\n * \"primeiro\" and every other day uses the cardinal number; with `\"month\"`, only the month name\n * is spelled out and the day/year are written as digits (day 1 as `\"1º\"`). Month names are\n * lowercase. In `\"full\"` style the year is written out as a cardinal number the way\n * `convertNumberToWords` writes it (`1999` reads as `\"mil novecentos e noventa e nove\"`), matching how a\n * date is read aloud. `options.weekday` prefixes the pt-BR weekday name (lowercase) followed by\n * a comma. The result is always lowercase; apply any other casing to it yourself.\n * February 29th is accepted on the leap years of the proleptic Gregorian calendar\n * (divisible by 4, except centuries that are not divisible by 400). Returns `\"\"` when `value` is\n * not one of those forms, is an invalid `Date`, names a day/month that does not exist (e.g.\n * `\"31/04/2024\"` or `\"29/02/2023\"`), or falls before year 1, which has no year to write out.\n *\n * @param {Date|string} value - The date to convert: a `Date`, `\"dd/mm/yyyy\"` or ISO `\"yyyy-mm-dd\"`.\n * @param {ConvertDateToWordsOptions} [options] - Optional formatting options.\n * @param {\"full\"|\"month\"} [options.style] - Output style. Defaults to `\"full\"`.\n * @param {boolean} [options.weekday] - Prefixes the pt-BR weekday name and a comma. Defaults to `false`.\n * @returns {string} The date written out in Portuguese, or `\"\"` for invalid input.\n *\n * @example\n * ```typescript\n * convertDateToWords(\"01/01/2024\"); // \"primeiro de janeiro de dois mil e vinte e quatro\"\n * convertDateToWords(\"2024-01-02\"); // \"dois de janeiro de dois mil e vinte e quatro\"\n * convertDateToWords(new Date(2024, 0, 1)); // \"primeiro de janeiro de dois mil e vinte e quatro\"\n * convertDateToWords(\"02/03/2024\", { style: \"month\" }); // \"2 de março de 2024\"\n * convertDateToWords(\"01/01/2024\", { style: \"month\" }); // \"1º de janeiro de 2024\"\n * convertDateToWords(\"02/03/2024\", { weekday: true }); // \"sábado, dois de março de dois mil e vinte e quatro\"\n * convertDateToWords(\"10/05/1999\"); // \"dez de maio de mil novecentos e noventa e nove\"\n * convertDateToWords(\"31/04/2024\"); // \"\" (April has 30 days)\n * convertDateToWords(\"invalid\"); // \"\"\n * ```\n *\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/date_utils.py\n */\nexport const convertDateToWords = (\n\tvalue: Date | string,\n\toptions?: ConvertDateToWordsOptions,\n): string => {\n\tlet year: number;\n\tlet month: number;\n\tlet day: number;\n\n\tif (value instanceof Date) {\n\t\tif (Number.isNaN(value.getTime())) return \"\";\n\n\t\tyear = value.getFullYear();\n\t\tmonth = value.getMonth() + 1;\n\t\tday = value.getDate();\n\t} else if (typeof value === \"string\") {\n\t\tconst brMatch = BR_DATE_REGEX.exec(value);\n\t\tconst isoMatch = ISO_DATE_REGEX.exec(value);\n\n\t\tif (brMatch) {\n\t\t\tday = Number(brMatch[1]);\n\t\t\tmonth = Number(brMatch[2]);\n\t\t\tyear = Number(brMatch[3]);\n\t\t} else if (isoMatch) {\n\t\t\tyear = Number(isoMatch[1]);\n\t\t\tmonth = Number(isoMatch[2]);\n\t\t\tday = Number(isoMatch[3]);\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t} else {\n\t\treturn \"\";\n\t}\n\n\tif (year < 1) return \"\";\n\tif (month < 1 || month > 12) return \"\";\n\tif (day < 1 || day > daysInMonth(year, month)) return \"\";\n\n\tconst monthName = MONTH_NAMES[month - 1];\n\tconst isMonthStyle = options?.style === \"month\";\n\n\tconst yearWords = isMonthStyle ? String(year) : numberToWords(year);\n\tconst dateWords = `${dayToWords(day, isMonthStyle)} de ${monthName} de ${yearWords}`;\n\n\treturn options?.weekday === true\n\t\t? `${WEEKDAY_NAMES[getWeekdayIndex(year, month, day)]}, ${dateWords}`\n\t\t: dateWords;\n};\n","export const OLD_FORMAT_REGEX = /^[A-Z]{3}[0-9]{4}$/;\nexport const MERCOSUL_REGEX = /^[A-Z]{3}[0-9][A-Z][0-9]{2}$/;\n","import { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { MERCOSUL_REGEX, OLD_FORMAT_REGEX } from \"./constants\";\n\n/** The Brazilian license plate formats `getFormatLicensePlate` can identify: the old `LLLNNNN` and the Mercosul `LLLNLNN`. */\nexport type LicensePlateFormat = \"LLLNNNN\" | \"LLLNLNN\";\n\n/**\n * Identifies the format of a Brazilian license plate (placa de carro ou moto).\n *\n * Two formats are supported: the old Brazilian `LLLNNNN` and the single Mercosul sequence\n * `LLLNLNN` that Resolução CONTRAN nº 969/2022 defines for every vehicle, motorcycles\n * included.\n *\n * Returns `null` when the sanitized value does not have exactly 7 alphanumeric characters\n * (e.g. it is too short, too long, or otherwise malformed) or does not match any of the\n * supported formats.\n *\n * @param {string} value - The license plate value to be checked.\n * @returns {LicensePlateFormat | null} The identified format, or `null` when it doesn't match\n * any supported format.\n *\n * @example\n * ```typescript\n * getFormatLicensePlate(\"ABC1234\"); // \"LLLNNNN\"\n * getFormatLicensePlate(\"ABC1D23\"); // \"LLLNLNN\"\n * getFormatLicensePlate(\"ABC12D3\"); // null (not a Mercosul sequence)\n * getFormatLicensePlate(\"ABC1234EXTRA\"); // null (too many characters)\n * ```\n *\n * The resolution's own text does not spell the sequence out: art. 2º § 2º delegates the\n * technical specification to Anexo I, whose item 1.2 reads \"O padrão de estampagem é composto de\n * 7 (sete) caracteres alfanuméricos, em alto relevo, na sequência LLLNLNN\" and whose item 1.2.1\n * reads `L` as a letter and `N` as a numeral. Art. 2º § 1º puts a single rear plate of that same\n * standard on motorcycles and similar vehicles, and art. 2º § 3º describes the old `AAA-1111`\n * PNU it coexists with. The annexes are published in a PDF of their own, cited below alongside\n * the resolution's text.\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022.pdf\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022anexos.pdf\n */\nexport const getFormatLicensePlate = (value: string): LicensePlateFormat | null => {\n\tif (typeof value !== \"string\") return null;\n\n\tconst parsed = sanitizeToAlphanumeric(value);\n\n\tif (OLD_FORMAT_REGEX.test(parsed)) return \"LLLNNNN\";\n\tif (MERCOSUL_REGEX.test(parsed)) return \"LLLNLNN\";\n\n\treturn null;\n};\n","import { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes license plate formatting characters and returns only uppercase alphanumerics.\n *\n * @param {string} value - The license plate to be parsed.\n * @returns {string} Up to 7 uppercase alphanumeric characters, or an empty string when the\n * value is not a string.\n *\n * @example\n * ```typescript\n * parseLicensePlate(\"abc-1234\"); // \"ABC1234\"\n * ```\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022.pdf\n */\nexport const parseLicensePlate = (value: string): string => {\n\tif (typeof value !== \"string\") return \"\";\n\treturn sanitizeToAlphanumeric(value).slice(0, LENGTH);\n};\n","/**\n * Digit to letter conversion table used to turn an old format plate's 5th character into the\n * Mercosul format's embedded letter (0=A, 1=B, ..., 9=J).\n *\n * Resolução CONTRAN nº 969/2022, art. 2º § 4º, is what requires the substitution, \"conforme\n * padrão previsto no Anexo II\". The table itself is that Anexo II, which calls it a \"tabela\n * equiparativa, para substituição do antepenúltimo caractere, de número para letra\". Its range\n * of letters is deliberately limited to `A` through `J`, \"apenas para a conversão da PNU para o\n * novo sistema de PIV\". The annexes are published in a PDF of their own, separate from the\n * resolution's text; both are cited below.\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022.pdf\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022anexos.pdf\n */\nexport const DIGIT_TO_MERCOSUL_LETTER: Record<string, string> = {\n\t\"0\": \"A\",\n\t\"1\": \"B\",\n\t\"2\": \"C\",\n\t\"3\": \"D\",\n\t\"4\": \"E\",\n\t\"5\": \"F\",\n\t\"6\": \"G\",\n\t\"7\": \"H\",\n\t\"8\": \"I\",\n\t\"9\": \"J\",\n};\n","import { getFormatLicensePlate } from \"../get-format-license-plate/get-format-license-plate\";\nimport { parseLicensePlate } from \"../parse-license-plate/parse-license-plate\";\nimport { DIGIT_TO_MERCOSUL_LETTER } from \"./constants\";\n\n/**\n * Converts an old format Brazilian license plate (\"LLLNNNN\") to the Mercosul format\n * (\"LLLNLNN\"), following the official conversion table: the digit in the 5th position (the\n * 2nd digit of the 4 digit number) becomes a letter, `0` through `9` mapping to `A` through\n * `J`, and every other character is kept as is.\n *\n * @param {string} value - The old format license plate to be converted.\n * @returns {string} The converted Mercosul format plate, or `\"\"` when `value` is not a valid\n * old format (\"LLLNNNN\") license plate.\n *\n * @example\n * ```typescript\n * convertLicensePlateToMercosul(\"ABC1234\"); // \"ABC1C34\"\n * convertLicensePlateToMercosul(\"abc-1234\"); // \"ABC1C34\"\n * convertLicensePlateToMercosul(\"ABC1D23\"); // \"\" (already Mercosul)\n * convertLicensePlateToMercosul(\"invalid\"); // \"\"\n * ```\n *\n * Resolução CONTRAN nº 969/2022, art. 2º § 4º, is what requires the substitution of the second\n * numeric character, \"conforme padrão previsto no Anexo II\". Anexo II is the digit to letter\n * table, and it prints the same worked example as above: \"A placa anterior ABC1234 será\n * substituída pela nova placa com o padrão alfanumérico ABC1C34\". The annexes are published in a\n * PDF of their own, separate from the resolution's text; both are cited below.\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022.pdf\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022anexos.pdf\n */\nexport const convertLicensePlateToMercosul = (value: string): string => {\n\tif (getFormatLicensePlate(value) !== \"LLLNNNN\") return \"\";\n\n\tconst parsed = parseLicensePlate(value);\n\n\tconst letter = DIGIT_TO_MERCOSUL_LETTER[parsed.charAt(4)];\n\n\treturn `${parsed.slice(0, 4)}${letter}${parsed.slice(5)}`;\n};\n","import {\n\tNUMBER_TO_WORDS_MAX_VALUE,\n\ttype NumberToWordsGender,\n\tnumberToWords,\n} from \"../_internals/number-to-words/number-to-words\";\n\n/** Options of `convertNumberToWords`. */\nexport type ConvertNumberToWordsOptions = {\n\t/** Grammatical gender used to agree \"um/dois\" and the hundreds group (\"duzentos/duzentas\", etc.) with the noun the number qualifies. Defaults to `\"masculine\"`. */\n\tgender?: NumberToWordsGender;\n};\n\n/**\n * Formats an integer as its Brazilian Portuguese cardinal number words (\"por extenso\"),\n * e.g. `1235` becomes `\"mil duzentos e trinta e cinco\"`.\n *\n * Only integers from `-999999999999999` to `999999999999999` (999 trillion in absolute value,\n * the highest value expressible with the \"trilhão\" scale word) are supported; anything outside\n * that range, `NaN` or a non-finite value (`Infinity`/`-Infinity`) returns `\"\"`. A non-integer\n * `value` is truncated toward zero before conversion (`12.9` behaves like `12`); this function\n * only writes out whole numbers, it never spells out a decimal part (use\n * `convertCurrencyToWords` for a monetary amount with cents).\n *\n * The result is always lowercase; apply any other casing to it yourself.\n *\n * @param {number} value - The integer to convert.\n * @param {ConvertNumberToWordsOptions} [options] - Optional formatting options.\n * @param {NumberToWordsGender} [options.gender] - Grammatical gender for \"um/dois\" and the hundreds group. Defaults to `\"masculine\"`.\n * @returns {string} The cardinal number written out in Portuguese, or `\"\"` for invalid input.\n *\n * @example\n * ```typescript\n * convertNumberToWords(123); // \"cento e vinte e três\"\n * convertNumberToWords(1001); // \"mil e um\"\n * convertNumberToWords(2000000); // \"dois milhões\"\n * convertNumberToWords(-42); // \"menos quarenta e dois\"\n * convertNumberToWords(2, { gender: \"feminine\" }); // \"duas\"\n * convertNumberToWords(12.9); // \"doze\" (truncated toward zero)\n * convertNumberToWords(NaN); // \"\"\n * ```\n *\n * @see Based on: https://github.com/savoirfairelinux/num2words\n * `brutils` itself has no dedicated\n * number-to-words module (its `currency.py` delegates the Portuguese numeral text to this\n * library's `pt_BR` locale); this is the reference for the numeral-word tables reproduced here.\n */\nexport const convertNumberToWords = (\n\tvalue: number,\n\toptions?: ConvertNumberToWordsOptions,\n): string => {\n\tif (!Number.isFinite(value)) return \"\";\n\n\tconst truncated = Math.trunc(value);\n\n\tif (Math.abs(truncated) > NUMBER_TO_WORDS_MAX_VALUE) return \"\";\n\n\tconst words = numberToWords(Math.abs(truncated), { gender: options?.gender });\n\n\treturn truncated < 0 ? `menos ${words}` : words;\n};\n","import { isSupportedHolidayYear } from \"../_internals/is-supported-holiday-year/is-supported-holiday-year\";\nimport { isValidDate } from \"../_internals/is-valid-date/is-valid-date\";\nimport { type BusinessDayOptions, isBusinessDay } from \"../is-business-day/is-business-day\";\n\nexport type { BusinessDayOptions } from \"../is-business-day/is-business-day\";\n\nconst toLocalDayTimestamp = (date: Date): number =>\n\tDate.UTC(date.getFullYear(), date.getMonth(), date.getDate());\n\n/**\n * Counts the number of Brazilian business days (dias úteis) between two dates.\n *\n * Mirrors the semantics of date-fns' `differenceInBusinessDays`, verified against its source\n * (`differenceInBusinessDays.js` in the `date-fns` package), argument order included: the walk\n * starts at `earlierDate` and stops just before `laterDate`, so **`earlierDate` is counted when\n * it is itself a business day and `laterDate` is never counted**, whatever their order, and every\n * business day strictly in between is counted once. Only the calendar day of each `Date` matters,\n * exactly like `differenceInCalendarDays`: the time of day is ignored.\n *\n * The result is positive when `laterDate` is after `earlierDate` and negative when it is before\n * it, the date-fns sign convention; two dates on the same calendar day return `0` (a positive\n * zero, never `-0`).\n *\n * A business day is a day for which `isBusinessDay` returns `true` (not a Saturday, a Sunday,\n * or a Brazilian holiday), evaluated with the same `options`.\n *\n * If `options.stateCode` is provided but is not a valid/known state code, it is ignored and only\n * national holidays are considered (same behavior as `getHolidays`/`isBusinessDay`), so a\n * prototype-chain key such as `\"__proto__\"` is an unknown state code like any other. An `options`\n * that is not an object at all is ignored, exactly as `isBusinessDay` ignores it.\n *\n * Only years from 1900 through 2099 are supported, the range `getHolidays` computes; a\n * `laterDate` or `earlierDate` outside it returns `null`.\n *\n * @param {Date} laterDate - The date to count to. Never counted itself, regardless of whether it is a business day.\n * @param {Date} earlierDate - The date to count from. Counted as a business day when it is one; never mutated.\n * @param {BusinessDayOptions} [options] - Which holidays count as non-business days.\n * @param {StateCode} [options.stateCode] - Brazilian state code whose state holidays are also considered.\n * @param {boolean} [options.includeOptional] - Whether optional holidays count as non-business days (default: `true`).\n * @returns {number | null} The number of business days between the two dates, or `null` on bad\n * input: a `laterDate`/`earlierDate` that is not a valid `Date` or is outside 1900-2099, or a\n * `stateCode` that is not a string.\n *\n * @example\n * ```typescript\n * differenceInBusinessDays(new Date(2024, 0, 2), new Date(2024, 0, 1)); // 0 (Jan 1 is Ano novo, not counted)\n * differenceInBusinessDays(new Date(2024, 0, 3), new Date(2024, 0, 2)); // 1 (Jan 2 counted, a Tuesday; Jan 3 is not)\n * differenceInBusinessDays(new Date(2024, 0, 2), new Date(2024, 0, 3)); // -1 (the later date comes first, so the count is negative)\n * differenceInBusinessDays(new Date(2024, 0, 2), new Date(2024, 0, 2)); // 0 (same day)\n * differenceInBusinessDays(new Date(2024, 6, 10), new Date(2024, 6, 8), { stateCode: \"SP\" }); // 1 (Jul 9 is a state holiday in SP)\n * differenceInBusinessDays(new Date(), new Date(\"not a date\")); // null\n * differenceInBusinessDays(new Date(2100, 0, 5), new Date(2100, 0, 4)); // null (outside the supported years)\n * ```\n *\n * @see Based on: https://date-fns.org/docs/differenceInBusinessDays\n * Documented behavior and the\n * positional `(laterDate, earlierDate)` argument order.\n * @see Based on: https://unpkg.com/date-fns@4.1.0/differenceInBusinessDays.js\n * Source used to\n * verify the exact boundary treatment (`earlierDate` counted, `laterDate` excluded) and the sign\n * convention. The underlying holiday determination's official sources are cited in\n * `isBusinessDay`/`getHolidays`.\n */\nexport const differenceInBusinessDays = (\n\tlaterDate: Date,\n\tearlierDate: Date,\n\toptions?: BusinessDayOptions,\n): number | null => {\n\tif (!isValidDate(laterDate)) return null;\n\tif (!isValidDate(earlierDate)) return null;\n\n\tconst stateCode = options?.stateCode;\n\n\tif (stateCode !== undefined && typeof stateCode !== \"string\") return null;\n\n\tif (!isSupportedHolidayYear(laterDate.getFullYear())) return null;\n\tif (!isSupportedHolidayYear(earlierDate.getFullYear())) return null;\n\n\tconst laterDay = toLocalDayTimestamp(laterDate);\n\tconst earlierDay = toLocalDayTimestamp(earlierDate);\n\n\t// Stryker disable next-line EqualityOperator: when the two days are equal, the loop below never runs (movingDate already equals laterDay), so < vs <= here is unobservable\n\tconst step = earlierDay < laterDay ? 1 : -1;\n\tconst movingDate = new Date(\n\t\tearlierDate.getFullYear(),\n\t\tearlierDate.getMonth(),\n\t\tearlierDate.getDate(),\n\t);\n\n\tlet result = 0;\n\n\twhile (toLocalDayTimestamp(movingDate) !== laterDay) {\n\t\tif (isBusinessDay(movingDate, options)) result += step;\n\t\tmovingDate.setDate(movingDate.getDate() + step);\n\t}\n\n\treturn result;\n};\n","/**\n * Layout of the \"arrecadação\" (convênio/tributos) bank slip.\n *\n * Barcode (44 positions, §04): 01 product (\"8\"), 02 segment, 03 value identifier\n * (6, 7, 8 or 9), 04 overall check digit (modulus 10 or 11 per position 03), 05-15 amount,\n * 16-19 issuing company, 20-44 free field. The linha digitável splits the barcode into\n * 4 blocks of 11 digits, each one followed by its own check digit (§03-E). There is no\n * segment 8 nor 0, and 9 is reserved for the banks themselves.\n *\n * @see Official: https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%208%20-%2011_05_2026.pdf\n */\n\nexport const ARRECADACAO_PRODUCT = \"8\";\n\nexport const ARRECADACAO_BARCODE_LENGTH = 44;\n\nexport const ARRECADACAO_LINE_LENGTH = 48;\n\nexport const ARRECADACAO_BLOCK_LENGTH = 11;\n\nexport const ARRECADACAO_BLOCKS = 4;\n\nexport const ARRECADACAO_CHECK_DIGIT_POSITION = 3;\n\nexport const ARRECADACAO_VALUE_START = 4;\n\nexport const ARRECADACAO_VALUE_END = 15;\n\nexport const ARRECADACAO_SEGMENTS = [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"] as const;\n","export const BANCARIO_PATTERN = \"00000.00000 00000.000000 00000.000000 0 00000000000000\";\n\nexport const ARRECADACAO_PATTERN = \"00000000000-0 00000000000-0 00000000000-0 00000000000-0\";\n","import { ARRECADACAO_LINE_LENGTH, ARRECADACAO_PRODUCT } from \"../_internals/constants/arrecadacao\";\nimport { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { ARRECADACAO_PATTERN, BANCARIO_PATTERN } from \"./constants\";\n\n/** Options of `formatBoleto`. */\nexport type FormatBoletoOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a given value as a Brazilian boleto.\n *\n * A 48 digit linha digitável starting with `8` is an \"arrecadação\" (convênio/tributos) slip\n * and uses the FEBRABAN arrecadação mask (four blocks of 11 digits, each one followed by its\n * own check digit) instead of the \"cobrança bancária\" mask. The 44 digit arrecadação\n * *barcode* has no display grouping defined by FEBRABAN (§04 describes positions, not a\n * printed form), so it keeps the published \"cobrança bancária\" grouping.\n *\n * @param {string|number} value - The value to be formatted, either as a string or a number.\n * @param {FormatBoletoOptions} [options] - Optional formatting options.\n * @param {boolean} options.pad - Whether to pad the value with leading zeros.\n * @returns {string} The formatted boleto string in the pattern \"00000.00000 00000.000000 00000.000000 0 00000000000000\" or, for arrecadação, \"00000000000-0 00000000000-0 00000000000-0 00000000000-0\".\n *\n * @example\n * ```typescript\n * formatBoleto(\"10491443385511900000200000000141325230000093423\");\n * // \"10491.44338 55119.000002 00000.000141 3 25230000093423\"\n *\n * formatBoleto(\"826300000011098800100702024102024000000205104519\");\n * // \"82630000001-1 09880010070-2 02410202400-0 00020510451-9\"\n * ```\n *\n * Carta-Circular BCB nº 2.926/2000 specifies the linha digitável fields and the módulo 11\n * check digit (using 1 for remainders 0, 10 and 1) of the 47 digit cobrança bancária slip,\n * including the position of the fator de vencimento field. The FEBRABAN \"Layout Padrão de\n * Arrecadação/Recebimento com Utilização do Código de Barras\" and the FEBRABAN layout index\n * cover the arrecadação slip.\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/c_circ/2000/pdf/c_circ_2926_v1_O.pdf\n * @see Official: https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%208%20-%2011_05_2026.pdf\n * @see Official: https://portal.febraban.org.br/pagina/3425/33/pt-br/layout-febraban\n */\nexport const formatBoleto = (value: string | number, options?: FormatBoletoOptions): string => {\n\tif (isNullish(value)) return \"\";\n\n\tconst digits = sanitizeToDigits(value);\n\n\tconst isArrecadacaoLine =\n\t\tdigits.length === ARRECADACAO_LINE_LENGTH && digits.startsWith(ARRECADACAO_PRODUCT);\n\n\treturn format({\n\t\tpad: options?.pad,\n\t\tvalue: digits,\n\t\tpattern: isArrecadacaoLine ? ARRECADACAO_PATTERN : BANCARIO_PATTERN,\n\t});\n};\n","export const PATTERN = \"000.000.000/000-00\";\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { PATTERN } from \"./constants\";\n\n/** Options of `formatCaepf`. */\nexport type FormatCaepfOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a CAEPF (Cadastro de Atividade Econômica da Pessoa Física) number according to the\n * official mask.\n *\n * Formats progressively, as far as the digits given go, so it can also be used as an input\n * mask while the user is still typing.\n *\n * @param {string|number} value - The CAEPF value to be formatted.\n * @param {FormatCaepfOptions} [options] - Optional formatting options.\n * @param {boolean} [options.pad] - Whether to pad the value with leading zeros up to 14 digits.\n * @returns {string} The formatted CAEPF string in the pattern \"000.000.000/000-00\", or an\n * empty string when there is nothing to format.\n *\n * @example\n * ```typescript\n * formatCaepf(\"29311861000184\"); // \"293.118.610/001-84\"\n * formatCaepf(41142260000101); // \"411.422.600/001-01\"\n * formatCaepf(\"184\", { pad: true }); // \"000.000.000/001-84\"\n * formatCaepf(\"184\"); // \"184\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/caepf\n * The registry's own page at the Receita Federal, which describes the cadastro but does not\n * print the mask; the mask below is the one the sources cited by `isValidCaepf` agree on.\n */\nexport const formatCaepf = (value: string | number, options?: FormatCaepfOptions): string => {\n\tif (isNullish(value)) return \"\";\n\n\treturn format({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: PATTERN,\n\t});\n};\n","/**\n * Numbering shared by the CEI (Cadastro Específico do INSS) and by the CNO (Cadastro Nacional\n * de Obras) that replaced it: 12 digits printed as \"00.000.00000/00\".\n *\n * The Receita Federal does not publish the check digit rule of the CEI/CNO numbering, so the\n * calculation follows the reference implementations cited below, cross-checked against the CNO\n * open data of the Receita Federal.\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cno\n * The registry's own page at the Receita Federal, which describes the cadastro but publishes\n * neither the mask nor the check digit rule.\n * @see Official: https://dados.gov.br/dados/conjuntos-dados/cadastro-nacional-de-obras-cno\n * Cadastro Nacional de Obras (CNO), dados abertos da Receita Federal: the catalogue entry for the\n * dataset this rule was cross-checked against and where the test vectors come from. The check was\n * run over the Minas Gerais extract of the downloaded dataset, which every registered work passed;\n * the catalogue page itself publishes only the dataset's description and download links (and\n * currently flags it \"Desatualizado\"), not that result.\n * @see Based on: https://github.com/yiibr/yii2-br-validator/blob/master/src/CeiValidator.php\n * PHP reference implementation of the CEI check digit.\n * @see Based on: https://github.com/marcos-cruz/Documento/blob/master/src/Bigai.Documentos.Brasil/Cei/Cei.cs\n * Second, independent reference implementation agreeing with the first.\n */\n\nexport const CEI_BASE_LENGTH = 11;\n\nexport const CEI_WEIGHTS = [7, 4, 1, 8, 5, 2, 1, 6, 3, 7, 4];\n\n/**\n * Shape a CEI/CNO number has to be written in: the 12 digits, optionally split into the printed\n * groups of 2, 3, 5 and 2 by whitespace or the usual mask characters. A run of separators is\n * tolerated between two groups, not just a single one, which is what the CPF, CNPJ, CAEPF and\n * certidão regexes of this library do.\n */\nexport const CEI_FORMAT_REGEX = /^\\d{2}[\\s.\\-/]*\\d{3}[\\s.\\-/]*\\d{5}[\\s.\\-/]*\\d{2}$/;\n\nexport const CEI_PATTERN = \"00.000.00000/00\";\n","import { CEI_PATTERN } from \"../_internals/constants/cei\";\nimport { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatCei`. */\nexport type FormatCeiOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a CEI (Cadastro Específico do INSS) number according to the usual \"00.000.00000/00\"\n * mask, the one the reference implementations of the check digit agree on (the Receita Federal\n * does not print it).\n *\n * Formats progressively, as far as the digits given go, so it can also be used as an input\n * mask while the user is still typing.\n *\n * @param {string|number} value - The CEI value to be formatted.\n * @param {FormatCeiOptions} [options] - Optional formatting options.\n * @param {boolean} [options.pad] - Whether to pad the value with leading zeros up to 12 digits.\n * @returns {string} The formatted CEI string in the pattern \"00.000.00000/00\", or an empty\n * string when there is nothing to format.\n *\n * @example\n * ```typescript\n * formatCei(\"277297118187\"); // \"27.729.71181/87\"\n * formatCei(249859674386); // \"24.985.96743/86\"\n * formatCei(\"249\", { pad: true }); // \"00.000.00002/49\"\n * formatCei(\"249\"); // \"24.9\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cno\n * The registry's own page at the Receita Federal, which describes the cadastro but does not\n * print the mask; the mask below is the one the two reference implementations of the check\n * digit cited by `isValidCei` agree on.\n */\nexport const formatCei = (value: string | number, options?: FormatCeiOptions): string => {\n\tif (isNullish(value)) return \"\";\n\n\treturn format({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: CEI_PATTERN,\n\t});\n};\n","/**\n * Layout of the matrícula of a certidão de registro civil, 32 digits grouped as\n * 6 (CNS da serventia) + 2 (acervo) + 2 (serviço) + 4 (ano) + 1 (tipo do livro) + 5 (livro) +\n * 3 (folha) + 7 (termo) + 2 (dígitos verificadores).\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/5243\n * Código Nacional de Normas da Corregedoria Nacional de Justiça - Foro Extrajudicial (Provimento\n * CNJ nº 149/2023), art. 473 as currently published: the in-force layout of the 32 digit\n * matrícula. Inciso II and §§ 1º and 3º to 5º carry the redação of the Provimento CN nº 237, de\n * 13/07/2026; the rest of the article, § 2º included, and the digit layout this library depends\n * on, come from the Provimento CN nº 182, de 17/09/2024.\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1311\n * Provimento CNJ nº 2, de 27/04/2009, art. 1º and 2º, which instituted the modelos únicos de\n * certidão and ordered that \"as certidões passarão a consignar matrícula que identifica o código\n * nacional da serventia, o código do acervo, o tipo do serviço prestado, o tipo do livro, o número\n * do livro, o número da folha, o número do termo e o digito verificador\" (revoked; historical).\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1310\n * Provimento CNJ nº 3, de 17/11/2009, art. 7º, which is where that matrícula first got its digit\n * structure: \"a matrícula, de inserção obrigatória nas certidões (primeira e demais vias) emitidas\n * pelos Cartórios de Registro Civil das Pessoas Naturais a partir de 1º de janeiro de 2010, é\n * formada pelos seguintes elementos\", incisos I to IX fixing the same 6 + 2 + 2 + 4 + 1 + 5 + 3 +\n * 7 + 2 positions art. 473 carries today (revoked; historical).\n * @see Based on: http://ghiorzi.org/DVnew.htm\n * Worked example of the two check digits (sums 288 and 309).\n * @see Based on: https://github.com/klawdyo/validation-br/blob/feat-certidao/src/certidao.ts\n * Reference implementation, and the source of the matrículas used as test vectors.\n * @see Based on: https://github.com/geekcom/validator-docs/blob/master/src/validator-docs/Rules/Certidao.php\n * Third reference implementation agreeing on the weights and on the remainder of 10 read as 1.\n */\n\nexport const CERTIDAO_LENGTH = 32;\n\nexport const CERTIDAO_BASE_LENGTH = 30;\n\n/**\n * The only serviço code a matrícula de registro civil can carry, in the ninth and tenth\n * positions: art. 473, III fixes it as \"Código 55 (9º e 10º números da matrícula), que é o\n * número relativo ao serviço de registro civil das pessoas naturais\".\n */\nexport const CERTIDAO_SERVICE_CODE = \"55\";\n\nexport const CERTIDAO_PATTERN = \"000000 00 00 0000 0 00000 000 0000000 00\";\n\nexport const CERTIDAO_FORMAT_REGEX =\n\t/^\\d{6}[\\s.\\-/]*\\d{2}[\\s.\\-/]*\\d{2}[\\s.\\-/]*\\d{4}[\\s.\\-/]*\\d[\\s.\\-/]*\\d{5}[\\s.\\-/]*\\d{3}[\\s.\\-/]*\\d{7}[\\s.\\-/]*\\d{2}$/;\n","import { CERTIDAO_PATTERN } from \"../_internals/constants/certidao\";\nimport { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatCertidao`. */\nexport type FormatCertidaoOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats the matrícula of a certidão de registro civil into the printed mask of the norm, the\n * 32 digits grouped as 6 2 2 4 1 5 3 7 2 and separated by spaces.\n *\n * A number is accepted and read as the string of its digits, like in `formatCpf`, but a full 32\n * digit matrícula has to be a string: that many digits are more than a JavaScript number can hold\n * exactly. At runtime the value is read for its digits and masked as far as they go, like in every\n * formatter of this package, so a partial matrícula still being typed is masked progressively.\n *\n * @param {string|number} value - The matrícula value to be formatted.\n * @param {FormatCertidaoOptions} [options] - Optional formatting options.\n * @param {boolean} options.pad - If true, pads the value with leading zeros if necessary.\n * @returns {string} The formatted matrícula in the pattern \"000000 00 00 0000 0 00000 000 0000000 00\".\n *\n * @example\n * ```typescript\n * formatCertidao(\"10453901552013100012021000012321\");\n * // \"104539 01 55 2013 1 00012 021 0000123 21\"\n *\n * formatCertidao(\"104539.01.55.2013.1.00012.021.0000123-21\");\n * // \"104539 01 55 2013 1 00012 021 0000123 21\"\n *\n * formatCertidao(\"1552010100020112000012087\", { pad: true });\n * // \"000000 01 55 2010 1 00020 112 0000120 87\"\n *\n * formatCertidao(104539015520); // \"104539 01 55 20\" (a number is read as the string of its digits)\n * ```\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/5243\n * Código Nacional de Normas da Corregedoria Nacional de Justiça - Foro Extrajudicial (Provimento\n * CNJ nº 149/2023), art. 473 as currently published: the in-force layout of the 32 digit\n * matrícula. Inciso II and §§ 1º and 3º to 5º carry the redação of the Provimento CN nº 237, de\n * 13/07/2026; the rest of the article, § 2º included, and the digit layout this library depends\n * on, come from the Provimento CN nº 182, de 17/09/2024.\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1311\n * Provimento CNJ nº 2, de 27/04/2009, art. 1º and 2º, which instituted the modelos únicos de\n * certidão and ordered that \"as certidões passarão a consignar matrícula que identifica o código\n * nacional da serventia, o código do acervo, o tipo do serviço prestado, o tipo do livro, o número\n * do livro, o número da folha, o número do termo e o digito verificador\" (revoked; historical).\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1310\n * Provimento CNJ nº 3, de 17/11/2009, art. 7º, which is where that matrícula first got its digit\n * structure: \"a matrícula, de inserção obrigatória nas certidões (primeira e demais vias) emitidas\n * pelos Cartórios de Registro Civil das Pessoas Naturais a partir de 1º de janeiro de 2010, é\n * formada pelos seguintes elementos\", incisos I to IX fixing the same 6 + 2 + 2 + 4 + 1 + 5 + 3 +\n * 7 + 2 positions art. 473 carries today (revoked; historical).\n * @see Based on: http://ghiorzi.org/DVnew.htm\n * Worked example of the two check digits (sums 288 and 309).\n * @see Based on: https://github.com/klawdyo/validation-br/blob/feat-certidao/src/certidao.ts\n * Reference implementation, and the source of the matrículas used as test vectors.\n * @see Based on: https://github.com/geekcom/validator-docs/blob/master/src/validator-docs/Rules/Certidao.php\n * Third reference implementation agreeing on the weights and on the remainder of 10 read as 1.\n */\nexport const formatCertidao = (value: string | number, options?: FormatCertidaoOptions): string =>\n\tisNullish(value)\n\t\t? \"\"\n\t\t: format({\n\t\t\t\tpad: options?.pad,\n\t\t\t\tvalue: sanitizeToDigits(value),\n\t\t\t\tpattern: CERTIDAO_PATTERN,\n\t\t\t});\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatCnae`. */\nexport type FormatCnaeOptions = {\n\t/** Whether to left pad the value with zeros up to the 7 digits of a complete subclass code (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a CNAE (Classificação Nacional de Atividades Econômicas) subclass code.\n *\n * This is a purely structural transformation, it does not check the code against the\n * official table, use `isValidCnae` for that.\n *\n * With the default `pad: false` the mask is applied progressively, as far as the value goes,\n * which is what an input being typed into needs (`\"62\"` stays `\"62\"`, `\"62015\"` becomes\n * `\"6201-5\"`). With `pad: true` the value is first left padded with zeros to the 7 digits of a\n * complete subclass code, so it always comes back fully masked (`\"62\"` gives `\"0000-0/62\"`).\n * A number is treated exactly like the string of its digits: it is only padded under\n * `pad: true`, so `formatCnae(111301)` gives `\"1113-0/1\"` and `formatCnae(111301, { pad: true })`\n * gives `\"0111-3/01\"`.\n *\n * Like every formatter of this package, the value is read for its digits and masked as far as\n * they go: characters outside the mask are dropped (`formatCnae(\"abc6201501\")` gives\n * `\"6201-5/01\"`) and a number is read as the string of its digits, sign and decimal point\n * included (`formatCnae(-6201501)` gives `\"6201-5/01\"`). This is the input-mask contract of\n * `formatCpf`; use `isValidCnae` to check a code.\n *\n * @param {string|number} value - The CNAE code to be formatted.\n * @param {FormatCnaeOptions} [options] - Optional formatting options.\n * @param {boolean} [options.pad] - Whether to pad the value with leading zeros. Defaults to `false`.\n * @returns {string} The formatted code in the `NNNN-N/NN` pattern, or an empty string\n * when there is nothing to format.\n *\n * @example\n * ```typescript\n * formatCnae(\"6201501\"); // \"6201-5/01\"\n * formatCnae(6201501); // \"6201-5/01\"\n * formatCnae(\"62\"); // \"62\" (partial values are masked as far as they go)\n * formatCnae(\"62015\"); // \"6201-5\"\n * formatCnae(\"62\", { pad: true }); // \"0000-0/62\" (padded to 7 digits first)\n * formatCnae(\"abc6201501\"); // \"6201-5/01\" (only the digits are read)\n * formatCnae(-6201501); // \"6201-5/01\"\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/v2/cnae/subclasses\n */\nexport const formatCnae = (value: string | number, options?: FormatCnaeOptions): string => {\n\tif (isNullish(value)) return \"\";\n\n\treturn format({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: \"0000-0/00\",\n\t});\n};\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatCnh`. */\nexport type FormatCnhOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a Brazilian CNH (Carteira Nacional de Habilitação) number.\n *\n * @param {string|number} value - The CNH number to be formatted.\n * @param {FormatCnhOptions} [options] - Optional options.\n * @param {boolean} [options.pad] - Whether to pad the value with leading zeros.\n * @returns {string} The formatted CNH, or an empty string when there is nothing to format.\n *\n * @example\n * ```typescript\n * formatCnh(\"12345678900\"); // \"123456789-00\"\n * formatCnh(\"8900\", { pad: true }); // \"000000089-00\"\n * ```\n *\n * Resolução CONTRAN nº 886/2021, art. 4º I, defines the CNH registry number as 9 characters plus\n * 2 security check digits, which is the layout this mask reproduces; no official text publishes\n * the check-digit weights used to compute them.\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/Resolucao8862021F.pdf\n */\nexport const formatCnh = (value: string | number, options?: FormatCnhOptions): string =>\n\tisNullish(value)\n\t\t? \"\"\n\t\t: format({\n\t\t\t\tpad: options?.pad,\n\t\t\t\tvalue: sanitizeToDigits(value),\n\t\t\t\tpattern: \"000000000-00\",\n\t\t\t});\n","import { CEI_PATTERN } from \"../_internals/constants/cei\";\nimport { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatCno`. */\nexport type FormatCnoOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a CNO (Cadastro Nacional de Obras) number according to the official mask.\n *\n * The CNO replaced the CEI for construction works and kept its numbering, so both share the\n * same 12 digit, \"00.000.00000/00\" mask.\n *\n * Formats progressively, as far as the digits given go, so it can also be used as an input\n * mask while the user is still typing.\n *\n * @param {string|number} value - The CNO value to be formatted.\n * @param {FormatCnoOptions} [options] - Optional formatting options.\n * @param {boolean} [options.pad] - Whether to pad the value with leading zeros up to 12 digits.\n * @returns {string} The formatted CNO string in the pattern \"00.000.00000/00\", or an empty\n * string when there is nothing to format.\n *\n * @example\n * ```typescript\n * formatCno(\"111130137368\"); // \"11.113.01373/68\"\n * formatCno(401800097960); // \"40.180.00979/60\"\n * formatCno(\"979\", { pad: true }); // \"00.000.00009/79\"\n * formatCno(\"979\"); // \"97.9\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cno\n * The registry's own page at the Receita Federal, which describes the cadastro but does not\n * print the mask; the mask below is the one the two reference implementations of the check\n * digit cited by `isValidCei` agree on.\n */\nexport const formatCno = (value: string | number, options?: FormatCnoOptions): string => {\n\tif (isNullish(value)) return \"\";\n\n\treturn format({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: CEI_PATTERN,\n\t});\n};\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatCns`. */\nexport type FormatCnsOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a CNS (Cartão Nacional de Saúde) number into the common display groups of 3-4-4-4\n * digits separated by spaces.\n *\n * @param {string|number} value - The CNS value to be formatted. It can be a string or a number.\n * @param {FormatCnsOptions} [options] - Optional formatting options.\n * @param {boolean} options.pad - If true, pads the value with leading zeros if necessary.\n * @returns {string} The formatted CNS string in the pattern \"000 0000 0000 0000\".\n *\n * @example\n * ```typescript\n * formatCns(\"123456789010000\"); // \"123 4567 8901 0000\"\n * formatCns(123456789010000); // \"123 4567 8901 0000\"\n * formatCns(\"89010001\", { pad: true }); // \"000 0000 8901 0001\"\n * ```\n *\n * @see Official: https://rni-docs.anvisa.gov.br/docs/regras_gerais/validacoes/validacaoCNS/\n * ANVISA's two validation routines, the ones implemented here. The page sits behind a bot filter\n * and answers HTTP 403 to every non-browser client, so it has to be opened in a browser.\n * @see Based on: https://integracao.esusab.ufsc.br/ledi/documentacao/regras/algoritmo_CNS.html\n * e-SUS APS documentation of the same DATASUS algorithm, reachable without a browser. It applies\n * the provisional routine to numbers starting with 5, 7, 8 or 9; this implementation follows the\n * ANVISA page, which restricts it to 7, 8 and 9, so a 5 prefixed number is rejected even when its\n * weighted sum checks out.\n */\nexport const formatCns = (value: string | number, options?: FormatCnsOptions): string =>\n\tisNullish(value)\n\t\t? \"\"\n\t\t: format({\n\t\t\t\tpad: options?.pad,\n\t\t\t\tvalue: sanitizeToDigits(value),\n\t\t\t\tpattern: \"000 0000 0000 0000\",\n\t\t\t});\n","export const DEFAULT_PRECISION = 2;\n\nconst MIN_PRECISION = 0;\n\nconst MAX_PRECISION = 20;\n\n/**\n * Clamps a fraction-digits precision into the range accepted by `Intl.NumberFormat`.\n *\n * `Intl.NumberFormat` throws a `RangeError` when `minimumFractionDigits` /\n * `maximumFractionDigits` fall outside of the range the engine accepts. ES2023 raised the\n * upper bound from 20 to 100, but Node 20 still enforces 20, so 20 is the portable limit\n * across every supported runtime and every precision coming from user land is normalized\n * to it before reaching `Intl`.\n *\n * @param {number} [precision] - The desired precision. Defaults to 2 when omitted or not a finite number.\n * @returns {number} An integer between 0 and 20.\n *\n * @example\n * ```typescript\n * clampPrecision();     // 2\n * clampPrecision(3);    // 3\n * clampPrecision(-1);   // 0\n * clampPrecision(21);   // 20\n * ```\n */\nexport const clampPrecision = (precision?: number): number => {\n\tconst safePrecision = precision ?? Number.NaN;\n\n\tif (!Number.isFinite(safePrecision)) return DEFAULT_PRECISION;\n\n\treturn Math.min(MAX_PRECISION, Math.max(MIN_PRECISION, Math.trunc(safePrecision)));\n};\n","export type ParseDecimalOptions = {\n\t/** How many trailing digits of a value written without any separator are minor units, so `2` reads \"1234\" as 12.34 (default: `0`). */\n\tminorUnits?: number;\n\t/** Longest run of digits a decimal separator may introduce; a longer run makes it a thousands separator (default: `2`). */\n\tmaxFractionDigits?: number;\n};\n\n/**\n * Reads a decimal number out of a string written in the Brazilian convention.\n *\n * The last `,` or `.` followed by 1 to `maxFractionDigits` digits is the decimal separator;\n * every other `,` or `.` is a thousands separator and is dropped. A value written without any\n * separator is read as minor units, i.e. divided by `10 ** minorUnits`. A `-` written before\n * the first digit makes the result negative, and negative zero is normalized to zero.\n *\n * @param {string} value - The string to read.\n * @param {ParseDecimalOptions} [options] - Optional reading options.\n * @param {number} [options.minorUnits] - Minor unit digits of a value written without separators. Defaults to 0.\n * @param {number} [options.maxFractionDigits] - Longest fraction a decimal separator may introduce. Defaults to 2.\n * @returns {number} The parsed number, or 0 when the value holds no digits.\n *\n * @example\n * ```typescript\n * parseDecimal(\"R$ 1.234,56\"); // 1234.56\n * parseDecimal(\"R$ 1.234\"); // 1234\n * parseDecimal(\"1234\"); // 1234\n * parseDecimal(\"1234\", { minorUnits: 2 }); // 12.34\n * parseDecimal(\"-R$ 1,00\"); // -1\n * ```\n */\nexport const parseDecimal = (value: string, options?: ParseDecimalOptions): number => {\n\tif (typeof value !== \"string\") return 0;\n\n\tconst minorUnits = options?.minorUnits ?? 0;\n\tconst maxFractionDigits = options?.maxFractionDigits ?? 2;\n\n\tconst [prefix] = value.split(/\\d/, 1);\n\tconst sign = prefix.includes(\"-\") ? -1 : 1;\n\n\tconst cleaned = value.replaceAll(/[^\\d.,]/g, \"\");\n\tconst separatorIndex = Math.max(cleaned.lastIndexOf(\",\"), cleaned.lastIndexOf(\".\"));\n\n\tif (separatorIndex === -1) {\n\t\treturn sign * (Number.parseInt(cleaned, 10) / 10 ** minorUnits) || 0;\n\t}\n\n\tconst fraction = cleaned.slice(separatorIndex + 1);\n\tconst isDecimal = fraction.length <= maxFractionDigits;\n\tconst integerPart = (isDecimal ? cleaned.slice(0, separatorIndex) : cleaned).replaceAll(\n\t\t/\\D/g,\n\t\t\"\",\n\t);\n\tconst numeric = isDecimal ? `${integerPart}.${fraction}` : integerPart;\n\n\treturn sign * Number.parseFloat(numeric) || 0;\n};\n","import { DEFAULT_PRECISION, clampPrecision } from \"../_internals/clamp-precision/clamp-precision\";\nimport { parseDecimal } from \"../_internals/parse-decimal/parse-decimal\";\n\n/** Options of `formatCurrency`. */\nexport type FormatCurrencyOptions = {\n\t/** Whether to prefix the result with the \"R$\" currency symbol (default: `false`). */\n\tsymbol?: boolean;\n\t/** Number of decimal places to show. Defaults to 2, clamped to 0-20. */\n\tprecision?: number;\n};\n\nconst formatters = new Map<string, Intl.NumberFormat>();\n\nconst getFormatter = (symbol: boolean, precision: number): Intl.NumberFormat => {\n\tconst key = `${symbol}|${precision}`;\n\tconst cached = formatters.get(key);\n\n\t// Stryker disable next-line ConditionalExpression: this is a performance cache; a freshly constructed Intl.NumberFormat with the same options formats identically to a cached one, so skipping the cache never changes the output\n\tif (cached) return cached;\n\n\tconst formatter = new Intl.NumberFormat(\"pt-BR\", {\n\t\tstyle: symbol ? \"currency\" : \"decimal\",\n\t\tcurrency: \"BRL\",\n\t\tcurrencyDisplay: symbol ? \"symbol\" : undefined,\n\t\tmaximumFractionDigits: precision,\n\t\tminimumFractionDigits: precision,\n\t});\n\n\t// Stryker disable next-line CallExpression: this is a performance cache; not populating it only means the next call rebuilds an equivalent formatter, which formats identically\n\tformatters.set(key, formatter);\n\n\treturn formatter;\n};\n\nconst toNumber = (value: unknown, precision: number): number => {\n\tif (typeof value === \"string\") {\n\t\treturn parseDecimal(value, { maxFractionDigits: Math.max(DEFAULT_PRECISION, precision) });\n\t}\n\n\treturn Number(value);\n};\n\n/**\n * Formats a given value as a currency string in Brazilian Real (BRL).\n *\n * String inputs are read by the same rule as `parseCurrency`, except that a value written\n * without any separator stays in whole units: the last `,` or `.` followed by 1 to 2 digits\n * (or up to `precision` digits, when that is larger) is the decimal separator, every other\n * `,` or `.` is a thousands separator, and a `-` written before the first digit is preserved.\n * So `\"1.234,56\"` formats as `\"1.234,56\"`, `\"-10.5\"` as `\"-10,50\"` and `\"1234\"` as\n * `\"1.234,00\"`.\n *\n * A value that is not a finite number, such as `NaN`, `Infinity` or `-Infinity`, formats as\n * an empty string, and so does a value that cannot be coerced to a number at all, such as a\n * symbol, a null-prototype object or a plain object (`Number({})` is `NaN`); every other\n * value goes through `Number()` the way 2.3.0 did, so `null`, `[]` and `true` still format.\n *\n * The precision is clamped to `0-20`, the package limit, the bound Node 20 still enforces on\n * `Intl.NumberFormat` (ES2023 raised it to 100, and newer runtimes accept more), and a\n * precision that is not a finite number falls back to 2.\n *\n * @param {string|number} value - The value to be formatted. Can be a string or a number.\n * @param {FormatCurrencyOptions} [options] - Optional formatting options.\n * @param {boolean} options.symbol - If true, includes the currency symbol in the formatted string.\n * @param {number} options.precision - The number of decimal places to include in the formatted string. Defaults to 2, clamped to 0-20.\n * @returns {string} The formatted currency string, or an empty string when the value is not finite.\n *\n * The `R$` prefix and the comma before the centavos are the ones Lei nº 9.069/1995, art. 1º,\n * §§ 1º and 2º prescribes; the `.` grouping comes from the CLDR pt-BR locale data behind\n * `Intl.NumberFormat`.\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l9069.htm\n * @see Based on: https://cldr.unicode.org/\n *\n * @example\n * ```typescript\n * formatCurrency(1234.56); // \"1.234,56\"\n * formatCurrency(1234.56, { symbol: true }); // \"R$ 1.234,56\"\n * formatCurrency(-10.5); // \"-10,50\"\n * formatCurrency(\"1.234,56\"); // \"1.234,56\"\n * formatCurrency(\"1234\"); // \"1.234,00\"\n * formatCurrency(Number.NaN); // \"\"\n * ```\n */\nexport const formatCurrency = (value: string | number, options?: FormatCurrencyOptions): string => {\n\tconst precision = clampPrecision(options?.precision);\n\n\ttry {\n\t\tconst enhancedValue = toNumber(value, precision);\n\n\t\tif (!Number.isFinite(enhancedValue)) return \"\";\n\n\t\treturn getFormatter(Boolean(options?.symbol), precision)\n\t\t\t.format(enhancedValue)\n\t\t\t.replaceAll(\"\\u00A0\", \" \");\n\t} catch {\n\t\treturn \"\";\n\t}\n};\n","/**\n * Layout of a Brazilian IBAN: `BR` + 2 ISO 7064 MOD 97-10 check digits + 8 digit ISPB (the\n * institution's Identificador do Sistema de Pagamentos Brasileiro, not the 3 digit COMPE code)\n * + 5 digit branch (agência) + 10 digit account (conta) + 1 letter account type + 1\n * alphanumeric owner indicator = 29 characters. The registry pattern `BR2!n8!n5!n10!n1!a1!c`\n * allows any letter as the account type, drawn from the \"Dicionário de Tipos\" of the Catálogo\n * de Mensagens e de Arquivos do SFN; `C` (conta corrente) and `P` (conta poupança) are the\n * usual values. Circular BCB nº 3.625/2013 art. 2º § 1º numbers the owner indicator `1` for\n * the first or only holder, `2` for the second and so on up to the ninth, then `A` to `Z` from\n * the tenth, so `0` is not a valid owner indicator.\n * The two sources disagree on the account type: art. 2º VI of the same Circular calls it \"um\n * caractere alfanumérico\", while the ISO 13616 registry pattern `1!a` makes it a letter, and the\n * registry is the form followed here, so a digit in that position is deliberately rejected.\n * Only Brazilian IBANs follow this layout; every other ISO 13616 country has its own.\n * @see Official: https://www.bcb.gov.br/pre/normativos/circ/2013/pdf/circ_3625_v1_O.pdf\n * Circular BCB nº 3.625/2013\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/Documents/sistema_pagamentos_brasileiro/IBAN-Guidelines_%20port.pdf\n * Diretrizes de Implementação do IBAN no Brasil\n */\nexport const BR_IBAN_LENGTH = 29;\n\nexport const BR_IBAN_REGEX = /^BR\\d{2}\\d{8}\\d{5}\\d{10}[A-Z][A-Z1-9]$/;\n\n/**\n * Shape an IBAN has to be written in: letters and digits, optionally split into the ISO 13616\n * print groups of 4 (the last one shorter, 1 to 3 characters, when the length is not a multiple\n * of 4) by whitespace, `.`, `-` or `/`, the same interchangeable mask characters `isValidCpf`\n * and `isValidCnpj` accept. A separator inside a group, a group of any other size, a run of\n * separators between two groups (ISO 13616 prints a single one) or any character outside letters\n * and digits makes the value something other than an IBAN, so it is rejected instead of stripped.\n */\nexport const IBAN_FORMAT_REGEX =\n\t/^[A-Za-z0-9]{4}(?:[\\s.\\-/]?[A-Za-z0-9]{4})*(?:[\\s.\\-/]?[A-Za-z0-9]{1,3})?$/;\n","import { BR_IBAN_LENGTH } from \"../_internals/constants/iban\";\nimport { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { GROUP_SIZE } from \"./constants\";\n\n/**\n * Formats an IBAN in the ISO 13616 print grouping, blocks of 4 characters, the presentation\n * used on statements and bank forms.\n *\n * Does not validate the check digits or the field layout; formats whatever is given, up to\n * the 29 character length of a Brazilian IBAN, as far as it goes, so the function can also be\n * used as an input mask, and an IBAN of another country is grouped the same way up to that\n * length. Use `isValidIban` to check validity.\n *\n * The value may be compact (`\"BR1500000000000010932840814P2\"`), already in the ISO 13616 print\n * format, or a partial value still being typed. Like every formatter of this package, it is read\n * for its letters and digits and grouped as far as they go: any other character (a hyphen, a\n * dot, extra whitespace) is dropped and the letters are uppercased. Only a value that is not a\n * string gives an empty string.\n *\n * @param {string} value - The IBAN to be formatted.\n * @returns {string} The IBAN uppercased and grouped in blocks of 4 characters, or an empty\n * string when `value` is not a string.\n *\n * @example\n * ```typescript\n * formatIban(\"BR1500000000000010932840814P2\"); // \"BR15 0000 0000 0000 1093 2840 814P 2\"\n * formatIban(\"br1500000000000010932840814p2\"); // \"BR15 0000 0000 0000 1093 2840 814P 2\"\n * formatIban(\"BR15\"); // \"BR15\"\n * formatIban(\"BR1500000000000010932840814P2EXTRA\"); // \"BR15 0000 0000 0000 1093 2840 814P 2\"\n * formatIban(\"BR15 0000-0000.0000/1093 2840 814P-2\"); // \"BR15 0000 0000 0000 1093 2840 814P 2\"\n * ```\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/circ/2013/pdf/circ_3625_v1_O.pdf\n * Circular BCB nº 3.625/2013\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/Documents/sistema_pagamentos_brasileiro/IBAN-Guidelines_%20port.pdf\n * Diretrizes de Implementação do IBAN no Brasil\n */\nexport const formatIban = (value: string): string => {\n\tif (typeof value !== \"string\") return \"\";\n\n\tconst sanitized = sanitizeToAlphanumeric(value).slice(0, BR_IBAN_LENGTH);\n\n\tlet formatted = \"\";\n\n\tfor (let i = 0; i < sanitized.length; i++) {\n\t\tif (i > 0 && i % GROUP_SIZE === 0) formatted += \" \";\n\t\tformatted += sanitized[i];\n\t}\n\n\treturn formatted;\n};\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatLegalNature`. */\nexport type FormatLegalNatureOptions = {\n\t/** Whether to left pad the value with zeros up to the 4 digits of a complete code (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a Brazilian legal nature (natureza jurídica) code.\n *\n * Like every formatter of this package, the value is read for its digits and masked as far as\n * they go (`\"206\"` stays `\"206\"`, `\"2062\"` becomes `\"206-2\"`); with `pad: true` it is first left\n * padded with zeros to the 4 digits of a complete code. Use `isValidLegalNature` to check a code.\n *\n * @param {string|number} value - The legal nature code to be formatted.\n * @param {FormatLegalNatureOptions} [options] - Optional formatting options.\n * @param {boolean} [options.pad] - Whether to pad the value with leading zeros. Defaults to `false`.\n * @returns {string} The formatted code, or an empty string when there is nothing to format.\n *\n * @example\n * ```typescript\n * formatLegalNature(\"2062\"); // \"206-2\"\n * formatLegalNature(2062); // \"206-2\"\n * formatLegalNature(\"206\"); // \"206\" (partial values are masked as far as they go)\n * formatLegalNature(\"62\", { pad: true }); // \"006-2\"\n * ```\n *\n * The CONCLA table page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser; the detailed structure PDF next to it is served\n * normally.\n *\n * @see Official: https://concla.ibge.gov.br/estrutura/natjur-estrutura/natureza-juridica-2021\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/CONCLA-TNJ2021-EstruturaDetalhada.pdf\n */\nexport const formatLegalNature = (\n\tvalue: string | number,\n\toptions?: FormatLegalNatureOptions,\n): string =>\n\tisNullish(value)\n\t\t? \"\"\n\t\t: format({\n\t\t\t\tpad: options?.pad,\n\t\t\t\tvalue: sanitizeToDigits(value),\n\t\t\t\tpattern: \"000-0\",\n\t\t\t});\n","import { parseLicensePlate } from \"../parse-license-plate/parse-license-plate\";\nimport { OLD_FORMAT_SEPARATOR_INDEX } from \"./constants\";\n\n/**\n * Formats a Brazilian license plate (placa de carro ou moto).\n *\n * Old format plates (\"LLLNNNN\") are hyphenated, while Mercosul plates (\"LLLNLNN\") are\n * returned without any separator. Partial values are formatted as far as they go, so the\n * function can be used as an input mask.\n *\n * @param {string} value - The license plate to be formatted.\n * @returns {string} The formatted license plate, or an empty string when the value cannot\n * start a valid license plate.\n *\n * @example\n * ```typescript\n * formatLicensePlate(\"abc1234\"); // \"ABC-1234\"\n * formatLicensePlate(\"abc1d23\"); // \"ABC1D23\"\n * formatLicensePlate(\"1234567\"); // \"\"\n * ```\n *\n * The `AAA-1111` shape of the old PNU is art. 2º § 3º of Resolução CONTRAN nº 969/2022; the\n * separatorless `LLLNLNN` shape of the Mercosul plate is item 1.2 of its Anexo I, published in a\n * PDF of its own. Both are cited below.\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022.pdf\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022anexos.pdf\n */\nexport const formatLicensePlate = (value: string): string => {\n\tconst parsed = parseLicensePlate(value);\n\tconst head = parsed.slice(0, OLD_FORMAT_SEPARATOR_INDEX);\n\n\tif (!/^[A-Z]{1,3}$/.test(head)) {\n\t\treturn \"\";\n\t}\n\n\tif (parsed.length <= OLD_FORMAT_SEPARATOR_INDEX) return parsed;\n\n\tconst tail = parsed.slice(OLD_FORMAT_SEPARATOR_INDEX);\n\n\tif (/^\\d{1,4}$/.test(tail)) {\n\t\treturn `${head}-${tail}`;\n\t}\n\n\tif (/^\\d[A-Z]\\d{0,2}$/.test(tail)) {\n\t\treturn parsed;\n\t}\n\n\treturn \"\";\n};\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatNcm`. */\nexport type FormatNcmOptions = {\n\t/** Whether to left pad the value with zeros up to the 8 digits of a complete NCM code (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a NCM (Nomenclatura Comum do Mercosul) code.\n *\n * This is a purely structural transformation, it does not check the code against the\n * official table, use `isValidNcm` for that.\n *\n * With the default `pad: false` the mask is applied progressively, as far as the value goes,\n * which is what an input being typed into needs (`\"8471\"` stays `\"8471\"`, `\"847130\"` becomes\n * `\"8471.30\"`). With `pad: true` the value is first left padded with zeros to the 8 digits of a\n * complete code, so it always comes back fully masked (`\"8471\"` gives `\"0000.84.71\"`).\n * A number is treated exactly like the string of its digits: it is only padded under\n * `pad: true`, so `formatNcm(8471)` gives `\"8471\"` and `formatNcm(8471, { pad: true })` gives\n * `\"0000.84.71\"`.\n *\n * Like every formatter of this package, the value is read for its digits and masked as far as\n * they go: characters outside the mask are dropped (`formatNcm(\"abc8471\")` gives\n * `\"8471\"`) and a number is read as the string of its digits, sign and decimal point\n * included (`formatNcm(-84713012)` gives `\"8471.30.12\"`). This is the input-mask contract of\n * `formatCpf`; use `isValidNcm` to check a code.\n *\n * @param {string|number} value - The NCM code to be formatted.\n * @param {FormatNcmOptions} [options] - Optional formatting options.\n * @param {boolean} [options.pad] - Whether to pad the value with leading zeros. Defaults to `false`.\n * @returns {string} The formatted code in the `NNNN.NN.NN` pattern, or an empty string\n * when there is nothing to format.\n *\n * @example\n * ```typescript\n * formatNcm(\"84713012\"); // \"8471.30.12\"\n * formatNcm(84713012); // \"8471.30.12\"\n * formatNcm(\"8471\"); // \"8471\" (partial values are masked as far as they go)\n * formatNcm(\"847130\"); // \"8471.30\"\n * formatNcm(\"8471\", { pad: true }); // \"0000.84.71\" (padded to 8 digits first)\n * formatNcm(\"abc8471\"); // \"8471\" (only the digits are read)\n * formatNcm(-84713012); // \"8471.30.12\"\n * ```\n *\n * @see Official: https://portalunico.siscomex.gov.br/classif/api/publico/nomenclatura/download/json\n */\nexport const formatNcm = (value: string | number, options?: FormatNcmOptions): string => {\n\tif (isNullish(value)) return \"\";\n\n\treturn format({\n\t\tpad: options?.pad,\n\t\tvalue: sanitizeToDigits(value),\n\t\tpattern: \"0000.00.00\",\n\t});\n};\n","/**\n * 11 groups of 4 digits, the common display form printed on the DANFE. Spelled out\n * instead of built with `Array(11).fill(...).join(...)`: a top-level call cannot be\n * proven pure by consumer bundlers and would pin this module into their output.\n */\nexport const PATTERN = \"0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000\";\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { PATTERN } from \"./constants\";\n\n/** Options of `formatNfeKey`. */\nexport type FormatNfeKeyOptions = {\n\t/** Whether to left pad the value with zeros up to the 44 digits of a complete access key (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a DF-e (Documento Fiscal eletrônico) access key (chave de acesso) into groups of 4\n * digits separated by spaces, the form every auxiliary document prints it in: the DANFE of the\n * NF-e and the NFC-e, the DACTE of the CT-e, the CT-e OS and the GTV-e, the DAMDFE of the\n * MDF-e, the DABPE of the BP-e, the DANF3E of the NF3e and the DANFE-COM of the NFCom.\n *\n * Like every formatter of this package, the value is read for its digits and grouped as far as\n * they go, so a masked or partial key still being typed is grouped progressively and anything\n * without a digit (an object, `true`, an object with a null prototype) gives `\"\"` instead of\n * throwing. Use `isValidNfeKey` to check a key.\n *\n * With `pad: true` the value is first left padded with zeros to the 44 digits of a complete\n * access key, so it always comes back fully grouped (`\"12345\"` gives\n * `\"0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 2345\"`).\n *\n * The parameter is typed as a string because the 44 digits of an access key are more than a\n * JavaScript number can hold exactly. At runtime a number is read as the string of its digits,\n * like in every formatter of this package.\n *\n * @param {string} value - The access key value to be formatted.\n * @param {FormatNfeKeyOptions} [options] - Optional formatting options.\n * @param {boolean} [options.pad] - Whether to pad the value with leading zeros. Defaults to `false`.\n * @returns {string} The formatted access key, e.g. \"3520 0612 3456 ...\".\n *\n * @example\n * ```typescript\n * formatNfeKey(\"35170458716523000119550010000000121000123458\");\n * // \"3517 0458 7165 2300 0119 5500 1000 0000 1210 0012 3458\"\n *\n * formatNfeKey(\"12345\"); // \"1234 5\" (partial values are grouped as far as they go)\n *\n * formatNfeKey(\"12345\", { pad: true });\n * // \"0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 2345\"\n * ```\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/arquivo-manuais/moc7-visao-geral.pdf\n * Manual de Orientação do Contribuinte (MOC) NF-e, \"chave de acesso\".\n */\nexport const formatNfeKey = (value: string, options?: FormatNfeKeyOptions): string =>\n\tisNullish(value)\n\t\t? \"\"\n\t\t: format({ pad: options?.pad, value: sanitizeToDigits(value), pattern: PATTERN });\n","import { PASSPORT_LENGTH } from \"../_internals/constants/passport\";\nimport { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\n\n/**\n * Removes non-alphanumeric characters from a passport number, uppercases it, and caps it to 8 characters.\n *\n * @param {string} passport - The string containing a passport number.\n * @returns {string} The normalized passport number, or an empty string when the value is not\n * a string (a number is never a passport number: the series is two letters).\n *\n * @example\n * parsePassport(\"Ab123456\") // \"AB123456\"\n * parsePassport(\"Ab-123456\") // \"AB123456\"\n * parsePassport(\"Ab -. 123456\") // \"AB123456\"\n *\n * @see Official: https://www.gov.br/pf/pt-br/assuntos/passaporte\n * @see Official: https://www.gov.br/pf/pt-br/assuntos/passaporte/ajuda/duvidas_/caderneta/caderneta-numero-onde-fica-e\n */\nexport const parsePassport = (passport: string): string =>\n\ttypeof passport === \"string\" ? sanitizeToAlphanumeric(passport).slice(0, PASSPORT_LENGTH) : \"\";\n","import { parsePassport } from \"../parse-passport/parse-passport\";\n\n/**\n * Formats a Brazilian passport number for display.\n * Converts to uppercase and removes all non-alphanumeric characters.\n *\n * @param {string} passport - A Brazilian passport number (any case, possibly with symbols).\n * @returns {string} The uppercased, symbol-free value capped to 8 characters, or an empty\n * string for a non-string input (a number is never a passport number: the series is two letters).\n *\n * @example\n * formatPassport(\"ab123456\") // \"AB123456\"\n * formatPassport(\"AB-123.456\") // \"AB123456\"\n * formatPassport(\"\") // \"\"\n *\n * @see Official: https://www.gov.br/pf/pt-br/assuntos/passaporte\n * @see Official: https://www.gov.br/pf/pt-br/assuntos/passaporte/ajuda/duvidas_/caderneta/caderneta-numero-onde-fica-e\n */\nexport const formatPassport = (passport: string): string => parsePassport(passport);\n","/**\n * Brazilian phone numbering: `55` is the E.164 country code, `00` the international\n * prefix dialed from Brazil, and a national number is DDD + 8 or 9 digits.\n *\n * @see Official: https://www.itu.int/dms_pub/itu-t/opb/sp/T-SP-E.164C-2011-PDF-E.pdf\n */\n\nexport const PHONE_COUNTRY_CODE = \"55\";\n\nconst PHONE_INTERNATIONAL_PREFIX = \"00\";\n\nexport const PHONE_COUNTRY_CODE_PREFIXES = [\n\t`${PHONE_INTERNATIONAL_PREFIX}${PHONE_COUNTRY_CODE}`,\n\tPHONE_COUNTRY_CODE,\n];\n\nexport const PHONE_NATIONAL_MIN_LENGTH = 10;\n\nexport const PHONE_NATIONAL_MAX_LENGTH = 11;\n","/**\n * Brazilian non-geographic and service phone numbering.\n *\n * The Regulamento de Numeração dos Serviços de Telecomunicações (Resolução Anatel nº 749/2022,\n * which replaced the revoked Resolução nº 553/2010) defines two separate families, plus a third\n * one that is only a market convention:\n *\n * - **Código Não Geográfico (CNG)**, art. 18: a 10-digit code in the `300`, `303`, `500`, `800`\n *   or `900` series, dialed with the Prefixo Nacional `0` in front (art. 28), so 11 digits in\n *   total and never a DDD. `800` is toll-free for the caller, `300` and `303` split the cost\n *   (`303` marks subscribers that generate call bursts, such as telemarketing), `500` is for\n *   donation campaigns by non-profits and `900` for paid value-added services. The 10-digit\n *   `0800` + 6 form is extinct: Resolução nº 709/2019 art. 2º ordered every CNG migrated to the\n *   11-digit format. `900` is currently held in reserva técnica (Ato nº 12.712/2024, item 12.1),\n *   and `500` encodes the donation amount in its last two digits (item 10.6), a rule this\n *   library does not enforce, since it validates structure only.\n * - **Código de Acesso a Serviços de Utilidade Pública (SUP)**, art. 13-14: 3 digits, with the\n *   whole `1N₂N₁` range destined to SUP and every other 3-digit series held in reserva técnica.\n *   Individual codes are designated one by one by Anatel Ato, the consolidated table being the\n *   Anexo of Ato nº 43.151/2004, so the codes below are the ones Anatel has designated rather\n *   than the full `100`-`199` range. `112` and `911` are *not* among them: `911` is not even\n *   inside the `1N₂N₁` address space art. 13 destines to SUP, and neither code appears in the\n *   Anexo of Ato nº 43.151/2004 or in Ato nº 12.712/2024. Their routing on Brazilian handsets is\n *   a GSM convention of the handset, not an Anatel designation, so both are rejected here.\n * - **The abbreviated `300X`/`400X` numbers** (`3003-1234`, `4004-1234`) are *not* a regulatory\n *   category at all. They are ordinary 8-digit geographic STFC user numbers (art. 11 assigns\n *   `2`-`6` as the first digit of a fixed-line number) whose 4-digit prefix a carrier licenses\n *   in many DDDs at once and points at a single customer, marketed as \"Número Único\". Anatel\n *   withdrew the 4-digit special service codes instead of allocating them: Resolução nº 86/1998\n *   art. 43 I, in its last wording (Resolução nº 241, de 30 de novembro de 2000, which superseded\n *   the Resolução nº 229/2000 one), ordered the prestadoras de STFC to release \"até 30 de julho de\n *   2001, os códigos de serviços especiais com 4 caracteres que estejam em uso\", and Ato nº\n *   43.151/2004 art. 2º II repeated the order with a 180-day deadline. So the roots below are the\n *   conventional ones the market settled on, not an official allocation.\n *\n * Display formatting is convention too: no Anatel document specifies one. `0800 123 4567` (4-3-4)\n * is the grouping used on gov.br, and `4004-1234` the one carriers print.\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n * Resolução Anatel nº 749/2022, the Regulamento de Numeração in force.\n * @see Official: https://informacoes.anatel.gov.br/legislacao/atos-de-numeracao/2004/1648-ato-43151\n * Ato Anatel nº 43.151/2004, whose Anexo is the consolidated SUP designation table.\n * @see Official: https://informacoes.anatel.gov.br/legislacao/atos-de-numeracao/2140-ato-12712\n * Ato Anatel nº 12.712, de 04/09/2024, art. 1º: the Procedimento para a Atribuição e Designação\n * de Recursos de Numeração (Anexo I), in force since 03/12/2024, whose items 10.6 and 12.1 carry\n * the `500` donation-amount rule and the `900` reserva técnica.\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/1998/336-resolucao-86\n * Resolução Anatel nº 86/1998 (revoked), art. 43 I: the release of the 4-character codes, in the\n * redação dada pela Resolução nº 241, de 30 de novembro de 2000, the last one the page carries.\n */\n\nexport const SERVICE_PHONE_NON_GEOGRAPHIC_PREFIXES: readonly string[] = [\n\t\"0300\",\n\t\"0303\",\n\t\"0500\",\n\t\"0800\",\n\t\"0900\",\n];\n\nexport const SERVICE_PHONE_NON_GEOGRAPHIC_PREFIX_LENGTH = 4;\n\nexport const SERVICE_PHONE_NON_GEOGRAPHIC_LENGTH = 11;\n\nexport const SERVICE_PHONE_ABBREVIATED_ROOTS: readonly string[] = [\"300\", \"400\"];\n\nexport const SERVICE_PHONE_ABBREVIATED_ROOT_LENGTH = 3;\n\nexport const SERVICE_PHONE_ABBREVIATED_LENGTH = 8;\n\nexport const SERVICE_PHONE_UTILITY_CODES: readonly string[] = [\n\t\"100\",\n\t\"102\",\n\t\"103\",\n\t\"104\",\n\t\"105\",\n\t\"106\",\n\t\"111\",\n\t\"115\",\n\t\"116\",\n\t\"117\",\n\t\"118\",\n\t\"121\",\n\t\"123\",\n\t\"125\",\n\t\"127\",\n\t\"128\",\n\t\"129\",\n\t\"130\",\n\t\"132\",\n\t\"133\",\n\t\"134\",\n\t\"135\",\n\t\"136\",\n\t\"138\",\n\t\"141\",\n\t\"142\",\n\t\"145\",\n\t\"146\",\n\t\"147\",\n\t\"148\",\n\t\"150\",\n\t\"151\",\n\t\"152\",\n\t\"153\",\n\t\"154\",\n\t\"155\",\n\t\"156\",\n\t\"157\",\n\t\"158\",\n\t\"159\",\n\t\"160\",\n\t\"161\",\n\t\"162\",\n\t\"163\",\n\t\"164\",\n\t\"165\",\n\t\"166\",\n\t\"167\",\n\t\"168\",\n\t\"174\",\n\t\"180\",\n\t\"181\",\n\t\"185\",\n\t\"188\",\n\t\"190\",\n\t\"191\",\n\t\"192\",\n\t\"193\",\n\t\"194\",\n\t\"195\",\n\t\"196\",\n\t\"197\",\n\t\"198\",\n\t\"199\",\n];\n","import {\n\tPHONE_COUNTRY_CODE_PREFIXES,\n\tPHONE_NATIONAL_MAX_LENGTH,\n\tPHONE_NATIONAL_MIN_LENGTH,\n} from \"../constants/phone\";\nimport { sanitizeToDigits } from \"../sanitize-to-digits/sanitize-to-digits\";\n\nconst isNationalLength = (value: string): boolean =>\n\tvalue.length === PHONE_NATIONAL_MIN_LENGTH || value.length === PHONE_NATIONAL_MAX_LENGTH;\n\n/**\n * Sanitizes a phone value to digits and removes the Brazilian country code when, and only\n * when, what remains is a plausible national number.\n *\n * The country code is dropped if the digits start with `0055` or `55` **and** the remaining\n * digits are exactly 10 or 11 long (DDD plus an 8 or 9 digit subscriber number). Otherwise\n * the digits are returned untouched, which keeps numbers from the `55` area code (RS) intact:\n * `\"55987654321\"` leaves 9 digits behind, so its leading `55` is read as the DDD, not as the\n * country code.\n *\n * @param {string|number} value - The phone value to normalize.\n * @returns {string} The digits of the national number, without the country code.\n *\n * @example\n * ```typescript\n * normalizePhone(\"+55 (11) 98765-4321\"); // \"11987654321\"\n * normalizePhone(\"005511987654321\"); // \"11987654321\"\n * normalizePhone(\"55987654321\"); // \"55987654321\" (DDD 55, not a country code)\n * ```\n */\nexport const normalizePhone = (value: string | number): string => {\n\tconst digits = sanitizeToDigits(value);\n\n\tfor (const prefix of PHONE_COUNTRY_CODE_PREFIXES) {\n\t\tif (!digits.startsWith(prefix)) continue;\n\n\t\tconst national = digits.slice(prefix.length);\n\n\t\tif (isNationalLength(national)) return national;\n\t}\n\n\treturn digits;\n};\n","import {\n\tSERVICE_PHONE_ABBREVIATED_LENGTH,\n\tSERVICE_PHONE_ABBREVIATED_ROOT_LENGTH,\n\tSERVICE_PHONE_ABBREVIATED_ROOTS,\n\tSERVICE_PHONE_NON_GEOGRAPHIC_LENGTH,\n\tSERVICE_PHONE_NON_GEOGRAPHIC_PREFIX_LENGTH,\n\tSERVICE_PHONE_NON_GEOGRAPHIC_PREFIXES,\n\tSERVICE_PHONE_UTILITY_CODES,\n} from \"../_internals/constants/service-phone\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Validates if a phone number is a valid Brazilian service number.\n *\n * Service numbers are dialed without a DDD, so they are validated by prefix and length alone:\n * - the Códigos Não Geográficos `0300`, `0303`, `0500`, `0800` and `0900`, each followed by\n *   7 digits (11 in total, the shorter, extinct `0800` + 6 form is rejected);\n * - the abbreviated `300X` and `400X` numbers, followed by 4 digits, e.g. `3003-1234`. Anatel\n *   withdrew the 4-digit codes rather than allocating them (Resolução nº 86/1998 art. 43 I and\n *   Ato nº 43.151/2004 art. 2º II both ordered them released), so the accepted roots are the\n *   conventional ones the market settled on. Only `300X` and `400X` are recognised: other\n *   \"Número Único\" carrier prefixes in market use, such as `4020` and `4062`, are out of scope\n *   and are rejected;\n * - the 3-digit Códigos de Acesso a Serviços de Utilidade Pública that Anatel has designated,\n *   e.g. `190` and `192`, the consolidated table being the Anexo of Ato nº 43.151/2004.\n *   Undesignated codes in the `1XX` range are rejected, and so are `112` and `911`: Anatel\n *   designates neither, and `911` is not even inside the `1N₂N₁` range Resolução nº 749/2022\n *   art. 13 destines to public utility services. Handsets route both by GSM convention, which\n *   is not a numbering designation.\n *\n * Only the structure is checked: the number does not have to be assigned to anyone, and the\n * `0500` rule that encodes a donation amount in the last two digits is not enforced.\n *\n * @param {string} value - The phone number to validate.\n * @returns {boolean} True if the phone number is a valid service phone, false otherwise.\n *\n * @example\n * ```typescript\n * isValidServicePhone(\"0800 123 4567\"); // true\n * isValidServicePhone(\"4004-1234\"); // true\n * isValidServicePhone(\"190\"); // true\n * isValidServicePhone(\"11987654321\"); // false (geographic number)\n * ```\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n * Resolução Anatel nº 749/2022, arts. 13, 14, 18 and 28.\n * @see Official: https://informacoes.anatel.gov.br/legislacao/atos-de-numeracao/2004/1648-ato-43151\n * Ato Anatel nº 43.151/2004, whose Anexo designates the 3-digit public utility codes.\n */\nexport const isValidServicePhone = (value: string): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (digits.length === SERVICE_PHONE_NON_GEOGRAPHIC_LENGTH) {\n\t\treturn SERVICE_PHONE_NON_GEOGRAPHIC_PREFIXES.includes(\n\t\t\tdigits.slice(0, SERVICE_PHONE_NON_GEOGRAPHIC_PREFIX_LENGTH),\n\t\t);\n\t}\n\n\tif (digits.length === SERVICE_PHONE_ABBREVIATED_LENGTH) {\n\t\treturn SERVICE_PHONE_ABBREVIATED_ROOTS.includes(\n\t\t\tdigits.slice(0, SERVICE_PHONE_ABBREVIATED_ROOT_LENGTH),\n\t\t);\n\t}\n\n\t// Every public utility code is exactly 3 digits, so a value of any other length that reaches\n\t// here matches none of them and is turned down by this very check.\n\treturn SERVICE_PHONE_UTILITY_CODES.includes(digits);\n};\n","import { sanitizeToDigits } from \"../sanitize-to-digits/sanitize-to-digits\";\nimport { toStringSafe } from \"../to-string-safe/to-string-safe\";\n\nconst EXPLICIT_COUNTRY_CODE_REGEX = /^\\s*(?:\\+|00)\\s*55/;\n\n/**\n * Returns the digits of a phone value without an explicit Brazilian country code written as\n * `+55` or `0055`. A bare leading `55` is kept, since it is also the DDD of Santa Maria, RS,\n * and only the national length can tell the two apart (see `normalizePhone`).\n *\n * @param {string|number} value - The phone value, masked or not.\n * @returns {string} The digits, without the explicit `+55`/`0055` prefix.\n *\n * @example\n * ```typescript\n * stripPhoneCountryCode(\"+55 0800 123 4567\"); // \"08001234567\"\n * stripPhoneCountryCode(\"0055 4004-1234\"); // \"40041234\"\n * stripPhoneCountryCode(\"55 3333-4444\"); // \"5533334444\"\n * ```\n */\nexport const stripPhoneCountryCode = (value: string | number): string => {\n\tconst text = toStringSafe(value);\n\n\tconst match = EXPLICIT_COUNTRY_CODE_REGEX.exec(text);\n\n\treturn sanitizeToDigits(match ? text.slice(match[0].length) : text);\n};\n","import { isValidServicePhone } from \"../../is-valid-service-phone/is-valid-service-phone\";\nimport { normalizePhone } from \"../normalize-phone/normalize-phone\";\nimport { stripPhoneCountryCode } from \"../strip-phone-country-code/strip-phone-country-code\";\n\n/**\n * Resolves the digits a service-number check should look at, so that every phone utility reads\n * the same value as a service number.\n *\n * When `value` carries a Brazilian country code under the `parsePhone` rule (`+55`, `0055`, or\n * a bare `55` followed by 10 or 11 digits) and the national number left behind is a service\n * number, that national number is returned. Otherwise the digits after an explicit `+55`/`0055`\n * prefix are returned, which keeps short numbers such as `+55 190` working and leaves a bare\n * `55` in place, since it is also a DDD.\n * @param {string|number} value - The phone number, with or without a country code.\n * @returns {string} The digits to run the service-number check on.\n */\nexport const resolveServicePhoneDigits = (value: string | number): string => {\n\tconst national = normalizePhone(value);\n\n\tif (isValidServicePhone(national)) return national;\n\n\treturn stripPhoneCountryCode(value);\n};\n","export type NationalMask = \"sn\" | \"nanp\";\n\n/**\n * Every value the `PhoneMask` union of `format-phone.ts` allows, as the set `formatPhone` checks\n * `options.mask` against before it uses it; anything else is not a mask and resolves to\n * `DEFAULT_MASK`. Kept here, out of the mutated sources, next to the masks themselves.\n */\nexport const PHONE_MASKS: ReadonlySet<unknown> = new Set([\n\t\"auto\",\n\t\"e164\",\n\t\"international\",\n\t\"nanp\",\n\t\"service\",\n\t\"sn\",\n]);\n\n/** The mask `formatPhone` applies when `options.mask` is missing or is not a `PhoneMask`. */\nexport const DEFAULT_MASK = \"sn\";\n\n/** Length of a bare Brazilian subscriber number, the boundary the `\"auto\"` mask reads. */\nexport const SN_LENGTH = 9;\n\nexport const MASK: Record<NationalMask, string> = {\n\tsn: \"00000-0000\",\n\tnanp: \"(00) 00000-0000\",\n};\n\nexport const NANP_LANDLINE_MASK = \"(00) 0000-0000\";\n\nexport const INTERNATIONAL_PREFIX = \"+55\";\n\nexport const INTERNATIONAL_MASK = {\n\tlandline: \"00 0000-0000\",\n\tmobile: \"00 00000-0000\",\n};\n\nexport const SERVICE_MASK = {\n\tabbreviated: \"0000-0000\",\n\tnonGeographic: \"0000 000 0000\",\n};\n","import { PHONE_NATIONAL_MIN_LENGTH } from \"../_internals/constants/phone\";\nimport {\n\tSERVICE_PHONE_ABBREVIATED_ROOTS,\n\tSERVICE_PHONE_NON_GEOGRAPHIC_PREFIXES,\n} from \"../_internals/constants/service-phone\";\nimport { format } from \"../_internals/format/format\";\nimport { normalizePhone } from \"../_internals/normalize-phone/normalize-phone\";\nimport { resolveServicePhoneDigits } from \"../_internals/resolve-service-phone-digits/resolve-service-phone-digits\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { isValidServicePhone } from \"../is-valid-service-phone/is-valid-service-phone\";\nimport {\n\tDEFAULT_MASK,\n\tINTERNATIONAL_MASK,\n\tINTERNATIONAL_PREFIX,\n\tMASK,\n\tNANP_LANDLINE_MASK,\n\ttype NationalMask,\n\tPHONE_MASKS,\n\tSERVICE_MASK,\n\tSN_LENGTH,\n} from \"./constants\";\n\n/** The masks `formatPhone` can apply. */\nexport type PhoneMask = \"auto\" | \"e164\" | \"international\" | \"service\" | \"sn\" | \"nanp\";\n\n/** Options of `formatPhone`. */\nexport type FormatPhoneOptions = {\n\t/** Which mask to apply, or `\"auto\"` to pick one from the value (default: `\"sn\"`). */\n\tmask?: PhoneMask;\n};\n\nconst matchesPrefix = (digits: string, prefixes: readonly string[]): boolean =>\n\tprefixes.some((prefix) => digits.startsWith(prefix));\n\n/**\n * A value still being typed is formatted as far as it goes: it is shorter than every prefix\n * below, so it matches none of them and is returned as it came, which is exactly what both\n * masks would print for it anyway (their first separator only appears once the value is longer\n * than the prefix that selects the mask).\n * @param {string} digits - The digits of a service number.\n * @returns {string} The digits under the mask of their service number family.\n */\nconst formatService = (digits: string): string => {\n\tif (matchesPrefix(digits, SERVICE_PHONE_NON_GEOGRAPHIC_PREFIXES)) {\n\t\treturn format({ value: digits, pattern: SERVICE_MASK.nonGeographic });\n\t}\n\n\tif (matchesPrefix(digits, SERVICE_PHONE_ABBREVIATED_ROOTS)) {\n\t\treturn format({ value: digits, pattern: SERVICE_MASK.abbreviated });\n\t}\n\n\treturn digits;\n};\n\nconst formatInternational = (national: string): string => {\n\tif (!national) return \"\";\n\n\tconst pattern =\n\t\tnational.length > PHONE_NATIONAL_MIN_LENGTH\n\t\t\t? INTERNATIONAL_MASK.mobile\n\t\t\t: INTERNATIONAL_MASK.landline;\n\n\treturn `${INTERNATIONAL_PREFIX} ${format({ value: national, pattern })}`;\n};\n\nconst formatE164 = (national: string): string =>\n\tnational ? `${INTERNATIONAL_PREFIX}${national}` : \"\";\n\nconst resolveNationalPattern = (digits: string, mask: NationalMask): string =>\n\tmask === \"nanp\" && digits.length === PHONE_NATIONAL_MIN_LENGTH ? NANP_LANDLINE_MASK : MASK[mask];\n\nconst resolveAutoMask = (digits: string, serviceDigits: string): Exclude<PhoneMask, \"auto\"> => {\n\tif (isValidServicePhone(serviceDigits)) return \"service\";\n\n\tif (normalizePhone(digits) !== digits) return \"international\";\n\n\treturn digits.length > SN_LENGTH ? \"nanp\" : \"sn\";\n};\n\nconst isPhoneMask = (value: unknown): value is PhoneMask => PHONE_MASKS.has(value);\n\n/**\n * Formats a phone number according to Brazilian phone number patterns.\n *\n * `options.mask` accepts:\n * - `\"sn\"` (default): Brazilian subscriber number only, e.g. `\"98765-4321\"` (9 digits, no DDD).\n *   With a DDD present in `value`, `\"sn\"` **truncates** it, e.g. `formatPhone(\"11987654321\")`\n *   (with `mask` omitted) returns `\"11987-6543\"`, silently dropping the last digit, because\n *   only the first 9 digits are used and the DDD's 2 digits are consumed as if they were part\n *   of the subscriber number.\n * - `\"nanp\"`: DDD + subscriber number, `\"(00) 00000-0000\"` for the 11 digits of a mobile and\n *   `\"(00) 0000-0000\"` for the 10 digits of a landline. Any other length keeps the 11 digit\n *   grouping, so a value still being typed reads as a partial mobile.\n * - `\"auto\"`: picks a mask from `value`. A leading Brazilian country code (`+55`, `0055` or a\n *   bare `55` followed by 10 or 11 digits) selects `\"international\"`; a service number selects\n *   `\"service\"`; otherwise the digit count decides, `\"nanp\"` when `value` has more digits than\n *   a bare subscriber number (9) and `\"sn\"` when it does not.\n * - `\"e164\"`: the ITU-T E.164 form, `\"+5511987654321\"`, no separators.\n * - `\"international\"`: the way a Brazilian number is printed for foreign callers,\n *   `\"+55 11 98765-4321\"` (or `\"+55 11 3000-0000\"` for a landline).\n * - `\"service\"`: service numbers, `\"0800 123 4567\"` for the Códigos Não Geográficos (`0300`,\n *   `0303`, `0500`, `0800`, `0900`) and `\"4004-1234\"` for the abbreviated `300X`/`400X` ones.\n *   Anatel specifies no display format for either, so these are the conventional groupings.\n *\n * `\"e164\"` and `\"international\"` drop the country code from `value` first, under the rule\n * documented in `parsePhone`. A service number has no E.164 form, it is not reachable from\n * abroad, so both international masks fall back to the `\"service\"` presentation for it, which\n * is how such numbers are printed in Brazil. The service-number check itself reads `value`\n * under the same rule, so `\"5508001234567\"` is the `0800` number, not a `+55 08` one.\n *\n * If `value` includes a DDD (area code), pass `{ mask: \"auto\" }` (or `\"nanp\"`) explicitly,\n * do not rely on the default, since the default `\"sn\"` mask assumes no DDD is present. A `mask`\n * outside the union falls back to the default `\"sn\"` instead of throwing.\n *\n * @param {string|number} value - The phone number to format, either as a string or a number.\n * @param {FormatPhoneOptions} [options] - Optional formatting options.\n * @param {\"auto\"|\"sn\"|\"nanp\"|\"e164\"|\"international\"|\"service\"} options.mask - The mask to apply for formatting the phone number (default: `\"sn\"`).\n * @returns {string} The formatted phone number as a string.\n *\n * @example\n * ```typescript\n * formatPhone(\"987654321\"); // \"98765-4321\" (default \"sn\", no DDD)\n * formatPhone(\"11987654321\", { mask: \"auto\" }); // \"(11) 98765-4321\"\n * formatPhone(\"1130000000\", { mask: \"auto\" }); // \"(11) 3000-0000\" (10 digit landline)\n * formatPhone(\"5511987654321\", { mask: \"auto\" }); // \"+55 11 98765-4321\"\n * formatPhone(\"08001234567\", { mask: \"auto\" }); // \"0800 123 4567\"\n * formatPhone(\"5508001234567\", { mask: \"auto\" }); // \"0800 123 4567\"\n * formatPhone(\"11987654321\", { mask: \"e164\" }); // \"+5511987654321\"\n * formatPhone(\"11987654321\", { mask: \"international\" }); // \"+55 11 98765-4321\"\n * formatPhone(\"40041234\", { mask: \"service\" }); // \"4004-1234\"\n * formatPhone(\"11987654321\"); // \"11987-6543\" (BEWARE: default \"sn\" truncates a DDD-prefixed number)\n * ```\n *\n * @see Official: https://www.itu.int/rec/T-REC-E.164\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n */\nexport const formatPhone = (value: string | number, options?: FormatPhoneOptions): string => {\n\tconst enhancedValue = sanitizeToDigits(value);\n\n\tconst serviceDigits = resolveServicePhoneDigits(value);\n\tconst givenMask = options?.mask;\n\tconst requested: PhoneMask = isPhoneMask(givenMask) ? givenMask : DEFAULT_MASK;\n\tconst mask = requested === \"auto\" ? resolveAutoMask(enhancedValue, serviceDigits) : requested;\n\n\tif (mask === \"service\") return formatService(serviceDigits);\n\n\tif (mask === \"e164\" || mask === \"international\") {\n\t\tif (isValidServicePhone(serviceDigits)) return formatService(serviceDigits);\n\n\t\tconst national = normalizePhone(enhancedValue);\n\n\t\treturn mask === \"e164\" ? formatE164(national) : formatInternational(national);\n\t}\n\n\treturn format({\n\t\tvalue: enhancedValue,\n\t\tpattern: resolveNationalPattern(enhancedValue, mask),\n\t});\n};\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatPis`. */\nexport type FormatPisOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a PIS (Programa de Integração Social) number according to the specified pattern.\n *\n * @param {string|number} value - The PIS number to be formatted. It can be a string or a number.\n * @param {FormatPisOptions} [options] - Optional formatting options.\n * @param {boolean} options.pad - If true, pads the value with leading zeros if necessary.\n * @returns {string} The formatted PIS number as a string.\n *\n * @example\n * ```typescript\n * formatPis(\"12345678901\"); // \"123.45678.90-1\"\n * formatPis(12345678901); // \"123.45678.90-1\"\n * formatPis(\"123456789\", { pad: true }); // \"001.23456.78-9\"\n * ```\n *\n * @see Official: https://www.gov.br/inss/pt-br/direitos-e-deveres/inscricao-e-contribuicao/inscricao\n * @see Official: https://www.gov.br/esocial/pt-br/documentacao-tecnica/manuais/mos-manual-de-orientacao-do-esocial-vs-2-4.pdf\n * @see Official: https://www.sirc.gov.br/wp-content/uploads/manual_sirc_recomendacoes_tecnicas_v7.pdf\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/pis.py\n */\nexport const formatPis = (value: string | number, options?: FormatPisOptions): string =>\n\tisNullish(value)\n\t\t? \"\"\n\t\t: format({\n\t\t\t\tpad: options?.pad,\n\t\t\t\tvalue: sanitizeToDigits(value),\n\t\t\t\tpattern: \"000.00000.00-0\",\n\t\t\t});\n","import { format } from \"../_internals/format/format\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** Options of `formatProcessoJuridico`. */\nexport type FormatProcessoJuridicoOptions = {\n\t/** Whether to left pad the value with zeros up to the number of slots in the pattern (default: `false`). */\n\tpad?: boolean;\n};\n\n/**\n * Formats a legal process number (processo jurídico) according to a specific pattern.\n *\n * @param {string|number} value - The legal process number to be formatted. It can be a string or a number.\n * @param {FormatProcessoJuridicoOptions} [options] - Optional formatting options.\n * @param {boolean} options.pad - If true, the value will be padded with leading zeros if necessary.\n * @returns {string} The formatted legal process number as a string.\n *\n * @example\n * ```typescript\n * formatProcessoJuridico(\"00020802520125150049\"); // \"0002080-25.2012.5.15.0049\"\n * ```\n *\n * Resolução CNJ nº 65/2008 defines this Número Único de Processo layout and its check digits.\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/119\n */\nexport const formatProcessoJuridico = (\n\tvalue: string | number,\n\toptions?: FormatProcessoJuridicoOptions,\n): string =>\n\tisNullish(value)\n\t\t? \"\"\n\t\t: format({\n\t\t\t\tpad: options?.pad,\n\t\t\t\tvalue: sanitizeToDigits(value),\n\t\t\t\tpattern: \"0000000-00.0000.0.00.0000\",\n\t\t\t});\n","/**\n * Federative union codes (\"01\" for São Paulo and \"02\" for Minas Gerais) whose\n * voter ids may carry a 9-digit sequential number (13 digits total) instead\n * of the usual 8-digit sequential number (12 digits total).\n */\nexport const NINE_DIGIT_FEDERATIVE_UNION_CODES: readonly string[] = [\"01\", \"02\"];\n","import { NINE_DIGIT_FEDERATIVE_UNION_CODES } from \"../_internals/constants/voter-id\";\nimport { format } from \"../_internals/format/format\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nconst PATTERN = \"0000 0000 00 00\";\n\nconst EXTENDED_PATTERN = \"0000 0000 0 00 00\";\n\nconst LENGTH = 12;\n\n/**\n * Formats a Brazilian voter id (título de eleitor) for display.\n *\n * Uses the 12-digit grouping \"0000 0000 00 00\" by default. The 13-digit grouping\n * \"0000 0000 0 00 00\" is used only when the sanitized value has more than 12 digits and its\n * federative union code (the 10th and 11th digits) is \"01\" (São Paulo) or \"02\" (Minas Gerais),\n * the two states whose voter ids may carry a 9-digit sequential number.\n *\n * @param {string|number} value - The voter id value to be formatted.\n * @returns {string} The formatted voter id string.\n *\n * @example\n * ```typescript\n * formatVoterId(\"123456780124\"); // \"1234 5678 01 24\"\n * formatVoterId(\"1234567880191\"); // \"1234 5678 8 01 91\"\n * ```\n *\n * The 13-digit São Paulo/Minas Gerais grouping is brutils parity, not published by the TSE. A\n * 14-or-more-digit input is read the same way as a 13-digit one: it is grouped as a São Paulo or\n * Minas Gerais id whenever its 10th and 11th digits are \"01\"/\"02\". Both patterns have a fixed\n * number of slots, 12 and 13, so anything past the last slot is dropped:\n * `formatVoterId(\"12345678801912\")` returns \"1234 5678 8 01 91\", the same string the 13-digit\n * value \"1234567880191\" produces.\n *\n * The TSE resolution page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser.\n *\n * @see Official: https://www.tse.jus.br/legislacao/compilada/res/2021/resolucao-no-23-659-de-26-de-outubro-de-2021\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/voter_id.py\n */\nexport const formatVoterId = (value: string | number): string => {\n\tconst digits = sanitizeToDigits(value);\n\tconst federativeUnion = digits.slice(9, 11);\n\tconst isExtended =\n\t\tdigits.length > LENGTH && NINE_DIGIT_FEDERATIVE_UNION_CODES.includes(federativeUnion);\n\tconst pattern = isExtended ? EXTENDED_PATTERN : PATTERN;\n\n\treturn format({ value: digits, pattern });\n};\n","type Mod11Variant = \"boleto\" | \"arrecadacao\" | \"bank\";\n\nexport type Mod11Options = {\n\t/** Which modulo 11 rule to apply (default: `\"boleto\"`). */\n\tvariant?: Mod11Variant;\n\t/** Highest weight of the cycling weight sequence (default: 9). */\n\tmaxWeight?: number;\n};\n\nconst REMAINDER_OVERRIDES: Record<Mod11Variant, Record<number, number>> = {\n\tboleto: { 0: 1, 1: 1 },\n\tarrecadacao: { 0: 0, 1: 0, 10: 1 },\n\tbank: { 0: 0 },\n};\n\nconst DEFAULT_MAX_WEIGHT = 9;\n\n/**\n * Calculates a modulus 11 check digit for a given string of digits.\n *\n * @param {string} value - The digits to calculate the check digit for.\n * @param {Mod11Options} [options] - Optional options.\n * @param {Mod11Variant} [options.variant] - The remainder mapping to apply. Defaults to `\"boleto\"`.\n * @param {number} [options.maxWeight] - The highest multiplier before wrapping back to 2. Defaults to 9.\n * @returns {number} The calculated check digit: 1-9 for `\"boleto\"`, 0-9 for `\"arrecadacao\"` and\n * 0-10 for `\"bank\"` (where 10 is the bank specific exceptional digit).\n *\n * @example\n * ```typescript\n * mod11(\"0019758600001026560000001149718606852452211\"); // 6 (DV geral of a boleto barcode)\n * mod11(\"01230067896\", { variant: \"arrecadacao\" }); // 0\n * mod11(\"00210169\", { variant: \"bank\" }); // 6 (Banco do Brasil, conta 00210169-6)\n * mod11(\"0238069\", { variant: \"bank\", maxWeight: 7 }); // 2 (Bradesco, conta 0238069-2)\n * ```\n */\nexport const mod11 = (value: string, options?: Mod11Options): number => {\n\tconst maxWeight = options?.maxWeight ?? DEFAULT_MAX_WEIGHT;\n\tconst overrides = REMAINDER_OVERRIDES[options?.variant ?? \"boleto\"];\n\n\tlet weight = 2;\n\tlet sum = 0;\n\n\tfor (let i = value.length - 1; i >= 0; i--) {\n\t\tsum += (value.charCodeAt(i) - 48) * weight;\n\t\tweight = weight < maxWeight ? weight + 1 : 2;\n\t}\n\n\tconst remainder = sum % 11;\n\treturn remainder in overrides ? overrides[remainder] : 11 - remainder;\n};\n","import { ARRECADACAO_PRODUCT, ARRECADACAO_SEGMENTS } from \"../_internals/constants/arrecadacao\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { mod10 } from \"../_internals/mod10/mod10\";\nimport { mod11 } from \"../_internals/mod11/mod11\";\n\n/** The parameters of `generateBoleto`. */\nexport type GenerateBoletoParams = {\n\t/** Which kind of bank slip to generate (default: `\"bancario\"`). */\n\ttype?: \"bancario\" | \"arrecadacao\";\n};\n\nconst ARRECADACAO_VALUE_IDENTIFIERS = {\n\tmod10: { effective: \"6\", reference: \"7\" },\n\tmod11: { effective: \"8\", reference: \"9\" },\n};\n\nconst generateBancario = (): string => {\n\tconst p1Base = generateRandomNumber(9);\n\tconst p2Base = generateRandomNumber(10);\n\tconst p3Base = generateRandomNumber(10);\n\tconst lastDigits = generateRandomNumber(15);\n\n\tconst line =\n\t\tp1Base +\n\t\tmod10(p1Base).toString() +\n\t\tp2Base +\n\t\tmod10(p2Base).toString() +\n\t\tp3Base +\n\t\tmod10(p3Base).toString() +\n\t\tlastDigits;\n\n\tconst boletoWithoutCheck =\n\t\tline.slice(0, 4) +\n\t\tline.slice(33, 47) +\n\t\tline.slice(4, 9) +\n\t\tline.slice(10, 20) +\n\t\tline.slice(21, 31);\n\n\tconst mainCheck = mod11(boletoWithoutCheck);\n\n\treturn line.slice(0, 32) + mainCheck.toString() + line.slice(33);\n};\n\nconst generateArrecadacao = (): string => {\n\tconst segment = ARRECADACAO_SEGMENTS[Math.floor(Math.random() * ARRECADACAO_SEGMENTS.length)];\n\tconst useMod11 = Math.random() < 0.5;\n\tconst hasEffectiveValue = Math.random() < 0.5;\n\tconst checkDigit = useMod11\n\t\t? (value: string): number => mod11(value, { variant: \"arrecadacao\" })\n\t\t: mod10;\n\tconst identifier =\n\t\tARRECADACAO_VALUE_IDENTIFIERS[useMod11 ? \"mod11\" : \"mod10\"][\n\t\t\thasEffectiveValue ? \"effective\" : \"reference\"\n\t\t];\n\n\tconst body = generateRandomNumber(40);\n\tconst head = `${ARRECADACAO_PRODUCT}${segment}${identifier}`;\n\tconst barcode = head + checkDigit(head + body) + body;\n\n\tlet line = \"\";\n\n\tfor (let block = 0; block < 4; block++) {\n\t\tconst value = barcode.slice(block * 11, block * 11 + 11);\n\t\tline += value + checkDigit(value);\n\t}\n\n\treturn line;\n};\n\n/**\n * Generates a valid random Brazilian bank slip (boleto) number.\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * An arrecadação slip draws its segment from 1 to 7 (segment 9 is the banks' own) and its value\n * identifier from all four values, `6` and `8` for an effective amount and `7` and `9` for a\n * reference quantity, so both `hasEffectiveValue` branches of `getBoletoInfo` are reachable.\n *\n * @param {GenerateBoletoParams} [params] - Optional parameters.\n * @param {string} params.type - `\"bancario\"` (default) or `\"arrecadacao\"`.\n * @returns {string} A valid 47-digit boleto string without formatting, or a 48-digit one for arrecadação.\n *\n * @example\n * ```typescript\n * generateBoleto(); // \"00190000090114971860168524522114675860000102656\"\n * generateBoleto({ type: \"arrecadacao\" }); // \"846100000005246100291102005460339004695895061080\"\n * ```\n *\n * Carta-Circular BCB nº 2.926/2000 specifies the linha digitável fields and the módulo 11\n * check digit (using 1 for remainders 0, 10 and 1) of the 47 digit cobrança bancária slip,\n * including the position of the fator de vencimento field. The FEBRABAN \"Layout Padrão de\n * Arrecadação/Recebimento com Utilização do Código de Barras\" and the FEBRABAN layout index\n * cover the arrecadação slip.\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/c_circ/2000/pdf/c_circ_2926_v1_O.pdf\n * @see Official: https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%208%20-%2011_05_2026.pdf\n * @see Official: https://portal.febraban.org.br/pagina/3425/33/pt-br/layout-febraban\n */\nexport const generateBoleto = (params?: GenerateBoletoParams): string =>\n\tparams?.type === \"arrecadacao\" ? generateArrecadacao() : generateBancario();\n","import { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\n\n/**\n * Generates a random Brazilian CEP (postal code).\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n * A CEP has no check digit, so every 8 digit string is structurally valid.\n *\n * @returns {string} A random 8 digit CEP without formatting.\n *\n * @example\n * ```typescript\n * generateCep(); // \"01310930\"\n * ```\n *\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/tudo-sobre-cep\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/guia-de-enderecamento/guia-de-enderecamento\n */\nexport const generateCep = (): string => generateRandomNumber(8);\n","export type CnhFirstVerifier = {\n\t/** The first check digit, 0 to 9. */\n\tfirstVerifier: number;\n\t/** The correction to apply to the second verifier, 0 or 2. */\n\tdecrement: number;\n};\n\n/**\n * Calculates the first verification digit of a Brazilian CNH (Carteira Nacional de Habilitação)\n * from its 9-digit base number.\n *\n * @param {string} base - The 9-digit CNH base number.\n * @returns {CnhFirstVerifier} The first verification digit and the decrement that must be\n * applied when calculating the second verification digit.\n *\n * @example\n * ```typescript\n * calculateCnhFirstVerifier(\"000000093\"); // { firstVerifier: 0, decrement: 2 }\n * ```\n */\nexport const calculateCnhFirstVerifier = (base: string): CnhFirstVerifier => {\n\t// The weighted sum is written out rather than delegated to the shared `generateChecksum`: its\n\t// sanitizer chain costs `isValidCnh` and `generateCnh` around 240 B of bundle each.\n\tlet sum = 0;\n\n\tfor (let i = 0; i < 9; i++) {\n\t\tsum += (base.charCodeAt(i) - 48) * (9 - i);\n\t}\n\n\tconst remainder = sum % 11;\n\n\tif (remainder >= 10) return { firstVerifier: 0, decrement: 2 };\n\n\treturn { firstVerifier: remainder, decrement: 0 };\n};\n","export type CalculateCnhSecondVerifierParams = {\n\t/** The 9 digit CNH registry number. */\n\tbase: string;\n\t/** The correction the first verifier reported, 0 or 2. */\n\tdecrement: number;\n};\n\n/**\n * Calculates the second verification digit of a Brazilian CNH (Carteira Nacional de Habilitação)\n * from its 9-digit base number and the decrement produced by `calculateCnhFirstVerifier`.\n *\n * @param {CalculateCnhSecondVerifierParams} params - The calculation parameters.\n * @param {string} params.base - The 9-digit CNH base number.\n * @param {number} params.decrement - The decrement calculated alongside the first verification digit.\n * @returns {number} The calculated second verification digit (0-9).\n *\n * @example\n * ```typescript\n * calculateCnhSecondVerifier({ base: \"000000093\", decrement: 2 }); // 9\n * ```\n */\nexport const calculateCnhSecondVerifier = ({\n\tbase,\n\tdecrement,\n}: CalculateCnhSecondVerifierParams): number => {\n\t// Written out rather than delegated to the shared `generateChecksum`, for the reason given in\n\t// `calculateCnhFirstVerifier`.\n\tlet sum = 0;\n\n\tfor (let i = 0; i < 9; i++) {\n\t\tsum += (base.charCodeAt(i) - 48) * (i + 1);\n\t}\n\n\tlet secondVerifier = ((sum % 11) - decrement + 11) % 11;\n\n\tif (secondVerifier >= 10) secondVerifier = 0;\n\n\treturn secondVerifier;\n};\n","import { calculateCnhFirstVerifier } from \"../_internals/calculate-cnh-first-verifier/calculate-cnh-first-verifier\";\nimport { calculateCnhSecondVerifier } from \"../_internals/calculate-cnh-second-verifier/calculate-cnh-second-verifier\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\n\n/**\n * Generates a valid random CNH (Carteira Nacional de Habilitação, the Brazilian driver's license number).\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * @returns {string} A valid 11-digit CNH string without formatting.\n *\n * @example\n * ```typescript\n * generateCnh(); // \"00000000119\"\n * ```\n *\n * Resolução CONTRAN nº 886/2021, art. 4º I, defines the CNH registry number as 9 characters plus\n * 2 security check digits, but no official text publishes the check-digit weights; the algorithm\n * below follows the community reference cited as `Based on:`.\n *\n * Art. 4º § 1º of the same resolution states that the check digit is computed by the DSR system\n * with a \"módulo 11\" routine in which a remainder of 0 or 1 yields the digit 0. That rounding is\n * not the rule the registry numbers use in practice: the first verifier keeps the remainder\n * itself, so a remainder of 1 yields the digit 1 (which is why `\"00000000119\"` is a valid CNH).\n * The implementation follows the cited `Based on:` reference, not § 1º.\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/Resolucao8862021F.pdf\n * @see Based on: https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-cnh/\n */\nexport const generateCnh = (): string => {\n\tlet base = generateRandomNumber(9);\n\n\twhile (isRepeatedDigits(base)) {\n\t\tbase = generateRandomNumber(9);\n\t}\n\n\tconst { firstVerifier, decrement } = calculateCnhFirstVerifier(base);\n\tconst secondVerifier = calculateCnhSecondVerifier({ base, decrement });\n\n\treturn `${base}${firstVerifier}${secondVerifier}`;\n};\n","/**\n * Tabela de Natureza Jurídica 2021 (IBGE/CONCLA), indexed by the four digit code.\n *\n * Generated by `node ./scripts/legal-natures.ts`. Do not edit by hand.\n *\n * 92 of the 100 entries are the official codes from the CONCLA 2021 table; the other\n * 8 (2076, 2100, 2208, 3042, 3050, 3093, 3123, 5002) are legacy codes a past revision\n * retired, mapped to the code they correspond to today by `LEGACY_LEGAL_NATURE` and still\n * accepted because they keep appearing in records filed while they were in force. Separately, and\n * unrelated to those legacy codes, the descriptions of the following official codes fix an accent\n * typo of the PDF: 3298.\n *\n * The CONCLA table page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser; the detailed structure PDF next to it is served\n * normally.\n *\n * @see Official: https://concla.ibge.gov.br/estrutura/natjur-estrutura/natureza-juridica-2021\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/CONCLA-TNJ2021-EstruturaDetalhada.pdf\n */\nexport const LEGAL_NATURE: Record<string, string> = {\n\t\"1015\": \"Órgão Público do Poder Executivo Federal\",\n\t\"1023\": \"Órgão Público do Poder Executivo Estadual ou do Distrito Federal\",\n\t\"1031\": \"Órgão Público do Poder Executivo Municipal\",\n\t\"1040\": \"Órgão Público do Poder Legislativo Federal\",\n\t\"1058\": \"Órgão Público do Poder Legislativo Estadual ou do Distrito Federal\",\n\t\"1066\": \"Órgão Público do Poder Legislativo Municipal\",\n\t\"1074\": \"Órgão Público do Poder Judiciário Federal\",\n\t\"1082\": \"Órgão Público do Poder Judiciário Estadual\",\n\t\"1104\": \"Autarquia Federal\",\n\t\"1112\": \"Autarquia Estadual ou do Distrito Federal\",\n\t\"1120\": \"Autarquia Municipal\",\n\t\"1139\": \"Fundação Pública de Direito Público Federal\",\n\t\"1147\": \"Fundação Pública de Direito Público Estadual ou do Distrito Federal\",\n\t\"1155\": \"Fundação Pública de Direito Público Municipal\",\n\t\"1163\": \"Órgão Público Autônomo Federal\",\n\t\"1171\": \"Órgão Público Autônomo Estadual ou do Distrito Federal\",\n\t\"1180\": \"Órgão Público Autônomo Municipal\",\n\t\"1198\": \"Comissão Polinacional\",\n\t\"1210\": \"Consórcio Público de Direito Público (Associação Pública)\",\n\t\"1228\": \"Consórcio Público de Direito Privado\",\n\t\"1236\": \"Estado ou Distrito Federal\",\n\t\"1244\": \"Município\",\n\t\"1252\": \"Fundação Pública de Direito Privado Federal\",\n\t\"1260\": \"Fundação Pública de Direito Privado Estadual ou do Distrito Federal\",\n\t\"1279\": \"Fundação Pública de Direito Privado Municipal\",\n\t\"1287\": \"Fundo Público da Administração Indireta Federal\",\n\t\"1295\": \"Fundo Público da Administração Indireta Estadual ou do Distrito Federal\",\n\t\"1309\": \"Fundo Público da Administração Indireta Municipal\",\n\t\"1317\": \"Fundo Público da Administração Direta Federal\",\n\t\"1325\": \"Fundo Público da Administração Direta Estadual ou do Distrito Federal\",\n\t\"1333\": \"Fundo Público da Administração Direta Municipal\",\n\t\"1341\": \"União\",\n\t\"2011\": \"Empresa Pública\",\n\t\"2038\": \"Sociedade de Economia Mista\",\n\t\"2046\": \"Sociedade Anônima Aberta\",\n\t\"2054\": \"Sociedade Anônima Fechada\",\n\t\"2062\": \"Sociedade Empresária Limitada\",\n\t\"2070\": \"Sociedade Empresária em Nome Coletivo\",\n\t\"2089\": \"Sociedade Empresária em Comandita Simples\",\n\t\"2097\": \"Sociedade Empresária em Comandita por Ações\",\n\t\"2127\": \"Sociedade em Conta de Participação\",\n\t\"2135\": \"Empresário (Individual)\",\n\t\"2143\": \"Cooperativa\",\n\t\"2151\": \"Consórcio de Sociedades\",\n\t\"2160\": \"Grupo de Sociedades\",\n\t\"2178\": \"Estabelecimento, no Brasil, de Sociedade Estrangeira\",\n\t\"2194\": \"Estabelecimento, no Brasil, de Empresa Binacional Argentino-Brasileira\",\n\t\"2216\": \"Empresa Domiciliada no Exterior\",\n\t\"2224\": \"Clube/Fundo de Investimento\",\n\t\"2232\": \"Sociedade Simples Pura\",\n\t\"2240\": \"Sociedade Simples Limitada\",\n\t\"2259\": \"Sociedade Simples em Nome Coletivo\",\n\t\"2267\": \"Sociedade Simples em Comandita Simples\",\n\t\"2275\": \"Empresa Binacional\",\n\t\"2283\": \"Consórcio de Empregadores\",\n\t\"2291\": \"Consórcio Simples\",\n\t\"2305\": \"Empresa Individual de Responsabilidade Limitada (de Natureza Empresária)\",\n\t\"2313\": \"Empresa Individual de Responsabilidade Limitada (de Natureza Simples)\",\n\t\"2321\": \"Sociedade Unipessoal de Advogados\",\n\t\"2330\": \"Cooperativas de Consumo\",\n\t\"2348\": \"Empresa Simples de Inovação - Inova Simples\",\n\t\"2356\": \"Investidor Não Residente\",\n\t\"3034\": \"Serviço Notarial e Registral (Cartório)\",\n\t\"3069\": \"Fundação Privada\",\n\t\"3077\": \"Serviço Social Autônomo\",\n\t\"3085\": \"Condomínio Edilício\",\n\t\"3107\": \"Comissão de Conciliação Prévia\",\n\t\"3115\": \"Entidade de Mediação e Arbitragem\",\n\t\"3131\": \"Entidade Sindical\",\n\t\"3204\": \"Estabelecimento, no Brasil, de Fundação ou Associação Estrangeiras\",\n\t\"3212\": \"Fundação ou Associação Domiciliada no Exterior\",\n\t\"3220\": \"Organização Religiosa\",\n\t\"3239\": \"Comunidade Indígena\",\n\t\"3247\": \"Fundo Privado\",\n\t\"3255\": \"Órgão de Direção Nacional de Partido Político\",\n\t\"3263\": \"Órgão de Direção Regional de Partido Político\",\n\t\"3271\": \"Órgão de Direção Local de Partido Político\",\n\t\"3280\": \"Comitê Financeiro de Partido Político\",\n\t\"3298\": \"Frente Plebiscitária ou Referendária\",\n\t\"3301\": \"Organização Social (OS)\",\n\t\"3310\": \"Demais Condomínios\",\n\t\"3328\": \"Plano de Benefícios de Previdência Complementar Fechada\",\n\t\"3999\": \"Associação Privada\",\n\t\"4014\": \"Empresa Individual Imobiliária\",\n\t\"4022\": \"Segurado Especial\",\n\t\"4081\": \"Contribuinte individual\",\n\t\"4090\": \"Candidato a Cargo Político Eletivo\",\n\t\"4111\": \"Leiloeiro\",\n\t\"4120\": \"Produtor Rural (Pessoa Física)\",\n\t\"5010\": \"Organização Internacional\",\n\t\"5029\": \"Representação Diplomática Estrangeira\",\n\t\"5037\": \"Outras Instituições Extraterritoriais\",\n\n\t\"2076\": \"Sociedade Empresária em Nome Coletivo\",\n\t\"2100\": \"Sociedade Mercantil de Capital e Indústria (extinta pelo NCC/2002)\",\n\t\"2208\": \"Entidade Binacional Itaipu\",\n\t\"3042\": \"Organização Social\",\n\t\"3050\": \"Organização da Sociedade Civil de Interesse Público (Oscip)\",\n\t\"3093\": \"Unidade Executora (Programa Dinheiro Direto na Escola)\",\n\t\"3123\": \"Partido Político\",\n\t\"5002\": \"Organização Internacional e Outras Instituições Extraterritoriais\",\n};\n\n/**\n * The code each legacy legal nature code corresponds to today, or `null` when the revision that\n * retired it published no successor, indexed by the legacy code.\n *\n * Generated by `node ./scripts/legal-natures.ts`. Do not edit by hand.\n *\n * The mapping is the one the CONCLA correspondence spreadsheets publish. 2076 is the 2003 spelling\n * of the code the 2003.1 revision renumbered to 2070, under the same denomination; 2208 (Empresa\n * Binacional Itaipu) became 2275 (Empresa Binacional); 3042 (Organização Social) became 3069\n * (Fundação Privada), and the 2014 revision later created 3301 (Organização Social (OS)), where an\n * entity qualified as one is classified today; 3093 became 3999; and 5002 was opened into 5010,\n * 5029 and 5037, with 5010 published as its correspondence. The other three have none: 2100 is\n * marked \"categoria extinta\", 3050 (Oscip) has an empty correspondence because an Oscip is\n * classified by the form it takes (3999 or 3069), and 3123 (Partido Político), still in the 2009\n * table, was dropped by the 2014 one, which split it into 3255, 3263 and 3271 without publishing a\n * correspondence.\n *\n * The CONCLA pages sit behind a bot filter and answer HTTP 403 to every non-browser client, so\n * they have to be opened in a browser; the spreadsheets next to them are served normally.\n *\n * @see Official: https://concla.ibge.gov.br/classificacoes/correspondencias/natureza-juridica.html\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/correspTNJ2003(1)-2009.xls\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/correspTNJ1995-2002-2003.xls\n */\nexport const LEGACY_LEGAL_NATURE: Record<string, string | null> = {\n\t\"2076\": \"2070\",\n\t\"2100\": null,\n\t\"2208\": \"2275\",\n\t\"3042\": \"3069\",\n\t\"3050\": null,\n\t\"3093\": \"3999\",\n\t\"3123\": null,\n\t\"5002\": \"5010\",\n};\n","import { LEGACY_LEGAL_NATURE } from \"../../is-valid-legal-nature/constants\";\n\n/**\n * Checks whether a legal nature (natureza jurídica) code is one a past revision of the CONCLA\n * table retired: still accepted by `isValidLegalNature`, but left out of the listings and never\n * generated.\n *\n * @param {string} code - The 4 digit legal nature code.\n * @returns {boolean} True when the code is a retired one.\n *\n * @example\n * ```typescript\n * isLegacyLegalNature(\"2076\"); // true\n * isLegacyLegalNature(\"2062\"); // false\n * ```\n */\nexport const isLegacyLegalNature = (code: string): boolean =>\n\tObject.hasOwn(LEGACY_LEGAL_NATURE, code);\n","import { isLegacyLegalNature } from \"../_internals/is-legacy-legal-nature/is-legacy-legal-nature\";\nimport { LEGAL_NATURE } from \"../is-valid-legal-nature/constants\";\n\n/**\n * Generates a random valid Brazilian legal nature (natureza jurídica) code.\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * Only the 92 codes of the Tabela de Natureza Jurídica 2021 are drawn: a code a past revision of\n * the table retired stays valid for `isValidLegalNature`, but is never generated.\n *\n * @returns {string} One of the legal nature codes in force published by the CONCLA.\n *\n * @example\n * ```typescript\n * generateLegalNature(); // \"2062\"\n * ```\n *\n * The CONCLA table page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser; the detailed structure PDF next to it is served\n * normally.\n *\n * @see Official: https://concla.ibge.gov.br/estrutura/natjur-estrutura/natureza-juridica-2021\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/CONCLA-TNJ2021-EstruturaDetalhada.pdf\n */\nexport const generateLegalNature = (): string => {\n\tconst legalNatureCodes = Object.keys(LEGAL_NATURE).filter((code) => !isLegacyLegalNature(code));\n\n\treturn legalNatureCodes[Math.floor(Math.random() * legalNatureCodes.length)];\n};\n","import { type LicensePlateFormat } from \"../get-format-license-plate/get-format-license-plate\";\n\nconst LETTERS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\nconst DEFAULT_FORMAT = \"LLLNLNN\";\n\n/** The license plate formats `generateLicensePlate` can generate. */\nexport type GenerateLicensePlateFormat = LicensePlateFormat;\n\nconst randomLetter = (): string => LETTERS.charAt(Math.floor(Math.random() * LETTERS.length));\n\nconst randomDigit = (): string => Math.floor(Math.random() * 10).toString();\n\n/**\n * Generates a valid random Brazilian license plate (placa de carro ou moto).\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for\n * security purposes.\n *\n * @param {GenerateLicensePlateFormat} [format] - The format to generate. Defaults to the\n * Mercosul format (\"LLLNLNN\"), the single sequence Resolução CONTRAN nº 969/2022 defines for\n * every vehicle, motorcycles included.\n * @returns {string} A randomly generated license plate matching the requested format.\n *\n * @example\n * ```typescript\n * generateLicensePlate(); // \"ABC1D23\" (Mercosul)\n * generateLicensePlate(\"LLLNNNN\"); // \"ABC1234\" (old Brazilian format)\n * ```\n *\n * The resolution's own text does not spell the sequence out: art. 2º § 2º delegates the\n * technical specification to Anexo I, whose item 1.2 reads \"O padrão de estampagem é composto de\n * 7 (sete) caracteres alfanuméricos, em alto relevo, na sequência LLLNLNN\" and whose item 1.2.1\n * reads `L` as a letter and `N` as a numeral. The annexes are published in a PDF of their own,\n * cited below alongside the resolution's text.\n *\n * A `format` outside the two supported literals falls back to the default, like every other\n * generator of this package does with an option it does not know, so the result is always a plate\n * `isValidLicensePlate` accepts. (2.3.0 used an unknown string verbatim, so\n * `generateLicensePlate(\"LLLNNLN\")` produced the withdrawn motorcycle sequence and\n * `generateLicensePlate(\"bogus\")` five digits; neither is a plate.)\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022.pdf\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022anexos.pdf\n */\nexport const generateLicensePlate = (\n\tformat: GenerateLicensePlateFormat = DEFAULT_FORMAT,\n): string => {\n\t// Only the old sequence needs naming: the Mercosul one is the default, and anything else falls\n\t// back to it, as every generator of this package does with an option it does not know.\n\tconst safeFormat = format === \"LLLNNNN\" ? format : DEFAULT_FORMAT;\n\n\tlet plate = \"\";\n\n\tfor (let i = 0; i < safeFormat.length; i++) {\n\t\tplate += safeFormat.charAt(i) === \"L\" ? randomLetter() : randomDigit();\n\t}\n\n\treturn plate;\n};\n","import { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { ALPHABET_LENGTH, CHAR_CODE_A, DIGITS_LENGTH, LETTERS_LENGTH } from \"./constants\";\n\n/**\n * Generates a random valid Brazilian passport number.\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * @returns {string} A random valid passport number string (e.g. \"RY393097\").\n *\n * @example\n * generatePassport() // \"RY393097\"\n * generatePassport() // \"ZS840088\"\n *\n * @see Official: https://www.gov.br/pf/pt-br/assuntos/passaporte\n * @see Official: https://www.gov.br/pf/pt-br/assuntos/passaporte/ajuda/duvidas_/caderneta/caderneta-numero-onde-fica-e\n */\nexport const generatePassport = (): string => {\n\tconst letters = Array.from({ length: LETTERS_LENGTH }, () =>\n\t\tString.fromCharCode(CHAR_CODE_A + Math.floor(Math.random() * ALPHABET_LENGTH)),\n\t).join(\"\");\n\n\tconst digits = generateRandomNumber(DIGITS_LENGTH);\n\n\treturn `${letters}${digits}`;\n};\n","import { type StateCode } from \"./states\";\n\n/**\n * Brazilian DDD (area code) data under the Plano Geral de Numeração. `VALID_AREA_CODES` is kept\n * as a bare array of the 67 valid codes for its existing importers; `AREA_CODE_STATES` is a\n * second, richer literal mapping every one of those same 67 codes to the state (UF) that holds\n * all but a handful of its municipalities, and `AREA_CODE_SECONDARY_STATES` carries the other\n * states the four cross-border codes also serve.\n *\n * Resolução Anatel nº 749/2022, art. 15, defines the Código Nacional (area code). The Plano\n * Geral de Códigos Nacionais that art. 15 referred to was revoked by Resolução Anatel nº\n * 755/2022, and the allocation in force is the one Despacho Decisório nº 17/2025/PRRE/SPR\n * approved; Anatel publishes it on the gov.br page below, which lists the codes actually\n * allocated and links, under \"POR MUNICÍPIO\", to the Anexo of Resolução Anatel nº 263/2001,\n * giving the Código Nacional of every municipality. That Anexo was parsed to derive both\n * tables.\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n * @see Official: https://www.gov.br/anatel/pt-br/regulado/numeracao/codigos-nacionais\n * @see Based on: https://informacoes.anatel.gov.br/legislacao/resolucoes/2001/383-resolucao-263\n * Anexo of Resolução nº 263/2001 (revoked; still the table Anatel's Códigos Nacionais page links to).\n * @see Based on: https://brasilapi.com.br/docs#tag/DDD\n */\nexport const VALID_AREA_CODES: readonly number[] = [\n\t11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 27, 28, 31, 32, 33, 34, 35, 37, 38, 41, 42, 43,\n\t44, 45, 46, 47, 48, 49, 51, 53, 54, 55, 61, 62, 64, 63, 65, 66, 67, 68, 69, 71, 73, 74, 75, 77,\n\t79, 81, 87, 82, 83, 84, 85, 88, 86, 89, 91, 93, 94, 92, 97, 95, 96, 98, 99,\n];\n\nexport const AREA_CODE_STATES: Record<number, StateCode> = {\n\t11: \"SP\",\n\t12: \"SP\",\n\t13: \"SP\",\n\t14: \"SP\",\n\t15: \"SP\",\n\t16: \"SP\",\n\t17: \"SP\",\n\t18: \"SP\",\n\t19: \"SP\",\n\t21: \"RJ\",\n\t22: \"RJ\",\n\t24: \"RJ\",\n\t27: \"ES\",\n\t28: \"ES\",\n\t31: \"MG\",\n\t32: \"MG\",\n\t33: \"MG\",\n\t34: \"MG\",\n\t35: \"MG\",\n\t37: \"MG\",\n\t38: \"MG\",\n\t41: \"PR\",\n\t42: \"PR\",\n\t43: \"PR\",\n\t44: \"PR\",\n\t45: \"PR\",\n\t46: \"PR\",\n\t47: \"SC\",\n\t48: \"SC\",\n\t49: \"SC\",\n\t51: \"RS\",\n\t53: \"RS\",\n\t54: \"RS\",\n\t55: \"RS\",\n\t61: \"DF\",\n\t62: \"GO\",\n\t63: \"TO\",\n\t64: \"GO\",\n\t65: \"MT\",\n\t66: \"MT\",\n\t67: \"MS\",\n\t68: \"AC\",\n\t69: \"RO\",\n\t71: \"BA\",\n\t73: \"BA\",\n\t74: \"BA\",\n\t75: \"BA\",\n\t77: \"BA\",\n\t79: \"SE\",\n\t81: \"PE\",\n\t82: \"AL\",\n\t83: \"PB\",\n\t84: \"RN\",\n\t85: \"CE\",\n\t86: \"PI\",\n\t87: \"PE\",\n\t88: \"CE\",\n\t89: \"PI\",\n\t91: \"PA\",\n\t92: \"AM\",\n\t93: \"PA\",\n\t94: \"PA\",\n\t95: \"RR\",\n\t96: \"AP\",\n\t97: \"AM\",\n\t98: \"MA\",\n\t99: \"MA\",\n};\n\n/**\n * The other states a DDD serves, besides the primary state `AREA_CODE_STATES` gives it. Four\n * Códigos Nacionais straddle a state border:\n *\n * - 61 serves the Distrito Federal and the Goiás municipalities of the Entorno do Distrito\n *   Federal: Águas Lindas de Goiás, Cabeceiras, Cidade Ocidental, Cristalina, Formosa,\n *   Luziânia, Novo Gama, Padre Bernardo, Planaltina, Santo Antônio do Descoberto, Valparaíso\n *   de Goiás and Vila Boa.\n * - 42 serves Paraná and Porto União (SC), across the river from União da Vitória (PR).\n * - 47 serves Santa Catarina and Rio Negro (PR), across the river from Mafra (SC).\n * - 49 serves Santa Catarina and Barracão (PR), on the border with Dionísio Cerqueira (SC).\n *\n * Derived from the Anexo of Resolução Anatel nº 263/2001, which lists the Código Nacional of\n * every municipality, as later amended by Resolução nº 580/2012 (Vila Boa, 62 to 61),\n * Resolução nº 644/2014 (Porto União, 49 to 42) and Resolução nº 701/2018 (Rio Negro, 41 to\n * 47, and Barracão, 46 to 49). No other Código Nacional in that Anexo covers more than one\n * state.\n *\n * @see Official: https://www.gov.br/anatel/pt-br/regulado/numeracao/codigos-nacionais\n * @see Based on: https://informacoes.anatel.gov.br/legislacao/resolucoes/2001/383-resolucao-263\n * Anexo of Resolução nº 263/2001 (revoked; still the table Anatel's Códigos Nacionais page links to).\n */\nexport const AREA_CODE_SECONDARY_STATES: Record<number, readonly StateCode[]> = {\n\t42: [\"SC\"],\n\t47: [\"PR\"],\n\t49: [\"PR\"],\n\t61: [\"GO\"],\n};\n","/**\n * Picks one item of a list at random, with every item equally likely.\n *\n * Uses `Math.random()`, so it is not cryptographically secure; it only ever serves the\n * `generate*` utilities, which say so in their own documentation.\n *\n * @param {readonly Item[]} items - The list to pick from.\n * @returns {Item} One item of the list.\n *\n * @example\n * ```typescript\n * pickRandom([\"mobile\", \"landline\"]); // \"landline\"\n * pickRandom([11, 21, 31]); // 21\n * ```\n */\nexport const pickRandom = <Item>(items: readonly Item[]): Item =>\n\titems[Math.floor(Math.random() * items.length)];\n","import { VALID_AREA_CODES } from \"../_internals/constants/area-codes\";\nimport {\n\tSERVICE_PHONE_ABBREVIATED_LENGTH,\n\tSERVICE_PHONE_ABBREVIATED_ROOT_LENGTH,\n\tSERVICE_PHONE_ABBREVIATED_ROOTS,\n\tSERVICE_PHONE_NON_GEOGRAPHIC_LENGTH,\n\tSERVICE_PHONE_NON_GEOGRAPHIC_PREFIX_LENGTH,\n\tSERVICE_PHONE_NON_GEOGRAPHIC_PREFIXES,\n} from \"../_internals/constants/service-phone\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { pickRandom } from \"../_internals/pick-random/pick-random\";\n\n/** The kinds of phone number `generatePhone` can generate. */\nexport type GeneratePhoneType = \"mobile\" | \"landline\" | \"service\";\n\nconst randomAreaCode = (): string => pickRandom(VALID_AREA_CODES).toString();\n\nconst randomServicePhone = (): string => {\n\tif (Math.random() >= 0.5) {\n\t\tconst prefix = pickRandom(SERVICE_PHONE_NON_GEOGRAPHIC_PREFIXES);\n\t\tconst rest = SERVICE_PHONE_NON_GEOGRAPHIC_LENGTH - SERVICE_PHONE_NON_GEOGRAPHIC_PREFIX_LENGTH;\n\n\t\treturn `${prefix}${generateRandomNumber(rest)}`;\n\t}\n\n\tconst root = pickRandom(SERVICE_PHONE_ABBREVIATED_ROOTS);\n\tconst rest = SERVICE_PHONE_ABBREVIATED_LENGTH - SERVICE_PHONE_ABBREVIATED_ROOT_LENGTH;\n\n\treturn `${root}${generateRandomNumber(rest)}`;\n};\n\n/**\n * Generates a random, structurally-valid Brazilian phone number (DDD + subscriber number,\n * no formatting/mask applied, see `formatPhone` to format the result).\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * @param {GeneratePhoneType} [type] - `\"mobile\"` (9-digit number starting with 9),\n * `\"landline\"` (8-digit number starting with 2-6) or `\"service\"` (a non-geographic number,\n * either an 11-digit `0X00` one or an 8-digit `300X`/`400X` one, with no DDD). When omitted,\n * randomly generates a mobile or a landline, never a service number, since those are not\n * accepted by `isValidPhone` unless asked for.\n * @returns {string} A randomly generated phone number as a string of digits (DDD included,\n * except for service numbers, which have none).\n *\n * @example\n * ```typescript\n * generatePhone(\"mobile\"); // e.g. \"11987654321\"\n * generatePhone(\"landline\"); // e.g. \"1132345678\"\n * generatePhone(\"service\"); // e.g. \"08001234567\" or \"40041234\"\n * generatePhone(); // randomly mobile or landline\n * ```\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n */\nexport const generatePhone = (type?: GeneratePhoneType): string => {\n\tif (type === \"service\") {\n\t\treturn randomServicePhone();\n\t}\n\n\tconst areaCode = randomAreaCode();\n\t// Without a type, a coin flip picks the line; no self-call, so the choice is made once here.\n\tconst isLandline = type === \"landline\" || (type !== \"mobile\" && Math.random() < 0.5);\n\n\tif (isLandline) {\n\t\treturn `${areaCode}${2 + Math.floor(Math.random() * 5)}${generateRandomNumber(7)}`;\n\t}\n\n\treturn `${areaCode}9${generateRandomNumber(8)}`;\n};\n","import { calculatePisCheckDigit } from \"../_internals/calculate-pis-check-digit/calculate-pis-check-digit\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\n\n/**\n * Generates a valid random Brazilian PIS (Programa de Integração Social) number.\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * @returns {string} A valid 11-digit PIS string without formatting.\n *\n * @example\n * ```typescript\n * generatePis(); // \"12056874107\"\n * ```\n *\n * The eSocial MOS states the NIS must have 11 numeric digits including the check digit, and the\n * SIRC technical manual confirms the check digit is verified with módulo 11; neither publishes\n * the weight vector used below, which follows the community reference cited as `Based on:`.\n *\n * @see Official: https://www.gov.br/inss/pt-br/direitos-e-deveres/inscricao-e-contribuicao/inscricao\n * @see Official: https://www.gov.br/esocial/pt-br/documentacao-tecnica/manuais/mos-manual-de-orientacao-do-esocial-vs-2-4.pdf\n * @see Official: https://www.sirc.gov.br/wp-content/uploads/manual_sirc_recomendacoes_tecnicas_v7.pdf\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/pis.py\n */\nexport const generatePis = (): string => {\n\tlet base = generateRandomNumber(10);\n\n\twhile (isRepeatedDigits(base)) {\n\t\tbase = generateRandomNumber(10);\n\t}\n\n\treturn `${base}${calculatePisCheckDigit(base)}`;\n};\n","/**\n * BR Code (EMV® QRCPS-MPM) field identifiers and Pix specific limits shared by the Pix\n * utilities.\n *\n * The payload is a flat list of TLV objects: a 2 digit ID, a 2 digit length and a value of\n * exactly that length. The Pix arrangement lives in one of the \"Merchant Account Information\"\n * templates (IDs 26 to 51), the one whose GUI (sub-object `00`) is `br.gov.bcb.pix`.\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\n */\n\nexport const PIX_GUI = \"br.gov.bcb.pix\";\n\nexport const PIX_PAYLOAD_FORMAT_INDICATOR_ID = \"00\";\n\nexport const PIX_PAYLOAD_FORMAT_INDICATOR = \"01\";\n\nexport const PIX_POINT_OF_INITIATION_ID = \"01\";\n\nexport const PIX_STATIC_POINT_OF_INITIATION = \"11\";\n\nexport const PIX_DYNAMIC_POINT_OF_INITIATION = \"12\";\n\nexport const PIX_MERCHANT_ACCOUNT_INFORMATION_ID = \"26\";\n\nexport const PIX_MERCHANT_ACCOUNT_INFORMATION_FIRST_ID = 26;\n\nexport const PIX_MERCHANT_ACCOUNT_INFORMATION_LAST_ID = 51;\n\nexport const PIX_MERCHANT_ACCOUNT_INFORMATION_MAX_LENGTH = 99;\n\nexport const PIX_GUI_ID = \"00\";\n\nexport const PIX_KEY_ID = \"01\";\n\nexport const PIX_DESCRIPTION_ID = \"02\";\n\nexport const PIX_WITHDRAWAL_FACILITATOR_ID = \"03\";\n\nexport const PIX_URL_ID = \"25\";\n\nexport const PIX_MERCHANT_CATEGORY_CODE_ID = \"52\";\n\nexport const PIX_MERCHANT_CATEGORY_CODE = \"0000\";\n\nexport const PIX_TRANSACTION_CURRENCY_ID = \"53\";\n\nexport const PIX_TRANSACTION_CURRENCY = \"986\";\n\nexport const PIX_TRANSACTION_AMOUNT_ID = \"54\";\n\nexport const PIX_TRANSACTION_AMOUNT_MAX_LENGTH = 13;\n\nexport const PIX_COUNTRY_CODE_ID = \"58\";\n\nexport const PIX_COUNTRY_CODE = \"BR\";\n\nexport const PIX_MERCHANT_NAME_ID = \"59\";\n\nexport const PIX_MERCHANT_NAME_MAX_LENGTH = 25;\n\nexport const PIX_MERCHANT_CITY_ID = \"60\";\n\nexport const PIX_MERCHANT_CITY_MAX_LENGTH = 15;\n\nexport const PIX_ADDITIONAL_DATA_ID = \"62\";\n\nexport const PIX_TXID_ID = \"05\";\n\nexport const PIX_ABSENT_TXID = \"***\";\n\nexport const PIX_CRC_TAG = \"6304\";\n\nexport const PIX_CRC_LENGTH = 4;\n\nexport const PIX_URL_MAX_LENGTH = 77;\n\nexport const PIX_DESCRIPTION_MAX_LENGTH = 72;\n","const POLYNOMIAL = 0x10_21;\n\nconst INITIAL_VALUE = 0xff_ff;\n\nconst MASK = 0xff_ff;\n\nconst HEX_LENGTH = 4;\n\n/**\n * Calculates the CRC-16/CCITT-FALSE checksum of a string and returns it as four uppercase\n * hexadecimal digits.\n *\n * The variant is the one required by the BR Code standard: polynomial `0x1021`, initial value\n * `0xFFFF`, no input or output reflection and no final xor. The bytes fed to the checksum are\n * the UTF-8 encoding of the string, which for an ASCII BR Code payload is the payload itself.\n *\n * @param {string} value - The string to checksum.\n * @returns {string} The checksum as four uppercase hexadecimal digits.\n *\n * @example\n * ```typescript\n * crc16Ccitt(\"123456789\"); // \"29B1\"\n * crc16Ccitt(\"\"); // \"FFFF\"\n * ```\n */\nexport const crc16Ccitt = (value: string): string => {\n\tconst bytes = new TextEncoder().encode(value);\n\n\tlet crc = INITIAL_VALUE;\n\n\tfor (const byte of bytes) {\n\t\tcrc ^= byte << 8;\n\n\t\tfor (let bit = 0; bit < 8; bit++) {\n\t\t\tcrc = (crc & 0x80_00) === 0 ? (crc << 1) & MASK : ((crc << 1) ^ POLYNOMIAL) & MASK;\n\t\t}\n\t}\n\n\treturn crc.toString(16).toUpperCase().padStart(HEX_LENGTH, \"0\");\n};\n","export type FormatTlvParams = {\n\t/** The two digit object ID. */\n\tid: string;\n\t/** The value of the object, whose length is written in front of it. */\n\tvalue: string;\n};\n\nconst LENGTH_SEGMENT_LENGTH = 2;\n\n/**\n * Serializes one EMV® style TLV (tag-length-value) object: the ID, the value length written as\n * two digits and the value itself.\n *\n * @param {FormatTlvParams} params - The object to serialize.\n * @param {string} params.id - The 2 digit object ID.\n * @param {string} params.value - The object value, at most 99 characters long.\n * @returns {string} The serialized object.\n *\n * @example\n * ```typescript\n * formatTlv({ id: \"00\", value: \"01\" }); // \"000201\"\n * formatTlv({ id: \"58\", value: \"BR\" }); // \"5802BR\"\n * ```\n */\nexport const formatTlv = ({ id, value }: FormatTlvParams): string =>\n\t`${id}${value.length.toString().padStart(LENGTH_SEGMENT_LENGTH, \"0\")}${value}`;\n","const HOST_LABEL = \"[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\";\n\nconst PATH_CHARACTER = \"(?:%[0-9a-f]{2}|[a-z0-9._~!$&'()*+,;=:@-])\";\n\nconst PIX_URL_REGEX = new RegExp(\n\t`^${HOST_LABEL}(?:\\\\.${HOST_LABEL})+(?:/${PATH_CHARACTER}*)*$`,\n\t\"i\",\n);\n\n/**\n * Checks whether a value is a Pix PSP location, the value of field 26-25 of a dynamic BR Code:\n * a host name with at least one dot, optionally followed by a path, written without a scheme,\n * whitespace or characters outside the URL unreserved and sub-delimiter sets. A `%` is only\n * accepted as the start of a percent-encoded octet (`%` followed by two hexadecimal digits).\n *\n * @param {string} value - The value to check.\n * @returns {boolean} True if `value` is a valid Pix PSP location.\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\n */\nexport const isValidPixUrl = (value: string): boolean => PIX_URL_REGEX.test(value);\n","const WHITESPACE_REGEX = /\\s/g;\n\nconst NON_PRINTABLE_ASCII_REGEX = /[^\\u0020-\\u007E]/g;\n\nconst SPACE_RUN_REGEX = / {2,}/g;\n\n/**\n * Folds a string down to printable ASCII: accented letters lose their diacritics, anything\n * still outside the printable ASCII range is dropped and runs of whitespace collapse into a\n * single space.\n *\n * Whitespace is normalized before the non-ASCII characters are dropped, so a non-breaking\n * space (or any other Unicode space) still separates the words around it instead of vanishing\n * and gluing them together.\n *\n * @param {string} value - The value to fold.\n * @returns {string} The trimmed, printable ASCII form of the value.\n *\n * @example\n * ```typescript\n * sanitizeToAscii(\"São Paulo\"); // \"Sao Paulo\"\n * sanitizeToAscii(\"  Fulano   de Tal  \"); // \"Fulano de Tal\"\n * ```\n */\nexport const sanitizeToAscii = (value: string): string =>\n\tvalue\n\t\t.normalize(\"NFD\")\n\t\t.replace(WHITESPACE_REGEX, \" \")\n\t\t.replace(NON_PRINTABLE_ASCII_REGEX, \"\")\n\t\t.replace(SPACE_RUN_REGEX, \" \")\n\t\t.trim();\n","const EMAIL_REGEX =\n\t/^(?!\\.)(?!.*\\.\\.)([a-z0-9_'+\\-.]*)[a-z0-9_+-]@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$/i;\n\n/**\n * Validates if an email address is valid.\n *\n * @param {string} value - The email address to be validated.\n * @returns {boolean} True if the email is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidEmail(\"user@example.com\"); // true\n * isValidEmail(\"invalid.email\"); // false\n * isValidEmail(\"test@domain.co.uk\"); // true\n * ```\n *\n * The WHATWG HTML \"valid e-mail address\" definition is narrowed further: the local part is\n * limited to letters, digits and `_'+-.`, it may not start with a dot, end with a dot or an\n * apostrophe, or contain two dots in a row, and the domain must carry at least one dot and end\n * in an alphabetic label of 2 to 63 letters. Each dotted label follows the WHATWG production `[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?`,\n * so a label may neither start nor end with a hyphen nor exceed 63 characters, and the final\n * label is capped at the same 63 characters. It is a practical\n * subset of that WHATWG definition, not of IETF RFC 5322: quoted local parts and address\n * literals are rejected.\n *\n * @see Official: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address\n * @see Official: https://www.rfc-editor.org/rfc/rfc5322\n */\nexport const isValidEmail = (value: string): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\treturn EMAIL_REGEX.test(value);\n};\n","import { VALID_AREA_CODES } from \"../constants/area-codes\";\n\n/**\n * Checks whether the first two digits of a sanitized Brazilian phone number form a valid DDD\n * (area code).\n *\n * @param {string} value - The sanitized (digits-only) phone number.\n * @returns {boolean} True if the first two digits are a valid Brazilian area code.\n *\n * @example\n * ```typescript\n * isValidDDD(\"11987654321\"); // true\n * isValidDDD(\"00987654321\"); // false\n * ```\n */\nexport const isValidDDD = (value: string): boolean => {\n\tconst ddd = (value.charCodeAt(0) - 48) * 10 + (value.charCodeAt(1) - 48);\n\treturn VALID_AREA_CODES.includes(ddd);\n};\n","export const LANDLINE_VALID_FIRST_NUMBERS = [2, 3, 4, 5, 6];\n","import { PHONE_NATIONAL_MIN_LENGTH } from \"../_internals/constants/phone\";\nimport { isValidDDD } from \"../_internals/is-valid-ddd/is-valid-ddd\";\nimport { normalizePhone } from \"../_internals/normalize-phone/normalize-phone\";\nimport { LANDLINE_VALID_FIRST_NUMBERS } from \"./constants\";\n\nconst isValidLandlineFirstNumber = (value: string): boolean => {\n\tconst firstDigit = value.charCodeAt(2) - 48;\n\treturn LANDLINE_VALID_FIRST_NUMBERS.includes(firstDigit);\n};\n\n/**\n * Validates if a phone number is a valid Brazilian landline phone.\n *\n * A Brazilian country code (`+55`, `0055` or a bare `55`) is accepted and removed before\n * validation, under the rule documented in `parsePhone`.\n *\n * @param {string} value - The phone number to validate.\n * @returns {boolean} True if the phone number is a valid landline phone, false otherwise.\n *\n * @example\n * ```typescript\n * isValidLandlinePhone(\"(11) 3000-0000\"); // true\n * isValidLandlinePhone(\"1130000000\"); // true\n * isValidLandlinePhone(\"+55 11 3000-0000\"); // true\n * isValidLandlinePhone(\"11987654321\"); // false (mobile)\n * ```\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n */\nexport const isValidLandlinePhone = (value: string): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\tconst digits = normalizePhone(value);\n\n\tif (digits.length !== PHONE_NATIONAL_MIN_LENGTH) return false;\n\n\tif (!isValidDDD(digits)) return false;\n\n\treturn isValidLandlineFirstNumber(digits);\n};\n","/**\n * The first digit (N9) a Brazilian mobile access code may carry, per numbering rule.\n *\n * Version 1 is the pre-Resolução 749/2022 set kept for 2.3.0 compatibility. Version 2 is the\n * set of art. 12, I, \"a\" of the resolution: `“7”, \"8\" e “9”: Serviço Móvel Pessoal (SMP),\n * ressalvado o disposto no inciso II deste artigo`, the ressalva being art. 12, II, \"a\",\n * `“700”: Serviço Móvel Global por Satélite (SMGS)`, a series outside the SMP.\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n */\nexport const MOBILE_VALID_FIRST_NUMBERS_V1 = [6, 7, 8, 9];\nexport const MOBILE_VALID_FIRST_NUMBERS_V2 = [7, 8, 9];\n\nexport const MOBILE_SATELLITE_PREFIX = \"700\";\n","import { PHONE_NATIONAL_MAX_LENGTH } from \"../_internals/constants/phone\";\nimport { isValidDDD } from \"../_internals/is-valid-ddd/is-valid-ddd\";\nimport { normalizePhone } from \"../_internals/normalize-phone/normalize-phone\";\nimport { type PhoneVersion } from \"../is-valid-phone/is-valid-phone\";\nimport {\n\tMOBILE_SATELLITE_PREFIX,\n\tMOBILE_VALID_FIRST_NUMBERS_V1,\n\tMOBILE_VALID_FIRST_NUMBERS_V2,\n} from \"./constants\";\n\nexport type { PhoneVersion } from \"../is-valid-phone/is-valid-phone\";\n\n/** Options of `isValidMobilePhone`. */\nexport type IsValidMobilePhoneOptions = {\n\t/** Numbering rule to enforce over the 11 digit number: `1` (default) accepts 6, 7, 8 or 9 as the first number digit, `2` accepts 7, 8 or 9 and rejects the `700` series. */\n\tversion?: PhoneVersion;\n};\n\nconst isValidMobileFirstNumber = (value: string, version?: PhoneVersion): boolean => {\n\tconst firstDigit = value.charCodeAt(2) - 48;\n\n\tif (!version || version === 1) {\n\t\treturn MOBILE_VALID_FIRST_NUMBERS_V1.includes(firstDigit);\n\t}\n\n\tif (value.startsWith(MOBILE_SATELLITE_PREFIX, 2)) return false;\n\n\treturn MOBILE_VALID_FIRST_NUMBERS_V2.includes(firstDigit);\n};\n\n/**\n * Validates if a phone number is a valid Brazilian mobile phone.\n *\n * A Brazilian country code (`+55`, `0055` or a bare `55`) is accepted and removed before\n * validation, under the rule documented in `parsePhone`.\n *\n * The `version` option controls which mobile numbering rule is enforced:\n * - `1` (default): accepts the legacy 11-digit format, whose first number digit\n *   (right after the DDD) may be 6, 7, 8 or 9.\n * - `2`: enforces the current format, whose first number digit must be 7, 8 or 9 and whose\n *   `700` series is left out.\n *\n * @param {string} value - The phone number to validate.\n * @param {IsValidMobilePhoneOptions} options - Optional validation options.\n * @param {1|2} options.version - The mobile numbering rule to enforce (see above). Defaults to 1.\n * @returns {boolean} True if the phone number is a valid mobile phone, false otherwise.\n *\n * @example\n * ```typescript\n * isValidMobilePhone(\"(11) 98765-4321\"); // true (accepts both v1 and v2)\n * isValidMobilePhone(\"11987654321\", { version: 2 }); // true\n * isValidMobilePhone(\"11712345678\", { version: 1 }); // true\n * isValidMobilePhone(\"11712345678\", { version: 2 }); // true (7 is SMP as well)\n * isValidMobilePhone(\"11612345678\", { version: 2 }); // false (6 is Reserva Técnica)\n * isValidMobilePhone(\"11700123456\", { version: 2 }); // false (the 700 series is satellite)\n * isValidMobilePhone(\"+55 11 98765-4321\"); // true\n * ```\n *\n * `version: 1` (the default) is the pre-Resolução 749/2022 rule, which also accepts a leading\n * 6, kept for 2.3.0 compatibility. `version: 2` enforces art. 12, I, \"a\" of the resolution,\n * `“7”, \"8\" e “9”: Serviço Móvel Pessoal (SMP), ressalvado o disposto no inciso II deste\n * artigo`, so 6 is Reserva Técnica and is rejected.\n *\n * That ressalva is art. 12, II, \"a\", `“700”: Serviço Móvel Global por Satélite (SMGS)`: the\n * `700` series is not SMP, so `version: 2` rejects `isValidMobilePhone(\"11700123456\")`.\n * `version: 1` does not carve the series out and accepts it, for 2.3.0 compatibility.\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n */\nexport const isValidMobilePhone = (value: string, options?: IsValidMobilePhoneOptions): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\tconst digits = normalizePhone(value);\n\n\tif (digits.length !== PHONE_NATIONAL_MAX_LENGTH) return false;\n\n\tif (!isValidDDD(digits)) return false;\n\n\treturn isValidMobileFirstNumber(digits, options?.version);\n};\n","import { type PhoneType } from \"./is-valid-phone\";\n\nexport const DEFAULT_ACCEPT: PhoneType[] = [\"mobile\", \"landline\"];\n","import {\n\tPHONE_NATIONAL_MAX_LENGTH,\n\tPHONE_NATIONAL_MIN_LENGTH,\n} from \"../_internals/constants/phone\";\nimport { normalizePhone } from \"../_internals/normalize-phone/normalize-phone\";\nimport { resolveServicePhoneDigits } from \"../_internals/resolve-service-phone-digits/resolve-service-phone-digits\";\nimport { isValidLandlinePhone } from \"../is-valid-landline-phone/is-valid-landline-phone\";\nimport { isValidMobilePhone } from \"../is-valid-mobile-phone/is-valid-mobile-phone\";\nimport { isValidServicePhone } from \"../is-valid-service-phone/is-valid-service-phone\";\nimport { DEFAULT_ACCEPT } from \"./constants\";\n\n/** The Brazilian mobile numbering rule to enforce over the 11 digit number: `1` the legacy one (6, 7, 8 or 9), `2` the current one (7, 8 or 9, without the `700` series). */\nexport type PhoneVersion = 1 | 2;\n\n/** The kinds of Brazilian phone number `isValidPhone` can accept. */\nexport type PhoneType = \"mobile\" | \"landline\" | \"service\";\n\n/** Options of `isValidPhone`. */\nexport type IsValidPhoneOptions = {\n\t/** Mobile numbering rule to enforce, see `isValidMobilePhone` (default: `1`). */\n\tversion?: PhoneVersion;\n\t/** Kinds of number that count as valid (default: `[\"mobile\", \"landline\"]`). */\n\taccept?: PhoneType[];\n};\n\n/**\n * Validates a Brazilian phone number.\n *\n * A Brazilian country code (`+55`, `0055` or a bare `55`) is accepted and removed before\n * validation, under the rule documented in `parsePhone`.\n *\n * `options.accept` picks which kinds of number count as valid and defaults to\n * `[\"mobile\", \"landline\"]`, i.e. geographic numbers only. Add `\"service\"` to also accept the\n * non-geographic numbers recognized by `isValidServicePhone`; pass `[]` to accept none.\n *\n * `options.version` is forwarded to `isValidMobilePhone` and only affects mobile numbers:\n * `1` (the default) accepts a first number digit of 6, 7, 8 or 9, and `2` the 7, 8 and 9 of\n * Resolução Anatel nº 749/2022, art. 12, I, \"a\", minus its `700` satellite series.\n *\n * @param {string} value - The phone number to validate.\n * @param {IsValidPhoneOptions} options - Optional validation options.\n * @param {1|2} options.version - The mobile numbering rule to enforce, see `isValidMobilePhone`.\n * @param {PhoneType[]} options.accept - The kinds of number to accept (default: `[\"mobile\", \"landline\"]`).\n * @returns {boolean} True if the phone number is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidPhone(\"(11) 98765-4321\"); // true\n * isValidPhone(\"11987654321\", { version: 2 }); // true\n * isValidPhone(\"11712345678\", { version: 2 }); // true (7 is SMP as well)\n * isValidPhone(\"11700123456\", { version: 2 }); // false (the 700 series is satellite)\n * isValidPhone(\"1130000000\"); // true (landline)\n * isValidPhone(\"+55 11 98765-4321\"); // true\n * isValidPhone(\"08001234567\"); // false (service numbers are not accepted by default)\n * isValidPhone(\"08001234567\", { accept: [\"service\"] }); // true\n * isValidPhone(\"11987654321\", { accept: [] }); // false\n * ```\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n */\nexport const isValidPhone = (value: string, options?: IsValidPhoneOptions): boolean => {\n\tconst requested = options?.accept;\n\tconst accept: PhoneType[] = Array.isArray(requested) ? requested : DEFAULT_ACCEPT;\n\n\tif (accept.includes(\"service\") && isValidServicePhone(resolveServicePhoneDigits(value)))\n\t\treturn true;\n\n\tconst digits = normalizePhone(value);\n\n\tif (accept.includes(\"landline\") && digits.length === PHONE_NATIONAL_MIN_LENGTH) {\n\t\treturn isValidLandlinePhone(value);\n\t}\n\n\t// Stryker disable next-line ConditionalExpression: isValidMobilePhone re-derives the same digits from value and rejects any length other than PHONE_NATIONAL_MAX_LENGTH itself, so calling it with the wrong length here still correctly returns false\n\tif (accept.includes(\"mobile\") && digits.length === PHONE_NATIONAL_MAX_LENGTH) {\n\t\treturn isValidMobilePhone(value, options);\n\t}\n\n\treturn false;\n};\n","import { CNPJ_LENGTH } from \"../_internals/constants/cnpj\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeCnpj } from \"../_internals/sanitize-cnpj/sanitize-cnpj\";\nimport { type FormatCnpjOptions } from \"../format-cnpj/format-cnpj\";\n\n/** Options of `parseCnpj`. */\nexport type ParseCnpjOptions = Pick<FormatCnpjOptions, \"version\">;\n\n/**\n * Removes CNPJ formatting characters and returns a normalized value.\n *\n * @param {string|number} value - The CNPJ value to be parsed.\n * @param {ParseCnpjOptions} [options] - Optional parsing options.\n * @param {1|2} [options.version] - The CNPJ version to normalize.\n * @returns {string} The CNPJ value without formatting.\n *\n * @example\n * ```typescript\n * parseCnpj(\"11.222.333/0001-81\"); // \"11222333000181\"\n * parseCnpj(\"12.ABC.345/01DE-35\", { version: 2 }); // \"12ABC34501DE35\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cnpj\n * @see Official: https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/documentos-tecnicos/cnpj/manual-dv-cnpj.pdf\n * @see Official: https://www.gov.br/receitafederal/pt-br/acesso-a-informacao/acoes-e-programas/programas-e-atividades/cnpj-alfanumerico\n */\nexport const parseCnpj = (value: string | number, options?: ParseCnpjOptions): string =>\n\tisNullish(value) ? \"\" : sanitizeCnpj(value, options?.version).slice(0, CNPJ_LENGTH);\n","export const EMAIL_MAX_LENGTH = 77;\n\n/**\n * A DICT random key (EVP) is a lowercase UUID written with its punctuation. The DICT issues\n * version 4 UUIDs, but neither the registered pattern nor the example of the manual\n * (`123e4567-e12b-12d1-a456-426655440000`, whose version nibble is `1`) constrains the\n * version, so the version and variant nibbles are not enforced.\n */\nexport const EVP_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * The characters a value written as a phone number may carry: digits, the `+` of the\n * international prefix and the spaces, dots, hyphens and parentheses of the usual masks.\n * Sanitizing to digits alone would read `\"abc(11) 98765-4321xyz\"` as a phone number, so the\n * value is matched against this before it is sanitized.\n */\nexport const PHONE_SYNTAX_REGEX = /^[\\d ()+.-]+$/;\n\n/**\n * The forms a value written as a CPF may take: the bare 11 digits or the documented mask, with\n * the dots and the hyphen optional and a space accepted wherever a separator goes. Sanitizing\n * to digits alone would read `\"abc123.456.789-09\"` as a CPF, so the value is matched against\n * this before it is sanitized.\n */\nexport const CPF_SYNTAX_REGEX = /^\\d{3}[ .]?\\d{3}[ .]?\\d{3}[ -]?\\d{2}$/;\n","import { PHONE_COUNTRY_CODE } from \"../_internals/constants/phone\";\nimport { normalizePhone } from \"../_internals/normalize-phone/normalize-phone\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { isValidCnpj } from \"../is-valid-cnpj/is-valid-cnpj\";\nimport { isValidCpf } from \"../is-valid-cpf/is-valid-cpf\";\nimport { isValidEmail } from \"../is-valid-email/is-valid-email\";\nimport { isValidPhone } from \"../is-valid-phone/is-valid-phone\";\nimport { parseCnpj } from \"../parse-cnpj/parse-cnpj\";\nimport { CPF_SYNTAX_REGEX, EMAIL_MAX_LENGTH, EVP_REGEX, PHONE_SYNTAX_REGEX } from \"./constants\";\n\n/** The kinds of Pix key `getPixKeyInfo` recognizes. */\nexport type PixKeyType = \"cpf\" | \"cnpj\" | \"email\" | \"phone\" | \"evp\";\n\n/** A Pix key recognized by `getPixKeyInfo`, normalized to the canonical DICT form of its kind. */\nexport type PixKeyInfo = {\n\t/** Which kind of Pix key the value was recognized as. */\n\ttype: PixKeyType;\n\t/** The key in the canonical DICT form for its kind. */\n\tvalue: string;\n};\n\n/**\n * Reads a value written as a phone number, i.e. one holding nothing but digits and the\n * characters of the usual masks, as the E.164 mobile key of the DICT.\n *\n * @param {string} trimmed - The trimmed value to read.\n * @returns {PixKeyInfo|null} The phone key, or `null` when the value is not a mobile number.\n */\nconst resolvePhoneKey = (trimmed: string): PixKeyInfo | null => {\n\tif (!PHONE_SYNTAX_REGEX.test(trimmed)) return null;\n\n\tconst national = normalizePhone(trimmed);\n\n\treturn isValidPhone(national, { accept: [\"mobile\"] })\n\t\t? { type: \"phone\", value: `+${PHONE_COUNTRY_CODE}${national}` }\n\t\t: null;\n};\n\n/**\n * Identifies a Pix key and normalizes it to the canonical form the DICT expects inside a BR\n * Code.\n *\n * The canonical forms are the ones listed in \"Formatação das chaves do DICT no BR Code\":\n * - `cpf`: 11 digits, no mask;\n * - `cnpj`: 14 characters, no mask, uppercase for the alphanumeric format;\n * - `email`: trimmed and lowercased, at most 77 characters;\n * - `phone`: E.164, `+55` followed by the DDD and the subscriber number, so at most 14\n *   characters. The manual registers a \"número de telefone celular\", so only mobile numbers\n *   are recognized; a landline is not a Pix key. Masked, bare and `+55` prefixed inputs are\n *   all accepted;\n * - `evp`: the random key, a lowercase UUID written with its punctuation (8-4-4-4-12\n *   hexadecimal digits). The DICT issues version 4 UUIDs, but neither the pattern the manual\n *   registers nor its own example (`123e4567-e12b-12d1-a456-426655440000`, whose version\n *   nibble is `1`) constrains the version, so the version and variant nibbles are not enforced.\n *\n * The CPF and the phone number are recognized by the way they are written, not only by the\n * digits they carry: a value is read as a CPF when it is the bare 11 digits or the documented\n * mask, and as a phone number when it holds nothing but digits, spaces and the `+`, `-`, `(`,\n * `)` and `.` of the usual masks. Surrounding text is not stripped away, so\n * `\"abc123.456.789-09\"` is not a CPF key.\n *\n * A value with a valid CNPJ check digit is read as a CNPJ, even when it starts with `0055`\n * (a phone key inside a BR Code always carries the `+55` prefix). An 11 digit value can be\n * read both as a CPF and as a mobile phone number: when it is valid as both, it is read as a\n * CPF, unless it was written as a phone number. A `+55`/`0055` prefix or a DDD between\n * parentheses falls outside the CPF forms above, so a value written that way is never read as\n * a CPF, even when its digits carry a valid CPF check digit.\n *\n * @param {string} value - The Pix key to be parsed.\n * @returns {PixKeyInfo|null} The normalized key, or `null` when the value is not a valid Pix key.\n *\n * @example\n * ```typescript\n * getPixKeyInfo(\"123.456.789-09\"); // { type: \"cpf\", value: \"12345678909\" }\n * getPixKeyInfo(\"Fulano@Example.COM \"); // { type: \"email\", value: \"fulano@example.com\" }\n * getPixKeyInfo(\"(11) 98765-4321\"); // { type: \"phone\", value: \"+5511987654321\" }\n * getPixKeyInfo(\"71C7D9BE-4B85-4E43-9F1C-1F3B8B4E9A2D\");\n * // { type: \"evp\", value: \"71c7d9be-4b85-4e43-9f1c-1f3b8b4e9a2d\" }\n * getPixKeyInfo(\"51998259765\"); // { type: \"cpf\", value: \"51998259765\" } (also a valid phone)\n * getPixKeyInfo(\"+5551998259765\"); // { type: \"phone\", value: \"+5551998259765\" }\n * ```\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/API-DICT.html\n * DICT (Diretório de Identificadores de Contas Transacionais) API specification, key format\n * reference.\n * @see Official: https://github.com/bacen/pix-api\n * Pix (SPI) OpenAPI spec.\n */\nexport const getPixKeyInfo = (value: string): PixKeyInfo | null => {\n\tif (typeof value !== \"string\") return null;\n\n\tconst trimmed = value.trim();\n\n\tif (EVP_REGEX.test(trimmed)) return { type: \"evp\", value: trimmed.toLowerCase() };\n\n\tif (trimmed.includes(\"@\")) {\n\t\tconst email = trimmed.toLowerCase();\n\n\t\treturn isValidEmail(email) && email.length <= EMAIL_MAX_LENGTH\n\t\t\t? { type: \"email\", value: email }\n\t\t\t: null;\n\t}\n\n\tif (isValidCnpj(trimmed, { version: 2 })) {\n\t\treturn { type: \"cnpj\", value: parseCnpj(trimmed, { version: 2 }) };\n\t}\n\n\tif (CPF_SYNTAX_REGEX.test(trimmed)) {\n\t\tconst digits = sanitizeToDigits(trimmed);\n\n\t\tif (isValidCpf(digits)) return { type: \"cpf\", value: digits };\n\t}\n\n\treturn resolvePhoneKey(trimmed);\n};\n","export const AMOUNT_DECIMAL_PLACES = 2;\n\n/**\n * The shape the BR Code requires of a transaction amount. `Number#toFixed` falls back to\n * exponential notation from 1e21 upwards (`(1e21).toFixed(2)` is `\"1e+21\"`), which is short\n * enough to slip past the field length limit, so the formatted amount is matched against this\n * before it is written into the payload.\n */\nexport const AMOUNT_REGEX = /^\\d+\\.\\d{2}$/;\n\n/**\n * How many decimal places the amount is read at when it is checked against the two decimal\n * places actually written. Writing two decimal places rounds anything finer away, so an amount\n * that does not survive the round trip is refused instead of being silently changed; reading it\n * at ten places instead of comparing the two doubles exactly is what lets the representation\n * noise of binary floating point through (`0.1 + 0.2` is `0.30000000000000004`, whose first ten\n * decimal places are still `0.3000000000`), while `0.005` is refused.\n */\nexport const AMOUNT_COMPARISON_DECIMAL_PLACES = 10;\n\n/**\n * How many characters one TLV object spends besides its value: the 2 digit ID plus the 2 digit\n * length.\n */\nexport const TLV_OVERHEAD = 4;\n\n/** The characters the Pix manual allows in a `txid`, capped at the 25 the BR Code holds. */\nexport const TXID_REGEX = /^[A-Za-z0-9]{1,25}$/;\n","import {\n\tPIX_ABSENT_TXID,\n\tPIX_ADDITIONAL_DATA_ID,\n\tPIX_COUNTRY_CODE,\n\tPIX_COUNTRY_CODE_ID,\n\tPIX_CRC_TAG,\n\tPIX_DESCRIPTION_ID,\n\tPIX_DESCRIPTION_MAX_LENGTH,\n\tPIX_DYNAMIC_POINT_OF_INITIATION,\n\tPIX_GUI,\n\tPIX_GUI_ID,\n\tPIX_KEY_ID,\n\tPIX_MERCHANT_ACCOUNT_INFORMATION_ID,\n\tPIX_MERCHANT_ACCOUNT_INFORMATION_MAX_LENGTH,\n\tPIX_MERCHANT_CATEGORY_CODE,\n\tPIX_MERCHANT_CATEGORY_CODE_ID,\n\tPIX_MERCHANT_CITY_ID,\n\tPIX_MERCHANT_CITY_MAX_LENGTH,\n\tPIX_MERCHANT_NAME_ID,\n\tPIX_MERCHANT_NAME_MAX_LENGTH,\n\tPIX_PAYLOAD_FORMAT_INDICATOR,\n\tPIX_PAYLOAD_FORMAT_INDICATOR_ID,\n\tPIX_POINT_OF_INITIATION_ID,\n\tPIX_TRANSACTION_AMOUNT_ID,\n\tPIX_TRANSACTION_AMOUNT_MAX_LENGTH,\n\tPIX_TRANSACTION_CURRENCY,\n\tPIX_TRANSACTION_CURRENCY_ID,\n\tPIX_TXID_ID,\n\tPIX_URL_ID,\n\tPIX_URL_MAX_LENGTH,\n} from \"../_internals/constants/pix\";\nimport { crc16Ccitt } from \"../_internals/crc16-ccitt/crc16-ccitt\";\nimport { formatTlv } from \"../_internals/format-tlv/format-tlv\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { isValidPixUrl } from \"../_internals/is-valid-pix-url/is-valid-pix-url\";\nimport { sanitizeToAscii } from \"../_internals/sanitize-to-ascii/sanitize-to-ascii\";\nimport { getPixKeyInfo } from \"../get-pix-key-info/get-pix-key-info\";\nimport {\n\tAMOUNT_DECIMAL_PLACES,\n\tAMOUNT_REGEX,\n\tAMOUNT_COMPARISON_DECIMAL_PLACES,\n\tTLV_OVERHEAD,\n\tTXID_REGEX,\n} from \"./constants\";\n\n/** The parameters `generatePixPayload` takes to build a Pix BR Code. */\nexport type GeneratePixPayloadParams = {\n\t/** The Pix key of the receiver, in any accepted form. Required unless `url` is given. */\n\tkey?: string;\n\t/**\n\t * The PSP location of a dynamic payload (Bacen field 26-25), without a URL scheme, e.g.\n\t * `\"pix.example.com/qr/v2/1234\"`. When given, the payload is generated as dynamic\n\t * (`pointOfInitiation` `\"12\"`) and carries this URL instead of a key. Required unless `key`\n\t * is given; giving both `key` and `url` is invalid, just like giving neither.\n\t */\n\turl?: string;\n\t/** Name of the receiver, folded to ASCII and truncated to 25 characters. */\n\tmerchantName: string;\n\t/** City of the receiver, folded to ASCII and truncated to 15 characters. */\n\tmerchantCity: string;\n\t/** Amount in BRL, with at most two decimal places. Omit it to let the payer type it. Not allowed together with `url`: a dynamic BR Code takes its amount from the PSP location. */\n\tamount?: number;\n\t/** Transaction ID, 1 to 25 characters of `[A-Za-z0-9]` (default: the absent marker `***`). Not allowed together with `url`. */\n\ttxid?: string;\n\t/** Free text shown to the payer, folded to ASCII and truncated to what the template holds. */\n\tdescription?: string;\n};\n\nconst toAsciiField = (value: unknown, maxLength: number): string =>\n\ttypeof value === \"string\" ? sanitizeToAscii(value).slice(0, maxLength).trim() : \"\";\n\ntype PixIdentifier = {\n\tidentifierId: string;\n\tidentifierValue: string;\n\tpointOfInitiation: string | undefined;\n};\n\nconst resolveIdentifier = (\n\tkeyInput: string | undefined,\n\turlInput: string | undefined,\n): PixIdentifier | null => {\n\tif (keyInput === undefined) {\n\t\tconst url = urlInput;\n\n\t\tif (typeof url !== \"string\" || url.length > PIX_URL_MAX_LENGTH || !isValidPixUrl(url))\n\t\t\treturn null;\n\n\t\treturn {\n\t\t\tidentifierId: PIX_URL_ID,\n\t\t\tidentifierValue: url,\n\t\t\tpointOfInitiation: PIX_DYNAMIC_POINT_OF_INITIATION,\n\t\t};\n\t}\n\n\tconst key = getPixKeyInfo(keyInput);\n\n\tif (!key) return null;\n\n\treturn { identifierId: PIX_KEY_ID, identifierValue: key.value, pointOfInitiation: undefined };\n};\n\nconst resolveFormattedAmount = (\n\tamount: number | undefined,\n\ttxid: string | undefined,\n\tpointOfInitiation: string | undefined,\n): string | null => {\n\tif (pointOfInitiation !== undefined && (amount !== undefined || txid !== undefined)) return null;\n\n\t// `Number.isFinite` is false for every value that is not a number, so this guard is what keeps\n\t// `toFixed` below from being called on something that has no `toFixed`. A negative amount keeps\n\t// its sign in `toFixed`, so the amount regex below turns it down, and an amount that is zero or\n\t// rounds to zero is turned down by the `Number(formattedAmount)` check.\n\tif (amount !== undefined && !Number.isFinite(amount)) return null;\n\n\tconst formattedAmount = amount === undefined ? \"\" : amount.toFixed(AMOUNT_DECIMAL_PLACES);\n\n\tif (amount !== undefined && !AMOUNT_REGEX.test(formattedAmount)) return null;\n\n\tif (formattedAmount.length > PIX_TRANSACTION_AMOUNT_MAX_LENGTH) return null;\n\n\tif (amount !== undefined && Number(formattedAmount) === 0) return null;\n\n\tif (\n\t\tamount !== undefined &&\n\t\tNumber(amount.toFixed(AMOUNT_COMPARISON_DECIMAL_PLACES)) !== Number(formattedAmount)\n\t)\n\t\treturn null;\n\n\tif (txid !== undefined && (typeof txid !== \"string\" || !TXID_REGEX.test(txid))) return null;\n\n\treturn formattedAmount;\n};\n\n/**\n * Generates the payload of a Pix BR Code, the string behind a Pix QR Code and behind \"Pix\n * copia e cola\".\n *\n * Exactly one of `params.key` or `params.url` must be given: `null` is returned when both are\n * given and when neither is given, since only one of them can occupy the \"Merchant Account\n * Information\" template at a time.\n *\n * When `params.key` is given, it is normalized to its DICT canonical form by `getPixKeyInfo` and\n * the payload is static: the \"Point of Initiation Method\" object is left out, so the payload\n * may be paid more than once, as in the example of the Bacen manual.\n *\n * When `params.url` is given instead, the payload is dynamic per the Manual de Padrões para\n * Iniciação do Pix: the URL takes the key's place in the \"Merchant Account Information\"\n * template (sub-object `25` instead of `01`) and the \"Point of Initiation Method\" object (`01`)\n * is set to `\"12\"`. `params.url` must be at most 77 characters, the length that keeps the\n * template within its 99 character limit together with the `br.gov.bcb.pix` GUI. `getPixPayloadInfo`\n * already parses both shapes, so `getPixPayloadInfo(generatePixPayload({ url, ... }))` round-trips.\n *\n * Object `01` is optional in the Manual do BR Code (`Uso: O`), so writing it only for a dynamic\n * payload is one of the shapes the manual allows and follows its own examples; `getPixPayloadInfo`\n * accepts the others too. The Pix Saque BR Code, which announces the ISPB of the \"facilitador de\n * serviço de saque\" in sub-object 26-03 (`fss`), is not generated here, only parsed.\n *\n * Unreserved Templates (IDs 80 to 99) are never written: the location always goes in the\n * \"Merchant Account Information\" template, so the \"QR Code composto\" of Pix Automático (Pix\n * recorrente), which puts its recurrence location in one of them, is out of scope here.\n * `getPixPayloadInfo` does read a composto, but only as an ordinary dynamic payload.\n *\n * The merchant name, the merchant city and the description are folded to printable ASCII\n * (accents are dropped) and truncated to the lengths the BR Code allows, the description to\n * whatever is left of the 99 characters the \"Merchant Account Information\" template holds.\n *\n * `params.amount` is written with the two decimal places the BR Code takes, so an amount that\n * does not survive that round trip (`0.005`, `123.456`) is refused rather than rounded into a\n * payload that asks the payer for a different sum.\n *\n * @param {GeneratePixPayloadParams} params - The parameters of the payload.\n * @param {string} [params.key] - The Pix key of the receiver. Required unless `url` is given.\n * @param {string} [params.url] - The PSP location of a dynamic payload. Required unless `key`\n * is given.\n * @param {string} params.merchantName - The name of the receiver.\n * @param {string} params.merchantCity - The city of the receiver.\n * @param {number} [params.amount] - The amount in BRL, with at most two decimal places. Omit it\n * to let the payer type it.\n * @param {string} [params.txid] - The transaction ID, 1 to 25 characters of `[A-Za-z0-9]`.\n * @param {string} [params.description] - The free text shown to the payer.\n * @returns {string|null} The BR Code payload, or `null` when the parameters are invalid.\n *\n * @example\n * ```typescript\n * generatePixPayload({\n *   key: \"123.456.789-09\",\n *   merchantName: \"Fulano de Tal\",\n *   merchantCity: \"Brasília\",\n *   amount: 123.45,\n * });\n * // \"00020126330014br.gov.bcb.pix0111123456789095204000053039865406123.455802BR...\"\n *\n * generatePixPayload({\n *   url: \"pix.example.com/qr/v2/1234\",\n *   merchantName: \"Fulano de Tal\",\n *   merchantCity: \"Brasília\",\n * });\n * // \"00020101021226480014br.gov.bcb.pix2526pix.example.com/qr/v2/12345204000053039865802BR5913Fulano de Tal6008Brasilia62070503***6304FC66\"\n *\n * generatePixPayload({ merchantName: \"Fulano\", merchantCity: \"Brasília\" }); // null (neither key nor url)\n * generatePixPayload({ key: \"123.456.789-09\", url: \"pix.example.com/qr/v2/1234\", merchantName: \"Fulano\", merchantCity: \"Brasília\" }); // null (both key and url)\n * ```\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\n * @see Official: https://github.com/bacen/pix-api\n * Pix (SPI) OpenAPI spec.\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/API-DICT.html\n * DICT (Diretório de Identificadores de Contas Transacionais) API specification.\n */\nexport const generatePixPayload = (params: GeneratePixPayloadParams): string | null => {\n\tif (isNullish(params) || typeof params !== \"object\") return null;\n\n\tconst { key: keyInput, url: urlInput } = params;\n\n\tif ((keyInput !== undefined) === (urlInput !== undefined)) return null;\n\n\tconst identifier = resolveIdentifier(keyInput, urlInput);\n\n\tif (identifier === null) return null;\n\n\tconst { identifierId, identifierValue, pointOfInitiation } = identifier;\n\n\tconst merchantName = toAsciiField(params.merchantName, PIX_MERCHANT_NAME_MAX_LENGTH);\n\n\tif (!merchantName) return null;\n\n\tconst merchantCity = toAsciiField(params.merchantCity, PIX_MERCHANT_CITY_MAX_LENGTH);\n\n\tif (!merchantCity) return null;\n\n\tconst { amount, txid } = params;\n\n\tconst formattedAmount = resolveFormattedAmount(amount, txid, pointOfInitiation);\n\n\tif (formattedAmount === null) return null;\n\n\tconst gui = formatTlv({ id: PIX_GUI_ID, value: PIX_GUI });\n\tconst identifierObject = formatTlv({ id: identifierId, value: identifierValue });\n\tconst descriptionRoom = Math.min(\n\t\tPIX_DESCRIPTION_MAX_LENGTH,\n\t\tPIX_MERCHANT_ACCOUNT_INFORMATION_MAX_LENGTH -\n\t\t\tgui.length -\n\t\t\tidentifierObject.length -\n\t\t\tTLV_OVERHEAD,\n\t);\n\tconst description = toAsciiField(params.description, Math.max(descriptionRoom, 0));\n\n\tconst merchantAccountInformation =\n\t\tgui +\n\t\tidentifierObject +\n\t\t(description ? formatTlv({ id: PIX_DESCRIPTION_ID, value: description }) : \"\");\n\n\tconst payload =\n\t\tformatTlv({ id: PIX_PAYLOAD_FORMAT_INDICATOR_ID, value: PIX_PAYLOAD_FORMAT_INDICATOR }) +\n\t\t(pointOfInitiation === undefined\n\t\t\t? \"\"\n\t\t\t: formatTlv({ id: PIX_POINT_OF_INITIATION_ID, value: pointOfInitiation })) +\n\t\tformatTlv({ id: PIX_MERCHANT_ACCOUNT_INFORMATION_ID, value: merchantAccountInformation }) +\n\t\tformatTlv({ id: PIX_MERCHANT_CATEGORY_CODE_ID, value: PIX_MERCHANT_CATEGORY_CODE }) +\n\t\tformatTlv({ id: PIX_TRANSACTION_CURRENCY_ID, value: PIX_TRANSACTION_CURRENCY }) +\n\t\t(formattedAmount ? formatTlv({ id: PIX_TRANSACTION_AMOUNT_ID, value: formattedAmount }) : \"\") +\n\t\tformatTlv({ id: PIX_COUNTRY_CODE_ID, value: PIX_COUNTRY_CODE }) +\n\t\tformatTlv({ id: PIX_MERCHANT_NAME_ID, value: merchantName }) +\n\t\tformatTlv({ id: PIX_MERCHANT_CITY_ID, value: merchantCity }) +\n\t\tformatTlv({\n\t\t\tid: PIX_ADDITIONAL_DATA_ID,\n\t\t\tvalue: formatTlv({ id: PIX_TXID_ID, value: txid ?? PIX_ABSENT_TXID }),\n\t\t}) +\n\t\tPIX_CRC_TAG;\n\n\treturn payload + crc16Ccitt(payload);\n};\n","/**\n * Número Único de Processo (`NNNNNNN-DD.AAAA.J.TR.OOOO`) of Resolução CNJ nº 65/2008: the length\n * of the digits only value and the closed list of tribunal codes (TR) each órgão code (J) accepts.\n *\n * `J` comes from art. 1º, § 4º, which names one segment per digit: Supremo Tribunal Federal `1`,\n * Conselho Nacional de Justiça `2`, Superior Tribunal de Justiça `3`, Justiça Federal `4`,\n * Justiça do Trabalho `5`, Justiça Eleitoral `6`, Justiça Militar da União `7`, Justiça dos\n * Estados e do Distrito Federal e Territórios `8` and Justiça Militar Estadual `9`.\n *\n * `TR` comes from art. 1º, § 5º, whose incisos close the list segment by segment: `00` for the\n * processes originating in the STF, the CNJ, the STJ, the TST, the TSE and the STM (inciso I);\n * `90` for those originating in the Conselho da Justiça Federal and in the Conselho Superior da\n * Justiça do Trabalho (inciso II); `01` to `06` for the Tribunais Regionais Federais (inciso III,\n * in the wording Resolução CNJ nº 477/2022 gave it to seat the TRF da 6ª Região created by Lei nº\n * 14.226/2021); `01` to `24` for the Tribunais Regionais do Trabalho (inciso IV); `01` to `27`\n * for the Tribunais Regionais Eleitorais (inciso V); `01` to `12` for the Circunscrições\n * Judiciárias Militares (inciso VI); `01` to `27` for the Tribunais de Justiça (inciso VII); and\n * `13`, `21` and `26` for the Tribunais de Justiça Militar of Minas Gerais, Rio Grande do Sul and\n * São Paulo (inciso VIII).\n *\n * The unidade de origem (`OOOO`) is left out on purpose: art. 1º, § 6º hands its codification to\n * each tribunal, which only has to publish its own list on its website, so there is no central\n * roll to check a code against.\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/119\n * Resolução CNJ nº 65, de 16 de dezembro de 2008, whose art. 1º, § 4º and § 5º carry the two\n * lists above and whose Anexos I to VII print one example number per tribunal.\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/4781\n * Resolução CNJ nº 477, de 10 de outubro de 2022, art. 1º: \"nos processos da Justiça Federal, os\n * Tribunais Regionais Federais devem ser identificados no campo (TR) pelos números de 01 a 06,\n * observadas as respectivas regiões\". Its Anexo II prints `0000100-15.2008.406.0000` for the TRF\n * da 6ª Região.\n * @see Official: https://www.planalto.gov.br/ccivil_03/_ato2019-2022/2021/lei/l14226.htm\n * Lei nº 14.226, de 20 de outubro de 2021, art. 1º: \"É criado o Tribunal Regional Federal da 6ª\n * Região, com sede em Belo Horizonte e jurisdição no Estado de Minas Gerais\", the court Resolução\n * CNJ nº 477/2022 added to the TR range of the Justiça Federal.\n */\n\n/** Digits of a processo jurídico number (`NNNNNNNDDAAAAJTROOOO`, Resolução CNJ nº 65/2008). */\nexport const PROCESSO_JURIDICO_LENGTH = 20;\n\n/** Modulus of the ISO 7064 MOD 97-10 check the two verifying digits (`DD`) come from. */\nexport const MOD_97_10_QUOTIENT = 97;\n\n/** The MOD 97-10 check digits are this value minus the remainder of the number times 100 by 97. */\nexport const MOD_97_10_SUM = 98;\n\n/**\n * @param {number} first Lowest code of the range.\n * @param {number} last Highest code of the range.\n * @returns {number[]} Every code from `first` to `last`, both included.\n */\nconst range = (first: number, last: number): number[] =>\n\tArray.from({ length: last - first + 1 }, (_, index) => first + index);\n\n/** Superior court of a segment, which files its own processes under a zeroed `TR` (§ 5º, I). */\nconst SUPERIOR_COURT = 0;\n\n/** Conselho da Justiça Federal and Conselho Superior da Justiça do Trabalho (§ 5º, II). */\nconst COUNCIL = 90;\n\n/** Tribunal codes (`TR`) Resolução CNJ nº 65/2008 allows under each órgão code (`J`). */\nexport const PROCESSO_JURIDICO_TRIBUNALS: ReadonlyMap<number, readonly number[]> = new Map([\n\t[1, [SUPERIOR_COURT]],\n\t[2, [SUPERIOR_COURT]],\n\t[3, [SUPERIOR_COURT]],\n\t[4, [...range(1, 6), COUNCIL]],\n\t[5, [SUPERIOR_COURT, ...range(1, 24), COUNCIL]],\n\t[6, [SUPERIOR_COURT, ...range(1, 27)]],\n\t[7, [SUPERIOR_COURT, ...range(1, 12)]],\n\t[8, range(1, 27)],\n\t[9, [13, 21, 26]],\n]);\n","import { MOD_97_10_QUOTIENT, MOD_97_10_SUM } from \"../constants/processo-juridico\";\n\n/** Digits of the head of the base, the largest prefix whose product by 100 still fits a double. */\nconst HEAD_LENGTH = 11;\n\n/**\n * Calculates the two verifying digits (`DD`) of a processo jurídico number, the ISO 7064 MOD\n * 97-10 check of Resolução CNJ nº 65/2008, art. 1º, § 2º: 98 minus the remainder of the other 18\n * digits, read as one number and multiplied by 100, by 97.\n *\n * That 20 digit product does not fit a double, so the 18 digits are reduced in two steps: the\n * remainder of the first 11 is carried into the last 7 (times 10 to the 9th, the 7 digits times\n * the 100), which is the same remainder without ever leaving the safe integer range.\n *\n * @param {string} base - The 18 digits of the number without its verifying digits (`NNNNNNNAAAAJTROOOO`).\n * @returns {number} The verifying digits as one number, 1 to 98.\n *\n * @example\n * ```typescript\n * calculateProcessoJuridicoCheckDigits(\"000000120220100001\"); // 29\n * ```\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/119\n */\nexport const calculateProcessoJuridicoCheckDigits = (base: string): number => {\n\tconst head = Number(base.slice(0, HEAD_LENGTH));\n\tconst tail = Number(base.slice(HEAD_LENGTH));\n\n\tconst remainder = ((head % MOD_97_10_QUOTIENT) * 1_000_000_000 + tail * 100) % MOD_97_10_QUOTIENT;\n\n\treturn MOD_97_10_SUM - remainder;\n};\n","import { calculateProcessoJuridicoCheckDigits } from \"../_internals/calculate-processo-juridico-check-digits/calculate-processo-juridico-check-digits\";\nimport { PROCESSO_JURIDICO_TRIBUNALS } from \"../_internals/constants/processo-juridico\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { pickRandom } from \"../_internals/pick-random/pick-random\";\n\n/** The parameters of `generateProcessoJuridico`. */\nexport type GenerateProcessoJuridicoParams = {\n\t/** Filing year, from the current year to 9999 (default: the current year). */\n\tyear?: number;\n\t/** Court segment (J), from 1 to 9 (default: random). */\n\tcourt?: number;\n};\n\n/**\n * The parameters of `generateProcessoJuridico`, the 2.3.0 name of\n * `GenerateProcessoJuridicoParams`.\n *\n * @deprecated Use `GenerateProcessoJuridicoParams` instead.\n */\nexport type GenerateProcessoJuridicoOptions = GenerateProcessoJuridicoParams;\n\nconst MAX_YEAR = 9999;\nconst TRIBUNAL_LENGTH = 2;\n\nconst COURTS = [...PROCESSO_JURIDICO_TRIBUNALS.keys()];\n\n/**\n * Generates a random valid Brazilian Processo Jurídico (court case) number,\n * following the `NNNNNNNDDAAAAJTROOOO` layout of Resolução CNJ nº 65/2008.\n *\n * The órgão (`J`) and the tribunal (`TR`) are drawn from the closed lists of art. 1º, § 4º and\n * § 5º of the resolution, so the pair always names a court that exists: `court` picks the órgão\n * and the `TR` is then drawn among the tribunais that órgão has, which is why a `court` outside\n * 1 to 9, the only value with no tribunal to draw from, returns `null` instead of a number. The\n * unidade de origem (`OOOO`) is drawn freely, since art. 1º, § 6º leaves its codification to each\n * tribunal and publishes no central list.\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * @param {GenerateProcessoJuridicoParams} [options] - Optional generation options.\n * @param {number} options.year - The `AAAA` field. Must be an integer between the\n * current year and 9999. Defaults to the current year.\n * @param {number} options.court - The `J` field (segmento do Judiciário). Must be an\n * integer between 1 and 9. Defaults to a random value.\n * @returns {string|null} The generated number without formatting, or null when the options are invalid.\n *\n * @example\n * ```typescript\n * generateProcessoJuridico(); // \"00020803420265150049\"\n * generateProcessoJuridico({ year: 2030, court: 5 }); // \"12345679820305120049\"\n * generateProcessoJuridico({ year: 10000 }); // null\n * generateProcessoJuridico({ court: 10 }); // null (no such órgão)\n * ```\n *\n * Resolução CNJ nº 65/2008 defines this Número Único de Processo layout and its check digits, and\n * closes the list of órgão (`J`) and tribunal (`TR`) codes in art. 1º, § 4º and § 5º.\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/119\n */\nexport const generateProcessoJuridico = (\n\toptions: GenerateProcessoJuridicoParams = {},\n): string | null => {\n\tif (isNullish(options) || typeof options !== \"object\") return null;\n\n\tconst currentYear = new Date().getFullYear();\n\tconst { year = currentYear, court = pickRandom(COURTS) } = options;\n\tconst tribunals = PROCESSO_JURIDICO_TRIBUNALS.get(court);\n\n\tif (!Number.isInteger(year) || year < currentYear || year > MAX_YEAR || tribunals === undefined) {\n\t\treturn null;\n\t}\n\n\tconst sequencial = generateRandomNumber(7);\n\tconst tribunal = String(pickRandom(tribunals)).padStart(TRIBUNAL_LENGTH, \"0\");\n\tconst foro = generateRandomNumber(4);\n\tconst base = `${sequencial}${year}${court}${tribunal}${foro}`;\n\tconst checkDigits = String(calculateProcessoJuridicoCheckDigits(base)).padStart(2, \"0\");\n\n\treturn `${sequencial}${checkDigits}${year}${court}${tribunal}${foro}`;\n};\n","const FIRST_MULTIPLIER = 2;\n\nconst LAST_MULTIPLIER = 9;\n\nconst MODULUS = 11;\n\nconst SUM_SCALE = 10;\n\nconst OVERFLOW_DIGIT = 10;\n\n/**\n * Calculates the check digit of a RENAVAM (Registro Nacional de Veículos Automotores) base, the\n * eleventh digit of the registration.\n *\n * The ten base digits are read from right to left and multiplied by 2, 3, 4, 5, 6, 7, 8, 9 and\n * then 2 again, cycling back whenever the multiplier passes 9. The weighted sum is multiplied by\n * ten and the check digit is the remainder of that product by eleven, with a remainder of ten\n * mapped back to 0.\n *\n * The digit is the very same one `mod11`'s `arrecadacao` mapping yields, for every possible base,\n * but the loop is written out here rather than delegated to it: pulling the shared, table driven\n * `mod11` into this module costs `isValidRenavam` and `generateRenavam` around 100 B of bundle\n * each, which the tree-shaking budget of this package does not spend on eight lines.\n *\n * The Código de Trânsito Brasileiro creates the RENAVAM registry but does not define its check\n * digit, so the calculation follows the two community references cited below.\n *\n * @param {string} base - The ten digits that precede the check digit.\n * @returns {number} The check digit, 0 to 9.\n *\n * @example\n * ```typescript\n * calculateRenavamCheckDigit(\"0063988496\"); // 2\n * calculateRenavamCheckDigit(\"1234567890\"); // 0\n * ```\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l9503compilado.htm\n * @see Based on: https://github.com/klawdyo/validation-br/blob/main/src/renavam.ts\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/renavam.py\n */\nexport const calculateRenavamCheckDigit = (base: string): number => {\n\tlet sum = 0;\n\tlet multiplier = FIRST_MULTIPLIER;\n\n\tfor (let index = base.length - 1; index >= 0; index--) {\n\t\tsum += Number.parseInt(base.charAt(index), 10) * multiplier;\n\n\t\tmultiplier = multiplier >= LAST_MULTIPLIER ? FIRST_MULTIPLIER : multiplier + 1;\n\t}\n\n\tconst digit = (sum * SUM_SCALE) % MODULUS;\n\n\treturn digit === OVERFLOW_DIGIT ? 0 : digit;\n};\n","import { calculateRenavamCheckDigit } from \"../_internals/calculate-renavam-check-digit/calculate-renavam-check-digit\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\n\nconst BASE_LENGTH = 10;\n\n/**\n * Generates a valid random RENAVAM (Registro Nacional de Veículos Automotores) number.\n *\n * The result is always the eleven digit form: ten base digits followed by the check digit. A base\n * whose digits are all the same is drawn again, since `isValidRenavam` rejects a registration like\n * `\"00000000000\"`.\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * @returns {string} A valid 11-digit RENAVAM string without formatting.\n *\n * @example\n * ```typescript\n * generateRenavam(); // \"12345678900\"\n * ```\n *\n * The Código de Trânsito Brasileiro creates the RENAVAM registry but does not define its check\n * digit, so the algorithm follows the two community references cited as `Based on:`.\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l9503compilado.htm\n * @see Based on: https://github.com/klawdyo/validation-br/blob/main/src/renavam.ts\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/renavam.py\n */\nexport const generateRenavam = (): string => {\n\tlet base = generateRandomNumber(BASE_LENGTH);\n\n\twhile (isRepeatedDigits(base)) {\n\t\tbase = generateRandomNumber(BASE_LENGTH);\n\t}\n\n\treturn `${base}${calculateRenavamCheckDigit(base)}`;\n};\n","import { NINE_DIGIT_FEDERATIVE_UNION_CODES } from \"../constants/voter-id\";\n\nconst SEQUENTIAL_LENGTH = 8;\n\nexport type CalculateVoterIdFirstDigitParams = {\n\t/** The sequential part of the voter ID, 8 digits (9 for some São Paulo/Minas Gerais ids). */\n\tsequentialNumber: string;\n\t/** The 2 digit federative unit code of the voter ID. */\n\tfederativeUnion: string;\n};\n\n/**\n * Calculates the first verification digit of a Brazilian voter id (título de eleitor).\n *\n * The first eight sequential digits are weighted 2..9 from left to right and summed modulo\n * 11. São Paulo (01) and Minas Gerais (02) issued some ids with a nine digit sequential\n * number; the check digits of those ids are still computed from the first eight digits, the\n * ninth one is not part of the calculation (brutils does the same).\n *\n * @param {CalculateVoterIdFirstDigitParams} params - The calculation parameters.\n * @param {string} params.sequentialNumber - The 8 or 9 digit sequential number; only the first 8 digits count.\n * @param {string} params.federativeUnion - The 2-digit federative union code.\n * @returns {number} The calculated first verification digit (0-9).\n *\n * @example\n * ```typescript\n * calculateVoterIdFirstDigit({ sequentialNumber: \"10238501\", federativeUnion: \"06\" }); // 7\n * ```\n */\nexport const calculateVoterIdFirstDigit = ({\n\tsequentialNumber,\n\tfederativeUnion,\n}: CalculateVoterIdFirstDigitParams): number => {\n\t// The weighted sum is written out rather than delegated to the shared `generateChecksum`: its\n\t// sanitizer chain costs `isValidVoterId` and `generateVoterId` around 285 B of bundle each.\n\tlet sum = 0;\n\n\tfor (let i = 0; i < SEQUENTIAL_LENGTH; i++) {\n\t\t// Stryker disable next-line ArithmeticOperator: charCodeAt(i)+48 shifts each digit by 96; with weights 2..9 (summing to 44) the total shift is 96*44=4224=384*11, a multiple of 11, so the mod-11 result is unaffected.\n\t\tsum += (sequentialNumber.charCodeAt(i) - 48) * (i + 2);\n\t}\n\n\tconst remainder = sum % 11;\n\n\tif (remainder === 0 && NINE_DIGIT_FEDERATIVE_UNION_CODES.includes(federativeUnion)) {\n\t\treturn 1;\n\t}\n\n\treturn remainder === 10 ? 0 : remainder;\n};\n","import { NINE_DIGIT_FEDERATIVE_UNION_CODES } from \"../constants/voter-id\";\n\nexport type CalculateVoterIdSecondDigitParams = {\n\t/** The 2 digit federative unit code of the voter ID. */\n\tfederativeUnion: string;\n\t/** The first check digit, 0 to 9. */\n\tfirstDigit: number;\n};\n\n/**\n * Calculates the second verification digit of a Brazilian voter id (título de eleitor).\n *\n * @param {CalculateVoterIdSecondDigitParams} params - The calculation parameters.\n * @param {string} params.federativeUnion - The 2-digit federative union code.\n * @param {number} params.firstDigit - The previously calculated first verification digit.\n * @returns {number} The calculated second verification digit (0-9).\n *\n * @example\n * ```typescript\n * calculateVoterIdSecondDigit({ federativeUnion: \"06\", firstDigit: 7 }); // 1\n * ```\n */\nexport const calculateVoterIdSecondDigit = ({\n\tfederativeUnion,\n\tfirstDigit,\n}: CalculateVoterIdSecondDigitParams): number => {\n\tconst sum =\n\t\t(federativeUnion.charCodeAt(0) - 48) * 7 +\n\t\t(federativeUnion.charCodeAt(1) - 48) * 8 +\n\t\tfirstDigit * 9;\n\n\tconst remainder = sum % 11;\n\n\tif (remainder === 0 && NINE_DIGIT_FEDERATIVE_UNION_CODES.includes(federativeUnion)) {\n\t\treturn 1;\n\t}\n\n\treturn remainder === 10 ? 0 : remainder;\n};\n","import { type StateCode } from \"../_internals/constants/states\";\n\nexport const UF_TO_VOTER_ID_CODE: Record<StateCode | \"ZZ\", string> = {\n\tSP: \"01\",\n\tMG: \"02\",\n\tRJ: \"03\",\n\tRS: \"04\",\n\tBA: \"05\",\n\tPR: \"06\",\n\tCE: \"07\",\n\tPE: \"08\",\n\tSC: \"09\",\n\tGO: \"10\",\n\tMA: \"11\",\n\tPB: \"12\",\n\tPA: \"13\",\n\tES: \"14\",\n\tPI: \"15\",\n\tRN: \"16\",\n\tAL: \"17\",\n\tMT: \"18\",\n\tMS: \"19\",\n\tDF: \"20\",\n\tSE: \"21\",\n\tAM: \"22\",\n\tRO: \"23\",\n\tAC: \"24\",\n\tAP: \"25\",\n\tRR: \"26\",\n\tTO: \"27\",\n\tZZ: \"28\",\n};\n","import { calculateVoterIdFirstDigit } from \"../_internals/calculate-voter-id-first-digit/calculate-voter-id-first-digit\";\nimport { calculateVoterIdSecondDigit } from \"../_internals/calculate-voter-id-second-digit/calculate-voter-id-second-digit\";\nimport { type StateCode } from \"../_internals/constants/states\";\nimport { generateRandomNumber } from \"../_internals/generate-random-number/generate-random-number\";\nimport { UF_TO_VOTER_ID_CODE } from \"../is-valid-voter-id/constants\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\n/**\n * The federative union code of a state, `\"ZZ\"`'s own code for anything else. The lookup is an own\n * property one, so a key of the prototype chain (`\"__proto__\"`, `\"constructor\"`, `\"toString\"`)\n * resolves as an unknown state instead of reaching `Object.prototype` and handing a function or an\n * object to the check digit calculation.\n *\n * @param {StateCode | \"ZZ\"} state - The state the voter id is generated for.\n * @returns {string} The two digit federative union code of that state, or `\"ZZ\"`'s own code.\n */\nconst getFederativeUnion = (state: StateCode | \"ZZ\"): string =>\n\ttypeof state === \"string\" && Object.hasOwn(UF_TO_VOTER_ID_CODE, state)\n\t\t? UF_TO_VOTER_ID_CODE[state]\n\t\t: UF_TO_VOTER_ID_CODE.ZZ;\n\n/**\n * Generates a valid random Brazilian voter id (título de eleitor).\n *\n * Uses `Math.random()` internally, so it is not cryptographically secure, do not use for security purposes.\n *\n * @param {StateCode | \"ZZ\"} state - Optional. The Brazilian state code to generate a voter id\n * for, or `\"ZZ\"` for a voter id issued abroad. Defaults to `\"ZZ\"` when omitted or unknown, a key\n * of the prototype chain (`\"__proto__\"`, `\"constructor\"`) and a value that is not a string\n * included, so a malformed state never throws.\n * @returns {string} A valid 12-digit voter id string without formatting.\n *\n * @example\n * ```typescript\n * generateVoterId(); // \"123456782895\" (abroad, UF \"28\")\n * generateVoterId(\"SP\"); // \"123456780191\" (UF \"01\")\n * generateVoterId(\"XX\" as StateCode); // falls back to \"ZZ\" instead of throwing\n * ```\n *\n * Resolução TSE nº 23.659/2021, art. 36, parágrafo único, confirms the federative union table and\n * the two-step módulo 11 structure; the weights themselves are not published by the TSE and follow\n * the community reference cited as `Based on:`.\n *\n * The TSE resolution page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser.\n *\n * @see Official: https://www.tse.jus.br/legislacao/compilada/res/2021/resolucao-no-23-659-de-26-de-outubro-de-2021\n * @see Based on: https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-titulo-de-eleitor/\n */\nexport const generateVoterId = (\n\t// Stryker disable next-line StringLiteral: any default other than a valid key still falls through the ?? UF_TO_VOTER_ID_CODE.ZZ lookup below, so the literal default value is unobservable.\n\tstate: StateCode | \"ZZ\" = \"ZZ\",\n): string => {\n\tconst federativeUnion = getFederativeUnion(state);\n\tconst sequentialNumber = generateRandomNumber(8);\n\tconst digit1 = calculateVoterIdFirstDigit({ sequentialNumber, federativeUnion });\n\tconst digit2 = calculateVoterIdSecondDigit({ federativeUnion, firstDigit: digit1 });\n\n\treturn `${sequentialNumber}${federativeUnion}${digit1}${digit2}`;\n};\n","import { isNullish } from \"../is-nullish/is-nullish.ts\";\n\nexport type FetchWithRetryOptions = RequestInit & {\n\t/** How many times to retry a failed request (default: 2). */\n\tretries?: number;\n\t/** Delay between retries, in milliseconds (default: 250). */\n\tretryDelayMs?: number;\n};\n\nconst RETRYABLE_ERROR_CODES = new Set([\n\t\"UND_ERR_SOCKET\",\n\t\"UND_ERR_CONNECT_TIMEOUT\",\n\t\"UND_ERR_HEADERS_TIMEOUT\",\n\t\"UND_ERR_BODY_TIMEOUT\",\n\t\"ECONNRESET\",\n\t\"ECONNREFUSED\",\n\t\"EHOSTUNREACH\",\n\t\"ENETUNREACH\",\n\t\"ETIMEDOUT\",\n]);\n\nconst getErrorCode = (error: unknown): string | undefined => {\n\tif (isNullish(error) || typeof error !== \"object\") return undefined;\n\n\tconst code = \"code\" in error ? error.code : undefined;\n\n\tif (typeof code === \"string\") {\n\t\treturn code;\n\t}\n\n\tconst cause = \"cause\" in error ? error.cause : undefined;\n\n\tif (isNullish(cause) || typeof cause !== \"object\") return undefined;\n\n\tconst causeCode = \"code\" in cause ? cause.code : undefined;\n\n\t// Stryker disable next-line ConditionalExpression: RETRYABLE_ERROR_CODES.includes() only ever\n\t// matches an exact string, so a non-string causeCode reaching that check behaves identically to\n\t// undefined; the type check below exists only to satisfy the string | undefined return type.\n\treturn typeof causeCode === \"string\" ? causeCode : undefined;\n};\n\nconst isRetryableFetchError = (error: unknown): boolean => {\n\tconst code = getErrorCode(error);\n\n\t// Stryker disable next-line ConditionalExpression: RETRYABLE_ERROR_CODES.has() only ever\n\t// matches an exact string, so an undefined code reaching that check behaves identically to\n\t// skipping it; the undefined check below exists only to satisfy Set<string>#has's parameter type.\n\tif (code !== undefined && RETRYABLE_ERROR_CODES.has(code)) {\n\t\treturn true;\n\t}\n\n\tif (!(error instanceof Error)) {\n\t\treturn false;\n\t}\n\n\treturn error.message.toLowerCase().includes(\"fetch failed\");\n};\n\nconst wait = (ms: number): Promise<void> =>\n\tms <= 0\n\t\t? Promise.resolve()\n\t\t: new Promise((resolve) => {\n\t\t\t\tsetTimeout(resolve, ms);\n\t\t\t});\n\n/**\n * Performs the attempts of `fetchWithRetry` in a loop: the first attempt plus one retry per\n * `retries`, waiting `retryDelayMs * attempt` before each retry. Written as a loop rather than a\n * recursive attempt so a long retry budget never grows the call stack. A negative `retries`\n * rejects before any attempt, as it always did.\n *\n * @param {string|URL|Request} input - The resource to fetch.\n * @param {RequestInit} init - The `fetch` init.\n * @param {number} retries - How many retries follow the first attempt.\n * @param {number} retryDelayMs - The base delay, multiplied by the attempt number.\n * @returns {Promise<Response>} The first successful `fetch` response.\n */\nconst attemptFetch = async (\n\tinput: string | URL | Request,\n\tinit: RequestInit,\n\tretries: number,\n\tretryDelayMs: number,\n): Promise<Response> => {\n\tif (!Number.isInteger(retries) || retries < 0) {\n\t\tthrow new RangeError(\"retries must be an integer of zero or greater\");\n\t}\n\n\tlet attempt = 0;\n\n\tfor (;;) {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\treturn await fetch(input, init);\n\t\t} catch (error) {\n\t\t\tif (attempt >= retries || !isRetryableFetchError(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\tattempt++;\n\t\t// Retries are sequential by definition: each one waits for the previous failure and its backoff.\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait wait(retryDelayMs * attempt);\n\t}\n};\n\n/**\n * Performs a `fetch` retrying transient network failures with a linear backoff.\n *\n * Only failures accepted by `isRetryableFetchError` are retried; every other rejection is\n * rethrown immediately. HTTP error statuses are not retried, since they resolve rather than\n * reject.\n *\n * @param {string|URL|Request} input - The resource to fetch.\n * @param {FetchWithRetryOptions} [options] - `fetch` init plus `retries` and `retryDelayMs`.\n * @returns {Promise<Response>} The `fetch` response.\n *\n * @example\n * ```typescript\n * await fetchWithRetry(\"https://viacep.com.br/ws/01001000/json/\", { retries: 1, retryDelayMs: 0 });\n * ```\n */\nexport const fetchWithRetry = (\n\tinput: string | URL | Request,\n\t{ retries = 2, retryDelayMs = 250, ...init }: FetchWithRetryOptions = {},\n): Promise<Response> => attemptFetch(input, init, retries, retryDelayMs);\n","import { fetchWithRetry } from \"../_internals/fetch-with-retry/fetch-with-retry\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { isValidCep } from \"../is-valid-cep/is-valid-cep\";\n\n/** Base class of every error `getAddressInfoByCep` rejects with. */\nexport class GetAddressInfoByCepError extends Error {\n\tpublic constructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetAddressInfoByCepError\";\n\t}\n}\n\n/** Thrown by `getAddressInfoByCep` when the value given is not a valid CEP. */\nexport class GetAddressInfoByCepValidationError extends GetAddressInfoByCepError {\n\tpublic constructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetAddressInfoByCepValidationError\";\n\t}\n}\n\n/** Thrown by `getAddressInfoByCep` when no CEP service knows the CEP. */\nexport class GetAddressInfoByCepNotFoundError extends GetAddressInfoByCepError {\n\tpublic constructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetAddressInfoByCepNotFoundError\";\n\t}\n}\n\n/** Thrown by `getAddressInfoByCep` when every CEP service failed to answer. */\nexport class GetAddressInfoByCepServiceError extends GetAddressInfoByCepError {\n\tpublic constructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetAddressInfoByCepServiceError\";\n\t}\n}\n\n/** The address `getAddressInfoByCep` returns for a CEP. */\nexport type AddressInfo = {\n\t/** The 8 digit CEP, no mask. */\n\tcep: string;\n\t/** Two letter state code, e.g. \"SP\". */\n\tstate: string;\n\t/** City name. */\n\tcity: string;\n\t/** Neighborhood name, empty when the CEP covers a whole city. */\n\tneighborhood: string;\n\t/** Street name, empty when the CEP covers a whole city. */\n\tstreet: string;\n};\n\n/** The CEP services `getAddressInfoByCep` can query. */\nexport type CepProvider = \"viacep\" | \"widenet\" | \"brasilapi\";\n\n/** Options of `getAddressInfoByCep`. */\nexport type GetAddressInfoByCepOptions = {\n\t/**\n\t * Which CEP services to race, in the order given (default: `[\"viacep\", \"brasilapi\"]`; the\n\t * deprecated `\"widenet\"` provider is excluded from the default list, but can still be\n\t * requested explicitly).\n\t */\n\tproviders?: CepProvider[];\n};\n\ntype ProviderPayload = Record<string, unknown>;\n\n/**\n * The status BrasilAPI answers an unknown CEP with, alongside an `errors` body. ViaCEP and\n * Widenet report a miss inside a 200 body instead, so BrasilAPI is the only provider whose\n * not-found signal is an HTTP status and the only one that needs it mapped before `response.ok`\n * turns it into a service failure.\n *\n * @see Based on: https://brasilapi.com.br/docs#tag/CEP\n */\nconst BRASIL_API_NOT_FOUND_STATUS = 404;\n\nconst asString = (value: unknown): string => (typeof value === \"string\" ? value : \"\");\n\nconst readPayload = async (response: Response): Promise<ProviderPayload> => {\n\tconst data: unknown = await response.json();\n\n\treturn Object.assign<ProviderPayload, unknown>({}, data);\n};\n\nconst fetchViaCep = async (cep: string): Promise<AddressInfo> => {\n\tconst response = await fetchWithRetry(`https://viacep.com.br/ws/${cep}/json/`);\n\n\tif (!response.ok) {\n\t\t// Stryker disable next-line StringLiteral: only `instanceof GetAddressInfoByCepNotFoundError`\n\t\t// is checked when aggregating provider failures below, so this message is never observable.\n\t\tthrow new Error(`ViaCEP request failed with status ${response.status}`);\n\t}\n\n\tconst record = await readPayload(response);\n\tconst cepValue = asString(record[\"cep\"]);\n\n\tif (Boolean(record[\"erro\"]) || cepValue === \"\") {\n\t\t// Stryker disable next-line StringLiteral: only `instanceof GetAddressInfoByCepNotFoundError`\n\t\t// is checked when aggregating provider failures below, so this message is never observable.\n\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado\");\n\t}\n\n\treturn {\n\t\tcep: cepValue.replaceAll(/\\D/g, \"\"),\n\t\tstate: asString(record[\"uf\"]),\n\t\tcity: asString(record[\"localidade\"]),\n\t\tneighborhood: asString(record[\"bairro\"]),\n\t\tstreet: asString(record[\"logradouro\"]),\n\t};\n};\n\nconst fetchWidenet = async (cep: string): Promise<AddressInfo> => {\n\tconst response = await fetchWithRetry(\n\t\t`https://apps.widenet.com.br/busca-cep/api/cep/${cep}.json`,\n\t);\n\n\tif (!response.ok) {\n\t\t// Stryker disable next-line StringLiteral: only `instanceof GetAddressInfoByCepNotFoundError`\n\t\t// is checked when aggregating provider failures below, so this message is never observable.\n\t\tthrow new Error(`Widenet request failed with status ${response.status}`);\n\t}\n\n\tconst record = await readPayload(response);\n\tconst codeValue = asString(record[\"code\"]);\n\n\tif (record[\"status\"] !== 200 || record[\"ok\"] !== true || codeValue === \"\") {\n\t\t// Stryker disable next-line StringLiteral: only `instanceof GetAddressInfoByCepNotFoundError`\n\t\t// is checked when aggregating provider failures below, so this message is never observable.\n\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado\");\n\t}\n\n\treturn {\n\t\tcep: codeValue.replaceAll(/\\D/g, \"\"),\n\t\tstate: asString(record[\"state\"]),\n\t\tcity: asString(record[\"city\"]),\n\t\tneighborhood: asString(record[\"district\"]),\n\t\tstreet: asString(record[\"address\"]),\n\t};\n};\n\nconst fetchBrasilApi = async (cep: string): Promise<AddressInfo> => {\n\tconst response = await fetchWithRetry(`https://brasilapi.com.br/api/cep/v1/${cep}`);\n\n\tif (response.status === BRASIL_API_NOT_FOUND_STATUS) {\n\t\t// Stryker disable next-line StringLiteral: only `instanceof GetAddressInfoByCepNotFoundError`\n\t\t// is checked when aggregating provider failures below, so this message is never observable.\n\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado\");\n\t}\n\n\tif (!response.ok) {\n\t\t// Stryker disable next-line StringLiteral: only `instanceof GetAddressInfoByCepNotFoundError`\n\t\t// is checked when aggregating provider failures below, so this message is never observable.\n\t\tthrow new Error(`BrasilAPI request failed with status ${response.status}`);\n\t}\n\n\tconst record = await readPayload(response);\n\tconst cepValue = asString(record[\"cep\"]);\n\n\tif (Boolean(record[\"errors\"]) || cepValue === \"\") {\n\t\t// Stryker disable next-line StringLiteral: only `instanceof GetAddressInfoByCepNotFoundError`\n\t\t// is checked when aggregating provider failures below, so this message is never observable.\n\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado\");\n\t}\n\n\treturn {\n\t\tcep: cepValue.replaceAll(/\\D/g, \"\"),\n\t\tstate: asString(record[\"state\"]),\n\t\tcity: asString(record[\"city\"]),\n\t\tneighborhood: asString(record[\"neighborhood\"]),\n\t\tstreet: asString(record[\"street\"]),\n\t};\n};\n\nconst providerMap: Record<CepProvider, (cep: string) => Promise<AddressInfo>> = {\n\tviacep: fetchViaCep,\n\twidenet: fetchWidenet,\n\tbrasilapi: fetchBrasilApi,\n};\n\n/**\n * Fetches address information for a given CEP using multiple providers simultaneously.\n * Returns the result from the first provider that responds successfully.\n *\n * The providers are started together and raced with `Promise.any`, not tried one after the\n * other, so a provider that is retrying delays nothing for the others: its retries only push\n * back the moment its own failure lands, and therefore the moment an all-failed rejection can\n * surface.\n *\n * @param {string|number} cep - The CEP (Brazilian postal code) to search for. Can be a string or number.\n * @param {GetAddressInfoByCepOptions} options - Optional configuration for the function.\n * @param {CepProvider[]} options.providers - List of providers to use. Defaults to `[\"viacep\", \"brasilapi\"]`\n * if not specified (the deprecated `\"widenet\"` provider is excluded from the default list, but can still\n * be requested explicitly).\n * @returns {Promise<AddressInfo>} A promise that resolves to the address information.\n * @throws {GetAddressInfoByCepValidationError} If the CEP format is invalid, or if\n * `options.providers` is given and names no known provider: an empty array, an array of unknown\n * names, and a value that is not an array at all (`null` included) all reject this way rather\n * than with a raw `TypeError`.\n * @throws {GetAddressInfoByCepNotFoundError} If the CEP is not found in any of the services.\n * @throws {GetAddressInfoByCepServiceError} If all services are unavailable.\n *\n * @example\n * ```typescript\n * // Using the default providers ([\"viacep\", \"brasilapi\"])\n * const address = await getAddressInfoByCep(\"01310100\");\n *\n * // Using specific providers\n * const address = await getAddressInfoByCep(\"01310-100\", {\n *   providers: [\"viacep\", \"brasilapi\"]\n * });\n *\n * // Using number input\n * const address = await getAddressInfoByCep(1310100);\n * ```\n *\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/tudo-sobre-cep\n * @see Based on: https://viacep.com.br/\n * ViaCEP, one of the two default providers. A third-party service, not a Correios one.\n * @see Based on: https://brasilapi.com.br/docs#tag/CEP\n * BrasilAPI, the other default provider. A third-party service, not a Correios one.\n */\nexport const getAddressInfoByCep = async (\n\tcep: string | number,\n\toptions?: GetAddressInfoByCepOptions,\n): Promise<AddressInfo> => {\n\tlet cepString = sanitizeToDigits(cep);\n\n\tif (typeof cep === \"number\") {\n\t\t// `padStart` is a no-op when `cepString` is already 8 characters or longer, so there is no\n\t\t// need to check its length here first.\n\t\tcepString = cepString.padStart(8, \"0\");\n\t}\n\n\tif (!isValidCep(cepString)) {\n\t\tthrow new GetAddressInfoByCepValidationError(\"CEP inválido\");\n\t}\n\n\tlet providersToUse: CepProvider[];\n\tif (options?.providers === undefined) {\n\t\tprovidersToUse = [\"viacep\", \"brasilapi\"];\n\t} else if (Array.isArray(options.providers)) {\n\t\t// An empty `options.providers` array also filters down to an empty `providersToUse` below,\n\t\t// which already reports the same validation error, so there is no dedicated check for it here.\n\t\tprovidersToUse = options.providers.filter((provider) => Object.hasOwn(providerMap, provider));\n\t\tif (providersToUse.length === 0) {\n\t\t\tthrow new GetAddressInfoByCepValidationError(\"Nenhum provedor válido especificado\");\n\t\t}\n\t} else {\n\t\tthrow new GetAddressInfoByCepValidationError(\"Nenhum provedor válido especificado\");\n\t}\n\n\tlet notFound = false;\n\tconst providerPromises = providersToUse.map(async (provider) => {\n\t\ttry {\n\t\t\treturn await providerMap[provider](cepString);\n\t\t} catch (error) {\n\t\t\tif (error instanceof GetAddressInfoByCepNotFoundError) notFound = true;\n\t\t\tthrow error;\n\t\t}\n\t});\n\n\ttry {\n\t\treturn await Promise.any(providerPromises);\n\t} catch {\n\t\tif (notFound) {\n\t\t\tthrow new GetAddressInfoByCepNotFoundError(\"CEP não encontrado em nenhum serviço\");\n\t\t}\n\n\t\tthrow new GetAddressInfoByCepServiceError(\n\t\t\t\"Todos os serviços estão fora de serviço ou indisponíveis\",\n\t\t);\n\t}\n};\n","/**\n * Checks whether a value may be handed to `sanitizeToDigits` and used as a lookup code.\n *\n * A string always may: whatever it holds, the sanitizer reduces it to its digits and the\n * lookup either matches or misses. A number only may when it is a non-negative safe integer,\n * because a minus sign and a decimal point are not digits and the sanitizer drops them\n * silently: `-11` and `1.1` would both be read as the code `11`, and `-3550308` and `355030.8`\n * as the code `3550308`. A number past `Number.MAX_SAFE_INTEGER` has already lost digits by\n * the time it arrives, so it is rejected rather than sanitized into a code it never was.\n *\n * `Number.isSafeInteger` never coerces its argument, so it already rejects every value that is\n * not a number; the conversion below only hands TypeScript a number to compare against zero.\n *\n * @param {unknown} value - The value to check.\n * @returns {boolean} True when the value is a string, or a number that is a non-negative safe\n * integer.\n *\n * @example\n * ```typescript\n * isLookupCode(\"3550308\"); // true\n * isLookupCode(3550308); // true\n * isLookupCode(-11); // false\n * isLookupCode(1.1); // false\n * isLookupCode(2 ** 53); // false\n * isLookupCode(null); // false\n * ```\n */\nexport const isLookupCode = (value: unknown): value is string | number =>\n\ttypeof value === \"string\" || (Number.isSafeInteger(value) && Number(value) >= 0);\n","import { AREA_CODE_SECONDARY_STATES, AREA_CODE_STATES } from \"../_internals/constants/area-codes\";\nimport { DATA, type State, type StateCode, type StateName } from \"../_internals/constants/states\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type { State, StateCode, StateName } from \"../_internals/constants/states\";\n\n/** The state, and the region it belongs to, that `getAreaCodeInfo` returns for a DDD. */\nexport type AreaCodeInfo = {\n\t/** The DDD (area code) as a number, e.g. `11`. */\n\tareaCode: number;\n\t/** The two-letter code of the state the DDD belongs to, e.g. `\"SP\"`. */\n\tstateCode: StateCode;\n\t/** The full name of the state the DDD belongs to, e.g. `\"São Paulo\"`. */\n\tstateName: StateName;\n\t/** The code of the region the state belongs to, e.g. `\"SE\"`. */\n\tregionCode: State[\"regionCode\"];\n\t/** The full name of the region the state belongs to, e.g. `\"Sudeste\"`. */\n\tregionName: State[\"regionName\"];\n\t/**\n\t * Every state the DDD serves, the primary `stateCode` first, e.g. `[\"SP\"]` for 11 and\n\t * `[\"DF\", \"GO\"]` for 61.\n\t */\n\tstateCodes: StateCode[];\n};\n\n/**\n * Retrieves the state (and its region) a Brazilian DDD (area code) belongs to.\n *\n * `stateCode` is always a single state: the one the DDD is seated in, the state of the city the\n * code was allocated around, which is not necessarily the state holding most of its\n * municipalities. Four DDDs straddle a state border, and for those `stateCodes` lists the\n * other states too. DDD 61 is the widest of them, serving the Distrito Federal and the twelve\n * Goiás municipalities of the Entorno do Distrito Federal, so its `stateCode` is `\"DF\"` and\n * its `stateCodes` is `[\"DF\", \"GO\"]` even though the Distrito Federal holds only one of its\n * thirteen municipalities, Brasília. The other three are 42 (`[\"PR\", \"SC\"]`, for Porto\n * União), 47 (`[\"SC\", \"PR\"]`, for Rio Negro) and 49 (`[\"SC\", \"PR\"]`, for Barracão), and there\n * the seat does hold every municipality but the one named.\n *\n * A `areaCode` given as a number must be a non-negative integer: a sign and a decimal point\n * are not digits, so `-11` and `1.1` are rejected instead of being read as `11`.\n *\n * @param {string|number} areaCode - The DDD to look up. Accepts a string or a non-negative\n * integer number, with any non-digit characters stripped before matching.\n * @returns {AreaCodeInfo|null} The area code info, or `null` when `areaCode` is not one of the\n * 67 DDDs in use under the Plano Geral de Numeração.\n *\n * Resolução Anatel nº 749/2022, art. 15, defines the Código Nacional (area code); the gov.br\n * page below lists the codes actually allocated and links, under \"POR MUNICÍPIO\", to the Anexo\n * of Resolução Anatel nº 263/2001, which gives the Código Nacional of every municipality.\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n * @see Official: https://www.gov.br/anatel/pt-br/regulado/numeracao/codigos-nacionais\n * @see Based on: https://informacoes.anatel.gov.br/legislacao/resolucoes/2001/383-resolucao-263\n * Anexo of Resolução nº 263/2001 (revoked; still the table Anatel's Códigos Nacionais page links to).\n * @see Based on: https://brasilapi.com.br/docs#tag/DDD\n *\n * @example\n * ```typescript\n * getAreaCodeInfo(\"11\");\n * // { areaCode: 11, stateCode: \"SP\", stateName: \"São Paulo\", regionCode: \"SE\", regionName: \"Sudeste\", stateCodes: [\"SP\"] }\n *\n * getAreaCodeInfo(21);\n * // { areaCode: 21, stateCode: \"RJ\", stateName: \"Rio de Janeiro\", regionCode: \"SE\", regionName: \"Sudeste\", stateCodes: [\"RJ\"] }\n *\n * getAreaCodeInfo(\"61\");\n * // { areaCode: 61, stateCode: \"DF\", stateName: \"Distrito Federal\", regionCode: \"CO\", regionName: \"Centro-Oeste\", stateCodes: [\"DF\", \"GO\"] }\n *\n * getAreaCodeInfo(\"00\"); // null\n * getAreaCodeInfo(-11); // null\n * ```\n */\nexport const getAreaCodeInfo = (areaCode: string | number): AreaCodeInfo | null => {\n\tif (!isLookupCode(areaCode)) return null;\n\n\tconst digits = sanitizeToDigits(areaCode);\n\n\tconst numericAreaCode = Number(digits);\n\n\tconst stateCode = AREA_CODE_STATES[numericAreaCode];\n\n\t// An unknown DDD maps to no state code, so the lookup below finds no state for it either.\n\tconst state = DATA.find((entry) => entry.code === stateCode);\n\n\tif (state === undefined) return null;\n\n\treturn {\n\t\tareaCode: numericAreaCode,\n\t\tstateCode,\n\t\tstateName: state.name,\n\t\tregionCode: state.regionCode,\n\t\tregionName: state.regionName,\n\t\tstateCodes: [stateCode, ...(AREA_CODE_SECONDARY_STATES[numericAreaCode] ?? [])],\n\t};\n};\n","import { AREA_CODE_SECONDARY_STATES, AREA_CODE_STATES } from \"../_internals/constants/area-codes\";\n\n/**\n * Retrieves every DDD (area code) that serves a given Brazilian state, under the Plano Geral\n * de Numeração.\n *\n * The match is case-insensitive, so `\"sp\"` and `\"SP\"` both resolve to the same list. The\n * result is sorted in ascending order and is a fresh array on every call.\n *\n * A DDD that straddles a state border is listed under every state it serves, so DDD 61 comes\n * back for both `\"DF\"` and `\"GO\"`: it serves the Distrito Federal and the twelve Goiás\n * municipalities of the Entorno do Distrito Federal. The other three are 42, shared by Paraná\n * and Porto União (SC), 47, shared by Santa Catarina and Rio Negro (PR), and 49, shared by\n * Santa Catarina and Barracão (PR).\n *\n * @param {string} stateCode - The two-letter code (sigla) of the state.\n * @returns {number[]} The DDDs of the state, sorted ascending, or an empty array when\n * `stateCode` does not match any Brazilian state.\n *\n * @example\n * ```typescript\n * getAreaCodesByState(\"SP\"); // [11, 12, 13, 14, 15, 16, 17, 18, 19]\n * getAreaCodesByState(\"sp\"); // [11, 12, 13, 14, 15, 16, 17, 18, 19]\n * getAreaCodesByState(\"AC\"); // [68]\n * getAreaCodesByState(\"DF\"); // [61]\n * getAreaCodesByState(\"GO\"); // [61, 62, 64]\n * getAreaCodesByState(\"XX\"); // []\n * ```\n *\n * Resolução Anatel nº 749/2022, art. 15, defines the Código Nacional (area code). The Anexo the\n * gov.br page below links to, giving the Código Nacional of every municipality, is the one this\n * inverse lookup was derived from and is no longer in force.\n *\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n * @see Official: https://www.gov.br/anatel/pt-br/regulado/numeracao/codigos-nacionais\n * @see Based on: https://informacoes.anatel.gov.br/legislacao/resolucoes/2001/383-resolucao-263\n * Anexo of Resolução nº 263/2001, revoked, and still the table Anatel's page links to.\n */\nexport const getAreaCodesByState = (stateCode: string): number[] => {\n\tif (typeof stateCode !== \"string\") return [];\n\n\tconst normalized = stateCode.trim().toUpperCase();\n\n\tconst areaCodes: number[] = [];\n\n\tfor (const [areaCode, code] of Object.entries(AREA_CODE_STATES)) {\n\t\tconst secondaryStates = AREA_CODE_SECONDARY_STATES[Number(areaCode)];\n\t\tconst states = secondaryStates === undefined ? [code] : [code, ...secondaryStates];\n\n\t\tif (states.some((state) => state === normalized)) {\n\t\t\tareaCodes.push(Number(areaCode));\n\t\t}\n\t}\n\n\treturn areaCodes;\n};\n","/**\n * Brazilian STR (Sistema de Transferência de Reservas) participants that have a compensation\n * code (commonly known as COMPE), published by Banco Central do Brasil. Generated by\n * `scripts/banks.ts`.\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv\n */\nexport type Bank = {\n\t/** Compensation code (COMPE), 3 digits, zero-padded. */\n\tcode: string;\n\t/** Identificador do Sistema de Pagamentos Brasileiro (ISPB), 8 digits, zero-padded. */\n\tispb: string;\n\t/** Institution name, as published by Banco Central do Brasil. */\n\tname: string;\n};\n\nexport const BANKS: Bank[] = [\n\t{ code: \"001\", ispb: \"00000000\", name: \"Banco do Brasil S.A.\" },\n\t{ code: \"003\", ispb: \"04902979\", name: \"BANCO DA AMAZONIA S.A.\" },\n\t{ code: \"004\", ispb: \"07237373\", name: \"Banco do Nordeste do Brasil S.A.\" },\n\t{ code: \"007\", ispb: \"33657248\", name: \"BANCO NACIONAL DE DESENVOLVIMENTO ECONOMICO E SOCIAL\" },\n\t{ code: \"010\", ispb: \"81723108\", name: \"CREDICOAMO CREDITO RURAL COOPERATIVA\" },\n\t{ code: \"011\", ispb: \"61809182\", name: \"UBS (BRASIL) CORRETORA DE VALORES S.A.\" },\n\t{ code: \"012\", ispb: \"04866275\", name: \"Banco Inbursa S.A.\" },\n\t{ code: \"014\", ispb: \"09274232\", name: \"STATE STREET BRASIL S.A. - BANCO COMERCIAL\" },\n\t{\n\t\tcode: \"015\",\n\t\tispb: \"02819125\",\n\t\tname: \"UBS BB CORRETORA DE CÂMBIO, TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{\n\t\tcode: \"016\",\n\t\tispb: \"04715685\",\n\t\tname: \"COOPERATIVA DE CRÉDITO MÚTUO DOS DESPACHANTES DE TRÂNSITO DE SANTA CATARINA E RIO GRANDE DO SUL - SICOOB CREDITRAN\",\n\t},\n\t{ code: \"017\", ispb: \"42272526\", name: \"BNY Mellon Banco S.A.\" },\n\t{ code: \"018\", ispb: \"57839805\", name: \"Banco Tricury S.A.\" },\n\t{ code: \"021\", ispb: \"28127603\", name: \"BANESTES S.A. BANCO DO ESTADO DO ESPIRITO SANTO\" },\n\t{ code: \"023\", ispb: \"53720128\", name: \"CONTA SIMPLES SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"024\", ispb: \"10866788\", name: \"Banco Bandepe S.A.\" },\n\t{ code: \"025\", ispb: \"03323840\", name: \"Banco Alfa S.A.\" },\n\t{ code: \"033\", ispb: \"90400888\", name: \"BANCO SANTANDER (BRASIL) S.A.\" },\n\t{ code: \"036\", ispb: \"06271464\", name: \"Banco Bradesco BBI S.A.\" },\n\t{ code: \"037\", ispb: \"04913711\", name: \"Banco do Estado do Pará S.A.\" },\n\t{ code: \"040\", ispb: \"03609817\", name: \"Banco Cargill S.A.\" },\n\t{ code: \"041\", ispb: \"92702067\", name: \"Banco do Estado do Rio Grande do Sul S.A.\" },\n\t{ code: \"047\", ispb: \"13009717\", name: \"Banco do Estado de Sergipe S.A.\" },\n\t{ code: \"060\", ispb: \"04913129\", name: \"CONFIDENCE SOCIEDADE CORRETORA DE CAMBIO S.A.\" },\n\t{ code: \"063\", ispb: \"04184779\", name: \"Banco Bradescard S.A.\" },\n\t{ code: \"064\", ispb: \"04332281\", name: \"GOLDMAN SACHS DO BRASIL BANCO MULTIPLO S.A.\" },\n\t{ code: \"065\", ispb: \"48795256\", name: \"Banco AndBank (Brasil) S.A.\" },\n\t{ code: \"066\", ispb: \"02801938\", name: \"BANCO MORGAN STANLEY S.A.\" },\n\t{ code: \"069\", ispb: \"61033106\", name: \"Banco Crefisa S.A.\" },\n\t{ code: \"070\", ispb: \"00000208\", name: \"BRB - BANCO DE BRASILIA S.A.\" },\n\t{ code: \"074\", ispb: \"03017677\", name: \"Banco J. Safra S.A.\" },\n\t{ code: \"075\", ispb: \"03532415\", name: \"BANCO ABN AMRO CLEARING S.A.\" },\n\t{ code: \"076\", ispb: \"07656500\", name: \"Banco KDB do Brasil S.A.\" },\n\t{ code: \"077\", ispb: \"00416968\", name: \"Banco Inter S.A.\" },\n\t{ code: \"078\", ispb: \"34111187\", name: \"Haitong Banco de Investimento do Brasil S.A.\" },\n\t{ code: \"079\", ispb: \"09516419\", name: \"PICPAY BANK - BANCO MÚLTIPLO S.A\" },\n\t{ code: \"080\", ispb: \"73622748\", name: \"BT CORRETORA DE CÂMBIO LTDA.\" },\n\t{ code: \"081\", ispb: \"10264663\", name: \"BancoSeguro S.A.\" },\n\t{ code: \"082\", ispb: \"07679404\", name: \"BANCO TOPÁZIO S.A.\" },\n\t{ code: \"083\", ispb: \"10690848\", name: \"Banco da China Brasil S.A.\" },\n\t{ code: \"084\", ispb: \"02398976\", name: \"SISPRIME DO BRASIL - COOPERATIVA DE CRÉDITO\" },\n\t{ code: \"085\", ispb: \"05463212\", name: \"Cooperativa Central de Crédito - Ailos\" },\n\t{ code: \"088\", ispb: \"11476673\", name: \"BANCO RANDON S.A.\" },\n\t{ code: \"089\", ispb: \"62109566\", name: \"CREDISAN COOPERATIVA DE CRÉDITO\" },\n\t{\n\t\tcode: \"093\",\n\t\tispb: \"07945233\",\n\t\tname: \"PÓLOCRED   SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E À EMPRESA DE PEQUENO PORTE LTDA.\",\n\t},\n\t{ code: \"094\", ispb: \"11758741\", name: \"Banco Finaxis S.A.\" },\n\t{ code: \"095\", ispb: \"11703662\", name: \"BANCO TRAVELEX S.A.\" },\n\t{ code: \"096\", ispb: \"00997185\", name: \"Banco B3 S.A.\" },\n\t{ code: \"097\", ispb: \"04632856\", name: \"CREDISIS - CENTRAL DE COOPERATIVAS DE CRÉDITO\" },\n\t{\n\t\tcode: \"099\",\n\t\tispb: \"03046391\",\n\t\tname: \"UNIPRIME CENTRAL NACIONAL - CENTRAL NACIONAL DE COOPERATIVA DE CREDITO\",\n\t},\n\t{ code: \"100\", ispb: \"00806535\", name: \"Planner Corretora de Valores S.A.\" },\n\t{\n\t\tcode: \"101\",\n\t\tispb: \"62287735\",\n\t\tname: \"WARREN RENA DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA\",\n\t},\n\t{\n\t\tcode: \"102\",\n\t\tispb: \"02332886\",\n\t\tname: \"XP INVESTIMENTOS CORRETORA DE CÂMBIO,TÍTULOS E VALORES MOBILIÁRIOS S/A\",\n\t},\n\t{ code: \"104\", ispb: \"00360305\", name: \"CAIXA ECONOMICA FEDERAL\" },\n\t{ code: \"105\", ispb: \"07652226\", name: \"Lecca Crédito, Financiamento e Investimento S/A\" },\n\t{ code: \"107\", ispb: \"15114366\", name: \"Banco Bocom BBM S.A.\" },\n\t{\n\t\tcode: \"111\",\n\t\tispb: \"36113876\",\n\t\tname: \"OLIVEIRA TRUST DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIARIOS S.A.\",\n\t},\n\t{ code: \"113\", ispb: \"61723847\", name: \"NEON CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\" },\n\t{ code: \"119\", ispb: \"13720915\", name: \"Banco Western Union do Brasil S.A.\" },\n\t{ code: \"120\", ispb: \"33603457\", name: \"BANCO RODOBENS S.A.\" },\n\t{ code: \"121\", ispb: \"10664513\", name: \"Banco Agibank S.A.\" },\n\t{ code: \"122\", ispb: \"33147315\", name: \"Banco Bradesco BERJ S.A.\" },\n\t{ code: \"124\", ispb: \"15357060\", name: \"Banco Woori Bank do Brasil S.A.\" },\n\t{ code: \"125\", ispb: \"45246410\", name: \"BANCO GENIAL S.A.\" },\n\t{ code: \"126\", ispb: \"13220493\", name: \"BR Partners Banco de Investimento S.A.\" },\n\t{ code: \"127\", ispb: \"09512542\", name: \"Codepe Corretora de Valores e Câmbio S.A.\" },\n\t{ code: \"128\", ispb: \"19307785\", name: \"BRAZA BANK S.A. BANCO DE CÂMBIO\" },\n\t{ code: \"129\", ispb: \"18520834\", name: \"UBS BB BANCO DE INVESTIMENTO S.A.\" },\n\t{\n\t\tcode: \"130\",\n\t\tispb: \"09313766\",\n\t\tname: \"CARUANA S.A. - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{\n\t\tcode: \"131\",\n\t\tispb: \"61747085\",\n\t\tname: \"TULLETT PREBON BRASIL CORRETORA DE VALORES E CÂMBIO LTDA\",\n\t},\n\t{ code: \"132\", ispb: \"17453575\", name: \"ICBC do Brasil Banco Múltiplo S.A.\" },\n\t{\n\t\tcode: \"133\",\n\t\tispb: \"10398952\",\n\t\tname: \"CONFEDERAÇÃO NACIONAL DAS COOPERATIVAS CENTRAIS DE CRÉDITO E ECONOMIA FAMILIAR E SOLIDÁRIA - CRESOL CONFEDERAÇÃO\",\n\t},\n\t{\n\t\tcode: \"134\",\n\t\tispb: \"33862244\",\n\t\tname: \"BGC LIQUIDEZ DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA\",\n\t},\n\t{\n\t\tcode: \"136\",\n\t\tispb: \"00315557\",\n\t\tname: \"COOPERATIVA CENTRAL DE CRÉDITO UNICRED DO BRASIL - UNICRED DO BRASIL\",\n\t},\n\t{ code: \"138\", ispb: \"10853017\", name: \"GET MONEY SOCIEDADE CORRETORA DE CÂMBIO S.A.\" },\n\t{ code: \"139\", ispb: \"55230916\", name: \"Intesa Sanpaolo Brasil S.A. - Banco Múltiplo\" },\n\t{\n\t\tcode: \"140\",\n\t\tispb: \"62169875\",\n\t\tname: \"NU INVESTIMENTOS S.A. - CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS\",\n\t},\n\t{\n\t\tcode: \"141\",\n\t\tispb: \"09526594\",\n\t\tname: \"BANCO MASTER DE INVESTIMENTO S.A. - EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"142\", ispb: \"16944141\", name: \"Broker Brasil Corretora de Câmbio Ltda.\" },\n\t{ code: \"143\", ispb: \"02992317\", name: \"INTEX BANK BANCO DE CÂMBIO S.A.\" },\n\t{ code: \"144\", ispb: \"13059145\", name: \"EBURY BANCO DE CÂMBIO S.A.\" },\n\t{ code: \"145\", ispb: \"50579044\", name: \"LEVYCAM - CORRETORA DE CAMBIO E VALORES LTDA.\" },\n\t{ code: \"146\", ispb: \"24074692\", name: \"GUITTA CORRETORA DE CAMBIO LTDA.\" },\n\t{\n\t\tcode: \"149\",\n\t\tispb: \"15581638\",\n\t\tname: \"Facta Financeira S.A. - Crédito Financiamento e Investimento\",\n\t},\n\t{\n\t\tcode: \"157\",\n\t\tispb: \"09105360\",\n\t\tname: \"ICAP do Brasil Corretora de Títulos e Valores Mobiliários Ltda.\",\n\t},\n\t{\n\t\tcode: \"159\",\n\t\tispb: \"05442029\",\n\t\tname: \"Casa do Crédito S.A. Sociedade de Crédito ao Microempreendedor\",\n\t},\n\t{\n\t\tcode: \"173\",\n\t\tispb: \"13486793\",\n\t\tname: \"APEX GROUP DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{ code: \"174\", ispb: \"43180355\", name: \"PEFISA S.A. - CRÉDITO, FINANCIAMENTO E INVESTIMENTO\" },\n\t{\n\t\tcode: \"180\",\n\t\tispb: \"02685483\",\n\t\tname: \"CM CAPITAL MARKETS CORRETORA DE CÂMBIO, TÍTULOS E VALORES MOBILIÁRIOS LTDA\",\n\t},\n\t{\n\t\tcode: \"183\",\n\t\tispb: \"09210106\",\n\t\tname: \"SOCRED S.A. - SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E À EMPRESA DE PEQUENO PORTE\",\n\t},\n\t{\n\t\tcode: \"188\",\n\t\tispb: \"33775974\",\n\t\tname: \"ATIVA INVESTIMENTOS S.A. CORRETORA DE TÍTULOS, CÂMBIO E VALORES\",\n\t},\n\t{\n\t\tcode: \"189\",\n\t\tispb: \"07512441\",\n\t\tname: \"HS FINANCEIRA S/A CREDITO, FINANCIAMENTO E INVESTIMENTOS\",\n\t},\n\t{\n\t\tcode: \"190\",\n\t\tispb: \"03973814\",\n\t\tname: \"SERVICOOP - COOPERATIVA DE CRÉDITO DOS SERVIDORES PÚBLICOS ESTADUAIS E MUNICIPAIS DO RIO GRANDE DO SUL\",\n\t},\n\t{\n\t\tcode: \"191\",\n\t\tispb: \"04257795\",\n\t\tname: \"Nova Futura Corretora de Títulos e Valores Mobiliários Ltda.\",\n\t},\n\t{\n\t\tcode: \"194\",\n\t\tispb: \"20155248\",\n\t\tname: \"UNIDA DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{\n\t\tcode: \"195\",\n\t\tispb: \"07799277\",\n\t\tname: \"VALOR S/A SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"196\", ispb: \"32648370\", name: \"FAIR SOCIEDADE CORRETORA DE CÂMBIO S.A.\" },\n\t{ code: \"197\", ispb: \"16501555\", name: \"STONE INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"208\", ispb: \"30306294\", name: \"Banco BTG Pactual S.A.\" },\n\t{ code: \"212\", ispb: \"92894922\", name: \"Banco Original S.A.\" },\n\t{ code: \"213\", ispb: \"54403563\", name: \"Banco Arbi S.A.\" },\n\t{ code: \"217\", ispb: \"91884981\", name: \"Banco John Deere S.A.\" },\n\t{ code: \"218\", ispb: \"71027866\", name: \"Banco BS2 S.A.\" },\n\t{ code: \"222\", ispb: \"75647891\", name: \"BANCO CRÉDIT AGRICOLE BRASIL S.A.\" },\n\t{ code: \"224\", ispb: \"58616418\", name: \"Banco Fibra S.A.\" },\n\t{ code: \"233\", ispb: \"62421979\", name: \"BANCO BMG SOLUÇÕES FINANCEIRAS S.A.\" },\n\t{ code: \"237\", ispb: \"60746948\", name: \"Banco Bradesco S.A.\" },\n\t{ code: \"241\", ispb: \"31597552\", name: \"BANCO CLASSICO S.A.\" },\n\t{ code: \"243\", ispb: \"33923798\", name: \"BANCO MASTER S/A - EM LIQUIDAÇÃO EXTRAJUDICIAL\" },\n\t{ code: \"246\", ispb: \"28195667\", name: \"Banco ABC Brasil S.A.\" },\n\t{ code: \"249\", ispb: \"61182408\", name: \"Banco Investcred Unibanco S.A.\" },\n\t{ code: \"250\", ispb: \"50585090\", name: \"BANCO BMG CONSIGNADO S.A.\" },\n\t{ code: \"254\", ispb: \"14388334\", name: \"PARANÁ BANCO S.A.\" },\n\t{ code: \"259\", ispb: \"08609934\", name: \"MONEYCORP BANCO DE CÂMBIO S.A.\" },\n\t{ code: \"260\", ispb: \"18236120\", name: \"NU PAGAMENTOS S.A. - INSTITUIÇÃO DE PAGAMENTO\" },\n\t{ code: \"265\", ispb: \"33644196\", name: \"Banco Fator S.A.\" },\n\t{ code: \"266\", ispb: \"33132044\", name: \"BANCO CEDULA S.A.\" },\n\t{ code: \"268\", ispb: \"14511781\", name: \"BARI COMPANHIA HIPOTECÁRIA\" },\n\t{ code: \"269\", ispb: \"53518684\", name: \"BANCO HSBC S.A.\" },\n\t{\n\t\tcode: \"271\",\n\t\tispb: \"27842177\",\n\t\tname: \"BPY CORRETORA DE CÂMBIO, TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{ code: \"272\", ispb: \"00250699\", name: \"AGK CORRETORA DE CAMBIO S.A.\" },\n\t{ code: \"273\", ispb: \"08253539\", name: \"COOPERATIVA DE CREDITO SULCREDI AMPLEA\" },\n\t{\n\t\tcode: \"274\",\n\t\tispb: \"11581339\",\n\t\tname: \"BMP SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E A EMPRESA DE PEQUENO PORTE LTDA.\",\n\t},\n\t{ code: \"276\", ispb: \"11970623\", name: \"BANCO SENFF S.A.\" },\n\t{\n\t\tcode: \"278\",\n\t\tispb: \"27652684\",\n\t\tname: \"Genial Investimentos Corretora de Valores Mobiliários S.A.\",\n\t},\n\t{\n\t\tcode: \"280\",\n\t\tispb: \"23862762\",\n\t\tname: \"WILL FINANCEIRA S.A. CRÉDITO, FINANCIAMENTO E INVESTIMENTO - EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"281\", ispb: \"76461557\", name: \"Cooperativa de Crédito Rural Coopavel\" },\n\t{\n\t\tcode: \"283\",\n\t\tispb: \"89960090\",\n\t\tname: \"RB INVESTIMENTOS DISTRIBUIDORA DE TITULOS E VALORES MOBILIARIOS LIMITADA\",\n\t},\n\t{\n\t\tcode: \"288\",\n\t\tispb: \"62237649\",\n\t\tname: \"CAROL DISTRIBUIDORA DE TITULOS E VALORES MOBILIARIOS LTDA.\",\n\t},\n\t{ code: \"289\", ispb: \"94968518\", name: \"EFX CORRETORA DE CÂMBIO LTDA.\" },\n\t{ code: \"290\", ispb: \"08561701\", name: \"PAGSEGURO INTERNET INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{\n\t\tcode: \"292\",\n\t\tispb: \"28650236\",\n\t\tname: \"GALAPAGOS CAPITAL DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{\n\t\tcode: \"293\",\n\t\tispb: \"71590442\",\n\t\tname: \"Lastro RDV Distribuidora de Títulos e Valores Mobiliários Ltda.\",\n\t},\n\t{ code: \"296\", ispb: \"04062902\", name: \"OZ CORRETORA DE CÂMBIO S.A.\" },\n\t{ code: \"298\", ispb: \"17772370\", name: \"VIPS CORRETORA DE CÂMBIO S.A.\" },\n\t{ code: \"299\", ispb: \"04814563\", name: \"BANCO AFINZ S.A. - BANCO MÚLTIPLO\" },\n\t{ code: \"300\", ispb: \"33042151\", name: \"Banco de la Nacion Argentina\" },\n\t{ code: \"301\", ispb: \"13370835\", name: \"DOCK INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"305\", ispb: \"40353377\", name: \"FOURTRADE CORRETORA DE CÂMBIO LTDA.\" },\n\t{\n\t\tcode: \"307\",\n\t\tispb: \"03751794\",\n\t\tname: \"Terra Investimentos Distribuidora de Títulos e Valores Mobiliários Ltda.\",\n\t},\n\t{\n\t\tcode: \"310\",\n\t\tispb: \"22610500\",\n\t\tname: \"VORTX DISTRIBUIDORA DE TITULOS E VALORES MOBILIARIOS LTDA.\",\n\t},\n\t{\n\t\tcode: \"312\",\n\t\tispb: \"07693858\",\n\t\tname: \"HSCM - SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E À EMPRESA DE PEQUENO PORTE LTDA.\",\n\t},\n\t{ code: \"318\", ispb: \"61186680\", name: \"Banco BMG S.A.\" },\n\t{ code: \"319\", ispb: \"11495073\", name: \"OM DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA\" },\n\t{ code: \"320\", ispb: \"07450604\", name: \"BANK OF CHINA (BRASIL) BANCO MÚLTIPLO S/A\" },\n\t{\n\t\tcode: \"321\",\n\t\tispb: \"18188384\",\n\t\tname: \"CREFAZ SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E A EMPRESA DE PEQUENO PORTE S.A.\",\n\t},\n\t{\n\t\tcode: \"322\",\n\t\tispb: \"01073966\",\n\t\tname: \"Cooperativa de Crédito Rural de Abelardo Luz - Sulcredi/Crediluz\",\n\t},\n\t{ code: \"323\", ispb: \"10573521\", name: \"MERCADO PAGO INSTITUIÇÃO DE PAGAMENTO LTDA.\" },\n\t{ code: \"324\", ispb: \"21332862\", name: \"CARTOS SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"326\",\n\t\tispb: \"03311443\",\n\t\tname: \"MEUTUDO S.A - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"329\", ispb: \"32402502\", name: \"QI Sociedade de Crédito Direto S.A.\" },\n\t{ code: \"330\", ispb: \"00556603\", name: \"BANCO BARI DE INVESTIMENTOS E FINANCIAMENTOS S.A.\" },\n\t{\n\t\tcode: \"331\",\n\t\tispb: \"13673855\",\n\t\tname: \"OSLO CAPITAL DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A\",\n\t},\n\t{\n\t\tcode: \"332\",\n\t\tispb: \"13140088\",\n\t\tname: \"ACESSO SOLUÇÕES DE PAGAMENTO S.A. - INSTITUIÇÃO DE PAGAMENTO\",\n\t},\n\t{ code: \"334\", ispb: \"15124464\", name: \"BANCO BESA S.A.\" },\n\t{ code: \"335\", ispb: \"27098060\", name: \"Banco Digio S.A.\" },\n\t{ code: \"336\", ispb: \"31872495\", name: \"Banco C6 S.A.\" },\n\t{ code: \"341\", ispb: \"60701190\", name: \"ITAÚ UNIBANCO S.A.\" },\n\t{ code: \"342\", ispb: \"32997490\", name: \"Creditas Sociedade de Crédito Direto S.A.\" },\n\t{ code: \"348\", ispb: \"33264668\", name: \"Banco XP S.A.\" },\n\t{\n\t\tcode: \"349\",\n\t\tispb: \"27214112\",\n\t\tname: \"AL5 S.A. SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"350\", ispb: \"01330387\", name: \"COOPERATIVA DE CRÉDITO POPULAR DO BRASIL - CREHNOR\" },\n\t{\n\t\tcode: \"352\",\n\t\tispb: \"29162769\",\n\t\tname: \"SANTANDER CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{ code: \"355\", ispb: \"34335592\", name: \"ÓTIMO SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"358\",\n\t\tispb: \"09464032\",\n\t\tname: \"MIDWAY S.A. - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"359\", ispb: \"05351887\", name: \"ZEMA CRÉDITO, FINANCIAMENTO E INVESTIMENTO S/A\" },\n\t{\n\t\tcode: \"360\",\n\t\tispb: \"02276653\",\n\t\tname: \"TRINUS CAPITAL DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{ code: \"362\", ispb: \"01027058\", name: \"CIELO S.A. - INSTITUIÇÃO DE PAGAMENTO\" },\n\t{ code: \"363\", ispb: \"62285390\", name: \"QI CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\" },\n\t{ code: \"364\", ispb: \"09089356\", name: \"EFÍ S.A. - INSTITUIÇÃO DE PAGAMENTO\" },\n\t{\n\t\tcode: \"365\",\n\t\tispb: \"68757681\",\n\t\tname: \"SIMPAUL CORRETORA DE CAMBIO E VALORES MOBILIARIOS  S.A.\",\n\t},\n\t{ code: \"366\", ispb: \"61533584\", name: \"BANCO SOCIETE GENERALE BRASIL S.A.\" },\n\t{ code: \"368\", ispb: \"08357240\", name: \"Banco CSF S.A.\" },\n\t{ code: \"370\", ispb: \"61088183\", name: \"Banco Mizuho do Brasil S.A.\" },\n\t{ code: \"373\", ispb: \"35977097\", name: \"UP.P SOCIEDADE DE EMPRÉSTIMO ENTRE PESSOAS S.A.\" },\n\t{\n\t\tcode: \"374\",\n\t\tispb: \"27351731\",\n\t\tname: \"REALIZE SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO S.A.\",\n\t},\n\t{ code: \"376\", ispb: \"33172537\", name: \"BANCO J.P. MORGAN S.A.\" },\n\t{ code: \"377\", ispb: \"17826860\", name: \"BMS SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"378\", ispb: \"01852137\", name: \"BANCO BRASILEIRO DE CRÉDITO SOCIEDADE ANÔNIMA\" },\n\t{\n\t\tcode: \"379\",\n\t\tispb: \"01658426\",\n\t\tname: \"COOPERFORTE COOPERATIVA DE CRÉDITO E INVESTIMENTOS LTDA\",\n\t},\n\t{ code: \"380\", ispb: \"22896431\", name: \"PICPAY INSTITUIçãO DE PAGAMENTO S.A.\" },\n\t{ code: \"381\", ispb: \"60814191\", name: \"BANCO MERCEDES-BENZ DO BRASIL S.A.\" },\n\t{\n\t\tcode: \"382\",\n\t\tispb: \"04307598\",\n\t\tname: \"FIDÚCIA SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E À EMPRESA DE PEQUENO PORTE LIMITADA.\",\n\t},\n\t{ code: \"383\", ispb: \"21018182\", name: \"EBANX INSTITUICAO DE PAGAMENTOS LTDA.\" },\n\t{\n\t\tcode: \"384\",\n\t\tispb: \"11165756\",\n\t\tname: \"GLOBAL FINANÇAS SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E À EMPRESA DE PEQUENO PORTE LTDA.\",\n\t},\n\t{\n\t\tcode: \"385\",\n\t\tispb: \"03844699\",\n\t\tname: \"COOPERATIVA DE ECONOMIA E CREDITO MUTUO DOS TRABALHADORES PORTUARIOS DA GRANDE VITORIA - CREDESTIVA.\",\n\t},\n\t{\n\t\tcode: \"386\",\n\t\tispb: \"30680829\",\n\t\tname: \"NU FINANCEIRA S.A. - Sociedade de Crédito, Financiamento e Investimento\",\n\t},\n\t{ code: \"387\", ispb: \"03215790\", name: \"Banco Toyota do Brasil S.A.\" },\n\t{ code: \"389\", ispb: \"17184037\", name: \"Banco Mercantil do Brasil S.A.\" },\n\t{ code: \"390\", ispb: \"59274605\", name: \"BANCO GM S.A.\" },\n\t{ code: \"391\", ispb: \"08240446\", name: \"COOPERATIVA DE CREDITO RURAL DE IBIAM - SULCREDI/IBIAM\" },\n\t{ code: \"393\", ispb: \"59109165\", name: \"Banco Volkswagen S.A.\" },\n\t{ code: \"394\", ispb: \"07207996\", name: \"Banco Bradesco Financiamentos S.A.\" },\n\t{\n\t\tcode: \"395\",\n\t\tispb: \"08673569\",\n\t\tname: \"F.D'GOLD - DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{ code: \"396\", ispb: \"13884775\", name: \"MAGALUPAY INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"397\", ispb: \"34088029\", name: \"LISTO SOCIEDADE DE CREDITO DIRETO S.A.\" },\n\t{ code: \"398\", ispb: \"31749596\", name: \"IDEAL CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\" },\n\t{ code: \"399\", ispb: \"01701201\", name: \"Kirton Bank S.A. - Banco Múltiplo\" },\n\t{\n\t\tcode: \"400\",\n\t\tispb: \"05491616\",\n\t\tname: \"COOPERATIVA DE CRÉDITO, POUPANÇA E SERVIÇOS FINANCEIROS - EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"401\", ispb: \"15111975\", name: \"IUGU INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{\n\t\tcode: \"402\",\n\t\tispb: \"36947229\",\n\t\tname: \"COBUCCIO S/A - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTOS\",\n\t},\n\t{\n\t\tcode: \"403\",\n\t\tispb: \"37880206\",\n\t\tname: \"CORA SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO S.A.\",\n\t},\n\t{\n\t\tcode: \"404\",\n\t\tispb: \"37241230\",\n\t\tname: \"SUMUP SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO S.A.\",\n\t},\n\t{ code: \"406\", ispb: \"37715993\", name: \"ACCREDITO - SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"407\",\n\t\tispb: \"00329598\",\n\t\tname: \"SEFER INVESTIMENTOS DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA - EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"408\", ispb: \"36586946\", name: \"BONUSPAGO SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"410\", ispb: \"05684234\", name: \"PLANNER SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"411\",\n\t\tispb: \"05192316\",\n\t\tname: \"Via Certa Financiadora S.A. - Crédito, Financiamento e Investimentos\",\n\t},\n\t{ code: \"412\", ispb: \"15173776\", name: \"SOCIAL BANK BANCO MÚLTIPLO S/A\" },\n\t{ code: \"413\", ispb: \"01858774\", name: \"BANCO BV S.A.\" },\n\t{ code: \"414\", ispb: \"37526080\", name: \"LEND SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"415\", ispb: \"17157777\", name: \"BANCO NACIONAL S.A.\" },\n\t{ code: \"416\", ispb: \"19324634\", name: \"LAMARA SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"418\",\n\t\tispb: \"37414009\",\n\t\tname: \"ZIPDIN SOLUÇÕES DIGITAIS SOCIEDADE DE CRÉDITO DIRETO S/A\",\n\t},\n\t{ code: \"419\", ispb: \"38129006\", name: \"NUMBRS SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"421\", ispb: \"39343350\", name: \"LAR COOPERATIVA DE CRÉDITO - LAR CREDI\" },\n\t{ code: \"422\", ispb: \"58160789\", name: \"Banco Safra S.A.\" },\n\t{\n\t\tcode: \"423\",\n\t\tispb: \"00460065\",\n\t\tname: \"COLUNA S/A DISTRIBUIDORA DE TITULOS E VALORES MOBILIÁRIOS\",\n\t},\n\t{ code: \"425\", ispb: \"03881423\", name: \"SOCINAL S.A. - CRÉDITO, FINANCIAMENTO E INVESTIMENTO\" },\n\t{\n\t\tcode: \"426\",\n\t\tispb: \"11285104\",\n\t\tname: \"NEON FINANCEIRA - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO S.A\",\n\t},\n\t{\n\t\tcode: \"427\",\n\t\tispb: \"27302181\",\n\t\tname: \"COOPERATIVA DE CRÉDITO DOS SERVIDORES DA UNIVERSIDADE FEDERAL DO ESPIRITO SANTO\",\n\t},\n\t{ code: \"428\", ispb: \"39664698\", name: \"CREDSYSTEM SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"430\", ispb: \"00204963\", name: \"COOPERATIVA DE CREDITO RURAL SEARA - CREDISEARA\" },\n\t{\n\t\tcode: \"433\",\n\t\tispb: \"44077014\",\n\t\tname: \"BR-CAPITAL DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{ code: \"435\", ispb: \"38224857\", name: \"DELFINANCE SOCIEDADE DE CREDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"438\",\n\t\tispb: \"67030395\",\n\t\tname: \"TRUSTEE DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA. - EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"439\", ispb: \"16695922\", name: \"ID CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\" },\n\t{ code: \"440\", ispb: \"82096447\", name: \"CREDI&GENTE - COOPERATIVA DE CRÉDITO E INVESTIMENTOS\" },\n\t{\n\t\tcode: \"443\",\n\t\tispb: \"39416705\",\n\t\tname: \"OCTA SOCIEDADE DE CRÉDITO DIRETO S.A. - EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"444\", ispb: \"40654622\", name: \"TRINUS SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"445\", ispb: \"35551187\", name: \"PLANTAE S.A. - CRÉDITO, FINANCIAMENTO E INVESTIMENTO\" },\n\t{\n\t\tcode: \"447\",\n\t\tispb: \"12392983\",\n\t\tname: \"MIRAE ASSET (BRASIL) CORRETORA DE CÂMBIO, TÍTULOS  E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{\n\t\tcode: \"448\",\n\t\tispb: \"39669186\",\n\t\tname: \"HEMERA DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{ code: \"449\", ispb: \"37555231\", name: \"DM SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"450\", ispb: \"13203354\", name: \"FITS INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"451\", ispb: \"40475846\", name: \"J17 - SOCIEDADE DE CRÉDITO DIRETO S/A\" },\n\t{ code: \"452\", ispb: \"39676772\", name: \"CREDIFIT SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"454\",\n\t\tispb: \"41592532\",\n\t\tname: \"MÉRITO DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{\n\t\tcode: \"455\",\n\t\tispb: \"38429045\",\n\t\tname: \"VIS DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA\",\n\t},\n\t{ code: \"456\", ispb: \"60498557\", name: \"Banco MUFG Brasil S.A.\" },\n\t{ code: \"457\", ispb: \"39587424\", name: \"UY3 SOCIEDADE DE CRÉDITO DIRETO S/A\" },\n\t{\n\t\tcode: \"458\",\n\t\tispb: \"07253654\",\n\t\tname: \"HEDGE INVESTMENTS DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{ code: \"460\", ispb: \"42047025\", name: \"UNAVANTI SOCIEDADE DE CRÉDITO DIRETO S/A\" },\n\t{ code: \"461\", ispb: \"19540550\", name: \"ASAAS GESTÃO FINANCEIRA INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"462\", ispb: \"39908427\", name: \"STARK SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"463\",\n\t\tispb: \"40434681\",\n\t\tname: \"AZUMI DISTRIBUIDORA DE TíTULOS E VALORES MOBILIáRIOS LTDA.\",\n\t},\n\t{ code: \"464\", ispb: \"60518222\", name: \"Banco Sumitomo Mitsui Brasileiro S.A.\" },\n\t{ code: \"465\", ispb: \"40083667\", name: \"CAPITAL CONSIG SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"467\",\n\t\tispb: \"33886862\",\n\t\tname: \"MASTER S/A CORRETORA DE CÂMBIO, TÍTULOS E VALORES MOBILIÁRIOS - EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"468\", ispb: \"04862600\", name: \"PORTOSEG S.A. - CREDITO, FINANCIAMENTO E INVESTIMENTO\" },\n\t{\n\t\tcode: \"469\",\n\t\tispb: \"07138049\",\n\t\tname: \"PICPAY INVEST DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA\",\n\t},\n\t{ code: \"470\", ispb: \"18394228\", name: \"CDC SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"473\", ispb: \"33466988\", name: \"Banco Caixa Geral - Brasil S.A.\" },\n\t{ code: \"475\", ispb: \"10371492\", name: \"Banco Yamaha Motor do Brasil S.A.\" },\n\t{ code: \"476\", ispb: \"45860531\", name: \"IDEA MAKER INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{ code: \"477\", ispb: \"33042953\", name: \"Citibank N.A.\" },\n\t{\n\t\tcode: \"478\",\n\t\tispb: \"11760553\",\n\t\tname: \"GAZINCRED S.A. SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"479\", ispb: \"60394079\", name: \"Banco ItauBank S.A.\" },\n\t{ code: \"481\", ispb: \"43599047\", name: \"SUPERLÓGICA SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"482\", ispb: \"42259084\", name: \"ARTTA SOCIEDADE DE CRÉDITO DIRETO S.A\" },\n\t{\n\t\tcode: \"484\",\n\t\tispb: \"36864992\",\n\t\tname: \"APEX DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{ code: \"487\", ispb: \"62331228\", name: \"DEUTSCHE BANK S.A. - BANCO ALEMAO\" },\n\t{ code: \"488\", ispb: \"46518205\", name: \"JPMorgan Chase Bank, National Association\" },\n\t{ code: \"495\", ispb: \"44189447\", name: \"Banco de La Provincia de Buenos Aires\" },\n\t{ code: \"496\", ispb: \"45283173\", name: \"BBVA BRASIL BANCO DE INVESTIMENTO S.A.\" },\n\t{ code: \"505\", ispb: \"32062580\", name: \"BANCO UBS (BRASIL) S.A.\" },\n\t{ code: \"506\", ispb: \"42066258\", name: \"RJI CORRETORA DE TITULOS E VALORES MOBILIARIOS LTDA\" },\n\t{\n\t\tcode: \"507\",\n\t\tispb: \"37229413\",\n\t\tname: \"SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO EFÍ S.A.\",\n\t},\n\t{ code: \"508\", ispb: \"61384004\", name: \"AVENUE SECURITIES BANCO DE INVESTIMENTO S.A.\" },\n\t{ code: \"509\", ispb: \"13935893\", name: \"CELCOIN INSTITUICAO DE PAGAMENTO S.A.\" },\n\t{ code: \"510\", ispb: \"39738065\", name: \"FFCRED SOCIEDADE DE CRÉDITO DIRETO S.A..\" },\n\t{ code: \"511\", ispb: \"44683140\", name: \"MAGNUM SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"512\",\n\t\tispb: \"36266751\",\n\t\tname: \"FINVEST DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{ code: \"513\", ispb: \"44728700\", name: \"ATF SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"514\", ispb: \"73302408\", name: \"EXIM SOCIEDADE CORRETORA DE CÂMBIO LTDA\" },\n\t{ code: \"516\", ispb: \"36583700\", name: \"QISTA S.A. - CRÉDITO, FINANCIAMENTO E INVESTIMENTO\" },\n\t{ code: \"517\", ispb: \"03816413\", name: \"PAGUEVELOZ INSTITUIÇÃO DE PAGAMENTO LTDA.\" },\n\t{\n\t\tcode: \"518\",\n\t\tispb: \"37679449\",\n\t\tname: \"MERCADO CRÉDITO SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO S.A.\",\n\t},\n\t{\n\t\tcode: \"519\",\n\t\tispb: \"40768766\",\n\t\tname: \"LIONS TRUST DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{ code: \"520\", ispb: \"44705774\", name: \"SOMAPAY SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"521\", ispb: \"44019481\", name: \"PEAK SOCIEDADE DE EMPRÉSTIMO ENTRE PESSOAS S.A.\" },\n\t{ code: \"522\", ispb: \"47593544\", name: \"RED SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"523\", ispb: \"44292580\", name: \"HR DIGITAL - SOCIEDADE DE CRÉDITO DIRETO S/A\" },\n\t{\n\t\tcode: \"524\",\n\t\tispb: \"45854066\",\n\t\tname: \"WNT CAPITAL DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{ code: \"525\", ispb: \"34265629\", name: \"INTERCAM CORRETORA DE CÂMBIO LTDA.\" },\n\t{ code: \"526\", ispb: \"46026562\", name: \"MONETARIE SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"527\", ispb: \"44478623\", name: \"ATICCA - SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"528\",\n\t\tispb: \"34829992\",\n\t\tname: \"CBSF DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.- EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"529\", ispb: \"17079937\", name: \"PINBANK BRASIL INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"530\", ispb: \"47873449\", name: \"SER FINANCE SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"531\", ispb: \"34337707\", name: \"BMP SOCIEDADE DE CRÉDITO DIRETO S.A\" },\n\t{ code: \"532\", ispb: \"45745537\", name: \"FUTURO SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"533\", ispb: \"22575466\", name: \"SRM BANK INSTITUIÇÃO DE PAGAMENTO S/A\" },\n\t{ code: \"534\", ispb: \"00714671\", name: \"EWALLY INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"535\", ispb: \"39519944\", name: \"OPEA SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"536\", ispb: \"20855875\", name: \"NEON PAGAMENTOS S.A. - INSTITUIÇÃO DE PAGAMENTO\" },\n\t{\n\t\tcode: \"537\",\n\t\tispb: \"45756448\",\n\t\tname: \"SELECT CREDIT SOCIEDADE DE CRÉDITO AO MICROEMPREENDEDOR E À EMPRESA DE PEQUENO PORTE LTDA.\",\n\t},\n\t{ code: \"538\", ispb: \"20251847\", name: \"SUDACRED SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"539\",\n\t\tispb: \"00122327\",\n\t\tname: \"SANTINVEST S.A. - CREDITO, FINANCIAMENTO E INVESTIMENTOS\",\n\t},\n\t{ code: \"540\", ispb: \"04849745\", name: \"HBI SOCIEDADE DE CRÉDITO DIRETO S/A.\" },\n\t{ code: \"541\", ispb: \"00954288\", name: \"FUNDO GARANTIDOR DE CREDITOS - FGC\" },\n\t{ code: \"542\", ispb: \"18189547\", name: \"CLOUDWALK INSTITUIÇÃO DE PAGAMENTO E SERVICOS LTDA\" },\n\t{\n\t\tcode: \"543\",\n\t\tispb: \"92825397\",\n\t\tname: \"COOPERATIVA DE ECONOMIA E CRÉDITO MÚTUO DOS ELETRICITÁRIOS E DOS TRABALHADORES DAS EMPRESAS DO SETOR DE ENERGIA - COOPCRECE\",\n\t},\n\t{ code: \"544\", ispb: \"38593706\", name: \"MULTICRED SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"546\", ispb: \"30980539\", name: \"OKTO INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"547\", ispb: \"45331622\", name: \"BNK DIGITAL SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"548\",\n\t\tispb: \"06249129\",\n\t\tname: \"RPW S/A SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"550\", ispb: \"32074986\", name: \"BEETELLER INSTITUIÇÃO DE PAGAMENTO LTDA.\" },\n\t{\n\t\tcode: \"551\",\n\t\tispb: \"48967968\",\n\t\tname: \"VERT DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA\",\n\t},\n\t{ code: \"552\", ispb: \"32192325\", name: \"UZZIPAY INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"553\", ispb: \"48707451\", name: \"PERCAPITAL SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"554\", ispb: \"28811341\", name: \"BANCO STONEX S.A.\" },\n\t{\n\t\tcode: \"555\",\n\t\tispb: \"02682287\",\n\t\tname: \"PAN FINANCEIRA S.A. - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTOS\",\n\t},\n\t{ code: \"556\", ispb: \"40333582\", name: \"SAYGO CORRETORA DE CÂMBIO S.A.\" },\n\t{ code: \"557\", ispb: \"30944783\", name: \"PAGPRIME INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{\n\t\tcode: \"559\",\n\t\tispb: \"49288113\",\n\t\tname: \"KANASTRA FINANCEIRA S.A, CREDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"560\", ispb: \"21995256\", name: \"MAG INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{ code: \"561\", ispb: \"20757199\", name: \"PAY4FUN INSTITUICAO DE PAGAMENTO S.A.\" },\n\t{\n\t\tcode: \"562\",\n\t\tispb: \"18684408\",\n\t\tname: \"AZIMUT BRASIL DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA\",\n\t},\n\t{ code: \"563\", ispb: \"40276692\", name: \"PROTEGE CASH INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{\n\t\tcode: \"564\",\n\t\tispb: \"63019146\",\n\t\tname: \"ANKOR CAPITAL - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO S/A\",\n\t},\n\t{ code: \"565\", ispb: \"74014747\", name: \"ÁGORA CORRETORA DE TITULOS E VALORES MOBILIARIOS S.A.\" },\n\t{ code: \"566\", ispb: \"23114447\", name: \"FLAGSHIP INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{\n\t\tcode: \"567\",\n\t\tispb: \"33040601\",\n\t\tname: \"MERCANTIL FINANCEIRA S.A. - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO.\",\n\t},\n\t{ code: \"568\", ispb: \"49933388\", name: \"BRCONDOS SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"569\", ispb: \"12473687\", name: \"CONTA PRONTA INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{\n\t\tcode: \"571\",\n\t\tispb: \"50489148\",\n\t\tname: \"MONTE BRAVO CORRETORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{ code: \"572\", ispb: \"51414521\", name: \"ALL IN CRED SOCIEDADE DE CREDITO DIRETO S.A.\" },\n\t{ code: \"573\", ispb: \"18282093\", name: \"OXY COMPANHIA HIPOTECÁRIA\" },\n\t{ code: \"574\", ispb: \"48756121\", name: \"A55 SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"575\", ispb: \"48584954\", name: \"DGBK CREDIT S.A. - SOCIEDADE DE CRÉDITO DIRETO.\" },\n\t{ code: \"576\", ispb: \"11351086\", name: \"MERCADO BITCOIN INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{\n\t\tcode: \"577\",\n\t\tispb: \"10663610\",\n\t\tname: \"DESENVOLVE SP - AGÊNCIA DE FOMENTO DO ESTADO DE SÃO PAULO S.A.\",\n\t},\n\t{ code: \"579\", ispb: \"49555647\", name: \"QUADRA SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"585\", ispb: \"50946592\", name: \"SETHI SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"586\", ispb: \"35810871\", name: \"Z1 INSTITUIÇÃO DE PAGAMENTO LTDA.\" },\n\t{\n\t\tcode: \"587\",\n\t\tispb: \"37678915\",\n\t\tname: \"FIDD DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{ code: \"588\", ispb: \"20308187\", name: \"AVANCARD PROVER INSTITUIÇÃO DE PAGAMENTO LTDA\" },\n\t{ code: \"589\", ispb: \"51212088\", name: \"G5 SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"590\",\n\t\tispb: \"40473435\",\n\t\tname: \"REPASSES FINANCEIROS E SOLUCOES TECNOLOGICAS INSTITUICAO DE PAGAMENTO S.A.\",\n\t},\n\t{\n\t\tcode: \"591\",\n\t\tispb: \"02671743\",\n\t\tname: \"BANVOX DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA - EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"592\", ispb: \"45548763\", name: \"INSTITUIÇÃO DE PAGAMENTOS MAPS LTDA.\" },\n\t{ code: \"593\", ispb: \"27084098\", name: \"TRANSFEERA INSTITUIÇÃO DE PAGAMENTO S.A\" },\n\t{\n\t\tcode: \"594\",\n\t\tispb: \"48703388\",\n\t\tname: \"ASA SOCIEDADE DE CRÉDITO FINANCIAMENTO E INVESTIMENTO S.A.\",\n\t},\n\t{ code: \"595\", ispb: \"19468242\", name: \"IFOOD PAGO INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"596\", ispb: \"39696395\", name: \"CACTVS INSTITUICAO DE PAGAMENTO S.A\" },\n\t{ code: \"597\", ispb: \"34747388\", name: \"ISSUER INSTITUICAO DE PAGAMENTO LTDA.\" },\n\t{ code: \"598\", ispb: \"50626276\", name: \"KONECT SOCIEDADE DE CRÉDITO DIRETO S/A\" },\n\t{\n\t\tcode: \"599\",\n\t\tispb: \"36321990\",\n\t\tname: \"AGORACRED S/A SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"600\", ispb: \"59118133\", name: \"Banco Luso Brasileiro S.A.\" },\n\t{ code: \"604\", ispb: \"31895683\", name: \"Banco Industrial do Brasil S.A.\" },\n\t{ code: \"610\", ispb: \"78626983\", name: \"Banco VR S.A.\" },\n\t{ code: \"611\", ispb: \"61820817\", name: \"Banco Paulista S.A.\" },\n\t{ code: \"612\", ispb: \"31880826\", name: \"Banco Guanabara S.A.\" },\n\t{ code: \"613\", ispb: \"60850229\", name: \"Omni Banco S.A.\" },\n\t{ code: \"614\", ispb: \"52440987\", name: \"SANTS SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"615\", ispb: \"37470405\", name: \"SMART SOLUTIONS GROUP INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{ code: \"619\", ispb: \"49931906\", name: \"TRIO INSTITUICAO DE PAGAMENTO LTDA.\" },\n\t{ code: \"620\", ispb: \"51342763\", name: \"REVOLUT SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"623\", ispb: \"59285411\", name: \"Banco Pan S.A.\" },\n\t{ code: \"626\", ispb: \"61348538\", name: \"BANCO C6 CONSIGNADO S.A.\" },\n\t{ code: \"630\", ispb: \"58497702\", name: \"BANCO LETSBANK S.A. - EM LIQUIDAÇÃO EXTRAJUDICIAL\" },\n\t{ code: \"632\", ispb: \"52586293\", name: \"Z-ON SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"633\", ispb: \"68900810\", name: \"Banco Rendimento S.A.\" },\n\t{ code: \"634\", ispb: \"17351180\", name: \"BANCO TRIANGULO S.A.\" },\n\t{ code: \"636\", ispb: \"40112555\", name: \"GIRO - SOCIEDADE DE CRÉDITO DIRETO S/A\" },\n\t{ code: \"637\", ispb: \"60889128\", name: \"BANCO SOFISA S.A.\" },\n\t{ code: \"643\", ispb: \"62144175\", name: \"Banco Pine S.A.\" },\n\t{ code: \"644\", ispb: \"54647259\", name: \"321 SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"646\",\n\t\tispb: \"91669747\",\n\t\tname: \"DM SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO S.A\",\n\t},\n\t{ code: \"651\", ispb: \"25104230\", name: \"PAGARE INSTITUICAO DE PAGAMENTO S.A.\" },\n\t{ code: \"653\", ispb: \"61024352\", name: \"BANCO PLENO S.A. - EM LIQUIDAÇÃO EXTRAJUDICIAL\" },\n\t{ code: \"654\", ispb: \"92874270\", name: \"BANCO DIGIMAIS S.A.\" },\n\t{ code: \"655\", ispb: \"59588111\", name: \"Banco Votorantim S.A.\" },\n\t{ code: \"659\", ispb: \"35210410\", name: \"ONEKEY PAYMENTS INSTITUICAO DE PAGAMENTO SA\" },\n\t{ code: \"660\", ispb: \"34471744\", name: \"PAGME INSTITUIÇÃO DE PAGAMENTO LTDA.\" },\n\t{ code: \"661\", ispb: \"55428859\", name: \"FREEX SOCIEDADE CORRETORA DE CÂMBIO S.A.\" },\n\t{ code: \"662\", ispb: \"32708748\", name: \"WE PAY OUT INSTITUICAO DE PAGAMENTO LTDA.\" },\n\t{\n\t\tcode: \"663\",\n\t\tispb: \"44782130\",\n\t\tname: \"ACTUAL DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A.\",\n\t},\n\t{ code: \"665\", ispb: \"20018183\", name: \"STARK BANK S.A. - INSTITUICAO DE PAGAMENTO\" },\n\t{ code: \"668\", ispb: \"48632754\", name: \"CELCOIN SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"669\", ispb: \"47133056\", name: \"TRANSFERO INSTITUICAO DE PAGAMENTO LTDA.\" },\n\t{ code: \"670\", ispb: \"11491029\", name: \"BSN PAGAMENTOS INSTITUIÇÃO DE PAGAMENTO LTDA\" },\n\t{ code: \"671\", ispb: \"26264220\", name: \"ZERO INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{\n\t\tcode: \"672\",\n\t\tispb: \"53505601\",\n\t\tname: \"STONE SOCIEDADE DE CREDITO, FINANCIAMENTO E INVESTIMENTO S.A.\",\n\t},\n\t{\n\t\tcode: \"673\",\n\t\tispb: \"08482873\",\n\t\tname: \"COOPERATIVA DE CRÉDITO RURAL DO AGRESTE ALAGOANO - COOPERAGRE\",\n\t},\n\t{ code: \"674\", ispb: \"27970567\", name: \"HINOVA PAY INSTITUICAO DE PAGAMENTO S.A.\" },\n\t{ code: \"675\", ispb: \"30723871\", name: \"CASAS BAHIA PAY INSTITUIÇÃO DE PAGAMENTO LTDA.\" },\n\t{\n\t\tcode: \"676\",\n\t\tispb: \"35479592\",\n\t\tname: \"DUFRIO FINANCEIRA, CRÉDITO, FINANCIAMENTO E INVESTIMENTOS S.A.\",\n\t},\n\t{ code: \"677\", ispb: \"33630661\", name: \"GOWD INSTITUIÇÃO DE PAGAMENTO LTDA.\" },\n\t{ code: \"678\", ispb: \"45716916\", name: \"FIDEM SOCIEDADE DE CRÉDITO DIRETO S/A\" },\n\t{ code: \"679\", ispb: \"36690516\", name: \"PAY INSTITUICAO DE PAGAMENTO S.A.\" },\n\t{ code: \"680\", ispb: \"55823094\", name: \"DELTA GLOBAL SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"681\", ispb: \"50871921\", name: \"MT INSTITUICAO DE PAGAMENTO SA\" },\n\t{ code: \"682\", ispb: \"46505612\", name: \"MONERY INSTITUICAO DE PAGAMENTO S.A.\" },\n\t{ code: \"683\", ispb: \"30507541\", name: \"BRASIL CASH INSTITUICAO DE PAGAMENTO S.A\" },\n\t{\n\t\tcode: \"684\",\n\t\tispb: \"56392166\",\n\t\tname: \"HARMOS S.A. - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"685\", ispb: \"26615279\", name: \"TYCOON TECHNOLOGY INSTITUICAO DE PAGAMENTO S.A\" },\n\t{ code: \"686\", ispb: \"12481100\", name: \"BIZ INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"687\", ispb: \"35340796\", name: \"INCO SOCIEDADE DE EMPRÉSTIMO ENTRE PESSOAS S.A.\" },\n\t{ code: \"688\", ispb: \"43978697\", name: \"KIKAI SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"690\", ispb: \"16814330\", name: \"BK INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"691\", ispb: \"49686505\", name: \"WASU - WALLET SUPPORT INSTITUIÇÃO DE PAGAMENTO LTDA\" },\n\t{ code: \"692\", ispb: \"56198117\", name: \"SQUID SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"693\", ispb: \"32820711\", name: \"EFEX INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"694\", ispb: \"54811417\", name: \"WOOVI INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{ code: \"695\", ispb: \"35523352\", name: \"BEES INSTITUICAO DE PAGAMENTO LTDA.\" },\n\t{ code: \"696\", ispb: \"50032584\", name: \"LOAN BRASIL SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"697\", ispb: \"45056494\", name: \"JM CORRETORA DE CÂMBIO LTDA.\" },\n\t{ code: \"698\", ispb: \"58367961\", name: \"BIT SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"699\", ispb: \"59396084\", name: \"BFC SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{ code: \"700\", ispb: \"53822116\", name: \"MW INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{\n\t\tcode: \"701\",\n\t\tispb: \"51118615\",\n\t\tname: \"INTEGRAÇÃO DE CRÉDITO E COBRANÇA SOCIEDADE DE CRÉDITO DIRETO S.A.\",\n\t},\n\t{\n\t\tcode: \"703\",\n\t\tispb: \"10440482\",\n\t\tname: \"GETNET ADQUIRÊNCIA E SERVIÇOS PARA MEIOS DE PAGAMENTO S.A. INSTITUIÇÃO DE PAGAMENTO\",\n\t},\n\t{ code: \"704\", ispb: \"44663846\", name: \"FESTOR INSTITUIÇÃO DE PAGAMENTO LTDA.\" },\n\t{ code: \"707\", ispb: \"62232889\", name: \"Banco Daycoval S.A.\" },\n\t{ code: \"708\", ispb: \"33588252\", name: \"BANCO INDUSCRED DE INVESTIMENTO S.A.\" },\n\t{ code: \"712\", ispb: \"78632767\", name: \"OURIBANK S.A. BANCO MÚLTIPLO\" },\n\t{ code: \"714\", ispb: \"00411939\", name: \"FINAMAX S.A. - CREDITO, FINANCIAMENTO E INVESTIMENTO\" },\n\t{\n\t\tcode: \"719\",\n\t\tispb: \"33884941\",\n\t\tname: \"BANCO MASTER MÚLTIPLO S.A. - EM LIQUIDAÇÃO EXTRAJUDICIAL\",\n\t},\n\t{ code: \"741\", ispb: \"00517645\", name: \"BANCO RIBEIRAO PRETO S.A.\" },\n\t{ code: \"743\", ispb: \"00795423\", name: \"Banco Semear S.A.\" },\n\t{ code: \"745\", ispb: \"33479023\", name: \"Banco Citibank S.A.\" },\n\t{ code: \"747\", ispb: \"01023570\", name: \"Banco Rabobank International Brasil S.A.\" },\n\t{ code: \"748\", ispb: \"01181521\", name: \"BANCO COOPERATIVO SICREDI S.A.\" },\n\t{ code: \"751\", ispb: \"29030467\", name: \"Scotiabank Brasil S.A. Banco Múltiplo\" },\n\t{ code: \"752\", ispb: \"01522368\", name: \"Banco BNP Paribas Brasil S.A.\" },\n\t{ code: \"753\", ispb: \"74828799\", name: \"Novo Banco Continental S.A. - Banco Múltiplo\" },\n\t{ code: \"754\", ispb: \"76543115\", name: \"Banco Sistema S.A.\" },\n\t{ code: \"755\", ispb: \"62073200\", name: \"Bank of America Merrill Lynch Banco Múltiplo S.A.\" },\n\t{ code: \"756\", ispb: \"02038232\", name: \"BANCO COOPERATIVO SICOOB S.A. - BANCO SICOOB\" },\n\t{ code: \"757\", ispb: \"02318507\", name: \"BANCO KEB HANA DO BRASIL S.A.\" },\n\t{ code: \"759\", ispb: \"42963742\", name: \"BANSUR JM SOCIEDADE DE CRÉDITO DIRETO S/A\" },\n\t{\n\t\tcode: \"760\",\n\t\tispb: \"34139916\",\n\t\tname: \"EMCASH SERVIÇOS FINANCEIROS SOCIEDADE DE EMPRÉSTIMO ENTRE PESSOAS S.A.\",\n\t},\n\t{\n\t\tcode: \"761\",\n\t\tispb: \"53842122\",\n\t\tname: \"URBANO S.A. - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"763\", ispb: \"56106523\", name: \"VUE INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{\n\t\tcode: \"764\",\n\t\tispb: \"04306351\",\n\t\tname: \"INDEPENDÊNCIA COOPERATIVA DE CRÉDITO E INVESTIMENTO - INDEPENDÊNCIA COOPERATIVA DE CRÉDITO\",\n\t},\n\t{ code: \"765\", ispb: \"37753531\", name: \"PAGSMILE INSTITUIÇÃO DE PAGAMENTO LTDA.\" },\n\t{ code: \"766\", ispb: \"52833288\", name: \"LB PAY INSTITUIÇÃO DE PAGAMENTO LTDA\" },\n\t{\n\t\tcode: \"767\",\n\t\tispb: \"62264924\",\n\t\tname: \"QORE DISTRIBUIDORA DE TITULOS E VALORES MOBILIÁRIOS LTDA\",\n\t},\n\t{\n\t\tcode: \"768\",\n\t\tispb: \"20443996\",\n\t\tname: \"BECKER FINANCEIRA S.A. - CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"769\", ispb: \"24313102\", name: \"99PAY INSTITUICAO DE PAGAMENTO S.A.\" },\n\t{ code: \"770\", ispb: \"38320462\", name: \"V3 INSTITUICAO DE PAGAMENTO S.A.\" },\n\t{ code: \"771\", ispb: \"57824223\", name: \"WX INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{\n\t\tcode: \"772\",\n\t\tispb: \"20833992\",\n\t\tname: \"COOPERATIVA DE CRÉDITO MÚTUO DOS EMPREGADOS DO CENTRO UNIVERSITÁRIO NEWTON PAIVA LTDA. - CREDIPAIVA\",\n\t},\n\t{ code: \"773\", ispb: \"53908413\", name: \"KIWIFY INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{ code: \"774\", ispb: \"33959738\", name: \"MOVA SOCIEDADE DE EMPRÉSTIMO ENTRE PESSOAS S.A.\" },\n\t{ code: \"775\", ispb: \"47381104\", name: \"CONTAAZUL INSTITUICAO DE PAGAMENTO LTDA.\" },\n\t{ code: \"778\", ispb: \"58674454\", name: \"PB SOCIEDADE DE CREDITO DIRETO S.A.\" },\n\t{ code: \"780\", ispb: \"12102128\", name: \"SAFETYPAY BRASIL INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{\n\t\tcode: \"781\",\n\t\tispb: \"58006471\",\n\t\tname: \"BARU DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS LTDA.\",\n\t},\n\t{ code: \"783\", ispb: \"31680151\", name: \"SWAP INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n\t{ code: \"785\", ispb: \"53058329\", name: \"LA FINTECA INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{ code: \"786\", ispb: \"52076716\", name: \"AWX BRASIL  INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{ code: \"787\", ispb: \"10789035\", name: \"ATTRUS INSTITUIÇÃO DE PAGAMENTO S/A\" },\n\t{ code: \"788\", ispb: \"35713491\", name: \"PROTOTYPE INSTITUICAO DE PAGAMENTO S.A.\" },\n\t{ code: \"789\", ispb: \"57654096\", name: \"APUSDIGITAL INSTITUICAO DE PAGAMENTO LTDA\" },\n\t{ code: \"790\", ispb: \"54024532\", name: \"MAX INSTITUIÇÃO DE PAGAMENTO LTDA\" },\n\t{\n\t\tcode: \"791\",\n\t\tispb: \"62448932\",\n\t\tname: \"MULTIPLIKE FINANCEIRA S.A. SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO\",\n\t},\n\t{ code: \"792\", ispb: \"44921281\", name: \"NIXFIN SOCIEDADE DE CRÉDITO DIRETO S.A.\" },\n\t{\n\t\tcode: \"793\",\n\t\tispb: \"61021673\",\n\t\tname: \"MAGALUPAY - SOCIEDADE DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO S.A.\",\n\t},\n\t{ code: \"794\", ispb: \"44323831\", name: \"ATUAL SOCIEDADE CORRETORA DE CÂMBIO LTDA\" },\n\t{ code: \"795\", ispb: \"52067630\", name: \"BANCO TRATON BRASIL S.A.\" },\n\t{ code: \"804\", ispb: \"32343119\", name: \"MÊNTORE INSTITUIÇÃO DE PAGAMENTO S.A.\" },\n];\n","import { BANKS, type Bank } from \"../_internals/constants/banks\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type { Bank } from \"../_internals/constants/banks\";\n\nconst CODE_LENGTH = 3;\n\n/**\n * Looks up a Brazilian bank by its compensation code (COMPE), published by Banco Central do\n * Brasil in the STR (Sistema de Transferência de Reservas) participants list.\n *\n * @param {string|number} code - The bank's COMPE code, with or without leading zeros.\n * @returns {Bank|null} A fresh copy of the matching bank, or `null` when no bank has that code.\n *\n * @example\n * ```typescript\n * getBankByCode(\"001\"); // { code: \"001\", ispb: \"00000000\", name: \"Banco do Brasil S.A.\" }\n * getBankByCode(1); // { code: \"001\", ispb: \"00000000\", name: \"Banco do Brasil S.A.\" }\n * getBankByCode(\"999\"); // null\n * ```\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv\n * @see Based on: https://brasilapi.com.br/api/banks/v1\n * Fallback source used by the dataset generator (`scripts/banks.ts`) when the Bacen CSV request fails.\n */\nexport const getBankByCode = (code: string | number): Bank | null => {\n\tif (!isLookupCode(code)) return null;\n\n\tconst digits = sanitizeToDigits(code);\n\n\t// Stryker disable next-line ConditionalExpression,LogicalOperator: no bank has code \"000\" and padStart never shortens an oversized code, so bypassing this guard can never change which bank is found.\n\tif (digits.length === 0 || digits.length > CODE_LENGTH) return null;\n\n\tconst normalizedCode = digits.padStart(CODE_LENGTH, \"0\");\n\n\tconst bank = BANKS.find((candidate) => candidate.code === normalizedCode);\n\n\treturn bank ? { ...bank } : null;\n};\n","import { BANKS, type Bank } from \"../_internals/constants/banks\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type { Bank } from \"../_internals/constants/banks\";\n\nconst ISPB_LENGTH = 8;\n\n/**\n * Looks up a Brazilian bank by its ISPB (Identificador do Sistema de Pagamentos Brasileiro),\n * the 8 digit code that identifies every participant of the SPB, published by Banco Central do\n * Brasil in the STR (Sistema de Transferência de Reservas) participants list. Every SPB\n * participant has an ISPB, but this dataset only carries the institutions that also have a\n * COMPE code, so an ISPB whose institution has no COMPE code of its own returns `null`.\n *\n * @param {string|number} value - The bank's ISPB, with or without leading zeros.\n * @returns {Bank|null} A fresh copy of the matching bank, or `null` when no bank has that ISPB.\n *\n * @example\n * ```typescript\n * getBankByIspb(\"00000000\"); // { code: \"001\", ispb: \"00000000\", name: \"Banco do Brasil S.A.\" }\n * getBankByIspb(0); // { code: \"001\", ispb: \"00000000\", name: \"Banco do Brasil S.A.\" }\n * getBankByIspb(\"60701190\"); // { code: \"341\", ispb: \"60701190\", name: \"ITAÚ UNIBANCO S.A.\" }\n * getBankByIspb(\"99999999\"); // null\n * ```\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv\n * @see Based on: https://brasilapi.com.br/api/banks/v1\n * Fallback source used by the dataset generator (`scripts/banks.ts`) when the Bacen CSV request fails.\n */\nexport const getBankByIspb = (value: string | number): Bank | null => {\n\tif (!isLookupCode(value)) return null;\n\n\tconst digits = sanitizeToDigits(value);\n\n\t// Stryker disable next-line ConditionalExpression: every ISPB in BANKS is exactly 8 digits, so an oversized value can never match one, whether or not this half of the guard runs.\n\tif (digits.length === 0 || digits.length > ISPB_LENGTH) return null;\n\n\tconst normalizedIspb = digits.padStart(ISPB_LENGTH, \"0\");\n\n\tconst bank = BANKS.find((candidate) => candidate.ispb === normalizedIspb);\n\n\treturn bank ? { ...bank } : null;\n};\n","import { BANKS, type Bank } from \"../_internals/constants/banks\";\n\nexport type { Bank } from \"../_internals/constants/banks\";\n\n/**\n * Returns every Brazilian bank with a compensation code (COMPE), published by Banco Central\n * do Brasil in the STR (Sistema de Transferência de Reservas) participants list.\n *\n * Each call returns a fresh array of fresh objects, so mutating the result never affects the\n * underlying data or subsequent calls.\n *\n * @returns {Bank[]} Every known bank, in a fixed table order.\n *\n * @example\n * ```typescript\n * getBanks()[0]; // { code: \"001\", ispb: \"00000000\", name: \"Banco do Brasil S.A.\" }\n * ```\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv\n * @see Based on: https://brasilapi.com.br/api/banks/v1\n * Fallback source used by the dataset generator (`scripts/banks.ts`) when the Bacen CSV request fails.\n */\nexport const getBanks = (): Bank[] => BANKS.map((bank) => Object.assign({}, bank));\n","import {\n\tARRECADACAO_BARCODE_LENGTH,\n\tARRECADACAO_BLOCK_LENGTH,\n\tARRECADACAO_BLOCKS,\n\tARRECADACAO_CHECK_DIGIT_POSITION,\n\tARRECADACAO_LINE_LENGTH,\n\tARRECADACAO_PRODUCT,\n\tARRECADACAO_VALUE_END,\n\tARRECADACAO_VALUE_START,\n} from \"../constants/arrecadacao\";\nimport { mod10 } from \"../mod10/mod10\";\nimport { mod11 } from \"../mod11/mod11\";\n\nexport type ArrecadacaoInfo = {\n\t/** The 44 digit barcode rebuilt from the linha digitável. */\n\tbarcode: string;\n\t/** Arrecadação segment (1 to 7, or 9 for the bank's own use), the kind of biller the bank slip belongs to. */\n\tsegment: number;\n\t/** Whether the amount is an effective value (`true`) or a reference quantity (`false`). */\n\thasEffectiveValue: boolean;\n\t/** Amount in cents. */\n\tamount: number;\n};\n\nconst getCheckDigitAlgorithm = (barcode: string): ((value: string) => number) | null => {\n\tconst identifier = barcode[2];\n\n\tif (identifier === \"6\" || identifier === \"7\") return mod10;\n\tif (identifier === \"8\" || identifier === \"9\") {\n\t\treturn (value: string) => mod11(value, { variant: \"arrecadacao\" });\n\t}\n\n\treturn null;\n};\n\nconst lineToBarcode = (line: string): string =>\n\tArray.from({ length: ARRECADACAO_BLOCKS }, (_, block) => {\n\t\tconst start = block * (ARRECADACAO_BLOCK_LENGTH + 1);\n\t\treturn line.slice(start, start + ARRECADACAO_BLOCK_LENGTH);\n\t}).join(\"\");\n\n/**\n * Validates an arrecadação bank slip and returns its parsed information.\n *\n * Accepts both the 44 digit barcode and the 48 digit linha digitável. The block\n * check digits are only verified for the linha digitável, since they are not represented in\n * the barcode, where §03-E states they are not represented.\n *\n * @param {string} digits - Sanitized digits of the bank slip.\n * @returns {ArrecadacaoInfo | null} The parsed information, or null when it is not a valid arrecadação bank slip.\n *\n * @example\n * ```typescript\n * parseArrecadacao(\"846100000005246100291102005460339004695895061080\");\n * // { barcode: \"8461...\", segment: 4, hasEffectiveValue: true, amount: 2461 }\n * ```\n */\nexport const parseArrecadacao = (digits: string): ArrecadacaoInfo | null => {\n\tif (!digits.startsWith(ARRECADACAO_PRODUCT)) return null;\n\n\tconst isLine = digits.length === ARRECADACAO_LINE_LENGTH;\n\n\tif (!isLine && digits.length !== ARRECADACAO_BARCODE_LENGTH) return null;\n\n\tconst barcode = isLine ? lineToBarcode(digits) : digits;\n\n\tconst checkDigit = getCheckDigitAlgorithm(barcode);\n\n\tif (!checkDigit) return null;\n\n\tconst withoutCheckDigit =\n\t\tbarcode.slice(0, ARRECADACAO_CHECK_DIGIT_POSITION) +\n\t\tbarcode.slice(ARRECADACAO_CHECK_DIGIT_POSITION + 1);\n\n\tif (checkDigit(withoutCheckDigit) !== barcode.charCodeAt(ARRECADACAO_CHECK_DIGIT_POSITION) - 48)\n\t\treturn null;\n\n\tif (isLine) {\n\t\tfor (let block = 0; block < ARRECADACAO_BLOCKS; block++) {\n\t\t\tconst value = barcode.slice(\n\t\t\t\tblock * ARRECADACAO_BLOCK_LENGTH,\n\t\t\t\t(block + 1) * ARRECADACAO_BLOCK_LENGTH,\n\t\t\t);\n\t\t\tconst expected =\n\t\t\t\tdigits.charCodeAt(block * (ARRECADACAO_BLOCK_LENGTH + 1) + ARRECADACAO_BLOCK_LENGTH) - 48;\n\n\t\t\tif (checkDigit(value) !== expected) return null;\n\t\t}\n\t}\n\n\tconst segment = barcode.charCodeAt(1) - 48;\n\n\tif (segment === 0 || segment === 8) return null;\n\n\tconst identifier = barcode[2];\n\n\treturn {\n\t\tbarcode,\n\t\tsegment,\n\t\thasEffectiveValue: identifier === \"6\" || identifier === \"8\",\n\t\tamount: Number(barcode.slice(ARRECADACAO_VALUE_START, ARRECADACAO_VALUE_END)),\n\t};\n};\n","export const CHECK_DIGIT_POSITION = 4;\n\nexport const PARTIALS = [\n\t{ start: 0, end: 9, checkIdx: 9 },\n\t{ start: 10, end: 20, checkIdx: 20 },\n\t{ start: 21, end: 31, checkIdx: 31 },\n];\n\nexport const CONVERT_POSITIONS = [\n\t[0, 4],\n\t[32, 47],\n\t[4, 9],\n\t[10, 20],\n\t[21, 31],\n] as const;\n","import { BOLETO_LENGTH } from \"../_internals/constants/boleto\";\nimport { mod10 } from \"../_internals/mod10/mod10\";\nimport { mod11 } from \"../_internals/mod11/mod11\";\nimport { parseArrecadacao } from \"../_internals/parse-arrecadacao/parse-arrecadacao\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { CHECK_DIGIT_POSITION, CONVERT_POSITIONS, PARTIALS } from \"./constants\";\n\nconst isValidPartials = (digits: string): boolean => {\n\tfor (const { start, end, checkIdx } of PARTIALS) {\n\t\tconst partial = digits.slice(start, end);\n\t\tconst expected = mod10(partial);\n\t\tif (digits.charCodeAt(checkIdx) - 48 !== expected) return false;\n\t}\n\treturn true;\n};\n\nconst parseToBoleto = (digits: string): string => {\n\tlet result = \"\";\n\tfor (const [start, end] of CONVERT_POSITIONS) {\n\t\tresult += digits.slice(start, end);\n\t}\n\treturn result;\n};\n\nconst isValidCheckDigit = (boleto: string): boolean => {\n\tconst withoutCheckDigit =\n\t\tboleto.slice(0, CHECK_DIGIT_POSITION) + boleto.slice(CHECK_DIGIT_POSITION + 1);\n\tconst expected = mod11(withoutCheckDigit);\n\treturn boleto.charCodeAt(CHECK_DIGIT_POSITION) - 48 === expected;\n};\n\n/**\n * Validates if a Brazilian bank slip (boleto) number is valid.\n *\n * Supports the 47 digit \"cobrança bancária\" linha digitável and, additionally, the\n * \"arrecadação\" (convênio/tributos) bank slip: 48 digit linha digitável or 44 digit\n * barcode, both starting with `8`.\n *\n * One leniency is kept from 2.3.0: the código de moeda in position 4 of the cobrança bancária\n * barcode is not checked, although Carta-Circular BCB nº 2.926/2000 fixes it at `9` (real), so\n * a slip carrying any other moeda digit still validates.\n *\n * @param {string} value - The bank slip number to validate.\n * @returns {boolean} True if the bank slip number is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidBoleto(\"00190000090114971860168524522114675860000102656\"); // true\n * isValidBoleto(\"0019000009 01149.718601 68524.522114 6 75860000102656\"); // true\n * isValidBoleto(\"846100000005246100291102005460339004695895061080\"); // true (arrecadação)\n * ```\n *\n * Carta-Circular BCB nº 2.926/2000 specifies the linha digitável fields and the módulo 11\n * check digit (using 1 for remainders 0, 10 and 1) of the 47 digit cobrança bancária slip,\n * including the position of the fator de vencimento field. The FEBRABAN \"Layout Padrão de\n * Arrecadação/Recebimento com Utilização do Código de Barras\" and the FEBRABAN layout index\n * cover the arrecadação slip.\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/c_circ/2000/pdf/c_circ_2926_v1_O.pdf\n * @see Official: https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%208%20-%2011_05_2026.pdf\n * @see Official: https://portal.febraban.org.br/pagina/3425/33/pt-br/layout-febraban\n */\nexport const isValidBoleto = (value: string): boolean => {\n\tconst digits = sanitizeToDigits(value);\n\n\tif (parseArrecadacao(digits)) return true;\n\n\tif (digits.length !== BOLETO_LENGTH) return false;\n\n\tif (!isValidPartials(digits)) return false;\n\n\tconst boleto = parseToBoleto(digits);\n\n\treturn isValidCheckDigit(boleto);\n};\n","/**\n * The \"fator de vencimento\" (expiration factor) counts days since the base date 07/10/1997 that\n * Carta-Circular BCB nº 2.926/2000 places in positions 6-9 of the barcode, and cycles every\n * `CYCLE_LENGTH` days once it reaches its 4-digit maximum: it reached 9999 on 21/02/2025 and\n * restarted at 1000 on 22/02/2025. FEBRABAN announced that reset in Comunicado FB-009/2023,\n * which is not published on FEBRABAN's public site; the Bradesco cobrança layout manual below\n * reproduces the rule and its correlation table.\n *\n * `RANGE_BEFORE` and `RANGE_AFTER` are a heuristic of this library, not a published rule.\n * Neither FEBRABAN nor the Banco Central publishes any way of telling an old cycle factor from\n * a new cycle one, so every factor resolves to either of two dates `CYCLE_LENGTH` days apart.\n * These two windows pick between them, which means the date a factor resolves to depends on the\n * `referenceDate` given to `getBoletoInfo` and can change as that reference moves.\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/c_circ/2000/pdf/c_circ_2926_v1_O.pdf\n * @see Official: https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%208%20-%2011_05_2026.pdf\n * @see Official: https://portal.febraban.org.br/pagina/3425/33/pt-br/layout-febraban\n * @see Based on: https://banco.bradesco/assets/pessoajuridica/pdf/4008-524-0121-layout-cobranca-versao-portugues.pdf\n * Bradesco \"Layout da Cobrança\" manual: base date 07/10/1997, 03/07/2000 = 1000, 21/02/2025 = 9999\n * and a restart at 1000 on 22/02/2025.\n */\nexport const DAY_IN_MS = 86_400_000;\n\nexport const BASE_DATE_YEAR = 1997;\nexport const BASE_DATE_MONTH = 9;\nexport const BASE_DATE_DAY = 7;\n\nexport const CYCLE_LENGTH = 9000;\n\n/**\n * The earliest cycle the two candidate search may consider. The factor only started carrying\n * 1000 on 03/07/2000, so the base date is the oldest day the field can denote: a negative cycle\n * would place a factor before 07/10/1997, a date no fator de vencimento can express (and one the\n * same function already refuses to read out of a literal factor below `MIN_FACTOR`). A\n * `referenceDate` early enough to make the arithmetic yield a negative cycle is clamped here.\n */\nexport const FIRST_CYCLE = 0;\n\nexport const MIN_FACTOR = 1000;\n\nexport const RANGE_BEFORE = 3000;\n\nexport const RANGE_AFTER = 5500;\n","import { parseArrecadacao } from \"../_internals/parse-arrecadacao/parse-arrecadacao\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { isValidBoleto } from \"../is-valid-boleto/is-valid-boleto\";\nimport {\n\tBASE_DATE_DAY,\n\tBASE_DATE_MONTH,\n\tBASE_DATE_YEAR,\n\tCYCLE_LENGTH,\n\tDAY_IN_MS,\n\tFIRST_CYCLE,\n\tMIN_FACTOR,\n\tRANGE_AFTER,\n\tRANGE_BEFORE,\n} from \"./constants\";\n\n/** The fields `getBoletoInfo` reads out of a bank slip (boleto). */\nexport type BoletoInfo = {\n\t/** Amount in cents. */\n\tamount: number;\n\t/** Due date read from the \"fator de vencimento\", or `null` when the bank slip carries none. */\n\texpirationDate: Date | null;\n\t/** Three digit bank code (COMPE), empty for an arrecadação bank slip. */\n\tbankCode: string;\n\t/** Present and set to \"arrecadacao\" only for convênio/tributos bank slips. */\n\ttype?: \"arrecadacao\";\n\t/** Arrecadação segment (1 to 7, or 9 for the bank's own use), the kind of biller the bank slip belongs to. */\n\tsegment?: number;\n\t/** Arrecadação amount in reais (`amount` divided by 100). */\n\tvalue?: number;\n\t/** Whether the arrecadação amount is an effective value (`true`) or a reference quantity (`false`). */\n\thasEffectiveValue?: boolean;\n};\n\nconst toDayNumber = (date: Date): number =>\n\tMath.floor(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) / DAY_IN_MS);\n\n/**\n * The day number of the cycle's base date, the fixed point every fator de vencimento counts\n * from. Computed per call on purpose: as a module level constant it would be a top level call no\n * consumer bundler can prove pure, which pins this module into every export's bundle.\n * @returns {number} The day number of the base date.\n */\nconst getBaseDayNumber = (): number =>\n\tMath.floor(Date.UTC(BASE_DATE_YEAR, BASE_DATE_MONTH, BASE_DATE_DAY) / DAY_IN_MS);\n\nconst dateFromBase = (days: number): Date =>\n\tnew Date(BASE_DATE_YEAR, BASE_DATE_MONTH, BASE_DATE_DAY + days);\n\nconst getExpirationDate = (factor: number, referenceDate: Date): Date | null => {\n\tif (factor < MIN_FACTOR) return null;\n\n\tconst reference = toDayNumber(referenceDate);\n\tconst cycle = Math.max(\n\t\tFIRST_CYCLE,\n\t\tMath.floor((reference - getBaseDayNumber() - factor) / CYCLE_LENGTH),\n\t);\n\n\tlet closest = 0;\n\tlet closestDistance = Number.POSITIVE_INFINITY;\n\n\tfor (const candidate of [cycle, cycle + 1]) {\n\t\tconst days = candidate * CYCLE_LENGTH + factor;\n\t\tconst difference = getBaseDayNumber() + days - reference;\n\n\t\tconst inRange =\n\t\t\t// Stryker disable next-line EqualityOperator,UnaryOperator: RANGE_BEFORE (3000) is smaller than half a cycle (4500), so whenever this side alone decides the match, the other candidate (a full 9000-day cycle away) is always farther, and the fallback below always lands on the very same candidate anyway\n\t\t\tdifference >= -RANGE_BEFORE && difference <= RANGE_AFTER;\n\n\t\tif (inRange) return dateFromBase(days);\n\n\t\tconst distance = Math.abs(difference);\n\n\t\t// Stryker disable next-line EqualityOperator: the two candidates are always exactly one cycle (9000 days) apart, so their distances can only tie at the cycle's exact midpoint (4500) — a point RANGE_AFTER (5500) already always accepts above via the early return, so a genuine tie can never reach this comparison\n\t\tif (distance < closestDistance) {\n\t\t\tclosestDistance = distance;\n\t\t\tclosest = days;\n\t\t}\n\t}\n\n\treturn dateFromBase(closest);\n};\n\n/** Options of `getBoletoInfo`. */\nexport type GetBoletoInfoOptions = {\n\t/** Date used to resolve the 9000 day \"fator de vencimento\" cycle (default: now). */\n\treferenceDate?: Date;\n};\n\n/**\n * Extracts information from a Brazilian bank slip (boleto).\n *\n * The value is checked with `isValidBoleto` first, so an invalid bank slip gives `null` rather\n * than a partial result, the way every other getter of this package answers a lookup it cannot\n * resolve (`getFormatLicensePlate`, `getMunicipality`).\n *\n * Supports the 47 digit \"cobrança bancária\" linha digitável and, additionally, the\n * \"arrecadação\" (convênio/tributos) bank slip: 48 digit linha digitável or 44 digit\n * barcode, both starting with `8`. Arrecadação bank slips also return `type`, `segment`,\n * `value` and `hasEffectiveValue`, and, carrying neither a bank code nor a fator de vencimento,\n * come back with `bankCode` set to `\"\"` and `expirationDate` set to `null` rather than with those\n * two keys missing.\n *\n * Neither FEBRABAN nor the Banco Central publishes a way of telling an old cycle fator de\n * vencimento from a new cycle one, so every factor resolves to either of two dates 9000 days\n * apart. `referenceDate` (now by default) picks between them through the library's own safety\n * windows, which means the same slip can resolve to the other candidate as time passes: pass\n * `referenceDate` explicitly whenever the answer has to stay stable. The search never goes below\n * the first cycle, so a `referenceDate` older than the scheme itself still resolves a factor to\n * the oldest date that factor can denote rather than to one before the 07/10/1997 base date.\n *\n * @param {string} value - The boleto digitable line (can be with or without mask).\n * @param {GetBoletoInfoOptions} [options] - Optional options.\n * @param {Date} options.referenceDate - Date used to resolve the \"fator de vencimento\" cycle. Defaults to now.\n * @returns {BoletoInfo | null} An object containing amount (in cents), expirationDate, and bankCode, or null if the boleto is invalid.\n *\n * @example\n * ```typescript\n * getBoletoInfo('00190000090114971860168524522114675860000102656', {\n *   referenceDate: new Date(2025, 5, 15),\n * });\n * // { amount: 102656, expirationDate: new Date(2018, 6, 15), bankCode: '001' }\n *\n * getBoletoInfo('846100000005246100291102005460339004695895061080');\n * // { amount: 2461, expirationDate: null, bankCode: '', type: 'arrecadacao', segment: 4, value: 24.61, hasEffectiveValue: true }\n *\n * getBoletoInfo('invalid'); // null\n * ```\n *\n * Carta-Circular BCB nº 2.926/2000 specifies the linha digitável fields and the módulo 11\n * check digit (using 1 for remainders 0, 10 and 1) of the 47 digit cobrança bancária slip,\n * including the position of the fator de vencimento field. The FEBRABAN \"Layout Padrão de\n * Arrecadação/Recebimento com Utilização do Código de Barras\" and the FEBRABAN layout index\n * cover the arrecadação slip. The 22/02/2025 reset of the fator de vencimento is in neither:\n * the Bradesco cobrança layout manual below reproduces the FEBRABAN rule. See\n * `src/get-boleto-info/constants.ts` for the fator de vencimento cycle base date and reset.\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/c_circ/2000/pdf/c_circ_2926_v1_O.pdf\n * @see Official: https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%208%20-%2011_05_2026.pdf\n * @see Official: https://portal.febraban.org.br/pagina/3425/33/pt-br/layout-febraban\n * @see Based on: https://banco.bradesco/assets/pessoajuridica/pdf/4008-524-0121-layout-cobranca-versao-portugues.pdf\n * Bradesco \"Layout da Cobrança\" manual: base date 07/10/1997, 03/07/2000 = 1000, 21/02/2025 = 9999\n * and a restart at 1000 on 22/02/2025.\n */\nexport const getBoletoInfo = (value: string, options?: GetBoletoInfoOptions): BoletoInfo | null => {\n\tif (!isValidBoleto(value)) return null;\n\n\tconst sanitized = sanitizeToDigits(value);\n\n\tconst arrecadacao = parseArrecadacao(sanitized);\n\n\tif (arrecadacao) {\n\t\treturn {\n\t\t\tamount: arrecadacao.amount,\n\t\t\texpirationDate: null,\n\t\t\tbankCode: \"\",\n\t\t\ttype: \"arrecadacao\",\n\t\t\tsegment: arrecadacao.segment,\n\t\t\tvalue: arrecadacao.amount / 100,\n\t\t\thasEffectiveValue: arrecadacao.hasEffectiveValue,\n\t\t};\n\t}\n\n\tconst bankCode = sanitized.slice(0, 3);\n\n\tconst expirationDate = getExpirationDate(\n\t\tNumber(sanitized.slice(33, 37)),\n\t\toptions?.referenceDate ?? new Date(),\n\t);\n\n\tconst amount = Number(sanitized.slice(37, 47));\n\n\treturn { amount, expirationDate, bankCode };\n};\n","/**\n * CBO 2002 (Classificação Brasileira de Ocupações) titles, indexed by the raw 6 digit code.\n *\n * Built from the official `cbo2002-ocupacao.csv` the Ministério do Trabalho e Emprego publishes\n * on gov.br, a plain `CODIGO;TITULO` CSV in ISO-8859-1 whose codes are already the 6 digit\n * form `Cbo.code` accepts, so no normalization is applied to them. The titles are the official\n * sentence case spelling.\n *\n * Generated by `node ./scripts/cbo.ts`. Do not edit by hand.\n *\n * @see Official: https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/cbo/servicos/downloads/cbo2002-ocupacao.csv\n * The CBO 2002 occupation table, as published by the Ministério do Trabalho e Emprego.\n * @see Based on: https://raw.githubusercontent.com/lucaashoff/lista-cbo-json/main/cbos.json\n * Community mirror of the same table, the fallback this script was generated from before the\n * official CSV was used.\n */\nexport const CBO_TITLES: Record<string, string> = {\n\t\"111105\": \"Senador\",\n\t\"111110\": \"Deputado federal\",\n\t\"111115\": \"Deputado estadual e distrital\",\n\t\"111120\": \"Vereador\",\n\t\"111205\": \"Presidente da república\",\n\t\"111210\": \"Vice-presidente da república\",\n\t\"111215\": \"Ministro de estado\",\n\t\"111220\": \"Secretário - executivo\",\n\t\"111225\": \"Membro superior do poder executivo\",\n\t\"111230\": \"Governador de estado\",\n\t\"111235\": \"Governador do distrito federal\",\n\t\"111240\": \"Vice-governador de estado\",\n\t\"111245\": \"Vice-governador do distrito federal\",\n\t\"111250\": \"Prefeito\",\n\t\"111255\": \"Vice-prefeito\",\n\t\"111305\": \"Ministro do supremo tribunal federal\",\n\t\"111310\": \"Ministro do superior tribunal de justiça\",\n\t\"111315\": \"Ministro do  superior tribunal militar\",\n\t\"111320\": \"Ministro do  superior tribunal do trabalho\",\n\t\"111325\": \"Juiz de direito\",\n\t\"111330\": \"Juiz federal\",\n\t\"111335\": \"Juiz auditor federal - justiça militar\",\n\t\"111340\": \"Juiz auditor estadual - justiça militar\",\n\t\"111345\": \"Juiz do trabalho\",\n\t\"111405\": \"Dirigente do serviço público federal\",\n\t\"111410\": \"Dirigente do serviço público estadual e distrital\",\n\t\"111415\": \"Dirigente do serviço público municipal\",\n\t\"111505\": \"Especialista de políticas públicas e gestão governamental - eppgg\",\n\t\"111510\": \"Analista de planejamento e orçamento - apo\",\n\t\"113005\": \"Cacique\",\n\t\"113010\": \"Líder de comunidade caiçara\",\n\t\"113015\": \"Membro de liderança quilombola\",\n\t\"114105\": \"Dirigente de partido político\",\n\t\"114205\": \"Dirigente de entidade de trabalhadores\",\n\t\"114210\": \"Dirigente de entidade patronal\",\n\t\"114305\": \"Dirigente e administrador de organização religiosa\",\n\t\"114405\": \"Dirigente e administrador de organização da sociedade civil sem fins lucrativos\",\n\t\"121005\": \"Diretor de planejamento estratégico\",\n\t\"121010\": \"Diretor geral de empresa e organizações (exceto de interesse público)\",\n\t\"122105\": \"Diretor de produção e operações em empresa agropecuária\",\n\t\"122110\": \"Diretor de produção e operações em empresa aqüícola\",\n\t\"122115\": \"Diretor de produção e operações em empresa florestal\",\n\t\"122120\": \"Diretor de produção e operações em empresa pesqueira\",\n\t\"122205\":\n\t\t\"Diretor de produção e operações da indústria de transformação, extração mineral e utilidades\",\n\t\"122305\": \"Diretor de operações de obras pública e civil\",\n\t\"122405\": \"Diretor de operações comerciais (comércio atacadista e varejista)\",\n\t\"122505\": \"Diretor de  produção e operações de alimentação\",\n\t\"122510\": \"Diretor de  produção e operações de hotel\",\n\t\"122515\": \"Diretor de  produção e operações de turismo\",\n\t\"122520\": \"Turismólogo\",\n\t\"122605\": \"Diretor de operações de correios\",\n\t\"122610\": \"Diretor de operações de serviços de armazenamento\",\n\t\"122615\": \"Diretor de operações de serviços de telecomunicações\",\n\t\"122620\": \"Diretor de operações de serviços de transporte\",\n\t\"122705\": \"Diretor comercial em operações de intermediação financeira\",\n\t\"122710\": \"Diretor de produtos bancários\",\n\t\"122715\": \"Diretor de crédito rural\",\n\t\"122720\": \"Diretor de câmbio e comércio exterior\",\n\t\"122725\": \"Diretor de compliance\",\n\t\"122730\": \"Diretor de crédito (exceto crédito imobiliário)\",\n\t\"122735\": \"Diretor de crédito imobiliário\",\n\t\"122740\": \"Diretor de leasing\",\n\t\"122745\": \"Diretor de mercado de capitais\",\n\t\"122750\": \"Diretor de recuperação de créditos em operações de intermediação financeira\",\n\t\"122755\": \"Diretor de riscos de mercado\",\n\t\"123105\": \"Diretor administrativo\",\n\t\"123110\": \"Diretor administrativo e financeiro\",\n\t\"123115\": \"Diretor financeiro\",\n\t\"123205\": \"Diretor de recursos humanos\",\n\t\"123210\": \"Diretor de relações de trabalho\",\n\t\"123305\": \"Diretor comercial\",\n\t\"123310\": \"Diretor de marketing\",\n\t\"123405\": \"Diretor de suprimentos\",\n\t\"123410\": \"Diretor de suprimentos no serviço público\",\n\t\"123605\": \"Diretor de tecnologia da informação\",\n\t\"123705\": \"Diretor de pesquisa e desenvolvimento (p&d)\",\n\t\"123805\": \"Diretor de manutenção\",\n\t\"131105\": \"Diretor de serviços culturais\",\n\t\"131110\": \"Diretor de serviços sociais\",\n\t\"131115\": \"Gerente de serviços culturais\",\n\t\"131120\": \"Gerente de serviços sociais\",\n\t\"131205\": \"Diretor de serviços de saúde\",\n\t\"131210\": \"Gerente de serviços de saúde\",\n\t\"131215\": \"Tecnólogo em gestão hospitalar\",\n\t\"131220\": \"Gerontólogo\",\n\t\"131225\": \"Sanitarista\",\n\t\"131305\": \"Diretor de instituição educacional da área privada\",\n\t\"131310\": \"Diretor de instituição educacional pública\",\n\t\"131315\": \"Gerente de instituição educacional da área privada\",\n\t\"131320\": \"Gerente de serviços educacionais da área pública\",\n\t\"141105\": \"Gerente de produção e operações  aqüícolas\",\n\t\"141110\": \"Gerente de produção e operações  florestais\",\n\t\"141115\": \"Gerente de produção e operações agropecuárias\",\n\t\"141120\": \"Gerente de produção e operações pesqueiras\",\n\t\"141205\": \"Gerente de produção e operações\",\n\t\"141305\": \"Gerente de produção e operações da construção civil e obras públicas\",\n\t\"141405\": \"Comerciante atacadista\",\n\t\"141410\": \"Comerciante varejista\",\n\t\"141415\": \"Gerente de loja e supermercado\",\n\t\"141420\": \"Gerente de operações de serviços de assistência técnica\",\n\t\"141505\": \"Gerente de hotel\",\n\t\"141510\": \"Gerente de restaurante\",\n\t\"141515\": \"Gerente de bar\",\n\t\"141520\": \"Gerente de pensão\",\n\t\"141525\": \"Gerente de turismo\",\n\t\"141605\": \"Gerente de operações de transportes\",\n\t\"141610\": \"Gerente de operações de correios e telecomunicações\",\n\t\"141615\": \"Gerente de logística (armazenagem e distribuição)\",\n\t\"141705\": \"Gerente de produtos bancários\",\n\t\"141710\": \"Gerente de agência\",\n\t\"141715\": \"Gerente de câmbio e comércio exterior\",\n\t\"141720\": \"Gerente de crédito e cobrança\",\n\t\"141725\": \"Gerente de crédito imobiliário\",\n\t\"141730\": \"Gerente de crédito rural\",\n\t\"141735\": \"Gerente de recuperação de crédito\",\n\t\"141805\": \"Gerente de administração em aeroportos\",\n\t\"141810\":\n\t\t\"Gerente de empresa aérea e empresa de serviços auxiliares ao transporte aéreo (esata) em aeroportos\",\n\t\"141815\": \"Gerente de operações em aeroportos\",\n\t\"141820\": \"Gerente de operações de cargas\",\n\t\"141825\": \"Gerente de segurança da aviação civil\",\n\t\"141830\": \"Gerente de segurança operacional (aviação civil)\",\n\t\"142105\": \"Gerente administrativo\",\n\t\"142110\": \"Gerente de riscos\",\n\t\"142115\": \"Gerente financeiro\",\n\t\"142120\": \"Tecnólogo em gestão administrativo- financeira\",\n\t\"142125\": \"Analista de compliance\",\n\t\"142130\": \"Analista de riscos\",\n\t\"142135\": \"Oficial de proteção de dados pessoais (dpo)\",\n\t\"142140\": \"Gerente de facility management\",\n\t\"142205\": \"Gerente de recursos humanos\",\n\t\"142210\": \"Gerente de departamento pessoal\",\n\t\"142305\": \"Gerente comercial\",\n\t\"142310\": \"Gerente de comunicação\",\n\t\"142315\": \"Gerente de marketing\",\n\t\"142320\": \"Gerente de vendas\",\n\t\"142325\": \"Relações públicas\",\n\t\"142330\": \"Analista de negócios\",\n\t\"142335\": \"Analista de pesquisa de mercado\",\n\t\"142340\": \"Ouvidor\",\n\t\"142345\": \"Profissional de relações institucionais e governamentais\",\n\t\"142350\": \"Profissonal de relações internacionais\",\n\t\"142355\": \"Analista de e-commerce\",\n\t\"142405\": \"Gerente de compras\",\n\t\"142410\": \"Gerente de suprimentos\",\n\t\"142415\": \"Gerente de almoxarifado\",\n\t\"142505\": \"Gerente de infraestrutura de tecnologia da informação\",\n\t\"142510\": \"Gerente de desenvolvimento de sistemas\",\n\t\"142515\": \"Gerente de operação de tecnologia da informação\",\n\t\"142520\": \"Gerente de projetos de tecnologia da informação\",\n\t\"142525\": \"Gerente de segurança da informação\",\n\t\"142530\": \"Gerente de suporte técnico de tecnologia da informação\",\n\t\"142535\": \"Tecnólogo em gestão da tecnologia da informação\",\n\t\"142605\": \"Gerente de pesquisa e desenvolvimento (p&d)\",\n\t\"142610\": \"Especialista em desenvolvimento de cigarros\",\n\t\"142705\": \"Gerente de projetos e serviços de manutenção\",\n\t\"142710\": \"Tecnólogo em sistemas biomédicos\",\n\t\"201105\": \"Bioengenheiro\",\n\t\"201110\": \"Biotecnologista\",\n\t\"201115\": \"Geneticista\",\n\t\"201205\": \"Pesquisador em metrologia\",\n\t\"201210\": \"Especialista em calibrações metrológicas\",\n\t\"201215\": \"Especialista em ensaios metrológicos\",\n\t\"201220\": \"Especialista em instrumentação metrológica\",\n\t\"201225\": \"Especialista em materiais de referência metrológica\",\n\t\"202105\": \"Engenheiro mecatrônico\",\n\t\"202110\": \"Engenheiro de controle e automação\",\n\t\"202115\": \"Tecnólogo em mecatrônica\",\n\t\"202120\": \"Tecnólogo em automação industrial\",\n\t\"203005\": \"Pesquisador em biologia ambiental\",\n\t\"203010\": \"Pesquisador em biologia animal\",\n\t\"203015\": \"Pesquisador em biologia de microorganismos e parasitas\",\n\t\"203020\": \"Pesquisador em biologia humana\",\n\t\"203025\": \"Pesquisador em biologia vegetal\",\n\t\"203105\": \"Pesquisador em ciências da computação e informática\",\n\t\"203110\": \"Pesquisador em ciências da terra e meio ambiente\",\n\t\"203115\": \"Pesquisador em física\",\n\t\"203120\": \"Pesquisador em matemática\",\n\t\"203125\": \"Pesquisador em química\",\n\t\"203205\": \"Pesquisador de engenharia civil\",\n\t\"203210\": \"Pesquisador de engenharia e tecnologia (outras áreas da engenharia)\",\n\t\"203215\": \"Pesquisador de engenharia elétrica e eletrônica\",\n\t\"203220\": \"Pesquisador de engenharia mecânica\",\n\t\"203225\": \"Pesquisador de engenharia metalúrgica, de minas e de materiais\",\n\t\"203230\": \"Pesquisador de engenharia química\",\n\t\"203305\": \"Pesquisador de clínica médica\",\n\t\"203310\": \"Pesquisador de medicina básica\",\n\t\"203315\": \"Pesquisador em medicina veterinária\",\n\t\"203320\": \"Pesquisador em saúde coletiva\",\n\t\"203405\": \"Pesquisador em ciências agronômicas\",\n\t\"203410\": \"Pesquisador em ciências da pesca e aqüicultura\",\n\t\"203415\": \"Pesquisador em ciências da zootecnia\",\n\t\"203420\": \"Pesquisador em ciências florestais\",\n\t\"203505\": \"Pesquisador em ciências sociais e humanas\",\n\t\"203510\": \"Pesquisador em economia\",\n\t\"203515\": \"Pesquisador em ciências da educação\",\n\t\"203520\": \"Pesquisador em história\",\n\t\"203525\": \"Pesquisador em psicologia\",\n\t\"204105\": \"Perito criminal\",\n\t\"204110\": \"Perito judicial\",\n\t\"211105\": \"Atuário\",\n\t\"211110\": \"Especialista em pesquisa operacional\",\n\t\"211115\": \"Matemático\",\n\t\"211120\": \"Matemático aplicado\",\n\t\"211205\": \"Estatístico\",\n\t\"211210\": \"Estatístico (estatística aplicada)\",\n\t\"211215\": \"Estatístico teórico\",\n\t\"211220\": \"Cientista de dados\",\n\t\"212205\": \"Engenheiro de aplicativos em computação\",\n\t\"212210\": \"Engenheiro de equipamentos em computação\",\n\t\"212215\": \"Engenheiros de sistemas operacionais em computação\",\n\t\"212305\": \"Administrador de banco de dados\",\n\t\"212310\": \"Administrador de redes\",\n\t\"212315\": \"Administrador de sistemas operacionais\",\n\t\"212320\": \"Administrador em segurança da informação\",\n\t\"212405\": \"Analista de desenvolvimento de sistemas\",\n\t\"212410\": \"Analista de redes e de comunicação de dados\",\n\t\"212415\": \"Analista de sistemas de automação\",\n\t\"212420\": \"Analista de suporte computacional\",\n\t\"212425\": \"Arquiteto de soluções de tecnologia da informação\",\n\t\"212430\": \"Analista de testes de tecnologia da informação\",\n\t\"213105\": \"Físico\",\n\t\"213110\": \"Físico (acústica)\",\n\t\"213115\": \"Físico (atômica e molecular)\",\n\t\"213120\": \"Físico (cosmologia)\",\n\t\"213125\": \"Físico (estatística e matemática)\",\n\t\"213130\": \"Físico (fluidos)\",\n\t\"213135\": \"Físico (instrumentação)\",\n\t\"213140\": \"Físico (matéria condensada)\",\n\t\"213145\": \"Físico (materiais)\",\n\t\"213150\": \"Físico (medicina)\",\n\t\"213155\": \"Físico (nuclear e reatores)\",\n\t\"213160\": \"Físico (óptica)\",\n\t\"213165\": \"Físico (partículas e campos)\",\n\t\"213170\": \"Físico (plasma)\",\n\t\"213175\": \"Físico (térmica)\",\n\t\"213205\": \"Químico\",\n\t\"213210\": \"Químico industrial\",\n\t\"213215\": \"Tecnólogo em processos químicos\",\n\t\"213305\": \"Astrônomo\",\n\t\"213310\": \"Geofísico espacial\",\n\t\"213315\": \"Meteorologista\",\n\t\"213405\": \"Geólogo\",\n\t\"213410\": \"Geólogo de engenharia\",\n\t\"213415\": \"Geofísico\",\n\t\"213420\": \"Geoquímico\",\n\t\"213425\": \"Hidrogeólogo\",\n\t\"213430\": \"Paleontólogo\",\n\t\"213435\": \"Petrógrafo\",\n\t\"213440\": \"Oceanógrafo\",\n\t\"214005\": \"Engenheiro ambiental\",\n\t\"214010\": \"Tecnólogo em meio ambiente\",\n\t\"214105\": \"Arquiteto de edificações\",\n\t\"214110\": \"Arquiteto de interiores\",\n\t\"214115\": \"Arquiteto de patrimônio\",\n\t\"214120\": \"Arquiteto paisagista\",\n\t\"214125\": \"Arquiteto urbanista\",\n\t\"214130\": \"Urbanista\",\n\t\"214205\": \"Engenheiro civil\",\n\t\"214210\": \"Engenheiro civil (aeroportos)\",\n\t\"214215\": \"Engenheiro civil (edificações)\",\n\t\"214220\": \"Engenheiro civil (estruturas metálicas)\",\n\t\"214225\": \"Engenheiro civil (ferrovias e metrovias)\",\n\t\"214230\": \"Engenheiro civil (geotécnia)\",\n\t\"214235\": \"Engenheiro civil (hidrologia)\",\n\t\"214240\": \"Engenheiro civil (hidráulica)\",\n\t\"214245\": \"Engenheiro civil (pontes e viadutos)\",\n\t\"214250\": \"Engenheiro civil (portos e vias navegáveis)\",\n\t\"214255\": \"Engenheiro civil (rodovias)\",\n\t\"214260\": \"Engenheiro civil (saneamento)\",\n\t\"214265\": \"Engenheiro civil (túneis)\",\n\t\"214270\": \"Engenheiro civil (transportes e trânsito)\",\n\t\"214280\": \"Tecnólogo em construção civil\",\n\t\"214305\": \"Engenheiro eletricista\",\n\t\"214310\": \"Engenheiro eletrônico\",\n\t\"214315\": \"Engenheiro eletricista de manutenção\",\n\t\"214320\": \"Engenheiro eletricista de projetos\",\n\t\"214325\": \"Engenheiro eletrônico de manutenção\",\n\t\"214330\": \"Engenheiro eletrônico de projetos\",\n\t\"214335\": \"Engenheiro de manutenção de telecomunicações\",\n\t\"214340\": \"Engenheiro de telecomunicações\",\n\t\"214345\": \"Engenheiro projetista de telecomunicações\",\n\t\"214350\": \"Engenheiro de redes de comunicação\",\n\t\"214360\": \"Tecnólogo em eletricidade\",\n\t\"214365\": \"Tecnólogo em eletrônica\",\n\t\"214370\": \"Tecnólogo em telecomunicações\",\n\t\"214375\": \"Engenheiro de energia\",\n\t\"214380\": \"Engenheiro biomédico\",\n\t\"214405\": \"Engenheiro mecânico\",\n\t\"214410\": \"Engenheiro mecânico automotivo\",\n\t\"214415\": \"Engenheiro mecânico (energia nuclear)\",\n\t\"214420\": \"Engenheiro mecânico industrial\",\n\t\"214425\": \"Engenheiro aeronáutico\",\n\t\"214430\": \"Engenheiro naval\",\n\t\"214435\": \"Tecnólogo em fabricação mecânica\",\n\t\"214505\": \"Engenheiro químico\",\n\t\"214510\": \"Engenheiro químico (indústria química)\",\n\t\"214515\": \"Engenheiro químico (mineração, metalurgia, siderurgia, cimenteira e cerâmica)\",\n\t\"214520\": \"Engenheiro químico (papel e celulose)\",\n\t\"214525\": \"Engenheiro químico (petróleo e borracha)\",\n\t\"214530\": \"Engenheiro químico (utilidades e meio ambiente)\",\n\t\"214535\": \"Tecnólogo em produção sulcroalcooleira\",\n\t\"214540\": \"Engenheiro têxtil\",\n\t\"214605\": \"Engenheiro de materiais\",\n\t\"214610\": \"Engenheiro metalurgista\",\n\t\"214615\": \"Tecnólogo em metalurgia\",\n\t\"214705\": \"Engenheiro de minas\",\n\t\"214710\": \"Engenheiro de minas (beneficiamento)\",\n\t\"214715\": \"Engenheiro de minas (lavra a céu aberto)\",\n\t\"214720\": \"Engenheiro de minas (lavra subterrânea)\",\n\t\"214725\": \"Engenheiro de minas (pesquisa mineral)\",\n\t\"214730\": \"Engenheiro de minas (planejamento)\",\n\t\"214735\": \"Engenheiro de minas (processo)\",\n\t\"214740\": \"Engenheiro de minas (projeto)\",\n\t\"214745\": \"Tecnólogo em petróleo e gás\",\n\t\"214750\": \"Tecnólogo em rochas ornamentais\",\n\t\"214805\": \"Engenheiro agrimensor\",\n\t\"214810\": \"Engenheiro cartógrafo\",\n\t\"214905\": \"Engenheiro de produção\",\n\t\"214910\": \"Engenheiro de controle de qualidade\",\n\t\"214915\": \"Engenheiro de segurança do trabalho\",\n\t\"214920\": \"Engenheiro de riscos\",\n\t\"214925\": \"Engenheiro de tempos e movimentos\",\n\t\"214930\": \"Tecnólogo em produção industrial\",\n\t\"214935\": \"Tecnólogo em segurança do trabalho\",\n\t\"214940\": \"Higienista ocupacional\",\n\t\"214945\": \"Engenheiro de logistica\",\n\t\"215105\": \"Agente de manobra e docagem\",\n\t\"215110\": \"Capitão de manobra da marinha mercante\",\n\t\"215115\": \"Comandante da marinha mercante\",\n\t\"215120\": \"Coordenador de operações de combate à poluição no meio aquaviário\",\n\t\"215125\": \"Imediato da marinha mercante\",\n\t\"215130\": \"Inspetor de terminal\",\n\t\"215135\": \"Inspetor naval\",\n\t\"215140\": \"Oficial de quarto de navegação da marinha mercante\",\n\t\"215145\": \"Prático de portos da marinha mercante\",\n\t\"215150\": \"Vistoriador naval\",\n\t\"215205\": \"Oficial superior de máquinas da marinha mercante\",\n\t\"215210\": \"Primeiro oficial de máquinas da marinha mercante\",\n\t\"215215\": \"Segundo oficial de máquinas da marinha mercante\",\n\t\"215220\": \"Superintendente técnico no transporte aquaviário\",\n\t\"215305\": \"Piloto de aeronaves\",\n\t\"215310\": \"Piloto de ensaios em vôo\",\n\t\"215315\": \"Instrutor de vôo\",\n\t\"221105\": \"Biólogo\",\n\t\"221205\": \"Biomédico\",\n\t\"222105\": \"Engenheiro agrícola\",\n\t\"222110\": \"Engenheiro agrônomo\",\n\t\"222115\": \"Engenheiro de pesca\",\n\t\"222120\": \"Engenheiro florestal\",\n\t\"222125\": \"Tecnólogo em agronegócio\",\n\t\"222205\": \"Engenheiro de alimentos\",\n\t\"222215\": \"Tecnólogo em alimentos\",\n\t\"223204\": \"Cirurgião dentista - auditor\",\n\t\"223208\": \"Cirurgião dentista - clínico geral\",\n\t\"223212\": \"Cirurgião dentista - endodontista\",\n\t\"223216\": \"Cirurgião dentista - epidemiologista\",\n\t\"223220\": \"Cirurgião dentista - estomatologista\",\n\t\"223224\": \"Cirurgião dentista - implantodontista\",\n\t\"223228\": \"Cirurgião dentista - odontogeriatra\",\n\t\"223232\": \"Cirurgião dentista - odontologista legal\",\n\t\"223236\": \"Cirurgião dentista - odontopediatra\",\n\t\"223240\": \"Cirurgião dentista - ortopedista e ortodontista\",\n\t\"223244\": \"Cirurgião dentista - patologista bucal\",\n\t\"223248\": \"Cirurgião dentista - periodontista\",\n\t\"223252\": \"Cirurgião dentista - protesiólogo bucomaxilofacial\",\n\t\"223256\": \"Cirurgião dentista - protesista\",\n\t\"223260\": \"Cirurgião dentista - radiologista\",\n\t\"223264\": \"Cirurgião dentista - reabilitador oral\",\n\t\"223268\": \"Cirurgião dentista - traumatologista bucomaxilofacial\",\n\t\"223272\": \"Cirurgião dentista de saúde coletiva\",\n\t\"223276\": \"Cirurgião dentista - odontologia do trabalho\",\n\t\"223280\": \"Cirurgião dentista - dentística\",\n\t\"223284\": \"Cirurgião dentista - disfunção temporomandibular e dor orofacial\",\n\t\"223288\": \"Cirurgião dentista - odontologia para pacientes com necessidades especiais\",\n\t\"223293\": \"Cirurgião-dentista da estratégia de saúde da família\",\n\t\"223305\": \"Médico veterinário\",\n\t\"223310\": \"Zootecnista\",\n\t\"223405\": \"Farmacêutico\",\n\t\"223415\": \"Farmacêutico analista clínico\",\n\t\"223420\": \"Farmacêutico de alimentos\",\n\t\"223425\": \"Farmacêutico práticas integrativas e complementares\",\n\t\"223430\": \"Farmacêutico em saúde pública\",\n\t\"223435\": \"Farmacêutico industrial\",\n\t\"223440\": \"Farmacêutico toxicologista\",\n\t\"223445\": \"Farmacêutico hospitalar e clínico\",\n\t\"223505\": \"Enfermeiro\",\n\t\"223510\": \"Enfermeiro auditor\",\n\t\"223515\": \"Enfermeiro de bordo\",\n\t\"223520\": \"Enfermeiro de centro cirúrgico\",\n\t\"223525\": \"Enfermeiro de terapia intensiva\",\n\t\"223530\": \"Enfermeiro do trabalho\",\n\t\"223535\": \"Enfermeiro nefrologista\",\n\t\"223540\": \"Enfermeiro neonatologista\",\n\t\"223545\": \"Enfermeiro obstétrico\",\n\t\"223550\": \"Enfermeiro psiquiátrico\",\n\t\"223555\": \"Enfermeiro puericultor e pediátrico\",\n\t\"223560\": \"Enfermeiro sanitarista\",\n\t\"223565\": \"Enfermeiro da estratégia de saúde da família\",\n\t\"223570\": \"Perfusionista\",\n\t\"223575\": \"Obstetriz\",\n\t\"223580\": \"Enfermeiro estomaterapeuta\",\n\t\"223585\": \"Enfermeiro forense\",\n\t\"223605\": \"Fisioterapeuta geral\",\n\t\"223625\": \"Fisioterapeuta respiratória\",\n\t\"223630\": \"Fisioterapeuta neurofuncional\",\n\t\"223635\": \"Fisioterapeuta traumato-ortopédica funcional\",\n\t\"223640\": \"Fisioterapeuta osteopata\",\n\t\"223645\": \"Fisioterapeuta quiropraxista\",\n\t\"223650\": \"Fisioterapeuta acupunturista\",\n\t\"223655\": \"Fisioterapeuta esportivo\",\n\t\"223660\": \"Fisioterapeuta  do trabalho\",\n\t\"223705\": \"Dietista\",\n\t\"223710\": \"Nutricionista\",\n\t\"223810\": \"Fonoaudiólogo geral\",\n\t\"223815\": \"Fonoaudiólogo educacional\",\n\t\"223820\": \"Fonoaudiólogo em audiologia\",\n\t\"223825\": \"Fonoaudiólogo em disfagia\",\n\t\"223830\": \"Fonoaudiólogo em linguagem\",\n\t\"223835\": \"Fonoaudiólogo em motricidade orofacial\",\n\t\"223840\": \"Fonoaudiólogo em saúde coletiva\",\n\t\"223845\": \"Fonoaudiólogo em voz\",\n\t\"223905\": \"Terapeuta ocupacional\",\n\t\"223910\": \"Ortoptista\",\n\t\"223915\": \"Psicomotricista\",\n\t\"224105\": \"Avaliador físico\",\n\t\"224110\": \"Ludomotricista\",\n\t\"224115\": \"Preparador de atleta\",\n\t\"224120\": \"Preparador físico\",\n\t\"224125\": \"Técnico de desporto individual e coletivo (exceto futebol)\",\n\t\"224130\": \"Técnico de laboratório e fiscalização desportiva\",\n\t\"224135\": \"Treinador profissional de futebol\",\n\t\"224140\": \"Profissional de educação física na saúde\",\n\t\"225103\": \"Médico infectologista\",\n\t\"225105\": \"Médico acupunturista\",\n\t\"225106\": \"Médico legista\",\n\t\"225109\": \"Médico nefrologista\",\n\t\"225110\": \"Médico alergista e imunologista\",\n\t\"225112\": \"Médico neurologista\",\n\t\"225115\": \"Médico angiologista\",\n\t\"225118\": \"Médico nutrologista\",\n\t\"225120\": \"Médico cardiologista\",\n\t\"225121\": \"Médico oncologista clínico\",\n\t\"225122\": \"Médico cancerologista pediátrico\",\n\t\"225124\": \"Médico pediatra\",\n\t\"225125\": \"Médico clínico\",\n\t\"225127\": \"Médico pneumologista\",\n\t\"225130\": \"Médico de família e comunidade\",\n\t\"225133\": \"Médico psiquiatra\",\n\t\"225135\": \"Médico dermatologista\",\n\t\"225136\": \"Médico reumatologista\",\n\t\"225139\": \"Médico sanitarista\",\n\t\"225140\": \"Médico do trabalho\",\n\t\"225142\": \"Médico da estratégia de saúde da família\",\n\t\"225145\": \"Médico em medicina de tráfego\",\n\t\"225148\": \"Médico anatomopatologista\",\n\t\"225150\": \"Médico em medicina intensiva\",\n\t\"225151\": \"Médico anestesiologista\",\n\t\"225154\": \"Médico antroposófico\",\n\t\"225155\": \"Médico endocrinologista e metabologista\",\n\t\"225160\": \"Médico fisiatra\",\n\t\"225165\": \"Médico gastroenterologista\",\n\t\"225170\": \"Médico generalista\",\n\t\"225175\": \"Médico geneticista\",\n\t\"225180\": \"Médico geriatra\",\n\t\"225185\": \"Médico hematologista\",\n\t\"225195\": \"Médico homeopata\",\n\t\"225203\": \"Médico em cirurgia vascular\",\n\t\"225210\": \"Médico cirurgião cardiovascular\",\n\t\"225215\": \"Médico cirurgião de cabeça e pescoço\",\n\t\"225220\": \"Médico cirurgião do aparelho digestivo\",\n\t\"225225\": \"Médico cirurgião geral\",\n\t\"225230\": \"Médico cirurgião pediátrico\",\n\t\"225235\": \"Médico cirurgião plástico\",\n\t\"225240\": \"Médico cirurgião torácico\",\n\t\"225250\": \"Médico ginecologista e obstetra\",\n\t\"225255\": \"Médico mastologista\",\n\t\"225260\": \"Médico neurocirurgião\",\n\t\"225265\": \"Médico oftalmologista\",\n\t\"225270\": \"Médico ortopedista e traumatologista\",\n\t\"225275\": \"Médico otorrinolaringologista\",\n\t\"225280\": \"Médico coloproctologista\",\n\t\"225285\": \"Médico urologista\",\n\t\"225290\": \"Médico cancerologista cirurgíco\",\n\t\"225295\": \"Médico cirurgião da mão\",\n\t\"225305\": \"Médico citopatologista\",\n\t\"225310\": \"Médico em endoscopia\",\n\t\"225315\": \"Médico em medicina nuclear\",\n\t\"225320\": \"Médico em radiologia e diagnóstico por imagem\",\n\t\"225325\": \"Médico patologista\",\n\t\"225330\": \"Médico radioterapeuta\",\n\t\"225335\": \"Médico patologista clínico / medicina laboratorial\",\n\t\"225340\": \"Médico hemoterapeuta\",\n\t\"225345\": \"Médico hiperbarista\",\n\t\"225350\": \"Médico neurofisiologista clínico\",\n\t\"225355\": \"Médico radiologista intervencionista\",\n\t\"226105\": \"Quiropraxista\",\n\t\"226110\": \"Osteopata\",\n\t\"226305\": \"Musicoterapeuta\",\n\t\"226310\": \"Arteterapeuta\",\n\t\"226315\": \"Equoterapeuta\",\n\t\"226320\": \"Naturólogo\",\n\t\"231105\": \"Professor de nível superior na educação infantil (quatro a seis anos)\",\n\t\"231110\": \"Professor de nível superior na educação infantil (zero a três anos)\",\n\t\"231205\":\n\t\t\"Professor da  educação de jovens e adultos do ensino fundamental (primeira a quarta série)\",\n\t\"231210\": \"Professor de nível superior do ensino fundamental (primeira a quarta série)\",\n\t\"231305\": \"Professor de ciências exatas e naturais do ensino fundamental\",\n\t\"231310\": \"Professor de educação artística do ensino fundamental\",\n\t\"231315\": \"Professor de educação física do ensino fundamental\",\n\t\"231320\": \"Professor de geografia do ensino fundamental\",\n\t\"231325\": \"Professor de história do ensino fundamental\",\n\t\"231330\": \"Professor de língua estrangeira moderna do ensino fundamental\",\n\t\"231335\": \"Professor de língua portuguesa do ensino fundamental\",\n\t\"231340\": \"Professor de matemática do ensino fundamental\",\n\t\"232105\": \"Professor de artes no ensino médio\",\n\t\"232110\": \"Professor de biologia no ensino médio\",\n\t\"232115\": \"Professor de disciplinas pedagógicas no ensino médio\",\n\t\"232120\": \"Professor de educação física no ensino médio\",\n\t\"232125\": \"Professor de filosofia no ensino médio\",\n\t\"232130\": \"Professor de física no ensino médio\",\n\t\"232135\": \"Professor de geografia no ensino médio\",\n\t\"232140\": \"Professor de história no ensino médio\",\n\t\"232145\": \"Professor de língua e literatura brasileira no ensino médio\",\n\t\"232150\": \"Professor de língua estrangeira moderna no ensino médio\",\n\t\"232155\": \"Professor de matemática no ensino médio\",\n\t\"232160\": \"Professor de psicologia no ensino médio\",\n\t\"232165\": \"Professor de química no ensino médio\",\n\t\"232170\": \"Professor de sociologia no ensino médio\",\n\t\"233105\": \"Professor da área de meio ambiente\",\n\t\"233110\": \"Professor de desenho técnico\",\n\t\"233115\": \"Professor de técnicas agrícolas\",\n\t\"233120\": \"Professor de técnicas comerciais e secretariais\",\n\t\"233125\": \"Professor de técnicas de enfermagem\",\n\t\"233130\": \"Professor de técnicas industriais\",\n\t\"233135\": \"Professor de tecnologia e cálculo técnico\",\n\t\"233205\": \"Instrutor de aprendizagem e treinamento agropecuário\",\n\t\"233210\": \"Instrutor de aprendizagem e treinamento industrial\",\n\t\"233215\": \"Instrutor de aprendizagem e treinamento comercial\",\n\t\"233220\": \"Professor instrutor de ensino e aprendizagem agroflorestal\",\n\t\"233225\": \"Professor instrutor de ensino e aprendizagem em serviços\",\n\t\"234105\": \"Professor de matemática aplicada (no ensino superior)\",\n\t\"234110\": \"Professor de matemática pura (no ensino superior)\",\n\t\"234115\": \"Professor de estatística (no ensino superior)\",\n\t\"234120\": \"Professor de computação (no ensino superior)\",\n\t\"234125\": \"Professor de pesquisa operacional (no ensino superior)\",\n\t\"234205\": \"Professor de física (ensino superior)\",\n\t\"234210\": \"Professor de química (ensino superior)\",\n\t\"234215\": \"Professor de astronomia (ensino superior)\",\n\t\"234305\": \"Professor de arquitetura\",\n\t\"234310\": \"Professor de engenharia\",\n\t\"234315\": \"Professor de geofísica\",\n\t\"234320\": \"Professor de geologia\",\n\t\"234405\": \"Professor de ciências biológicas do ensino superior\",\n\t\"234410\": \"Professor de educação física no ensino superior\",\n\t\"234415\": \"Professor de enfermagem do ensino superior\",\n\t\"234420\": \"Professor de farmácia e bioquímica\",\n\t\"234425\": \"Professor de fisioterapia\",\n\t\"234430\": \"Professor de fonoaudiologia\",\n\t\"234435\": \"Professor de medicina\",\n\t\"234440\": \"Professor de medicina veterinária\",\n\t\"234445\": \"Professor de nutrição\",\n\t\"234450\": \"Professor de odontologia\",\n\t\"234455\": \"Professor de terapia ocupacional\",\n\t\"234460\": \"Professor de zootecnia do ensino superior\",\n\t\"234505\": \"Professor de ensino superior na área de didática\",\n\t\"234510\": \"Professor de ensino superior na área de orientação educacional\",\n\t\"234515\": \"Professor de ensino superior na área de pesquisa educacional\",\n\t\"234520\": \"Professor de ensino superior na área de prática de ensino\",\n\t\"234604\": \"Professor de língua alemã\",\n\t\"234608\": \"Professor de língua italiana\",\n\t\"234612\": \"Professor de língua francesa\",\n\t\"234616\": \"Professor de língua inglesa\",\n\t\"234620\": \"Professor de língua espanhola\",\n\t\"234624\": \"Professor de língua portuguesa\",\n\t\"234628\": \"Professor de literatura brasileira\",\n\t\"234632\": \"Professor de literatura portuguesa\",\n\t\"234636\": \"Professor de literatura alemã\",\n\t\"234640\": \"Professor de literatura comparada\",\n\t\"234644\": \"Professor de literatura espanhola\",\n\t\"234648\": \"Professor de literatura francesa\",\n\t\"234652\": \"Professor de literatura inglesa\",\n\t\"234656\": \"Professor de literatura italiana\",\n\t\"234660\": \"Professor de literatura de línguas estrangeiras modernas\",\n\t\"234664\": \"Professor de outras línguas e literaturas\",\n\t\"234668\": \"Professor de línguas estrangeiras modernas\",\n\t\"234672\": \"Professor de lingüística e lingüística aplicada\",\n\t\"234676\": \"Professor de filologia e crítica textual\",\n\t\"234680\": \"Professor de semiótica\",\n\t\"234684\": \"Professor de teoria da literatura\",\n\t\"234689\": \"Professor de língua brasileira de sinais (libras)\",\n\t\"234705\": \"Professor de antropologia do ensino superior\",\n\t\"234710\": \"Professor de arquivologia do ensino superior\",\n\t\"234715\": \"Professor de biblioteconomia do ensino superior\",\n\t\"234720\": \"Professor de ciência política do ensino superior\",\n\t\"234725\": \"Professor de comunicação social do ensino superior\",\n\t\"234730\": \"Professor de direito do ensino superior\",\n\t\"234735\": \"Professor de filosofia do ensino superior\",\n\t\"234740\": \"Professor de geografia do ensino superior\",\n\t\"234745\": \"Professor de história do ensino superior\",\n\t\"234750\": \"Professor de jornalismo\",\n\t\"234755\": \"Professor de museologia do ensino superior\",\n\t\"234760\": \"Professor de psicologia do ensino superior\",\n\t\"234765\": \"Professor de serviço social do ensino superior\",\n\t\"234770\": \"Professor de sociologia do ensino superior\",\n\t\"234805\": \"Professor de economia\",\n\t\"234810\": \"Professor de administração\",\n\t\"234815\": \"Professor de contabilidade\",\n\t\"234905\": \"Professor de artes do espetáculo no ensino superior\",\n\t\"234910\": \"Professor de artes visuais no ensino superior (artes plásticas e multimídia)\",\n\t\"234915\": \"Professor de música no ensino superior\",\n\t\"239205\": \"Professor de alunos com deficiência auditiva e surdos\",\n\t\"239210\": \"Professor de alunos com deficiência física\",\n\t\"239215\": \"Professor de alunos com deficiência mental\",\n\t\"239220\": \"Professor de alunos com deficiência múltipla\",\n\t\"239225\": \"Professor de alunos com deficiência visual\",\n\t\"239405\": \"Coordenador pedagógico\",\n\t\"239410\": \"Orientador educacional\",\n\t\"239415\": \"Pedagogo\",\n\t\"239420\": \"Professor de técnicas e recursos audiovisuais\",\n\t\"239425\": \"Psicopedagogo\",\n\t\"239430\": \"Supervisor de ensino\",\n\t\"239435\": \"Designer educacional\",\n\t\"239440\": \"Neuropsicopedagogo clinico\",\n\t\"239445\": \"Neuropsicopedagogo institucional\",\n\t\"241005\": \"Advogado\",\n\t\"241010\": \"Advogado de empresa\",\n\t\"241015\": \"Advogado (direito civil)\",\n\t\"241020\": \"Advogado (direito público)\",\n\t\"241025\": \"Advogado (direito penal)\",\n\t\"241030\": \"Advogado (áreas especiais)\",\n\t\"241035\": \"Advogado (direito do trabalho)\",\n\t\"241040\": \"Consultor jurídico\",\n\t\"241205\": \"Advogado da união\",\n\t\"241210\": \"Procurador autárquico\",\n\t\"241215\": \"Procurador da fazenda nacional\",\n\t\"241220\": \"Procurador do estado\",\n\t\"241225\": \"Procurador do município\",\n\t\"241230\": \"Procurador federal\",\n\t\"241235\": \"Procurador fundacional\",\n\t\"241305\": \"Oficial de registro de contratos marítimos\",\n\t\"241310\": \"Oficial do registro civil de pessoas jurídicas\",\n\t\"241315\": \"Oficial do registro civil de pessoas naturais\",\n\t\"241320\": \"Oficial do registro de distribuições\",\n\t\"241325\": \"Oficial do registro de imóveis\",\n\t\"241330\": \"Oficial do registro de títulos e documentos\",\n\t\"241335\": \"Tabelião de notas\",\n\t\"241340\": \"Tabelião de protestos\",\n\t\"241405\": \"Conselheiro julgador\",\n\t\"242205\": \"Procurador da república\",\n\t\"242210\": \"Procurador de justiça\",\n\t\"242215\": \"Procurador de justiça militar\",\n\t\"242220\": \"Procurador do trabalho\",\n\t\"242225\": \"Procurador regional da república\",\n\t\"242230\": \"Procurador regional do trabalho\",\n\t\"242235\": \"Promotor de justiça\",\n\t\"242240\": \"Subprocurador de justiça militar\",\n\t\"242245\": \"Subprocurador-geral da república\",\n\t\"242250\": \"Subprocurador-geral do trabalho\",\n\t\"242305\": \"Delegado de polícia\",\n\t\"242405\": \"Defensor público\",\n\t\"242410\": \"Procurador da assistência judiciária\",\n\t\"242905\": \"Oficial de inteligência\",\n\t\"242910\": \"Oficial técnico de inteligência\",\n\t\"251105\": \"Antropólogo\",\n\t\"251110\": \"Arqueólogo\",\n\t\"251115\": \"Cientista político\",\n\t\"251120\": \"Sociólogo\",\n\t\"251205\": \"Economista\",\n\t\"251210\": \"Economista agroindustrial\",\n\t\"251215\": \"Economista financeiro\",\n\t\"251220\": \"Economista industrial\",\n\t\"251225\": \"Economista do setor público\",\n\t\"251230\": \"Economista ambiental\",\n\t\"251235\": \"Economista regional e urbano\",\n\t\"251305\": \"Geógrafo\",\n\t\"251405\": \"Filósofo\",\n\t\"251505\": \"Psicólogo educacional\",\n\t\"251510\": \"Psicólogo clínico\",\n\t\"251515\": \"Psicólogo do esporte\",\n\t\"251520\": \"Psicólogo hospitalar\",\n\t\"251525\": \"Psicólogo jurídico\",\n\t\"251530\": \"Psicólogo social\",\n\t\"251535\": \"Psicólogo do trânsito\",\n\t\"251540\": \"Psicólogo do trabalho\",\n\t\"251545\": \"Neuropsicólogo\",\n\t\"251550\": \"Psicanalista\",\n\t\"251555\": \"Psicólogo acupunturista\",\n\t\"251605\": \"Assistente social\",\n\t\"251610\": \"Economista doméstico\",\n\t\"252105\": \"Administrador\",\n\t\"252205\": \"Auditor (contadores e afins)\",\n\t\"252210\": \"Contador\",\n\t\"252215\": \"Perito contábil\",\n\t\"252305\": \"Secretária(o) executiva(o)\",\n\t\"252310\": \"Secretário  bilíngüe\",\n\t\"252315\": \"Secretária trilíngüe\",\n\t\"252320\": \"Tecnólogo em secretariado escolar\",\n\t\"252405\": \"Analista de recursos humanos\",\n\t\"252505\": \"Administrador de fundos e carteiras de investimento\",\n\t\"252510\": \"Analista de câmbio\",\n\t\"252515\": \"Analista de cobrança (instituições financeiras)\",\n\t\"252525\": \"Analista de crédito (instituições financeiras)\",\n\t\"252530\": \"Analista de crédito rural\",\n\t\"252535\": \"Analista de leasing\",\n\t\"252540\": \"Analista de produtos bancários\",\n\t\"252545\": \"Analista financeiro (instituições financeiras)\",\n\t\"252550\": \"Profissional de relações com investidores\",\n\t\"252605\": \"Gestor em segurança\",\n\t\"252705\": \"Analista de pcp (programação e controle da produção)\",\n\t\"252710\": \"Analista de planejamento de materias\",\n\t\"252715\": \"Analista de logistica\",\n\t\"252720\": \"Analista de projetos logisticos\",\n\t\"252725\": \"Analista de gestão de estoque\",\n\t\"253110\": \"Redator de publicidade\",\n\t\"253115\": \"Publicitário\",\n\t\"253120\": \"Diretor de mídia (publicidade)\",\n\t\"253125\": \"Diretor de arte (publicidade)\",\n\t\"253130\": \"Diretor de criação\",\n\t\"253135\": \"Diretor de contas (publicidade)\",\n\t\"253140\": \"Agenciador de propaganda\",\n\t\"253205\": \"Gerente de captação (fundos e investimentos institucionais)\",\n\t\"253210\": \"Gerente de clientes especiais (private)\",\n\t\"253215\": \"Gerente de contas - pessoa física e jurídica\",\n\t\"253220\": \"Gerente de grandes contas (corporate)\",\n\t\"253225\": \"Operador de negócios\",\n\t\"253305\": \"Corretor de valores, ativos financeiros, mercadorias e derivativos\",\n\t\"253405\": \"Analista de mídias sociais\",\n\t\"253410\": \"Influenciador digital\",\n\t\"254105\": \"Auditor-fiscal da receita federal\",\n\t\"254110\": \"Técnico da receita federal\",\n\t\"254205\": \"Auditor-fiscal da previdência social\",\n\t\"254305\": \"Auditor-fiscal do trabalho\",\n\t\"254310\": \"Agente de higiene e segurança\",\n\t\"254405\": \"Fiscal de tributos estadual\",\n\t\"254410\": \"Fiscal de tributos municipal\",\n\t\"254415\": \"Técnico de tributos estadual\",\n\t\"254420\": \"Técnico de tributos municipal\",\n\t\"254505\": \"Fiscal de atividades urbanas\",\n\t\"261105\": \"Arquivista pesquisador (jornalismo)\",\n\t\"261110\": \"Assessor de imprensa\",\n\t\"261115\": \"Diretor de redação\",\n\t\"261120\": \"Editor\",\n\t\"261125\": \"Jornalista\",\n\t\"261130\": \"Produtor de texto\",\n\t\"261135\": \"Repórter (exclusive rádio e televisão)\",\n\t\"261140\": \"Revisor de texto\",\n\t\"261205\": \"Bibliotecário\",\n\t\"261210\": \"Documentalista\",\n\t\"261215\": \"Analista de informações (pesquisador de informações de rede)\",\n\t\"261305\": \"Arquivista\",\n\t\"261310\": \"Museólogo\",\n\t\"261405\": \"Filólogo\",\n\t\"261410\": \"Intérprete\",\n\t\"261415\": \"Lingüista\",\n\t\"261420\": \"Tradutor\",\n\t\"261425\": \"Intérprete de língua de sinais\",\n\t\"261430\": \"Audiodescritor\",\n\t\"261505\": \"Autor-roteirista\",\n\t\"261510\": \"Crítico\",\n\t\"261515\": \"Escritor de ficção\",\n\t\"261520\": \"Escritor de não ficção\",\n\t\"261525\": \"Poeta\",\n\t\"261530\": \"Redator de textos técnicos\",\n\t\"261605\": \"Editor de jornal\",\n\t\"261610\": \"Editor de livro\",\n\t\"261615\": \"Editor de mídia eletrônica\",\n\t\"261620\": \"Editor de revista\",\n\t\"261625\": \"Editor de revista científica\",\n\t\"261705\": \"Âncora de mídias audiovisuais\",\n\t\"261710\": \"Comentarista de mídias audiovisuais\",\n\t\"261715\": \"Locutor de mídias audiovisuais\",\n\t\"261730\": \"Repórter de mídias audiovisuais\",\n\t\"261805\": \"Fotógrafo\",\n\t\"261810\": \"Fotógrafo publicitário\",\n\t\"261815\": \"Fotógrafo retratista\",\n\t\"261820\": \"Repórter fotográfico\",\n\t\"261905\": \"Continuista\",\n\t\"261910\": \"Assistente de direção (tv)\",\n\t\"262105\": \"Produtor cultural\",\n\t\"262110\": \"Produtor cinematográfico\",\n\t\"262115\": \"Produtor de rádio\",\n\t\"262120\": \"Produtor de teatro\",\n\t\"262125\": \"Produtor de televisão\",\n\t\"262130\": \"Tecnólogo em produção fonográfica\",\n\t\"262135\": \"Tecnólogo em produção audiovisual\",\n\t\"262205\": \"Diretor de cinema\",\n\t\"262210\": \"Diretor de programas de rádio\",\n\t\"262215\": \"Diretor de programas de televisão\",\n\t\"262220\": \"Diretor teatral\",\n\t\"262225\": \"Diretor de programação\",\n\t\"262230\": \"Diretor de produção\",\n\t\"262235\": \"Diretor artistíco\",\n\t\"262305\": \"Cenógrafo carnavalesco e festas populares\",\n\t\"262310\": \"Cenógrafo de cinema\",\n\t\"262315\": \"Cenógrafo de eventos\",\n\t\"262320\": \"Cenógrafo de teatro\",\n\t\"262325\": \"Cenógrafo de tv\",\n\t\"262330\": \"Diretor de arte\",\n\t\"262405\": \"Artista (artes visuais)\",\n\t\"262410\": \"Desenhista industrial gráfico (designer gráfico)\",\n\t\"262415\": \"Conservador-restaurador de bens  culturais\",\n\t\"262420\": \"Desenhista industrial de produto (designer de produto)\",\n\t\"262425\": \"Desenhista industrial de produto de moda (designer de moda)\",\n\t\"262505\": \"Ator\",\n\t\"262605\": \"Compositor\",\n\t\"262610\": \"Músico arranjador\",\n\t\"262615\": \"Músico regente\",\n\t\"262620\": \"Musicólogo\",\n\t\"262705\": \"Músico intérprete cantor\",\n\t\"262710\": \"Músico intérprete instrumentista\",\n\t\"262805\": \"Assistente de coreografia\",\n\t\"262810\": \"Bailarino (exceto danças populares)\",\n\t\"262815\": \"Coreógrafo\",\n\t\"262820\": \"Dramaturgo de dança\",\n\t\"262825\": \"Ensaiador de dança\",\n\t\"262830\": \"Professor de dança\",\n\t\"262905\": \"Decorador de interiores de nível superior\",\n\t\"263105\": \"Ministro de culto religioso\",\n\t\"263110\": \"Missionário\",\n\t\"263115\": \"Teólogo\",\n\t\"271105\": \"Chefe de cozinha\",\n\t\"271110\": \"Tecnólogo em gastronomia\",\n\t\"300105\": \"Técnico em mecatrônica - automação da manufatura\",\n\t\"300110\": \"Técnico em mecatrônica - robótica\",\n\t\"300305\": \"Técnico em eletromecânica\",\n\t\"301105\": \"Técnico de laboratório industrial\",\n\t\"301110\": \"Técnico de laboratório de análises físico-químicas (materiais de construção)\",\n\t\"301115\": \"Técnico químico de petróleo\",\n\t\"301205\": \"Técnico de apoio à bioengenharia\",\n\t\"311105\": \"Técnico químico\",\n\t\"311110\": \"Técnico de celulose e papel\",\n\t\"311115\": \"Técnico em curtimento\",\n\t\"311205\": \"Técnico em petroquímica\",\n\t\"311305\": \"Técnico em materiais, produtos cerâmicos e vidros\",\n\t\"311405\": \"Técnico em borracha\",\n\t\"311410\": \"Técnico em plástico\",\n\t\"311505\": \"Técnico de controle de meio ambiente\",\n\t\"311510\": \"Técnico de meteorologia\",\n\t\"311515\":\n\t\t\"Técnico de utilidade (produção e distribuição de vapor, gases, óleos, combustíveis, energia)\",\n\t\"311520\": \"Técnico em tratamento de efluentes\",\n\t\"311605\": \"Técnico têxtil\",\n\t\"311610\": \"Técnico têxtil (tratamentos químicos)\",\n\t\"311615\": \"Técnico têxtil de fiação\",\n\t\"311620\": \"Técnico têxtil de malharia\",\n\t\"311625\": \"Técnico têxtil de tecelagem\",\n\t\"311705\": \"Colorista de papel\",\n\t\"311710\": \"Colorista têxtil\",\n\t\"311715\": \"Preparador de tintas\",\n\t\"311720\": \"Preparador de tintas (fábrica de tecidos)\",\n\t\"311725\": \"Tingidor de couros e peles\",\n\t\"312105\": \"Técnico de obras civis\",\n\t\"312205\": \"Técnico de estradas\",\n\t\"312210\": \"Técnico de saneamento\",\n\t\"312305\": \"Técnico em agrimensura\",\n\t\"312310\": \"Técnico em geodésia e cartografia\",\n\t\"312315\": \"Técnico em hidrografia\",\n\t\"312320\": \"Topógrafo\",\n\t\"313105\": \"Eletrotécnico\",\n\t\"313110\": \"Eletrotécnico (produção de energia)\",\n\t\"313115\": \"Eletrotécnico na fabricação, montagem e instalação de máquinas e equipamentos\",\n\t\"313120\": \"Técnico de manutenção elétrica\",\n\t\"313125\": \"Técnico de manutenção elétrica de máquina\",\n\t\"313130\": \"Técnico eletricista\",\n\t\"313205\": \"Técnico de manutenção eletrônica\",\n\t\"313210\": \"Técnico de manutenção eletrônica (circuitos de máquinas com comando numérico)\",\n\t\"313215\": \"Técnico eletrônico\",\n\t\"313220\": \"Técnico em manutenção de equipamentos de informática\",\n\t\"313305\": \"Técnico de comunicação de dados\",\n\t\"313310\": \"Técnico de rede (telecomunicações)\",\n\t\"313315\": \"Técnico de telecomunicações (telefonia)\",\n\t\"313320\": \"Técnico de transmissão (telecomunicações)\",\n\t\"313405\": \"Técnico em calibração\",\n\t\"313410\": \"Técnico em instrumentação\",\n\t\"313415\": \"Encarregado de manutenção de instrumentos de controle, medição e similares\",\n\t\"313505\": \"Técnico em fotônica\",\n\t\"314105\": \"Técnico em mecânica de precisão\",\n\t\"314110\": \"Técnico mecânico\",\n\t\"314115\": \"Técnico mecânico (calefação, ventilação e refrigeração)\",\n\t\"314120\": \"Técnico mecânico (máquinas)\",\n\t\"314125\": \"Técnico mecânico (motores)\",\n\t\"314205\": \"Técnico mecânico na fabricação de ferramentas\",\n\t\"314210\": \"Técnico mecânico na manutenção de ferramentas\",\n\t\"314305\": \"Técnico em automobilística\",\n\t\"314310\": \"Técnico mecânico (aeronaves)\",\n\t\"314315\": \"Técnico mecânico (embarcações)\",\n\t\"314405\": \"Técnico de manutenção de sistemas e instrumentos\",\n\t\"314410\": \"Técnico em manutenção de máquinas\",\n\t\"314610\": \"Técnico em caldeiraria\",\n\t\"314615\": \"Técnico em estruturas metálicas\",\n\t\"314620\": \"Técnico em soldagem\",\n\t\"314625\": \"Tecnólogo em soldagem\",\n\t\"314705\": \"Técnico de acabamento em siderurgia\",\n\t\"314710\": \"Técnico de aciaria em siderurgia\",\n\t\"314715\": \"Técnico de fundição em siderurgia\",\n\t\"314720\": \"Técnico de laminação em siderurgia\",\n\t\"314725\": \"Técnico de redução na siderurgia (primeira fusão)\",\n\t\"314730\": \"Técnico de refratário em siderurgia\",\n\t\"314805\": \"Inspetor de equipamentos\",\n\t\"314810\": \"Inspetor de fabricação\",\n\t\"314815\": \"Inspetor de ensaios não destrutivos\",\n\t\"314825\": \"Inspetor de dutos\",\n\t\"314830\": \"Inspetor de controle dimensional\",\n\t\"314835\": \"Inspetor de pintura\",\n\t\"314840\": \"Inspetor de manutenção\",\n\t\"314845\": \"Inspetor de soldagem\",\n\t\"316105\": \"Técnico em geofísica\",\n\t\"316110\": \"Técnico em geologia\",\n\t\"316115\": \"Técnico em geoquímica\",\n\t\"316120\": \"Técnico em geotecnia\",\n\t\"316305\": \"Técnico de mineração\",\n\t\"316310\": \"Técnico de mineração (óleo e petróleo)\",\n\t\"316315\": \"Técnico em processamento mineral (exceto petróleo)\",\n\t\"316320\": \"Técnico em pesquisa mineral\",\n\t\"316325\": \"Técnico de produção em refino de petróleo\",\n\t\"316330\": \"Técnico em planejamento de lavra de minas\",\n\t\"316335\": \"Desincrustador (poços de petróleo)\",\n\t\"316340\": \"Cimentador (poços de petróleo)\",\n\t\"317105\": \"Desenvolvedor web (técnico)\",\n\t\"317110\": \"Desenvolvedor de sistemas de tecnologia da informação (técnico)\",\n\t\"317115\": \"Programador de máquinas - ferramenta com comando numérico\",\n\t\"317120\": \"Desenvolvedor de multimídia\",\n\t\"317205\": \"Operador de computador\",\n\t\"317210\": \"Técnico de suporte ao usuário de tecnologia da informação\",\n\t\"318005\": \"Desenhista técnico\",\n\t\"318010\": \"Desenhista copista\",\n\t\"318015\": \"Desenhista detalhista\",\n\t\"318105\": \"Desenhista técnico (arquitetura)\",\n\t\"318110\": \"Desenhista técnico (cartografia)\",\n\t\"318115\": \"Desenhista técnico (construção civil)\",\n\t\"318120\": \"Desenhista técnico (instalações hidrossanitárias)\",\n\t\"318205\": \"Desenhista técnico mecânico\",\n\t\"318210\": \"Desenhista técnico aeronáutico\",\n\t\"318215\": \"Desenhista técnico naval\",\n\t\"318305\": \"Desenhista técnico (eletricidade e eletrônica)\",\n\t\"318310\": \"Desenhista técnico (calefação, ventilação e refrigeração)\",\n\t\"318405\": \"Desenhista técnico (artes gráficas)\",\n\t\"318410\": \"Desenhista técnico (ilustrações artísticas)\",\n\t\"318415\": \"Desenhista técnico (ilustrações técnicas)\",\n\t\"318420\": \"Desenhista técnico (indústria têxtil)\",\n\t\"318425\": \"Desenhista técnico (mobiliário)\",\n\t\"318430\": \"Desenhista técnico de embalagens, maquetes e leiautes\",\n\t\"318505\": \"Desenhista projetista de arquitetura\",\n\t\"318510\": \"Desenhista projetista de construção civil\",\n\t\"318605\": \"Desenhista projetista de máquinas\",\n\t\"318610\": \"Desenhista projetista mecânico\",\n\t\"318705\": \"Desenhista projetista de eletricidade\",\n\t\"318710\": \"Desenhista projetista eletrônico\",\n\t\"318805\": \"Projetista de móveis\",\n\t\"318810\": \"Modelista de roupas\",\n\t\"318815\": \"Modelista de calçados\",\n\t\"319105\": \"Técnico em calçados e artefatos de couro\",\n\t\"319110\": \"Técnico em confecções do vestuário\",\n\t\"319205\": \"Técnico do mobiliário\",\n\t\"320105\": \"Técnico em bioterismo\",\n\t\"320110\": \"Técnico em histologia\",\n\t\"321105\": \"Técnico agrícola\",\n\t\"321110\": \"Técnico agropecuário\",\n\t\"321205\": \"Técnico em madeira\",\n\t\"321210\": \"Técnico florestal\",\n\t\"321305\": \"Técnico em piscicultura\",\n\t\"321310\": \"Técnico em carcinicultura\",\n\t\"321315\": \"Técnico em mitilicultura\",\n\t\"321320\": \"Técnico em ranicultura\",\n\t\"322105\": \"Técnico em acupuntura\",\n\t\"322110\": \"Podólogo\",\n\t\"322115\": \"Técnico em quiropraxia\",\n\t\"322120\": \"Massoterapeuta\",\n\t\"322125\": \"Terapeuta holístico\",\n\t\"322130\": \"Esteticista\",\n\t\"322135\": \"Doula\",\n\t\"322140\": \"Instrutor de pilates\",\n\t\"322205\": \"Técnico de enfermagem\",\n\t\"322210\": \"Técnico de enfermagem de terapia intensiva\",\n\t\"322215\": \"Técnico de enfermagem do trabalho\",\n\t\"322220\": \"Técnico de enfermagem psiquiátrica\",\n\t\"322225\": \"Instrumentador cirúrgico\",\n\t\"322230\": \"Auxiliar de enfermagem\",\n\t\"322235\": \"Auxiliar de enfermagem do trabalho\",\n\t\"322240\": \"Auxiliar de saúde (navegação marítima)\",\n\t\"322245\": \"Técnico de enfermagem da estratégia de saúde da família\",\n\t\"322250\": \"Auxiliar de enfermagem da estratégia de saúde da família\",\n\t\"322255\": \"Técnico em agente comunitário de saúde\",\n\t\"322305\": \"Técnico em óptica e optometria\",\n\t\"322405\": \"Técnico em saúde bucal\",\n\t\"322410\": \"Protético dentário\",\n\t\"322415\": \"Auxiliar em saúde bucal\",\n\t\"322420\": \"Auxiliar de prótese dentária\",\n\t\"322425\": \"Técnico em saúde bucal da estratégia de saúde da família\",\n\t\"322430\": \"Auxiliar em saúde bucal da estratégia de saúde da família\",\n\t\"322505\": \"Técnico de ortopedia\",\n\t\"322605\": \"Técnico de imobilização ortopédica\",\n\t\"323105\": \"Técnico em pecuária\",\n\t\"324105\": \"Técnico em métodos eletrográficos em encefalografia\",\n\t\"324110\": \"Técnico em métodos gráficos em cardiologia\",\n\t\"324115\": \"Técnico em radiologia e imagenologia\",\n\t\"324120\": \"Tecnólogo em radiologia\",\n\t\"324125\": \"Tecnólogo oftálmico\",\n\t\"324130\": \"Técnico em espirometria\",\n\t\"324135\": \"Técnico em polissonografia\",\n\t\"324140\": \"Dosimetrista clínico\",\n\t\"324205\": \"Técnico em patologia clínica\",\n\t\"324215\": \"Citotécnico\",\n\t\"324220\": \"Técnico em hemoterapia\",\n\t\"325005\": \"Enólogo\",\n\t\"325010\": \"Aromista\",\n\t\"325015\": \"Perfumista\",\n\t\"325105\": \"Auxiliar técnico em laboratório de farmácia\",\n\t\"325110\": \"Técnico em laboratório de farmácia\",\n\t\"325115\": \"Técnico em farmácia\",\n\t\"325205\": \"Técnico de alimentos\",\n\t\"325210\": \"Técnico em nutrição e dietética\",\n\t\"325305\": \"Técnico em biotecnologia\",\n\t\"325310\": \"Técnico em imunobiológicos\",\n\t\"328105\": \"Embalsamador\",\n\t\"328110\": \"Taxidermista\",\n\t\"331105\": \"Professor de nível médio na educação infantil\",\n\t\"331110\": \"Auxiliar de desenvolvimento infantil\",\n\t\"331205\": \"Professor de nível médio no ensino fundamental\",\n\t\"331305\": \"Professor de nível médio no ensino profissionalizante\",\n\t\"332105\": \"Professor leigo no ensino fundamental\",\n\t\"332205\": \"Professor prático no ensino profissionalizante\",\n\t\"333105\": \"Instrutor de auto-escola\",\n\t\"333110\": \"Instrutor de cursos livres\",\n\t\"333115\": \"Professores de cursos livres\",\n\t\"334105\": \"Inspetor de alunos de escola privada\",\n\t\"334110\": \"Inspetor de alunos de escola pública\",\n\t\"334115\": \"Monitor de transporte escolar\",\n\t\"341105\": \"Piloto comercial (exceto linhas aéreas)\",\n\t\"341110\": \"Piloto comercial de helicóptero (exceto linhas aéreas)\",\n\t\"341115\": \"Mecânico de vôo\",\n\t\"341120\": \"Piloto agrícola\",\n\t\"341205\": \"Contramestre de cabotagem\",\n\t\"341210\": \"Mestre de cabotagem\",\n\t\"341215\": \"Mestre fluvial\",\n\t\"341220\": \"Patrão de pesca de alto-mar\",\n\t\"341225\": \"Patrão de pesca na navegação interior\",\n\t\"341230\": \"Piloto fluvial\",\n\t\"341235\": \"Técnico em sinalização náutica\",\n\t\"341240\": \"Técnicos em manobras em equipamentos de convés\",\n\t\"341245\": \"Técnico em sinais navais\",\n\t\"341250\": \"Auxiliar técnico de sinalização nautica\",\n\t\"341305\": \"Condutor maquinista motorista fluvial\",\n\t\"341310\": \"Condutor de máquinas\",\n\t\"341315\": \"Eletricista de bordo\",\n\t\"341320\": \"Condutor de máquinas (bombeador)\",\n\t\"341325\": \"Condutor de máquinas (mecânico)\",\n\t\"342105\": \"Analista de transporte em comércio exterior\",\n\t\"342110\": \"Operador de transporte multimodal\",\n\t\"342115\": \"Controlador de serviços de máquinas e veículos\",\n\t\"342120\": \"Afretador\",\n\t\"342125\": \"Tecnólogo em logística de transporte\",\n\t\"342205\": \"Ajudante de despachante aduaneiro\",\n\t\"342210\": \"Despachante aduaneiro\",\n\t\"342215\": \"Analista de desembaraço aduaneiro\",\n\t\"342305\": \"Chefe de serviço de transporte rodoviário (passageiros e cargas)\",\n\t\"342310\": \"Inspetor de serviços de transportes rodoviários (passageiros e cargas)\",\n\t\"342315\": \"Supervisor de carga e descarga\",\n\t\"342405\": \"Agente de estação (ferrovia e metrô)\",\n\t\"342410\": \"Operador de centro de controle (ferrovia e metrô)\",\n\t\"342505\": \"Controlador de tráfego aéreo\",\n\t\"342510\": \"Despachante operacional de vôo\",\n\t\"342515\": \"Fiscal de aviação civil (fac)\",\n\t\"342530\": \"Inspetor de aviação civil\",\n\t\"342535\": \"Operador de atendimento aeroviário\",\n\t\"342540\": \"Supervisor da administração de aeroportos\",\n\t\"342545\": \"Supervisor de empresa aérea em aeroportos\",\n\t\"342550\": \"Agente de proteção de aviação civil\",\n\t\"342555\": \"Fiscal de pista de aeroporto\",\n\t\"342560\": \"Operador de rampa ( transporte aéreo)\",\n\t\"342605\": \"Chefe de estação portuária\",\n\t\"342610\": \"Supervisor de operações portuárias\",\n\t\"351105\": \"Técnico de contabilidade\",\n\t\"351110\": \"Chefe de contabilidade (técnico)\",\n\t\"351115\": \"Consultor contábil (técnico)\",\n\t\"351305\": \"Técnico em administração\",\n\t\"351310\": \"Técnico em administração de comércio exterior\",\n\t\"351315\": \"Agente de recrutamento e seleção\",\n\t\"351405\": \"Escrevente\",\n\t\"351410\": \"Escrivão judicial\",\n\t\"351415\": \"Escrivão extra - judicial\",\n\t\"351420\": \"Escrivão de polícia\",\n\t\"351425\": \"Oficial de justiça\",\n\t\"351430\": \"Auxiliar de serviços jurídicos\",\n\t\"351435\": \"Mediador de conflitos\",\n\t\"351440\": \"Árbitro extrajudicial\",\n\t\"351505\": \"Técnico em secretariado\",\n\t\"351510\": \"Taquígrafo\",\n\t\"351515\": \"Estenotipista\",\n\t\"351605\": \"Técnico em segurança do trabalho\",\n\t\"351610\": \"Técnico em higiene ocupacional\",\n\t\"351705\": \"Analista de seguros (técnico)\",\n\t\"351710\": \"Analista de sinistros\",\n\t\"351715\": \"Assistente comercial de seguros\",\n\t\"351720\": \"Assistente técnico de seguros\",\n\t\"351725\": \"Inspetor de risco\",\n\t\"351730\": \"Inspetor de sinistros\",\n\t\"351735\": \"Técnico de resseguros\",\n\t\"351740\": \"Técnico de seguros\",\n\t\"351805\": \"Detetive profissional\",\n\t\"351810\": \"Investigador de polícia\",\n\t\"351815\": \"Papiloscopista policial\",\n\t\"351905\": \"Agente de inteligência\",\n\t\"351910\": \"Agente técnico de inteligência\",\n\t\"352205\": \"Agente de defesa ambiental\",\n\t\"352210\": \"Agente de saúde pública\",\n\t\"352305\": \"Metrologista\",\n\t\"352310\": \"Agente fiscal de qualidade\",\n\t\"352315\": \"Agente fiscal metrológico\",\n\t\"352320\": \"Agente fiscal têxtil\",\n\t\"352405\": \"Agente de direitos autorais\",\n\t\"352410\": \"Avaliador de produtos dos meios de comunicação\",\n\t\"352420\": \"Técnico em direitos autorais\",\n\t\"353205\": \"Técnico de operações e serviços bancários - câmbio\",\n\t\"353210\": \"Técnico de operações e serviços bancários - crédito imobiliário\",\n\t\"353215\": \"Técnico de operações e serviços bancários - crédito rural\",\n\t\"353220\": \"Técnico de operações e serviços bancários - leasing\",\n\t\"353225\": \"Técnico de operações e serviços bancários - renda fixa e variável\",\n\t\"353230\": \"Tesoureiro de banco\",\n\t\"353235\": \"Chefe de serviços bancários\",\n\t\"354120\": \"Agente de vendas de serviços\",\n\t\"354125\": \"Assistente de vendas\",\n\t\"354130\": \"Promotor de vendas especializado\",\n\t\"354135\": \"Técnico de vendas\",\n\t\"354140\": \"Técnico em atendimento e vendas\",\n\t\"354145\": \"Vendedor pracista\",\n\t\"354150\": \"Propagandista de produtos famacêuticos\",\n\t\"354205\": \"Comprador\",\n\t\"354210\": \"Supervisor de compras\",\n\t\"354305\": \"Analista de exportação e importação\",\n\t\"354405\": \"Leiloeiro\",\n\t\"354410\": \"Avaliador de imóveis\",\n\t\"354415\": \"Avaliador de bens móveis\",\n\t\"354505\": \"Corretor de seguros\",\n\t\"354605\": \"Corretor de imóveis\",\n\t\"354610\": \"Corretor de grãos\",\n\t\"354705\": \"Representante comercial autônomo\",\n\t\"354805\": \"Técnico em turismo\",\n\t\"354810\": \"Operador de turismo\",\n\t\"354815\": \"Agente de viagem\",\n\t\"354820\": \"Organizador de evento\",\n\t\"354825\": \"Cerimonialista\",\n\t\"371105\": \"Auxiliar de biblioteca\",\n\t\"371110\": \"Técnico em biblioteconomia\",\n\t\"371205\": \"Colecionador de selos e moedas\",\n\t\"371210\": \"Técnico em museologia\",\n\t\"371305\": \"Técnico em programação visual\",\n\t\"371310\": \"Técnico gráfico\",\n\t\"371405\": \"Recreador de acantonamento\",\n\t\"371410\": \"Recreador\",\n\t\"372105\": \"Diretor de fotografia\",\n\t\"372110\": \"Iluminador (televisão)\",\n\t\"372115\": \"Operador de câmera de televisão\",\n\t\"372205\": \"Operador de rede de teleprocessamento\",\n\t\"372210\": \"Radiotelegrafista\",\n\t\"373105\": \"Operador de mídia audiovisual\",\n\t\"373130\": \"Técnico de sistemas audiovisuais\",\n\t\"373135\": \"Operador de controle mestre\",\n\t\"373140\": \"Coordenador de programação\",\n\t\"373145\": \"Assistente de operações audiovisuais\",\n\t\"373220\": \"Supervisor técnico operacional de sistemas de televisão e produtoras de vídeo\",\n\t\"373225\": \"Supervisor de operações (mídias audiovisuais)\",\n\t\"373230\": \"Supervisor técnico (mídias audiovisuais)\",\n\t\"374105\": \"Técnico em gravação de áudio\",\n\t\"374110\": \"Técnico em instalação de equipamentos de áudio\",\n\t\"374115\": \"Técnico em masterização de áudio\",\n\t\"374120\": \"Projetista de som\",\n\t\"374125\": \"Técnico em sonorização\",\n\t\"374130\": \"Técnico em mixagem de áudio\",\n\t\"374135\": \"Projetista de sistemas de áudio\",\n\t\"374140\": \"Microfonista\",\n\t\"374145\": \"Dj (disc jockey)\",\n\t\"374150\": \"Sonoplasta\",\n\t\"374155\": \"Analista musical\",\n\t\"374205\": \"Cenotécnico (cinema, vídeo, televisão, teatro e espetáculos)\",\n\t\"374210\": \"Maquinista de cinema e vídeo\",\n\t\"374215\": \"Maquinista de teatro e espetáculos\",\n\t\"374305\": \"Operador de projetor cinematográfico\",\n\t\"374310\": \"Operador-mantenedor de projetor cinematográfico\",\n\t\"374405\": \"Editor de mídia audiovisual\",\n\t\"374410\": \"Finalizador de filmes\",\n\t\"374415\": \"Finalizador de vídeo\",\n\t\"374420\": \"Montador de filmes\",\n\t\"374425\": \"Diretor de imagens (tv)\",\n\t\"375105\": \"Designer de interiores\",\n\t\"375110\": \"Designer de vitrines\",\n\t\"375115\": \"Visual merchandiser\",\n\t\"375120\": \"Decorador de eventos\",\n\t\"375125\": \"Produtor de moda\",\n\t\"375130\": \"Profissional de organização (personal organizer)\",\n\t\"376105\": \"Dançarino tradicional\",\n\t\"376110\": \"Dançarino popular\",\n\t\"376205\": \"Acrobata\",\n\t\"376210\": \"Artista aéreo\",\n\t\"376215\": \"Artista de circo (outros)\",\n\t\"376220\": \"Contorcionista\",\n\t\"376225\": \"Domador de animais (circense)\",\n\t\"376230\": \"Equilibrista\",\n\t\"376235\": \"Mágico\",\n\t\"376240\": \"Malabarista\",\n\t\"376245\": \"Palhaço\",\n\t\"376250\": \"Titeriteiro\",\n\t\"376255\": \"Trapezista\",\n\t\"376305\": \"Apresentador de eventos\",\n\t\"376310\": \"Apresentador de festas populares\",\n\t\"376315\": \"Apresentador de programas de rádio\",\n\t\"376320\": \"Apresentador de programas de televisão\",\n\t\"376325\": \"Apresentador de circo\",\n\t\"376330\": \"Mestre de cerimonias\",\n\t\"376405\": \"Modelo artístico\",\n\t\"376410\": \"Modelo de modas\",\n\t\"376415\": \"Modelo publicitário\",\n\t\"377105\": \"Atleta profissional (outras modalidades)\",\n\t\"377110\": \"Atleta profissional de futebol\",\n\t\"377115\": \"Atleta profissional de golfe\",\n\t\"377120\": \"Atleta profissional de luta\",\n\t\"377125\": \"Atleta profissional de tênis\",\n\t\"377130\": \"Jóquei\",\n\t\"377135\": \"Piloto de competição automobilística\",\n\t\"377140\": \"Profissional de atletismo\",\n\t\"377145\": \"Pugilista\",\n\t\"377205\": \"Árbitro desportivo\",\n\t\"377210\": \"Árbitro de atletismo\",\n\t\"377215\": \"Árbitro de basquete\",\n\t\"377220\": \"Árbitro de futebol\",\n\t\"377225\": \"Árbitro de futebol de salão\",\n\t\"377230\": \"Árbitro de judô\",\n\t\"377235\": \"Árbitro de karatê\",\n\t\"377240\": \"Árbitro de poló aquático\",\n\t\"377245\": \"Árbitro de vôlei\",\n\t\"391105\": \"Cronoanalista\",\n\t\"391110\": \"Cronometrista\",\n\t\"391115\": \"Controlador de entrada e saída\",\n\t\"391120\": \"Planejista\",\n\t\"391125\": \"Técnico de planejamento de produção\",\n\t\"391130\": \"Técnico de planejamento e programação da manutenção\",\n\t\"391135\": \"Técnico de matéria-prima e material\",\n\t\"391140\": \"Analista de manutenção (equipamentos aéreos)\",\n\t\"391145\": \"Analista de planejamento de manutenção\",\n\t\"391205\": \"Inspetor de qualidade\",\n\t\"391210\": \"Técnico de garantia da qualidade\",\n\t\"391215\": \"Operador de inspeção de qualidade\",\n\t\"391220\": \"Técnico de painel de controle\",\n\t\"391225\": \"Escolhedor de papel\",\n\t\"391230\": \"Técnico operacional de serviços de correios\",\n\t\"395105\": \"Técnico de apoio em pesquisa e desenvolvimento (exceto agropecuário e florestal)\",\n\t\"395110\": \"Técnico de apoio em pesquisa e desenvolvimento agropecuário florestal\",\n\t\"410105\": \"Supervisor administrativo\",\n\t\"410205\": \"Supervisor de almoxarifado\",\n\t\"410210\": \"Supervisor de câmbio\",\n\t\"410215\": \"Supervisor de contas a pagar\",\n\t\"410220\": \"Supervisor de controle patrimonial\",\n\t\"410225\": \"Supervisor de crédito e cobrança\",\n\t\"410230\": \"Supervisor de orçamento\",\n\t\"410235\": \"Supervisor de tesouraria\",\n\t\"410240\": \"Supervisor de logística\",\n\t\"411005\": \"Auxiliar de escritório\",\n\t\"411010\": \"Assistente administrativo\",\n\t\"411015\": \"Atendente de judiciário\",\n\t\"411020\": \"Auxiliar de judiciário\",\n\t\"411025\": \"Auxiliar de cartório\",\n\t\"411030\": \"Auxiliar de pessoal\",\n\t\"411035\": \"Auxiliar de estatística\",\n\t\"411040\": \"Auxiliar de seguros\",\n\t\"411045\": \"Auxiliar de serviços de importação e exportação\",\n\t\"411050\": \"Agente de microcrédito\",\n\t\"411055\": \"Captador de recursos\",\n\t\"412105\": \"Datilógrafo\",\n\t\"412110\": \"Digitador\",\n\t\"412115\": \"Operador de mensagens de telecomunicações (correios)\",\n\t\"412120\": \"Supervisor de digitação e operação\",\n\t\"412205\": \"Contínuo\",\n\t\"413105\": \"Analista de folha de pagamento\",\n\t\"413110\": \"Auxiliar de contabilidade\",\n\t\"413115\": \"Auxiliar de faturamento\",\n\t\"413205\": \"Atendente de agência\",\n\t\"413210\": \"Caixa de banco\",\n\t\"413215\": \"Compensador de banco\",\n\t\"413220\": \"Conferente de serviços bancários\",\n\t\"413225\": \"Escriturário de banco\",\n\t\"413230\": \"Operador de cobrança bancária\",\n\t\"414105\": \"Almoxarife\",\n\t\"414110\": \"Armazenista\",\n\t\"414115\": \"Balanceiro\",\n\t\"414120\": \"Conferente mercadoria (exceto carga e descarga)\",\n\t\"414125\": \"Estoquista\",\n\t\"414135\": \"Expedidor de mercadorias\",\n\t\"414140\": \"Auxiliar de logistica\",\n\t\"414205\": \"Apontador de mão-de-obra\",\n\t\"414210\": \"Apontador de produção\",\n\t\"414215\": \"Conferente de carga e descarga\",\n\t\"415105\": \"Arquivista de documentos\",\n\t\"415115\": \"Codificador de dados\",\n\t\"415120\": \"Fitotecário\",\n\t\"415125\": \"Kardexista\",\n\t\"415130\": \"Operador de máquina copiadora (exceto operador de gráfica rápida)\",\n\t\"415205\": \"Carteiro\",\n\t\"415210\": \"Operador de triagem e transbordo\",\n\t\"415215\": \"Entregador de publicações\",\n\t\"415305\": \"Registrador de câncer\",\n\t\"415310\": \"Analista de informação em saúde\",\n\t\"420105\": \"Supervisor de caixas e bilheteiros (exceto caixa de banco)\",\n\t\"420110\": \"Supervisor de cobrança\",\n\t\"420115\": \"Supervisor de coletadores de apostas e de jogos\",\n\t\"420120\": \"Supervisor de entrevistadores e recenseadores\",\n\t\"420125\": \"Supervisor de recepcionistas\",\n\t\"420130\": \"Supervisor de telefonistas\",\n\t\"420135\": \"Supervisor de telemarketing e atendimento\",\n\t\"421105\": \"Atendente comercial (agência postal)\",\n\t\"421110\": \"Bilheteiro de transportes coletivos\",\n\t\"421115\": \"Bilheteiro no serviço de diversões\",\n\t\"421120\": \"Emissor de passagens\",\n\t\"421125\": \"Operador de caixa\",\n\t\"421205\": \"Recebedor de apostas (loteria)\",\n\t\"421210\": \"Recebedor de apostas (turfe)\",\n\t\"421305\": \"Cobrador externo\",\n\t\"421310\": \"Cobrador interno\",\n\t\"421315\": \"Localizador (cobrador)\",\n\t\"422105\": \"Recepcionista, em geral\",\n\t\"422110\": \"Recepcionista de consultório médico ou dentário\",\n\t\"422115\": \"Recepcionista de seguro saúde\",\n\t\"422120\": \"Recepcionista de hotel\",\n\t\"422125\": \"Recepcionista de banco\",\n\t\"422130\": \"Concierge\",\n\t\"422205\": \"Telefonista\",\n\t\"422210\": \"Teleoperador\",\n\t\"422220\": \"Operador de rádio-chamada\",\n\t\"422305\": \"Operador de telemarketing ativo\",\n\t\"422310\": \"Operador de telemarketing ativo e receptivo\",\n\t\"422315\": \"Operador de telemarketing receptivo\",\n\t\"422320\": \"Operador de telemarketing técnico\",\n\t\"422330\": \"Teleatendente de emergência\",\n\t\"422335\": \"Monitor de teleatendimento\",\n\t\"423105\": \"Despachante documentalista\",\n\t\"423110\": \"Despachante de trânsito\",\n\t\"423115\": \"Vistoriador veicular\",\n\t\"424105\": \"Entrevistador censitário e de pesquisas amostrais\",\n\t\"424110\": \"Entrevistador de pesquisa de opinião e mídia\",\n\t\"424115\": \"Entrevistador de pesquisas de mercado\",\n\t\"424120\": \"Entrevistador de preços\",\n\t\"424125\": \"Escriturário  em  estatística\",\n\t\"424130\": \"Entrevistador social\",\n\t\"424205\": \"Coordenador de provas (concurso, avaliação, exame)\",\n\t\"424210\": \"Aplicador de provas (concurso, avaliação,exame)\",\n\t\"510105\": \"Supervisor de transportes\",\n\t\"510110\": \"Administrador de edifícios\",\n\t\"510115\": \"Supervisor de andar\",\n\t\"510120\": \"Chefe de portaria de hotel\",\n\t\"510130\": \"Chefe de bar\",\n\t\"510135\": \"Maître\",\n\t\"510205\": \"Supervisor de lavanderia\",\n\t\"510305\": \"Supervisor de bombeiros\",\n\t\"510310\": \"Supervisor de vigilantes\",\n\t\"511105\": \"Comissário de vôo\",\n\t\"511110\": \"Comissário de trem\",\n\t\"511115\": \"Taifeiro (exceto militares)\",\n\t\"511205\": \"Fiscal de transportes coletivos (exceto trem)\",\n\t\"511210\": \"Despachante de transportes coletivos (exceto trem)\",\n\t\"511215\": \"Cobrador de transportes coletivos (exceto trem)\",\n\t\"511220\": \"Bilheteiro (estações de metrô, ferroviárias e assemelhadas)\",\n\t\"511405\": \"Guia de turismo\",\n\t\"511505\": \"Condutor de turismo de aventura\",\n\t\"511510\": \"Condutor de turismo de pesca\",\n\t\"511515\": \"Condutor turismo náutico\",\n\t\"512105\": \"Empregado  doméstico  nos serviços gerais\",\n\t\"512110\": \"Empregado doméstico  arrumador\",\n\t\"512115\": \"Empregado doméstico  faxineiro\",\n\t\"512120\": \"Empregado doméstico diarista\",\n\t\"513105\": \"Mordomo de residência\",\n\t\"513110\": \"Mordomo de hotelaria\",\n\t\"513115\": \"Governanta de hotelaria\",\n\t\"513205\": \"Cozinheiro geral\",\n\t\"513210\": \"Cozinheiro do serviço doméstico\",\n\t\"513215\": \"Cozinheiro industrial\",\n\t\"513220\": \"Cozinheiro de hospital\",\n\t\"513225\": \"Cozinheiro de embarcações\",\n\t\"513305\": \"Camareiro de teatro\",\n\t\"513310\": \"Camareiro de televisão\",\n\t\"513315\": \"Camareiro  de hotel\",\n\t\"513320\": \"Camareiro de embarcações\",\n\t\"513325\": \"Guarda-roupeiro de cinema\",\n\t\"513405\": \"Garçom\",\n\t\"513410\": \"Sommelier\",\n\t\"513415\": \"Cumim\",\n\t\"513420\": \"Barman\",\n\t\"513425\": \"Copeiro\",\n\t\"513430\": \"Copeiro de hospital\",\n\t\"513435\": \"Atendente de lanchonete\",\n\t\"513440\": \"Barista\",\n\t\"513505\": \"Auxiliar nos serviços de alimentação\",\n\t\"513605\": \"Churrasqueiro\",\n\t\"513610\": \"Pizzaiolo\",\n\t\"513615\": \"Sushiman\",\n\t\"514105\": \"Ascensorista\",\n\t\"514110\": \"Garagista\",\n\t\"514115\": \"Sacristão\",\n\t\"514120\": \"Zelador de edifício\",\n\t\"514205\": \"Coletor de lixo domiciliar\",\n\t\"514215\": \"Varredor de rua\",\n\t\"514225\": \"Trabalhador de serviços de limpeza e conservação de áreas públicas\",\n\t\"514230\": \"Coletor de resíduos sólidos de serviços de saúde\",\n\t\"514305\": \"Limpador de vidros\",\n\t\"514310\": \"Auxiliar de manutenção predial\",\n\t\"514315\": \"Limpador de fachadas\",\n\t\"514320\": \"Faxineiro\",\n\t\"514325\": \"Trabalhador da manutenção de edificações\",\n\t\"514330\": \"Limpador de piscinas\",\n\t\"515105\": \"Agente comunitário de saúde\",\n\t\"515110\": \"Atendente de enfermagem\",\n\t\"515115\": \"Parteira leiga\",\n\t\"515120\": \"Visitador sanitário\",\n\t\"515125\": \"Agente indígena de saúde\",\n\t\"515130\": \"Agente indígena de saneamento\",\n\t\"515135\": \"Socorrista (exceto médicos e enfermeiros)\",\n\t\"515140\": \"Agente de combate às endemias\",\n\t\"515205\": \"Auxiliar de banco de sangue\",\n\t\"515210\": \"Auxiliar de farmácia de manipulação\",\n\t\"515215\": \"Auxiliar de laboratório de análises clínicas\",\n\t\"515220\": \"Auxiliar de laboratório de imunobiológicos\",\n\t\"515225\": \"Auxiliar de produção farmacêutica\",\n\t\"515305\": \"Educador social\",\n\t\"515310\": \"Agente de ação social\",\n\t\"515315\": \"Monitor de dependente químico\",\n\t\"515320\": \"Conselheiro tutelar\",\n\t\"515325\": \"Sócioeducador\",\n\t\"515330\": \"Monitor de ressocialização prisional\",\n\t\"516105\": \"Barbeiro\",\n\t\"516110\": \"Cabeleireiro\",\n\t\"516120\": \"Manicure/pedicure\",\n\t\"516125\": \"Maquiador\",\n\t\"516130\": \"Maquiador de caracterização\",\n\t\"516145\": \"Designer de unhas\",\n\t\"516150\": \"Designer de sobrancelhas\",\n\t\"516155\": \"Designer de cílios\",\n\t\"516205\": \"Babá\",\n\t\"516210\": \"Cuidador de idosos\",\n\t\"516215\": \"Mãe social\",\n\t\"516220\": \"Cuidador em saúde\",\n\t\"516305\": \"Lavadeiro, em geral\",\n\t\"516310\": \"Lavador de roupas  a maquina\",\n\t\"516315\": \"Lavador de artefatos de tapeçaria\",\n\t\"516320\": \"Limpador a seco, à máquina\",\n\t\"516325\": \"Passador de roupas em geral\",\n\t\"516330\": \"Tingidor de roupas\",\n\t\"516335\": \"Conferente-expedidor de roupas (lavanderias)\",\n\t\"516340\": \"Atendente de lavanderia\",\n\t\"516345\": \"Auxiliar de lavanderia\",\n\t\"516405\": \"Lavador de roupas\",\n\t\"516410\": \"Limpador de roupas a seco, à mão\",\n\t\"516415\": \"Passador de roupas, à mão\",\n\t\"516505\": \"Agente funerário\",\n\t\"516605\": \"Operador de forno (serviços funerários)\",\n\t\"516610\": \"Sepultador\",\n\t\"516705\": \"Astrólogo\",\n\t\"516710\": \"Numerólogo\",\n\t\"516805\": \"Esotérico\",\n\t\"516810\": \"Paranormal\",\n\t\"516905\": \"Tatuador\",\n\t\"516910\": \"Micropigmentador\",\n\t\"516915\": \"Body piercer\",\n\t\"517105\": \"Bombeiro de aeródromo\",\n\t\"517110\": \"Bombeiro civil\",\n\t\"517115\": \"Salva-vidas\",\n\t\"517120\": \"Brigadista florestal\",\n\t\"517125\": \"Chefe de brigada\",\n\t\"517130\": \"Agente de proteção e defesa civil\",\n\t\"517205\": \"Agente de polícia federal\",\n\t\"517210\": \"Policial rodoviário federal\",\n\t\"517215\": \"Guarda-civil municipal\",\n\t\"517220\": \"Agente de trânsito\",\n\t\"517225\": \"Policial legislativo\",\n\t\"517230\": \"Policial penal\",\n\t\"517235\": \"Guarda portuário\",\n\t\"517305\": \"Vigilante de proteção de aeroporto\",\n\t\"517310\": \"Agente de segurança\",\n\t\"517320\": \"Vigia florestal\",\n\t\"517325\": \"Vigia portuário\",\n\t\"517330\": \"Vigilante\",\n\t\"517405\": \"Porteiro (hotel)\",\n\t\"517410\": \"Porteiro de edifícios\",\n\t\"517415\": \"Agente de portaria\",\n\t\"517420\": \"Vigia\",\n\t\"517425\": \"Fiscal de loja\",\n\t\"519105\": \"Ciclista mensageiro\",\n\t\"519110\": \"Motofretista\",\n\t\"519115\": \"Mototaxista\",\n\t\"519205\": \"Catador de material reciclável\",\n\t\"519210\": \"Selecionador de material reciclável\",\n\t\"519215\": \"Operador de prensa de material reciclável\",\n\t\"519305\": \"Auxiliar de veterinário\",\n\t\"519310\": \"Esteticista de animais domésticos\",\n\t\"519315\": \"Banhista de animais domésticos\",\n\t\"519320\": \"Tosador de animais domésticos\",\n\t\"519805\": \"Profissional do sexo\",\n\t\"519905\": \"Cartazeiro\",\n\t\"519910\": \"Controlador de pragas\",\n\t\"519915\": \"Engraxate\",\n\t\"519920\": \"Gandula\",\n\t\"519925\": \"Guardador de veículos\",\n\t\"519930\": \"Lavador de garrafas, vidros e outros utensílios\",\n\t\"519935\": \"Lavador de veículos\",\n\t\"519940\": \"Leiturista\",\n\t\"519945\": \"Recepcionista de casas de espetáculos\",\n\t\"520105\": \"Supervisor de vendas de serviços\",\n\t\"520110\": \"Supervisor de vendas comercial\",\n\t\"521105\": \"Vendedor em comércio atacadista\",\n\t\"521110\": \"Vendedor de comércio varejista\",\n\t\"521115\": \"Promotor de vendas\",\n\t\"521120\": \"Demonstrador de mercadorias\",\n\t\"521125\": \"Repositor de mercadorias\",\n\t\"521130\": \"Atendente de farmácia - balconista\",\n\t\"521135\": \"Frentista\",\n\t\"521140\": \"Atendente de lojas e mercados\",\n\t\"523105\": \"Instalador de cortinas e persianas, portas sanfonadas e boxe\",\n\t\"523110\": \"Instalador de som e acessórios de veículos\",\n\t\"523115\": \"Chaveiro\",\n\t\"523120\": \"Aplicador de vinil autoadesivo\",\n\t\"523125\": \"Estampador de placa de identificação veicular (epiv)\",\n\t\"524105\": \"Vendedor em domicílio\",\n\t\"524205\": \"Feirante\",\n\t\"524210\": \"Jornaleiro (em banca de jornal)\",\n\t\"524215\": \"Vendedor  permissionário\",\n\t\"524305\": \"Vendedor ambulante\",\n\t\"524310\": \"Pipoqueiro ambulante\",\n\t\"524315\": \"Baiana de acarajé\",\n\t\"611005\": \"Produtor agropecuário, em geral\",\n\t\"612005\": \"Produtor agrícola polivalente\",\n\t\"612105\": \"Produtor de arroz\",\n\t\"612110\": \"Produtor de cana-de-açúcar\",\n\t\"612115\": \"Produtor de cereais de inverno\",\n\t\"612120\": \"Produtor de gramíneas forrageiras\",\n\t\"612125\": \"Produtor de milho e sorgo\",\n\t\"612205\": \"Produtor de algodão\",\n\t\"612210\": \"Produtor de curauá\",\n\t\"612215\": \"Produtor de juta\",\n\t\"612220\": \"Produtor de rami\",\n\t\"612225\": \"Produtor de sisal\",\n\t\"612305\": \"Produtor na olericultura de legumes\",\n\t\"612310\": \"Produtor na olericultura de raízes, bulbos e tubérculos\",\n\t\"612315\": \"Produtor na olericultura de talos, folhas e flores\",\n\t\"612320\": \"Produtor na olericultura de frutos e sementes\",\n\t\"612405\": \"Produtor de flores de corte\",\n\t\"612410\": \"Produtor de flores em vaso\",\n\t\"612415\": \"Produtor de forrações\",\n\t\"612420\": \"Produtor de plantas ornamentais\",\n\t\"612505\": \"Produtor de árvores frutíferas\",\n\t\"612510\": \"Produtor de espécies frutíferas rasteiras\",\n\t\"612515\": \"Produtor de espécies frutíferas trepadeiras\",\n\t\"612605\": \"Cafeicultor\",\n\t\"612610\": \"Produtor de cacau\",\n\t\"612615\": \"Produtor de erva-mate\",\n\t\"612620\": \"Produtor de fumo\",\n\t\"612625\": \"Produtor de guaraná\",\n\t\"612705\": \"Produtor da cultura de amendoim\",\n\t\"612710\": \"Produtor da cultura de canola\",\n\t\"612715\": \"Produtor da cultura de coco-da-baia\",\n\t\"612720\": \"Produtor da cultura de dendê\",\n\t\"612725\": \"Produtor da cultura de girassol\",\n\t\"612730\": \"Produtor da cultura de linho\",\n\t\"612735\": \"Produtor da cultura de mamona\",\n\t\"612740\": \"Produtor da cultura de soja\",\n\t\"612805\": \"Produtor de especiarias\",\n\t\"612810\": \"Produtor de plantas aromáticas e medicinais\",\n\t\"613005\": \"Criador em pecuária polivalente\",\n\t\"613010\": \"Criador de animais domésticos\",\n\t\"613105\": \"Criador de asininos e muares\",\n\t\"613110\": \"Criador de bovinos (corte)\",\n\t\"613115\": \"Criador de bovinos (leite)\",\n\t\"613120\": \"Criador de bubalinos (corte)\",\n\t\"613125\": \"Criador de bubalinos (leite)\",\n\t\"613130\": \"Criador de eqüínos\",\n\t\"613205\": \"Criador de caprinos\",\n\t\"613210\": \"Criador de ovinos\",\n\t\"613215\": \"Criador de suínos\",\n\t\"613305\": \"Avicultor\",\n\t\"613310\": \"Cunicultor\",\n\t\"613405\": \"Apicultor\",\n\t\"613410\": \"Criador de animais produtores de veneno\",\n\t\"613415\": \"Minhocultor\",\n\t\"613420\": \"Sericultor\",\n\t\"620105\": \"Supervisor de exploração agrícola\",\n\t\"620110\": \"Supervisor de exploração agropecuária\",\n\t\"620115\": \"Supervisor de exploração pecuária\",\n\t\"621005\": \"Trabalhador agropecuário em geral\",\n\t\"622005\": \"Caseiro (agricultura)\",\n\t\"622010\": \"Jardineiro\",\n\t\"622015\": \"Trabalhador na produção de mudas e sementes\",\n\t\"622020\": \"Trabalhador volante da agricultura\",\n\t\"622105\": \"Trabalhador da cultura de arroz\",\n\t\"622110\": \"Trabalhador da cultura de cana-de-açúcar\",\n\t\"622115\": \"Trabalhador da cultura de milho e sorgo\",\n\t\"622120\": \"Trabalhador da cultura de trigo, aveia, cevada e triticale\",\n\t\"622205\": \"Trabalhador da cultura de algodão\",\n\t\"622210\": \"Trabalhador da cultura de sisal\",\n\t\"622215\": \"Trabalhador da cultura do rami\",\n\t\"622305\": \"Trabalhador na olericultura (frutos e sementes)\",\n\t\"622310\": \"Trabalhador na olericultura (legumes)\",\n\t\"622315\": \"Trabalhador na olericultura (raízes, bulbos e tubérculos)\",\n\t\"622320\": \"Trabalhador na olericultura (talos, folhas e flores)\",\n\t\"622405\": \"Trabalhador no cultivo de flores e folhagens de corte\",\n\t\"622410\": \"Trabalhador no cultivo de flores em vaso\",\n\t\"622415\": \"Trabalhador no cultivo de forrações\",\n\t\"622420\": \"Trabalhador no cultivo de mudas\",\n\t\"622425\": \"Trabalhador no cultivo de plantas ornamentais\",\n\t\"622505\": \"Trabalhador no cultivo de árvores frutíferas\",\n\t\"622510\": \"Trabalhador no cultivo de espécies frutíferas rasteiras\",\n\t\"622515\": \"Trabalhador no cultivo de trepadeiras frutíferas\",\n\t\"622605\": \"Trabalhador da cultura de cacau\",\n\t\"622610\": \"Trabalhador da cultura de café\",\n\t\"622615\": \"Trabalhador da cultura de erva-mate\",\n\t\"622620\": \"Trabalhador da cultura de fumo\",\n\t\"622625\": \"Trabalhador da cultura de guaraná\",\n\t\"622705\": \"Trabalhador na cultura de amendoim\",\n\t\"622710\": \"Trabalhador na cultura de canola\",\n\t\"622715\": \"Trabalhador na cultura de coco-da-baía\",\n\t\"622720\": \"Trabalhador na cultura de dendê\",\n\t\"622725\": \"Trabalhador na cultura de mamona\",\n\t\"622730\": \"Trabalhador na cultura de soja\",\n\t\"622735\": \"Trabalhador na cultura do girassol\",\n\t\"622740\": \"Trabalhador na cultura do linho\",\n\t\"622805\": \"Trabalhador da cultura de especiarias\",\n\t\"622810\": \"Trabalhador da cultura de plantas aromáticas e medicinais\",\n\t\"623005\": \"Adestrador de animais\",\n\t\"623010\": \"Inseminador\",\n\t\"623015\": \"Trabalhador de pecuária polivalente\",\n\t\"623020\": \"Tratador de animais\",\n\t\"623025\": \"Casqueador de animais\",\n\t\"623030\": \"Ferrador de animais\",\n\t\"623105\": \"Trabalhador da pecuária (asininos e muares)\",\n\t\"623110\": \"Trabalhador da pecuária (bovinos corte)\",\n\t\"623115\": \"Trabalhador da pecuária (bovinos leite)\",\n\t\"623120\": \"Trabalhador da pecuária (bubalinos)\",\n\t\"623125\": \"Trabalhador da pecuária (eqüinos)\",\n\t\"623205\": \"Trabalhador da caprinocultura\",\n\t\"623210\": \"Trabalhador da ovinocultura\",\n\t\"623215\": \"Trabalhador da suinocultura\",\n\t\"623305\": \"Trabalhador da avicultura de corte\",\n\t\"623310\": \"Trabalhador da avicultura de postura\",\n\t\"623315\": \"Operador de incubadora\",\n\t\"623320\": \"Trabalhador da cunicultura\",\n\t\"623325\": \"Sexador\",\n\t\"623405\": \"Trabalhador em criatórios de animais produtores de veneno\",\n\t\"623410\": \"Trabalhador na apicultura\",\n\t\"623415\": \"Trabalhador na minhocultura\",\n\t\"623420\": \"Trabalhador na sericicultura\",\n\t\"630105\": \"Supervisor da aqüicultura\",\n\t\"630110\": \"Supervisor da área florestal\",\n\t\"631005\": \"Catador de caranguejos e siris\",\n\t\"631010\": \"Catador de mariscos\",\n\t\"631015\": \"Pescador artesanal de lagostas\",\n\t\"631020\": \"Pescador artesanal de peixes e camarões\",\n\t\"631105\": \"Pescador artesanal de água doce\",\n\t\"631205\": \"Pescador industrial\",\n\t\"631210\": \"Pescador profissional\",\n\t\"631305\": \"Criador de camarões\",\n\t\"631310\": \"Criador de jacarés\",\n\t\"631315\": \"Criador de mexilhões\",\n\t\"631320\": \"Criador de ostras\",\n\t\"631325\": \"Criador de peixes\",\n\t\"631330\": \"Criador de quelônios\",\n\t\"631335\": \"Criador de rãs\",\n\t\"631405\": \"Gelador industrial\",\n\t\"631410\": \"Gelador profissional\",\n\t\"631415\": \"Proeiro\",\n\t\"631420\": \"Redeiro (pesca)\",\n\t\"632005\": \"Guia florestal\",\n\t\"632010\": \"Raizeiro\",\n\t\"632015\": \"Viveirista florestal\",\n\t\"632105\": \"Classificador de toras\",\n\t\"632110\": \"Cubador de madeira\",\n\t\"632115\": \"Identificador florestal\",\n\t\"632120\": \"Operador de motosserra\",\n\t\"632125\": \"Trabalhador de extração florestal, em geral\",\n\t\"632205\": \"Seringueiro\",\n\t\"632210\": \"Trabalhador da exploração de espécies produtoras de gomas não elásticas\",\n\t\"632215\": \"Trabalhador da exploração de resinas\",\n\t\"632305\": \"Trabalhador da exploração de andiroba\",\n\t\"632310\": \"Trabalhador da exploração de babaçu\",\n\t\"632315\": \"Trabalhador da exploração de bacaba\",\n\t\"632320\": \"Trabalhador da exploração de buriti\",\n\t\"632325\": \"Trabalhador da exploração de carnaúba\",\n\t\"632330\": \"Trabalhador da exploração de coco-da-praia\",\n\t\"632335\": \"Trabalhador da exploração de copaíba\",\n\t\"632340\": \"Trabalhador da exploração de malva (pãina)\",\n\t\"632345\": \"Trabalhador da exploração de murumuru\",\n\t\"632350\": \"Trabalhador da exploração de oiticica\",\n\t\"632355\": \"Trabalhador da exploração de ouricuri\",\n\t\"632360\": \"Trabalhador da exploração de pequi\",\n\t\"632365\": \"Trabalhador da exploração de piaçava\",\n\t\"632370\": \"Trabalhador da exploração de tucum\",\n\t\"632405\": \"Trabalhador da exploração de açaí\",\n\t\"632410\": \"Trabalhador da exploração de castanha\",\n\t\"632415\": \"Trabalhador da exploração de pinhão\",\n\t\"632420\": \"Trabalhador da exploração de pupunha\",\n\t\"632505\":\n\t\t\"Trabalhador da exploração de árvores e arbustos produtores de substâncias aromát., Medic. E tóxicas\",\n\t\"632510\":\n\t\t\"Trabalhador da exploração de cipós produtores de substâncias aromáticas, medicinais e tóxicas\",\n\t\"632515\": \"Trabalhador da exploração de madeiras tanantes\",\n\t\"632520\":\n\t\t\"Trabalhador da exploração de raízes produtoras de substâncias aromáticas, medicinais e tóxicas\",\n\t\"632525\": \"Trabalhador da extração de substâncias aromáticas, medicinais e tóxicas, em geral\",\n\t\"632605\": \"Carvoeiro\",\n\t\"632610\": \"Carbonizador\",\n\t\"632615\": \"Ajudante de carvoaria\",\n\t\"641005\": \"Operador de colheitadeira\",\n\t\"641010\": \"Operador de máquinas de beneficiamento de produtos agrícolas\",\n\t\"641015\": \"Tratorista agrícola\",\n\t\"642005\": \"Operador de colhedor florestal\",\n\t\"642010\": \"Operador de máquinas florestais estáticas\",\n\t\"642015\": \"Operador de trator florestal\",\n\t\"643005\":\n\t\t\"Trabalhador na operação de sistema de irrigação localizada (microaspersão e gotejamento)\",\n\t\"643010\": \"Trabalhador na operação de sistema de irrigação por aspersão (pivô central)\",\n\t\"643015\": \"Trabalhador na operação de sistemas convencionais de irrigação por aspersão\",\n\t\"643020\": \"Trabalhador na operação de sistemas de irrigação e aspersão (alto propelido)\",\n\t\"643025\": \"Trabalhador na operação de sistemas de irrigação por superfície e drenagem\",\n\t\"710105\": \"Supervisor de apoio operacional na mineração\",\n\t\"710110\": \"Supervisor de extração de sal\",\n\t\"710115\": \"Supervisor de perfuração e desmonte\",\n\t\"710120\": \"Supervisor de produção na mineração\",\n\t\"710125\": \"Supervisor de transporte na mineração\",\n\t\"710205\": \"Mestre (construção civil)\",\n\t\"710210\": \"Mestre de linhas (ferrovias)\",\n\t\"710215\": \"Inspetor de terraplenagem\",\n\t\"710220\": \"Supervisor de usina de concreto\",\n\t\"710225\": \"Fiscal de pátio de usina de concreto\",\n\t\"711105\": \"Amostrador de minérios\",\n\t\"711110\": \"Canteiro\",\n\t\"711115\": \"Destroçador de pedra\",\n\t\"711120\": \"Detonador\",\n\t\"711125\": \"Escorador de minas\",\n\t\"711130\": \"Mineiro\",\n\t\"711205\": \"Operador de caminhão (minas e pedreiras)\",\n\t\"711210\": \"Operador de carregadeira\",\n\t\"711215\": \"Operador de máquina cortadora (minas e pedreiras)\",\n\t\"711220\": \"Operador de máquina de extração contínua (minas de carvão)\",\n\t\"711225\": \"Operador de máquina perfuradora (minas e pedreiras)\",\n\t\"711230\": \"Operador de máquina perfuratriz\",\n\t\"711235\": \"Operador de motoniveladora (extração de minerais sólidos)\",\n\t\"711240\": \"Operador de schutthecar\",\n\t\"711245\": \"Operador de trator (minas e pedreiras)\",\n\t\"711305\": \"Operador de sonda de percussão\",\n\t\"711310\": \"Operador de sonda rotativa\",\n\t\"711315\": \"Sondador (poços de petróleo e gás)\",\n\t\"711320\": \"Sondador de poços (exceto de petróleo e gás)\",\n\t\"711325\": \"Plataformista (petróleo)\",\n\t\"711330\": \"Torrista (petróleo)\",\n\t\"711405\": \"Garimpeiro\",\n\t\"711410\": \"Operador de salina (sal marinho)\",\n\t\"712105\": \"Moleiro de minérios\",\n\t\"712110\": \"Operador de aparelho de flotação\",\n\t\"712115\": \"Operador de aparelho de precipitação (minas de ouro ou prata)\",\n\t\"712120\": \"Operador de britador de mandíbulas\",\n\t\"712125\": \"Operador de espessador\",\n\t\"712130\": \"Operador de jig (minas)\",\n\t\"712135\": \"Operador de peneiras hidráulicas\",\n\t\"712205\": \"Cortador de pedras\",\n\t\"712210\": \"Gravador de inscrições em pedra\",\n\t\"712215\": \"Gravador de relevos em pedra\",\n\t\"712220\": \"Polidor de pedras\",\n\t\"712225\": \"Torneiro (lavra de pedra)\",\n\t\"712230\": \"Traçador de pedras\",\n\t\"715105\": \"Operador de bate-estacas\",\n\t\"715110\": \"Operador de compactadora de solos\",\n\t\"715115\": \"Operador de escavadeira\",\n\t\"715120\": \"Operador de máquina de abrir valas\",\n\t\"715125\": \"Operador de máquinas de construção civil e mineração\",\n\t\"715130\": \"Operador de motoniveladora\",\n\t\"715135\": \"Operador de pá carregadeira\",\n\t\"715140\": \"Operador de pavimentadora (asfalto, concreto e materiais similares)\",\n\t\"715145\": \"Operador de trator de lâmina\",\n\t\"715205\": \"Calceteiro\",\n\t\"715210\": \"Pedreiro\",\n\t\"715215\": \"Pedreiro (chaminés industriais)\",\n\t\"715220\": \"Pedreiro (material refratário)\",\n\t\"715225\": \"Pedreiro (mineração)\",\n\t\"715230\": \"Pedreiro de edificações\",\n\t\"715305\": \"Armador de estrutura de concreto\",\n\t\"715310\": \"Moldador de corpos de prova em usinas de concreto\",\n\t\"715315\": \"Armador de estrutura de concreto armado\",\n\t\"715405\": \"Operador de betoneira\",\n\t\"715410\": \"Operador de bomba de concreto\",\n\t\"715415\": \"Operador de central de concreto\",\n\t\"715420\": \"Operador de usina de asfalto\",\n\t\"715505\": \"Carpinteiro\",\n\t\"715510\": \"Carpinteiro (esquadrias)\",\n\t\"715515\": \"Carpinteiro (cenários)\",\n\t\"715520\": \"Carpinteiro (mineração)\",\n\t\"715525\": \"Carpinteiro de obras\",\n\t\"715530\": \"Carpinteiro (telhados)\",\n\t\"715535\": \"Carpinteiro de fôrmas para concreto\",\n\t\"715540\": \"Carpinteiro de obras civis de arte (pontes, túneis, barragens)\",\n\t\"715545\": \"Montador de andaimes (edificações)\",\n\t\"715605\": \"Eletricista de instalações (cenários)\",\n\t\"715610\": \"Eletricista de instalações (edifícios)\",\n\t\"715615\": \"Eletricista de instalações\",\n\t\"715705\": \"Aplicador de asfalto impermeabilizante (coberturas)\",\n\t\"715710\": \"Instalador de isolantes acústicos\",\n\t\"715715\": \"Instalador de isolantes térmicos (refrigeração e climatização)\",\n\t\"715720\": \"Instalador de isolantes térmicos de caldeira e tubulações\",\n\t\"715725\": \"Instalador de material isolante, a mão (edificações)\",\n\t\"715730\": \"Instalador de material isolante, à máquina (edificações)\",\n\t\"716105\": \"Acabador de superfícies de concreto\",\n\t\"716110\": \"Revestidor de superfícies de concreto\",\n\t\"716205\": \"Telhador (telhas de argila e materiais similares)\",\n\t\"716210\": \"Telhador (telhas de cimento-amianto)\",\n\t\"716215\": \"Telhador (telhas metálicas)\",\n\t\"716220\": \"Telhador (telhas plásticas)\",\n\t\"716305\": \"Vidraceiro\",\n\t\"716310\": \"Vidraceiro (edificações)\",\n\t\"716315\": \"Vidraceiro (vitrais)\",\n\t\"716405\": \"Gesseiro\",\n\t\"716505\": \"Assoalhador\",\n\t\"716510\": \"Assentador de revestimentos cerâmicos\",\n\t\"716515\": \"Pastilheiro\",\n\t\"716520\": \"Lustrador de piso\",\n\t\"716525\": \"Marmorista (construção)\",\n\t\"716530\": \"Mosaísta\",\n\t\"716535\": \"Taqueiro\",\n\t\"716540\": \"Rejuntador de revestimentos\",\n\t\"716605\": \"Calafetador\",\n\t\"716610\": \"Pintor de obras\",\n\t\"716615\": \"Revestidor de interiores (papel, material plástico e emborrachados)\",\n\t\"717005\": \"Demolidor de edificações\",\n\t\"717010\": \"Operador de martelete\",\n\t\"717015\": \"Poceiro (edificações)\",\n\t\"717020\": \"Servente de obras\",\n\t\"717025\": \"Vibradorista\",\n\t\"720105\": \"Mestre (afiador de ferramentas)\",\n\t\"720110\": \"Mestre de caldeiraria\",\n\t\"720115\": \"Mestre de ferramentaria\",\n\t\"720120\": \"Mestre de forjaria\",\n\t\"720125\": \"Mestre de fundição\",\n\t\"720130\": \"Mestre de galvanoplastia\",\n\t\"720135\": \"Mestre de pintura (tratamento de superfícies)\",\n\t\"720140\": \"Mestre de soldagem\",\n\t\"720145\": \"Mestre de trefilação de metais\",\n\t\"720150\": \"Mestre de usinagem\",\n\t\"720155\": \"Mestre serralheiro\",\n\t\"720160\": \"Supervisor de controle de tratamento térmico\",\n\t\"720205\": \"Mestre (construção naval)\",\n\t\"720210\": \"Mestre (indústria de automotores e material de transportes)\",\n\t\"720215\": \"Mestre (indústria de máquinas e outros equipamentos mecânicos)\",\n\t\"720220\": \"Mestre de construção de fornos\",\n\t\"721105\": \"Ferramenteiro\",\n\t\"721110\": \"Ferramenteiro de mandris, calibradores e outros dispositivos\",\n\t\"721115\": \"Modelador de metais (fundição)\",\n\t\"721205\": \"Operador de máquina de eletroerosão\",\n\t\"721210\": \"Operador de máquinas operatrizes\",\n\t\"721215\": \"Operador de máquinas-ferramenta convencionais\",\n\t\"721220\": \"Operador de usinagem convencional por abrasão\",\n\t\"721225\": \"Preparador de máquinas-ferramenta\",\n\t\"721305\": \"Afiador de cardas\",\n\t\"721310\": \"Afiador de cutelaria\",\n\t\"721315\": \"Afiador de ferramentas\",\n\t\"721320\": \"Afiador de serras\",\n\t\"721325\": \"Polidor de metais\",\n\t\"721405\": \"Operador de centro de usinagem com comando numérico\",\n\t\"721410\": \"Operador de fresadora com comando numérico\",\n\t\"721415\": \"Operador de mandriladora com comando numérico\",\n\t\"721420\": \"Operador de máquina eletroerosão, à fio, com comando numérico\",\n\t\"721425\": \"Operador de retificadora com comando numérico\",\n\t\"721430\": \"Operador de torno com comando numérico\",\n\t\"722105\": \"Forjador\",\n\t\"722110\": \"Forjador a martelo\",\n\t\"722115\": \"Forjador prensista\",\n\t\"722205\": \"Fundidor de metais\",\n\t\"722210\": \"Operador de lingotamento\",\n\t\"722215\": \"Operador de acabamento de peças fundidas\",\n\t\"722220\": \"Operador de máquina de fundição\",\n\t\"722230\": \"Operador de vazamento\",\n\t\"722235\": \"Preparador de panelas\",\n\t\"722305\": \"Macheiro, a mão\",\n\t\"722310\": \"Macheiro, a  máquina\",\n\t\"722315\": \"Moldador, a  mão\",\n\t\"722320\": \"Moldador, a  máquina\",\n\t\"722325\": \"Operador de equipamentos de preparação de areia\",\n\t\"722330\": \"Operador de máquina de moldar automatizada\",\n\t\"722405\": \"Cableador\",\n\t\"722410\": \"Estirador de tubos de metal sem costura\",\n\t\"722415\": \"Trefilador de metais, à máquina\",\n\t\"723105\": \"Cementador de metais\",\n\t\"723110\": \"Normalizador de metais e de compósitos\",\n\t\"723115\": \"Operador de equipamento para resfriamento\",\n\t\"723120\": \"Operador de forno de tratamento térmico de metais\",\n\t\"723125\": \"Temperador de metais e de compósitos\",\n\t\"723205\": \"Decapador\",\n\t\"723210\": \"Fosfatizador\",\n\t\"723215\": \"Galvanizador\",\n\t\"723220\": \"Metalizador a pistola\",\n\t\"723225\": \"Metalizador (banho quente)\",\n\t\"723230\": \"Operador de máquina recobridora de arame\",\n\t\"723235\": \"Operador de zincagem (processo eletrolítico)\",\n\t\"723240\": \"Oxidador\",\n\t\"723305\": \"Operador de equipamento de secagem de pintura\",\n\t\"723310\": \"Pintor a pincel e rolo (exceto obras e estruturas metálicas)\",\n\t\"723315\": \"Pintor de estruturas metálicas\",\n\t\"723320\": \"Pintor de veículos (fabricação)\",\n\t\"723325\": \"Pintor por imersão\",\n\t\"723330\": \"Pintor, a  pistola (exceto obras e estruturas metálicas)\",\n\t\"724105\": \"Assentador de canalização (edificações)\",\n\t\"724110\": \"Encanador\",\n\t\"724115\": \"Instalador de tubulações\",\n\t\"724120\": \"Instalador de tubulações (aeronaves)\",\n\t\"724125\": \"Instalador de tubulações (embarcações)\",\n\t\"724130\": \"Instalador de tubulações de gás combustível (produção e distribuição)\",\n\t\"724135\": \"Instalador de tubulações de vapor (produção e distribuição)\",\n\t\"724205\": \"Montador de estruturas metálicas\",\n\t\"724210\": \"Montador de estruturas metálicas de embarcações\",\n\t\"724215\": \"Rebitador a  martelo pneumático\",\n\t\"724220\": \"Preparador de estruturas metálicas\",\n\t\"724225\": \"Riscador de estruturas metálicas\",\n\t\"724230\": \"Rebitador, a  mão\",\n\t\"724305\": \"Brasador\",\n\t\"724310\": \"Oxicortador a mão e a  máquina\",\n\t\"724315\": \"Soldador\",\n\t\"724320\": \"Soldador a  oxigás\",\n\t\"724325\": \"Soldador elétrico\",\n\t\"724405\": \"Caldeireiro (chapas de cobre)\",\n\t\"724410\": \"Caldeireiro (chapas de ferro e aço)\",\n\t\"724415\": \"Chapeador\",\n\t\"724420\": \"Chapeador de carrocerias metálicas (fabricação)\",\n\t\"724425\": \"Chapeador naval\",\n\t\"724430\": \"Chapeador de aeronaves\",\n\t\"724435\": \"Funileiro industrial\",\n\t\"724440\": \"Serralheiro\",\n\t\"724505\": \"Operador de máquina de cilindrar chapas\",\n\t\"724510\": \"Operador de máquina de dobrar chapas\",\n\t\"724515\": \"Prensista (operador de prensa)\",\n\t\"724605\": \"Operador de laços de cabos de aço\",\n\t\"724610\": \"Trançador de cabos de aço\",\n\t\"725005\": \"Ajustador ferramenteiro\",\n\t\"725010\": \"Ajustador mecânico\",\n\t\"725015\": \"Ajustador mecânico (usinagem em bancada e em máquinas-ferramentas)\",\n\t\"725020\": \"Ajustador mecânico em bancada\",\n\t\"725025\": \"Ajustador naval (reparo e construção)\",\n\t\"725030\": \"Operador de manutenção e recarga de extintor de incêndio\",\n\t\"725105\": \"Montador de máquinas, motores e acessórios (montagem em série)\",\n\t\"725205\": \"Montador de máquinas\",\n\t\"725210\": \"Montador de máquinas gráficas\",\n\t\"725215\": \"Montador de máquinas operatrizes para madeira\",\n\t\"725220\": \"Montador de máquinas têxteis\",\n\t\"725225\": \"Montador de máquinas-ferramentas (usinagem de metais)\",\n\t\"725305\": \"Montador de equipamento de levantamento\",\n\t\"725310\": \"Montador de máquinas agrícolas\",\n\t\"725315\": \"Montador de máquinas de minas e pedreiras\",\n\t\"725320\": \"Montador de máquinas de terraplenagem\",\n\t\"725405\": \"Mecânico montador de motores de aeronaves\",\n\t\"725410\": \"Mecânico montador de motores de embarcações\",\n\t\"725415\": \"Mecânico montador de motores de explosão e diesel\",\n\t\"725420\": \"Mecânico montador de turboalimentadores\",\n\t\"725505\": \"Montador de veículos (linha de montagem)\",\n\t\"725510\": \"Operador de time de montagem\",\n\t\"725605\": \"Montador de estruturas de aeronaves\",\n\t\"725610\": \"Montador de sistemas de combustível de aeronaves\",\n\t\"725705\": \"Mecânico de refrigeração\",\n\t\"730105\": \"Supervisor de montagem e instalação eletroeletrônica\",\n\t\"731105\": \"Montador de equipamentos eletrônicos (aparelhos médicos)\",\n\t\"731110\": \"Montador de equipamentos eletrônicos (computadores e equipamentos auxiliares)\",\n\t\"731115\": \"Montador de equipamentos elétricos (instrumentos de medição)\",\n\t\"731120\": \"Montador de equipamentos elétricos (aparelhos eletrodomésticos)\",\n\t\"731125\": \"Montador de equipamentos elétricos (centrais elétricas)\",\n\t\"731130\": \"Montador de equipamentos elétricos (motores e dínamos)\",\n\t\"731135\": \"Montador de equipamentos elétricos\",\n\t\"731140\": \"Montador de equipamentos eletrônicos (instalações de sinalização)\",\n\t\"731145\": \"Montador de equipamentos eletrônicos (máquinas industriais)\",\n\t\"731150\": \"Montador de equipamentos eletrônicos\",\n\t\"731155\": \"Montador de equipamentos elétricos (elevadores e equipamentos similares)\",\n\t\"731160\": \"Montador de equipamentos elétricos (transformadores)\",\n\t\"731165\": \"Bobinador eletricista, à mão\",\n\t\"731170\": \"Bobinador eletricista, à máquina\",\n\t\"731175\": \"Operador de linha de montagem (aparelhos elétricos)\",\n\t\"731180\": \"Operador de linha de montagem (aparelhos eletrônicos)\",\n\t\"731205\": \"Montador de equipamentos eletrônicos (estação de rádio, tv e equipamentos de radar)\",\n\t\"731305\": \"Instalador-reparador de equipamentos de comutação em telefonia\",\n\t\"731310\": \"Instalador-reparador de equipamentos de energia em telefonia\",\n\t\"731315\": \"Instalador-reparador de equipamentos de transmissão em telefonia\",\n\t\"731320\": \"Instalador-reparador de linhas e aparelhos de telecomunicações\",\n\t\"731325\": \"Instalador-reparador de redes e cabos telefônicos\",\n\t\"731330\": \"Reparador de aparelhos de telecomunicações em laboratório\",\n\t\"732105\": \"Eletricista de manutenção de linhas elétricas, telefônicas e de comunicação de dados\",\n\t\"732110\": \"Emendador de cabos elétricos e telefônicos (aéreos e subterrâneos)\",\n\t\"732115\": \"Examinador de cabos, linhas elétricas e telefônicas\",\n\t\"732120\": \"Instalador de linhas elétricas de alta e baixa - tensão (rede aérea e subterrânea)\",\n\t\"732125\": \"Instalador eletricista (tração de veículos)\",\n\t\"732130\": \"Instalador-reparador de redes telefônicas e de comunicação de dados\",\n\t\"732135\": \"Ligador de linhas telefônicas\",\n\t\"732140\": \"Instalador de sistemas fotovoltaicos\",\n\t\"740105\": \"Supervisor da mecânica de precisão\",\n\t\"740110\": \"Supervisor de fabricação de instrumentos musicais\",\n\t\"741105\": \"Ajustador de instrumentos de precisão\",\n\t\"741110\": \"Montador de instrumentos de óptica\",\n\t\"741115\": \"Montador de instrumentos de precisão\",\n\t\"741120\": \"Relojoeiro (fabricação)\",\n\t\"741125\": \"Relojoeiro (reparação)\",\n\t\"742105\": \"Afinador de instrumentos musicais\",\n\t\"742110\": \"Confeccionador de acordeão\",\n\t\"742115\": \"Confeccionador de instrumentos de corda\",\n\t\"742120\": \"Confeccionador de instrumentos de percussão (pele, couro ou plástico)\",\n\t\"742125\": \"Confeccionador de instrumentos de sopro (madeira)\",\n\t\"742130\": \"Confeccionador de instrumentos de sopro (metal)\",\n\t\"742135\": \"Confeccionador de órgão\",\n\t\"742140\": \"Confeccionador de piano\",\n\t\"750105\": \"Supervisor de joalheria\",\n\t\"750205\":\n\t\t\"Supervisor da indústria de minerais não metálicos (exceto os derivados de petróleo e carvão)\",\n\t\"751005\": \"Engastador (jóias)\",\n\t\"751010\": \"Joalheiro\",\n\t\"751015\": \"Joalheiro (reparações)\",\n\t\"751020\": \"Lapidador (jóias)\",\n\t\"751105\": \"Bate-folha a  máquina\",\n\t\"751110\": \"Fundidor (joalheria e ourivesaria)\",\n\t\"751115\": \"Gravador (joalheria e ourivesaria)\",\n\t\"751120\": \"Laminador de metais preciosos a  mão\",\n\t\"751125\": \"Ourives\",\n\t\"751130\": \"Trefilador (joalheria e ourivesaria)\",\n\t\"752105\": \"Artesão modelador (vidros)\",\n\t\"752110\": \"Moldador (vidros)\",\n\t\"752115\": \"Soprador de vidro\",\n\t\"752120\": \"Transformador de tubos de vidro\",\n\t\"752205\": \"Aplicador serigráfico em vidros\",\n\t\"752210\": \"Cortador de vidro\",\n\t\"752215\": \"Gravador de vidro a  água-forte\",\n\t\"752220\": \"Gravador de vidro a  esmeril\",\n\t\"752225\": \"Gravador de vidro a  jato de areia\",\n\t\"752230\": \"Lapidador de vidros e cristais\",\n\t\"752235\": \"Surfassagista\",\n\t\"752305\": \"Ceramista\",\n\t\"752310\": \"Ceramista (torno de pedal e motor)\",\n\t\"752315\": \"Ceramista (torno semi-automático)\",\n\t\"752320\": \"Ceramista modelador\",\n\t\"752325\": \"Ceramista moldador\",\n\t\"752330\": \"Ceramista prensador\",\n\t\"752405\": \"Decorador de cerâmica\",\n\t\"752410\": \"Decorador de vidro\",\n\t\"752415\": \"Decorador de vidro à pincel\",\n\t\"752420\": \"Operador de esmaltadeira\",\n\t\"752425\": \"Operador de espelhamento\",\n\t\"752430\": \"Pintor de cerâmica, a  pincel\",\n\t\"760105\": \"Contramestre de acabamento (indústria têxtil)\",\n\t\"760110\": \"Contramestre de fiação (indústria têxtil)\",\n\t\"760115\": \"Contramestre de malharia (indústria têxtil)\",\n\t\"760120\": \"Contramestre de tecelagem (indústria têxtil)\",\n\t\"760125\": \"Mestre (indústria têxtil e de confecções)\",\n\t\"760205\": \"Supervisor de curtimento\",\n\t\"760305\": \"Encarregado de corte na confecção do vestuário\",\n\t\"760310\": \"Encarregado de costura na confecção do vestuário\",\n\t\"760405\": \"Supervisor  (indústria de calçados e artefatos de couro)\",\n\t\"760505\": \"Supervisor da confecção de artefatos de tecidos, couros e afins\",\n\t\"760605\": \"Supervisor das artes gráficas  (indústria editorial e gráfica)\",\n\t\"761005\": \"Operador polivalente da indústria têxtil\",\n\t\"761105\": \"Classificador de fibras têxteis\",\n\t\"761110\": \"Lavador de lã\",\n\t\"761205\": \"Operador de abertura (fiação)\",\n\t\"761210\": \"Operador de binadeira\",\n\t\"761215\": \"Operador de bobinadeira\",\n\t\"761220\": \"Operador de cardas\",\n\t\"761225\": \"Operador de conicaleira\",\n\t\"761230\": \"Operador de filatório\",\n\t\"761235\": \"Operador de laminadeira e reunideira\",\n\t\"761240\": \"Operador de maçaroqueira\",\n\t\"761245\": \"Operador de open-end\",\n\t\"761250\": \"Operador de passador (fiação)\",\n\t\"761255\": \"Operador de penteadeira\",\n\t\"761260\": \"Operador de retorcedeira\",\n\t\"761303\": \"Tecelão (redes)\",\n\t\"761306\": \"Tecelão (rendas e bordados)\",\n\t\"761309\": \"Tecelão (tear automático)\",\n\t\"761312\": \"Tecelão (tear jacquard)\",\n\t\"761315\": \"Tecelão (tear mecânico de maquineta)\",\n\t\"761318\": \"Tecelão (tear mecânico de xadrez)\",\n\t\"761321\": \"Tecelão (tear mecânico liso)\",\n\t\"761324\": \"Tecelão (tear mecânico, exceto jacquard)\",\n\t\"761327\": \"Tecelão de malhas, a  máquina\",\n\t\"761330\": \"Tecelão de malhas (máquina circular)\",\n\t\"761333\": \"Tecelão de malhas (máquina retilínea)\",\n\t\"761336\": \"Tecelão de meias, a  máquina\",\n\t\"761339\": \"Tecelão de meias (máquina circular)\",\n\t\"761342\": \"Tecelão de meias (máquina retilínea)\",\n\t\"761345\": \"Tecelão de tapetes, a  máquina\",\n\t\"761348\": \"Operador de engomadeira de urdume\",\n\t\"761351\": \"Operador de espuladeira\",\n\t\"761354\": \"Operador de máquina de cordoalha\",\n\t\"761357\": \"Operador de urdideira\",\n\t\"761360\": \"Passamaneiro a  máquina\",\n\t\"761363\": \"Remetedor de fios\",\n\t\"761366\": \"Picotador de cartões jacquard\",\n\t\"761405\": \"Alvejador (tecidos)\",\n\t\"761410\": \"Estampador de tecido\",\n\t\"761415\": \"Operador de calandras (tecidos)\",\n\t\"761420\": \"Operador de chamuscadeira de tecidos\",\n\t\"761425\": \"Operador de impermeabilizador de tecidos\",\n\t\"761430\": \"Operador de máquina de lavar fios e tecidos\",\n\t\"761435\": \"Operador de rameuse\",\n\t\"761805\": \"Inspetor de estamparia (produção têxtil)\",\n\t\"761810\": \"Revisor de fios (produção têxtil)\",\n\t\"761815\": \"Revisor de tecidos acabados\",\n\t\"761820\": \"Revisor de tecidos crus\",\n\t\"762005\": \"Trabalhador polivalente do curtimento de couros e peles\",\n\t\"762105\": \"Classificador de peles\",\n\t\"762110\": \"Descarnador de couros e peles, à maquina\",\n\t\"762115\": \"Estirador de couros e peles (preparação)\",\n\t\"762120\": \"Fuloneiro\",\n\t\"762125\": \"Rachador de couros e peles\",\n\t\"762205\": \"Curtidor (couros e peles)\",\n\t\"762210\": \"Classificador de couros\",\n\t\"762215\": \"Enxugador de couros\",\n\t\"762220\": \"Rebaixador de couros\",\n\t\"762305\": \"Estirador de couros e peles (acabamento)\",\n\t\"762310\": \"Fuloneiro no acabamento de couros e peles\",\n\t\"762315\": \"Lixador de couros e peles\",\n\t\"762320\": \"Matizador de couros e peles\",\n\t\"762325\": \"Operador de máquinas do acabamento de couros e peles\",\n\t\"762330\": \"Prensador de couros e peles\",\n\t\"762335\": \"Palecionador de couros e peles\",\n\t\"762340\": \"Preparador de couros curtidos\",\n\t\"762345\": \"Vaqueador de couros e peles\",\n\t\"763005\": \"Alfaiate\",\n\t\"763010\": \"Costureira de peças sob encomenda\",\n\t\"763015\": \"Costureira de reparação de roupas\",\n\t\"763020\": \"Costureiro de roupa de couro e pele\",\n\t\"763105\": \"Auxiliar de corte (preparação da confecção de roupas)\",\n\t\"763110\": \"Cortador de roupas\",\n\t\"763115\": \"Enfestador de roupas\",\n\t\"763120\": \"Riscador de roupas\",\n\t\"763125\": \"Ajudante de confecção\",\n\t\"763205\": \"Costureiro de roupas de couro e pele, a  máquina na  confecção em série\",\n\t\"763210\": \"Costureiro na confecção em série\",\n\t\"763215\": \"Costureiro, a  máquina  na confecção em série\",\n\t\"763305\": \"Arrematadeira\",\n\t\"763310\": \"Bordador, à máquina\",\n\t\"763315\": \"Marcador de peças confeccionadas para bordar\",\n\t\"763320\": \"Operador de máquina de costura de acabamento\",\n\t\"763325\": \"Passadeira de peças confeccionadas\",\n\t\"764005\": \"Trabalhador polivalente da confecção de calçados\",\n\t\"764105\": \"Cortador de calçados, a  máquina (exceto solas e palmilhas)\",\n\t\"764110\": \"Cortador de solas e palmilhas, a  máquina\",\n\t\"764115\": \"Preparador de calçados\",\n\t\"764120\": \"Preparador de solas e palmilhas\",\n\t\"764205\": \"Costurador de calçados, a  máquina\",\n\t\"764210\": \"Montador de calçados\",\n\t\"764305\": \"Acabador de calçados\",\n\t\"765005\": \"Confeccionador de artefatos de couro (exceto sapatos)\",\n\t\"765010\": \"Chapeleiro de senhoras\",\n\t\"765015\": \"Boneleiro\",\n\t\"765105\": \"Cortador de artefatos de couro (exceto roupas e calçados)\",\n\t\"765110\": \"Cortador de tapeçaria\",\n\t\"765205\": \"Colchoeiro (confecção de colchões)\",\n\t\"765215\": \"Confeccionador de brinquedos de pano\",\n\t\"765225\": \"Confeccionador de velas náuticas, barracas e toldos\",\n\t\"765230\": \"Estofador de aviões\",\n\t\"765235\": \"Estofador de móveis\",\n\t\"765240\": \"Tapeceiro de autos\",\n\t\"765310\": \"Costurador de artefatos de couro, a  máquina (exceto roupas e calçados)\",\n\t\"765315\": \"Montador de artefatos de couro (exceto roupas e calçados)\",\n\t\"765405\": \"Trabalhador do acabamento de artefatos de tecidos e couros\",\n\t\"766105\": \"Copiador de chapa\",\n\t\"766115\": \"Gravador de matriz para flexografia (clicherista)\",\n\t\"766120\": \"Editor de texto e imagem\",\n\t\"766125\": \"Montador de fotolito (analógico e digital)\",\n\t\"766130\": \"Gravador de matriz para rotogravura (eletromecânico e químico)\",\n\t\"766135\": \"Gravador de matriz calcográfica\",\n\t\"766140\": \"Gravador de matriz serigráfica\",\n\t\"766145\": \"Operador de sistemas de prova (analógico e digital)\",\n\t\"766150\": \"Operador de processo de tratamento de imagem\",\n\t\"766155\": \"Programador visual gráfico\",\n\t\"766205\": \"Impressor (serigrafia)\",\n\t\"766210\": \"Impressor calcográfico\",\n\t\"766215\": \"Impressor de ofsete (plano e rotativo)\",\n\t\"766220\": \"Impressor de rotativa\",\n\t\"766225\": \"Impressor de rotogravura\",\n\t\"766230\": \"Impressor digital\",\n\t\"766235\": \"Impressor flexográfico\",\n\t\"766240\": \"Impressor letterset\",\n\t\"766245\": \"Impressor tampográfico\",\n\t\"766250\": \"Impressor tipográfico\",\n\t\"766305\": \"Acabador de embalagens (flexíveis e cartotécnicas)\",\n\t\"766310\": \"Impressor de corte e vinco\",\n\t\"766315\": \"Operador de acabamento (indústria gráfica)\",\n\t\"766320\": \"Operador de guilhotina (corte de papel)\",\n\t\"766325\": \"Preparador de matrizes de corte e vinco\",\n\t\"766405\": \"Laboratorista fotográfico\",\n\t\"766410\": \"Revelador de filmes fotográficos, em preto e branco\",\n\t\"766415\": \"Revelador de filmes fotográficos, em cores\",\n\t\"766420\": \"Auxiliar de radiologia (revelação fotográfica)\",\n\t\"768105\": \"Tecelão (tear manual)\",\n\t\"768110\": \"Tecelão de tapetes, a  mão\",\n\t\"768115\": \"Tricoteiro, à mão\",\n\t\"768120\": \"Redeiro\",\n\t\"768125\": \"Chapeleiro (chapéus de palha)\",\n\t\"768130\": \"Crocheteiro, a  mão\",\n\t\"768205\": \"Bordador, a  mão\",\n\t\"768210\": \"Cerzidor\",\n\t\"768305\": \"Artífice do couro\",\n\t\"768310\": \"Cortador de calçados, a  mão (exceto solas)\",\n\t\"768315\": \"Costurador de artefatos de couro, a  mão (exceto roupas e calçados)\",\n\t\"768320\": \"Sapateiro (calçados sob medida)\",\n\t\"768325\": \"Seleiro\",\n\t\"768605\": \"Tipógrafo\",\n\t\"768610\": \"Linotipista\",\n\t\"768615\": \"Monotipista\",\n\t\"768620\": \"Paginador\",\n\t\"768625\": \"Pintor de letreiros\",\n\t\"768630\": \"Confeccionador de carimbos de borracha\",\n\t\"768705\": \"Gravador, à mão (encadernação)\",\n\t\"768710\": \"Restaurador de livros\",\n\t\"770105\": \"Mestre (indústria de madeira e mobiliário)\",\n\t\"770110\": \"Mestre carpinteiro\",\n\t\"771105\": \"Marceneiro\",\n\t\"771110\": \"Modelador de madeira\",\n\t\"771115\": \"Maquetista na marcenaria\",\n\t\"771120\": \"Tanoeiro\",\n\t\"772105\": \"Classificador de madeira\",\n\t\"772110\": \"Impregnador de madeira\",\n\t\"772115\": \"Secador de madeira\",\n\t\"773105\": \"Cortador de laminados de madeira\",\n\t\"773110\": \"Operador de serras no desdobramento de madeira\",\n\t\"773115\": \"Serrador de bordas no desdobramento de madeira\",\n\t\"773120\": \"Serrador de madeira\",\n\t\"773125\": \"Serrador de madeira (serra circular múltipla)\",\n\t\"773130\": \"Serrador de madeira (serra de fita múltipla)\",\n\t\"773205\": \"Operador de máquina intercaladora de placas (compensados)\",\n\t\"773210\": \"Prensista de aglomerados\",\n\t\"773215\": \"Prensista de compensados\",\n\t\"773220\": \"Preparador de aglomerantes\",\n\t\"773305\": \"Operador de desempenadeira na usinagem convencional de madeira\",\n\t\"773310\": \"Operador de entalhadeira (usinagem de madeira)\",\n\t\"773315\": \"Operador de fresadora (usinagem de madeira)\",\n\t\"773320\": \"Operador de lixadeira (usinagem de madeira)\",\n\t\"773325\": \"Operador de máquina de usinagem madeira, em geral\",\n\t\"773330\": \"Operador de molduradora (usinagem de madeira)\",\n\t\"773335\": \"Operador de plaina desengrossadeira\",\n\t\"773340\": \"Operador de serras (usinagem de madeira)\",\n\t\"773345\": \"Operador de torno automático (usinagem de madeira)\",\n\t\"773350\": \"Operador de tupia (usinagem de madeira)\",\n\t\"773355\": \"Torneiro na usinagem convencional de madeira\",\n\t\"773405\": \"Operador de máquina bordatriz\",\n\t\"773410\": \"Operador de máquina de cortina d´água (produção de móveis)\",\n\t\"773415\": \"Operador de máquina de usinagem de madeira (produção em série)\",\n\t\"773420\": \"Operador de prensa de alta freqüência na usinagem de madeira\",\n\t\"773505\": \"Operador de centro de usinagem de madeira (cnc)\",\n\t\"773510\": \"Operador de máquinas de usinar madeira (cnc)\",\n\t\"774105\": \"Montador de móveis e artefatos de madeira\",\n\t\"775105\": \"Entalhador  de madeira\",\n\t\"775110\": \"Folheador de móveis de madeira\",\n\t\"775115\": \"Lustrador de peças de madeira\",\n\t\"775120\": \"Marcheteiro\",\n\t\"776405\": \"Cesteiro\",\n\t\"776410\": \"Confeccionador de escovas, pincéis e produtos similares (a mão)\",\n\t\"776415\": \"Confeccionador de escovas, pincéis e produtos similares (a máquina)\",\n\t\"776420\": \"Confeccionador de móveis de vime, junco e bambu\",\n\t\"776425\": \"Esteireiro\",\n\t\"776430\": \"Vassoureiro\",\n\t\"777105\": \"Carpinteiro naval (construção de pequenas embarcações)\",\n\t\"777110\": \"Carpinteiro naval (embarcações)\",\n\t\"777115\": \"Carpinteiro naval (estaleiros)\",\n\t\"777205\": \"Carpinteiro de carretas\",\n\t\"777210\": \"Carpinteiro de carrocerias\",\n\t\"780105\": \"Supervisor de embalagem e etiquetagem\",\n\t\"781105\": \"Condutor de processos robotizados de pintura\",\n\t\"781110\": \"Condutor de processos robotizados de soldagem\",\n\t\"781305\": \"Operador de veículos subaquáticos controlados remotamente\",\n\t\"781310\": \"Operador de aeronaves não tripuladas\",\n\t\"781705\": \"Mergulhador profissional (raso e profundo)\",\n\t\"782105\": \"Operador de draga\",\n\t\"782110\": \"Operador de guindaste (fixo)\",\n\t\"782115\": \"Operador de guindaste móvel\",\n\t\"782120\": \"Operador de máquina rodoferroviária\",\n\t\"782125\": \"Operador de monta-cargas (construção civil)\",\n\t\"782130\": \"Operador de ponte rolante\",\n\t\"782135\": \"Operador de pórtico rolante\",\n\t\"782140\": \"Operador de talha elétrica\",\n\t\"782145\": \"Sinaleiro (ponte-rolante)\",\n\t\"782205\": \"Guincheiro (construção civil)\",\n\t\"782210\": \"Operador de docagem\",\n\t\"782220\": \"Operador de empilhadeira\",\n\t\"782305\": \"Motorista de carro de passeio\",\n\t\"782310\": \"Motorista de furgão ou veículo similar\",\n\t\"782315\": \"Motorista de táxi\",\n\t\"782320\": \"Condutor de ambulância\",\n\t\"782405\": \"Motorista de ônibus rodoviário\",\n\t\"782410\": \"Motorista de ônibus urbano\",\n\t\"782415\": \"Motorista de trólebus\",\n\t\"782505\": \"Caminhoneiro autônomo (rotas regionais e internacionais)\",\n\t\"782510\": \"Motorista de caminhão (rotas regionais e internacionais)\",\n\t\"782515\": \"Motorista operacional de guincho\",\n\t\"782605\": \"Operador de trem de metrô\",\n\t\"782610\": \"Maquinista de trem\",\n\t\"782615\": \"Maquinista de trem metropolitano\",\n\t\"782620\": \"Motorneiro\",\n\t\"782625\": \"Auxiliar de maquinista de trem\",\n\t\"782630\": \"Operador de teleférico (passageiros)\",\n\t\"782705\": \"Marinheiro de convés (marítimo e fluviário)\",\n\t\"782710\": \"Marinheiro de máquinas\",\n\t\"782715\": \"Moço de convés (marítimo e fluviário)\",\n\t\"782720\": \"Moço de máquinas (marítimo e fluviário)\",\n\t\"782725\": \"Marinheiro de esporte e recreio\",\n\t\"782730\": \"Marinheiro auxiliar de convés (marítimo e aquaviario)\",\n\t\"782735\": \"Marinheiro auxiliar de máquinas (marítimo e aquaviário)\",\n\t\"782805\": \"Condutor de veículos de tração animal (ruas e estradas)\",\n\t\"782810\": \"Tropeiro\",\n\t\"782815\": \"Boiadeiro\",\n\t\"782820\": \"Condutor de veículos a pedais\",\n\t\"783105\": \"Agente de pátio\",\n\t\"783110\": \"Manobrador\",\n\t\"783205\": \"Carregador (aeronaves)\",\n\t\"783210\": \"Carregador (armazém)\",\n\t\"783215\": \"Carregador (veículos de transportes terrestres)\",\n\t\"783220\": \"Estivador\",\n\t\"783225\": \"Ajudante de motorista\",\n\t\"783230\": \"Bloqueiro (trabalhador portuário)\",\n\t\"783235\": \"Trabalhador portuário de capatazia\",\n\t\"783240\": \"Amarrador e desamarrado de embarcações\",\n\t\"784105\": \"Embalador, a mão\",\n\t\"784110\": \"Embalador, a máquina\",\n\t\"784115\": \"Operador de máquina de etiquetar\",\n\t\"784120\": \"Operador de máquina de envasar líquidos\",\n\t\"784125\": \"Operador de prensa de enfardamento\",\n\t\"784205\": \"Alimentador de linha de produção\",\n\t\"791105\": \"Artesão bordador\",\n\t\"791110\": \"Artesão ceramista\",\n\t\"791115\": \"Artesão com material reciclável\",\n\t\"791120\": \"Artesão confeccionador de biojóias e ecojóias\",\n\t\"791125\": \"Artesão do couro\",\n\t\"791130\": \"Artesão escultor\",\n\t\"791135\": \"Artesão moveleiro (exceto reciclado)\",\n\t\"791140\": \"Artesão tecelão\",\n\t\"791145\": \"Artesão trançador\",\n\t\"791150\": \"Artesão crocheteiro\",\n\t\"791155\": \"Artesão tricoteiro\",\n\t\"791160\": \"Artesão rendeiro\",\n\t\"810105\": \"Mestre (indústria petroquímica e carboquímica)\",\n\t\"810110\": \"Mestre de produção química\",\n\t\"810205\": \"Mestre (indústria de borracha e plástico)\",\n\t\"810305\": \"Mestre de produção farmacêutica\",\n\t\"811005\": \"Operador de processos químicos e petroquímicos\",\n\t\"811010\": \"Operador de sala de controle de instalações químicas, petroquímicas e afins\",\n\t\"811105\": \"Moleiro (tratamentos químicos e afins)\",\n\t\"811110\": \"Operador de máquina misturadeira (tratamentos químicos e afins)\",\n\t\"811115\": \"Operador de britadeira (tratamentos químicos e afins)\",\n\t\"811120\": \"Operador de concentração\",\n\t\"811125\": \"Trabalhador da fabricação de resinas e vernizes\",\n\t\"811130\": \"Trabalhador de fabricação de tintas\",\n\t\"811205\": \"Operador de calcinação (tratamento químico e afins)\",\n\t\"811215\": \"Operador de tratamento químico de materiais radioativos\",\n\t\"811305\": \"Operador de centrifugadora (tratamentos químicos e afins)\",\n\t\"811310\": \"Operador de exploração de petróleo\",\n\t\"811315\": \"Operador de filtro de secagem (mineração)\",\n\t\"811320\": \"Operador de filtro de tambor rotativo (tratamentos químicos e afins)\",\n\t\"811325\": \"Operador de filtro-esteira (mineração)\",\n\t\"811330\": \"Operador de filtro-prensa (tratamentos químicos e afins)\",\n\t\"811335\": \"Operador de filtros de parafina (tratamentos químicos e afins)\",\n\t\"811405\": \"Destilador de madeira\",\n\t\"811410\": \"Destilador de produtos químicos (exceto petróleo)\",\n\t\"811415\": \"Operador de alambique de funcionamento contínuo (produtos químicos, exceto petróleo)\",\n\t\"811420\": \"Operador de aparelho de reação e conversão (produtos químicos, exceto petróleo)\",\n\t\"811425\": \"Operador de equipamento de destilação de álcool\",\n\t\"811430\": \"Operador de evaporador na destilação\",\n\t\"811505\": \"Operador de painel de controle (refinação de petróleo)\",\n\t\"811510\": \"Operador de transferência e estocagem - na refinação do petróleo\",\n\t\"811605\": \"Operador de britador de coque\",\n\t\"811610\": \"Operador de carro de apagamento e coque\",\n\t\"811615\": \"Operador de destilação e subprodutos de coque\",\n\t\"811620\": \"Operador de enfornamento e desenfornamento de coque\",\n\t\"811625\": \"Operador de exaustor (coqueria)\",\n\t\"811630\": \"Operador de painel de controle\",\n\t\"811635\": \"Operador de preservação e controle térmico\",\n\t\"811640\": \"Operador de reator de coque de petróleo\",\n\t\"811645\": \"Operador de refrigeração (coqueria)\",\n\t\"811650\": \"Operador de sistema de reversão (coqueria)\",\n\t\"811705\": \"Bamburista\",\n\t\"811710\": \"Calandrista de borracha\",\n\t\"811715\": \"Confeccionador de pneumáticos\",\n\t\"811725\": \"Confeccionador de velas por imersão\",\n\t\"811735\": \"Confeccionador de velas por moldagem\",\n\t\"811745\": \"Laminador de plástico\",\n\t\"811750\": \"Moldador de borracha por compressão\",\n\t\"811760\": \"Moldador de plástico por compressão\",\n\t\"811770\": \"Moldador de plástico por injeção\",\n\t\"811775\": \"Trefilador de borracha\",\n\t\"811805\": \"Operador de máquina de produtos farmacêuticos\",\n\t\"811810\": \"Drageador (medicamentos)\",\n\t\"811815\": \"Operador de máquina de fabricação de cosméticos\",\n\t\"811820\":\n\t\t\"Operador de máquina de fabricação de produtos de higiene e limpeza (sabão, sabonete, detergente, absorvente, fraldas cotonetes e outros)\",\n\t\"812105\": \"Pirotécnico\",\n\t\"812110\": \"Trabalhador da fabricação de munição e explosivos\",\n\t\"813105\": \"Cilindrista (petroquímica e afins)\",\n\t\"813110\": \"Operador de calandra (química, petroquímica e afins)\",\n\t\"813115\": \"Operador de extrusora (química, petroquímica e afins)\",\n\t\"813120\": \"Operador de processo (química, petroquímica e afins)\",\n\t\"813125\": \"Operador de produção (química, petroquímica e afins)\",\n\t\"813130\": \"Técnico de operação (química, petroquímica e afins)\",\n\t\"818105\": \"Assistente de laboratório industrial\",\n\t\"818110\": \"Auxiliar de laboratório de análises físico-químicas\",\n\t\"820105\": \"Mestre de siderurgia\",\n\t\"820110\": \"Mestre de aciaria\",\n\t\"820115\": \"Mestre de alto-forno\",\n\t\"820120\": \"Mestre de forno elétrico\",\n\t\"820125\": \"Mestre de laminação\",\n\t\"820205\": \"Supervisor de fabricação de produtos cerâmicos, porcelanatos e afins\",\n\t\"820210\": \"Supervisor de fabricação de produtos de vidro\",\n\t\"821105\": \"Operador de centro de controle ( sinterização)\",\n\t\"821110\": \"Operador de máquina de sinterizar\",\n\t\"821205\": \"Forneiro e operador (alto-forno)\",\n\t\"821210\": \"Forneiro e operador (conversor a oxigênio)\",\n\t\"821215\": \"Forneiro e operador (forno elétrico)\",\n\t\"821220\": \"Forneiro e operador (refino de metais não-ferrosos)\",\n\t\"821225\": \"Forneiro e operador de forno de redução direta\",\n\t\"821230\": \"Operador de aciaria (basculamento de convertedor)\",\n\t\"821235\": \"Operador de aciaria (dessulfuração de gusa)\",\n\t\"821240\": \"Operador de aciaria (recebimento de gusa)\",\n\t\"821245\": \"Operador de área de corrida\",\n\t\"821250\": \"Operador de desgaseificação\",\n\t\"821255\": \"Soprador de convertedor\",\n\t\"821305\": \"Operador de laminador\",\n\t\"821310\": \"Operador de laminador de barras a frio\",\n\t\"821315\": \"Operador de laminador de barras a quente\",\n\t\"821320\": \"Operador de laminador de metais não-ferrosos\",\n\t\"821325\": \"Operador de laminador de tubos\",\n\t\"821330\": \"Operador de montagem de cilindros e mancais\",\n\t\"821335\": \"Recuperador de guias e cilindros\",\n\t\"821405\": \"Encarregado de acabamento de chapas e metais  (têmpera)\",\n\t\"821410\": \"Escarfador\",\n\t\"821415\": \"Marcador de produtos (siderúrgico e metalúrgico)\",\n\t\"821420\": \"Operador de bobinadeira de tiras a quente, no acabamento de chapas e metais\",\n\t\"821425\": \"Operador de cabine de laminação (fio-máquina)\",\n\t\"821430\": \"Operador de escória e sucata\",\n\t\"821435\": \"Operador de jato abrasivo\",\n\t\"821440\": \"Operador de tesoura mecânica e máquina de corte, no acabamento de chapas e metais\",\n\t\"821445\": \"Preparador de sucata e aparas\",\n\t\"821450\": \"Rebarbador de metal\",\n\t\"822105\": \"Forneiro de cubilô\",\n\t\"822110\": \"Forneiro de forno-poço\",\n\t\"822115\": \"Forneiro de fundição (forno de redução)\",\n\t\"822120\": \"Forneiro de reaquecimento e tratamento térmico na metalurgia\",\n\t\"822125\": \"Forneiro de revérbero\",\n\t\"823105\": \"Preparador de massa (fabricação de abrasivos)\",\n\t\"823110\": \"Preparador de massa (fabricação de vidro)\",\n\t\"823115\": \"Preparador de massa de argila\",\n\t\"823120\": \"Preparador de barbotina\",\n\t\"823125\": \"Preparador de esmaltes (cerâmica)\",\n\t\"823130\": \"Preparador de aditivos\",\n\t\"823135\": \"Operador de atomizador\",\n\t\"823210\": \"Extrusor de fios ou fibras de vidro\",\n\t\"823215\": \"Forneiro na fundição de vidro\",\n\t\"823220\": \"Forneiro no recozimento de vidro\",\n\t\"823230\": \"Moldador de abrasivos na fabricação de cerâmica, vidro e porcelana\",\n\t\"823235\": \"Operador de banho metálico de vidro por flutuação\",\n\t\"823240\": \"Operador de máquina de soprar vidro\",\n\t\"823245\": \"Operador de máquina extrusora de varetas e tubos de vidro\",\n\t\"823250\": \"Operador de prensa de moldar vidro\",\n\t\"823255\": \"Temperador de vidro\",\n\t\"823265\": \"Trabalhador na fabricação de produtos abrasivos\",\n\t\"823305\": \"Classificador e empilhador de tijolos refratários\",\n\t\"823315\": \"Forneiro (materiais de construção)\",\n\t\"823320\": \"Trabalhador da elaboração de pré-fabricados (cimento amianto)\",\n\t\"823325\": \"Trabalhador da elaboração de pré-fabricados (concreto armado)\",\n\t\"823330\": \"Trabalhador da fabricação de pedras artificiais\",\n\t\"828105\": \"Oleiro (fabricação de telhas)\",\n\t\"828110\": \"Oleiro (fabricação de tijolos)\",\n\t\"830105\": \"Mestre (indústria de celulose, papel e papelão)\",\n\t\"831105\": \"Cilindreiro na preparação de pasta para fabricação de papel\",\n\t\"831110\": \"Operador de branqueador de pasta para fabricação de papel\",\n\t\"831115\": \"Operador de digestor de pasta para fabricação de papel\",\n\t\"831120\": \"Operador de lavagem e depuração de pasta para fabricação de papel\",\n\t\"831125\": \"Operador de máquina de secar celulose\",\n\t\"832105\": \"Calandrista de papel\",\n\t\"832110\": \"Operador de cortadeira de papel\",\n\t\"832115\": \"Operador de máquina de fabricar papel  (fase úmida)\",\n\t\"832120\": \"Operador de máquina de fabricar papel (fase seca)\",\n\t\"832125\": \"Operador de máquina de fabricar papel e papelão\",\n\t\"832135\": \"Operador de rebobinadeira na fabricação de papel e papelão\",\n\t\"833105\": \"Cartonageiro, a máquina\",\n\t\"833110\": \"Confeccionador de bolsas, sacos e sacolas e papel, a máquina\",\n\t\"833115\": \"Confeccionador de sacos de celofane, a máquina\",\n\t\"833120\": \"Operador de máquina de cortar e dobrar papelão\",\n\t\"833125\": \"Operador de prensa de embutir papelão\",\n\t\"833205\": \"Cartonageiro, a mão (caixas de papelão)\",\n\t\"840105\": \"Supervisor de produção da indústria alimentícia\",\n\t\"840110\": \"Supervisor da indústria de bebidas\",\n\t\"840115\": \"Supervisor da indústria de fumo\",\n\t\"840120\": \"Chefe de confeitaria\",\n\t\"841105\": \"Moleiro de cereais (exceto arroz)\",\n\t\"841110\": \"Moleiro de especiarias\",\n\t\"841115\": \"Operador de processo de moagem\",\n\t\"841205\": \"Moedor de sal\",\n\t\"841210\": \"Refinador de sal\",\n\t\"841305\": \"Operador de cristalização na refinação de açucar\",\n\t\"841310\": \"Operador de equipamentos de refinação de açúcar (processo contínuo)\",\n\t\"841315\": \"Operador de moenda na fabricação de açúcar\",\n\t\"841320\": \"Operador de tratamento de calda na refinação de açúcar\",\n\t\"841408\": \"Cozinhador (conservação de alimentos)\",\n\t\"841416\": \"Cozinhador de carnes\",\n\t\"841420\": \"Cozinhador de frutas e legumes\",\n\t\"841428\": \"Cozinhador de pescado\",\n\t\"841432\": \"Desidratador de alimentos\",\n\t\"841440\": \"Esterilizador de alimentos\",\n\t\"841444\": \"Hidrogenador de óleos e gorduras\",\n\t\"841448\": \"Lagareiro\",\n\t\"841456\": \"Operador de câmaras frias\",\n\t\"841460\": \"Operador de preparação de grãos vegetais (óleos e gorduras)\",\n\t\"841464\": \"Prensador de frutas (exceto oleaginosas)\",\n\t\"841468\": \"Preparador de rações\",\n\t\"841472\": \"Refinador de óleo e gordura\",\n\t\"841476\": \"Trabalhador de fabricação de margarina\",\n\t\"841484\": \"Trabalhador de preparação de pescados (limpeza)\",\n\t\"841505\": \"Trabalhador de tratamento do leite e fabricação de laticínios e afins\",\n\t\"841605\": \"Misturador de café\",\n\t\"841610\": \"Torrador de café\",\n\t\"841615\": \"Moedor de café\",\n\t\"841620\": \"Operador de extração de café solúvel\",\n\t\"841625\": \"Torrador de cacau\",\n\t\"841630\": \"Misturador de chá ou mate\",\n\t\"841705\": \"Alambiqueiro\",\n\t\"841710\": \"Filtrador de cerveja\",\n\t\"841715\": \"Fermentador\",\n\t\"841720\": \"Trabalhador de fabricação de vinhos\",\n\t\"841725\": \"Malteiro (germinação)\",\n\t\"841730\": \"Cozinhador de malte\",\n\t\"841735\": \"Dessecador de malte\",\n\t\"841740\": \"Vinagreiro\",\n\t\"841745\": \"Xaropeiro\",\n\t\"841805\": \"Operador de forno (fabricação de pães, biscoitos e similares)\",\n\t\"841810\": \"Operador de máquinas de fabricação de doces, salgados e massas alimentícias\",\n\t\"841815\": \"Operador de máquinas de fabricação de chocolates e achocolatados\",\n\t\"842105\": \"Preparador de melado e essência de fumo\",\n\t\"842110\": \"Processador de fumo\",\n\t\"842115\": \"Classificador de fumo\",\n\t\"842120\": \"Auxiliar de processamento de fumo\",\n\t\"842125\": \"Operador de máquina (fabricação de cigarros)\",\n\t\"842135\": \"Operador de máquina de preparação de matéria prima para produção de cigarros\",\n\t\"842205\": \"Preparador de fumo na fabricação de charutos\",\n\t\"842210\": \"Operador de máquina de fabricar charutos e cigarrilhas\",\n\t\"842215\": \"Classificador de charutos\",\n\t\"842220\": \"Cortador de charutos\",\n\t\"842225\": \"Celofanista na fabricação de charutos\",\n\t\"842230\": \"Charuteiro a mão\",\n\t\"842235\": \"Degustador de charutos\",\n\t\"848105\": \"Defumador de carnes e pescados\",\n\t\"848110\": \"Salgador de alimentos\",\n\t\"848115\": \"Salsicheiro (fabricação de lingüiça, salsicha e produtos similares)\",\n\t\"848205\": \"Pasteurizador\",\n\t\"848210\": \"Queijeiro na fabricação de laticínio\",\n\t\"848215\": \"Manteigueiro na fabricação de laticínio\",\n\t\"848305\": \"Padeiro\",\n\t\"848310\": \"Confeiteiro\",\n\t\"848315\": \"Masseiro (massas alimentícias)\",\n\t\"848325\": \"Trabalhador de fabricação de sorvete\",\n\t\"848405\": \"Degustador de café\",\n\t\"848410\": \"Degustador de chá\",\n\t\"848415\": \"Degustador de derivados de cacau\",\n\t\"848420\": \"Degustador de vinhos ou licores\",\n\t\"848425\": \"Classificador de grãos\",\n\t\"848505\": \"Abatedor\",\n\t\"848510\": \"Açougueiro\",\n\t\"848515\": \"Desossador\",\n\t\"848520\": \"Magarefe\",\n\t\"848525\": \"Retalhador de carne\",\n\t\"848605\": \"Trabalhador do beneficiamento de fumo\",\n\t\"860105\": \"Supervisor de manutenção eletromecânica (utilidades)\",\n\t\"860110\":\n\t\t\"Supervisor de operação de fluidos (distribuição, captação, tratamento de água, gases, vapor)\",\n\t\"860115\":\n\t\t\"Supervisor de operação elétrica (geração, transmissão e distribuição de energia elétrica)\",\n\t\"861105\": \"Operador de central hidrelétrica\",\n\t\"861110\": \"Operador de quadro de distribuição de energia elétrica\",\n\t\"861115\": \"Operador de central termoelétrica\",\n\t\"861120\": \"Operador de reator nuclear\",\n\t\"861205\": \"Operador de subestação\",\n\t\"862105\": \"Foguista (locomotivas a vapor)\",\n\t\"862110\": \"Maquinista de embarcações\",\n\t\"862115\": \"Operador de bateria de gás de hulha\",\n\t\"862120\": \"Operador de caldeira\",\n\t\"862130\": \"Operador de compressor de ar\",\n\t\"862140\": \"Operador de estação de bombeamento\",\n\t\"862150\": \"Operador de máquinas fixas, em geral\",\n\t\"862155\":\n\t\t\"Operador de utilidade (produção e distribuição de vapor, gás, óleo, combustível, energia, oxigênio)\",\n\t\"862160\": \"Operador de abastecimento de combustível de aeronave\",\n\t\"862205\": \"Operador de estação de captação, tratamento e distribuição de água\",\n\t\"862305\": \"Operador de estação de tratamento de água e efluentes\",\n\t\"862310\":\n\t\t\"Operador de forno de incineração no tratamento de água, efluentes e resíduos industriais\",\n\t\"862405\":\n\t\t\"Operador de instalação de extração, processamento, envasamento e distribuição de gases\",\n\t\"862505\": \"Operador de instalação de refrigeração\",\n\t\"862510\": \"Operador de refrigeração com amônia\",\n\t\"862515\": \"Operador de instalação de ar-condicionado\",\n\t\"910105\": \"Encarregado de manutenção mecânica de sistemas operacionais\",\n\t\"910110\": \"Supervisor de manutenção de aparelhos térmicos, de climatização e de refrigeração\",\n\t\"910115\":\n\t\t\"Supervisor de manutenção de bombas, motores, compressores e equipamentos de transmissão\",\n\t\"910120\": \"Supervisor de manutenção de máquinas gráficas\",\n\t\"910125\": \"Supervisor de manutenção de máquinas industriais têxteis\",\n\t\"910130\": \"Supervisor de manutenção de máquinas operatrizes e de usinagem\",\n\t\"910205\": \"Supervisor da manutenção e reparação de veículos leves\",\n\t\"910210\": \"Supervisor da manutenção e reparação de veículos pesados\",\n\t\"910905\": \"Supervisor de reparos linhas férreas\",\n\t\"910910\": \"Supervisor de manutenção de vias férreas\",\n\t\"911105\": \"Mecânico de manutenção de bomba injetora (exceto de veículos automotores)\",\n\t\"911110\": \"Mecânico de manutenção de bombas\",\n\t\"911115\": \"Mecânico de manutenção de compressores de ar\",\n\t\"911120\": \"Mecânico de manutenção de motores diesel (exceto de veículos automotores)\",\n\t\"911125\": \"Mecânico de manutenção de redutores\",\n\t\"911130\": \"Mecânico de manutenção de turbinas (exceto de aeronaves)\",\n\t\"911135\": \"Mecânico de manutenção de turbocompressores\",\n\t\"911205\": \"Mecânico de manutenção e instalação de aparelhos de climatização e  refrigeração\",\n\t\"911305\": \"Mecânico de manutenção de máquinas, em geral\",\n\t\"911310\": \"Mecânico de manutenção de máquinas gráficas\",\n\t\"911315\": \"Mecânico de manutenção de máquinas operatrizes (lavra de madeira)\",\n\t\"911320\": \"Mecânico de manutenção de máquinas têxteis\",\n\t\"911325\": \"Mecânico de manutenção de máquinas-ferramentas (usinagem de metais)\",\n\t\"913105\": \"Mecânico de manutenção de aparelhos de levantamento\",\n\t\"913110\": \"Mecânico de manutenção de equipamento de mineração\",\n\t\"913115\": \"Mecânico de manutenção de máquinas agrícolas\",\n\t\"913120\": \"Mecânico de manutenção de máquinas de construção e terraplenagem\",\n\t\"913125\": \"Vulcanizador de correias transportadoras\",\n\t\"914105\": \"Mecânico de manutenção de aeronaves, em geral\",\n\t\"914110\":\n\t\t\"Mecânico de manutenção de sistema hidráulico de aeronaves (serviços de pista e hangar)\",\n\t\"914205\": \"Mecânico de manutenção de motores e equipamentos navais\",\n\t\"914305\": \"Mecânico de manutenção de veículos ferroviários\",\n\t\"914405\": \"Mecânico de manutenção de automóveis, motocicletas e veículos similares\",\n\t\"914410\": \"Mecânico de manutenção de empilhadeiras e outros veículos de cargas leves\",\n\t\"914415\": \"Mecânico de manutenção de motocicletas\",\n\t\"914420\": \"Mecânico de manutenção de tratores\",\n\t\"914425\": \"Mecânico de veículos automotores a diesel (exceto tratores)\",\n\t\"915105\": \"Técnico em manutenção de instrumentos de medição e precisão\",\n\t\"915110\": \"Técnico em manutenção de hidrômetros\",\n\t\"915115\": \"Técnico em manutenção de balanças\",\n\t\"915205\": \"Restaurador de instrumentos musicais (exceto cordas arcadas)\",\n\t\"915210\": \"Reparador de instrumentos musicais\",\n\t\"915215\": \"Luthier (restauração de cordas arcadas)\",\n\t\"915305\": \"Técnico em manutenção de equipamentos e instrumentos médico-hospitalares\",\n\t\"915405\": \"Reparador de equipamentos fotográficos\",\n\t\"919105\": \"Lubrificador industrial\",\n\t\"919110\": \"Lubrificador de veículos automotores (exceto embarcações)\",\n\t\"919115\": \"Lubrificador de embarcações\",\n\t\"919205\":\n\t\t\"Mecânico de manutenção de máquinas cortadoras de grama, roçadeiras, motosserras e similares\",\n\t\"919305\": \"Mecânico de manutenção de aparelhos esportivos e de ginástica\",\n\t\"919310\": \"Mecânico de manutenção de bicicletas e veículos similares\",\n\t\"919315\": \"Montador de bicicletas\",\n\t\"950105\": \"Supervisor de manutenção elétrica de alta tensão industrial\",\n\t\"950110\": \"Supervisor de manutenção eletromecânica industrial, comercial e predial\",\n\t\"950205\": \"Encarregado de manutenção elétrica de veículos\",\n\t\"950305\": \"Supervisor de manutenção eletromecânica\",\n\t\"951105\": \"Eletricista de manutenção eletroeletrônica\",\n\t\"951305\": \"Instalador de sistemas eletroeletrônicos de segurança\",\n\t\"951310\": \"Mantenedor de sistemas eletroeletrônicos de segurança\",\n\t\"951315\": \"Monitor de sistemas eletrônicos de segurança interno\",\n\t\"951320\": \"Monitor de sistemas eletrônicos de segurança externo\",\n\t\"953105\": \"Eletricista de instalações (aeronaves)\",\n\t\"953110\": \"Eletricista de instalações (embarcações)\",\n\t\"953115\":\n\t\t\"Eletricista de instalações (veículos automotores e máquinas operatrizes, exceto aeronaves e embarcações)\",\n\t\"954105\": \"Eletromecânico de manutenção de elevadores\",\n\t\"954110\": \"Eletromecânico de manutenção de escadas rolantes\",\n\t\"954115\": \"Eletromecânico de manutenção de portas automáticas\",\n\t\"954120\": \"Mecânico de manutenção de instalações mecânicas de edifícios\",\n\t\"954125\": \"Operador eletromecânico\",\n\t\"954205\": \"Reparador de aparelhos eletrodomésticos (exceto imagem e som)\",\n\t\"954210\": \"Reparador de rádio, tv e som\",\n\t\"954305\": \"Reparador de equipamentos de escritório\",\n\t\"991105\": \"Conservador de via permanente (trilhos)\",\n\t\"991110\": \"Inspetor de via permanente (trilhos)\",\n\t\"991115\": \"Operador de máquinas especiais em conservação de via permanente (trilhos)\",\n\t\"991120\": \"Soldador aluminotérmico em conservação de trilhos\",\n\t\"991205\": \"Mantenedor de equipamentos de parques de diversões e similares\",\n\t\"991305\": \"Funileiro de veículos (reparação)\",\n\t\"991310\": \"Montador de veículos (reparação)\",\n\t\"991315\": \"Pintor de veículos (reparação)\",\n\t\"992105\": \"Alinhador de pneus\",\n\t\"992110\": \"Balanceador\",\n\t\"992115\": \"Borracheiro\",\n\t\"992120\": \"Lavador de peças\",\n\t\"992205\": \"Encarregado geral de operações de conservação de vias permanentes (exceto trilhos)\",\n\t\"992210\": \"Encarregado de equipe de conservação de vias permanentes (exceto trilhos)\",\n\t\"992215\": \"Operador de ceifadeira na conservação de vias permanentes\",\n\t\"992220\": \"Pedreiro de conservação de vias permanentes (exceto trilhos)\",\n\t\"992225\": \"Auxiliar geral de conservação de vias permanentes (exceto trilhos)\",\n\t\"010105\": \"Oficial general da aeronáutica\",\n\t\"010110\": \"Oficial general do exército\",\n\t\"010115\": \"Oficial general da marinha\",\n\t\"010205\": \"Oficial da aeronáutica\",\n\t\"010210\": \"Oficial do exército\",\n\t\"010215\": \"Oficial da marinha\",\n\t\"010305\": \"Praça da aeronáutica\",\n\t\"010310\": \"Praça do exército\",\n\t\"010315\": \"Praça da marinha\",\n\t\"020105\": \"Coronel da polícia militar\",\n\t\"020110\": \"Tenente-coronel da polícia militar\",\n\t\"020115\": \"Major da polícia militar\",\n\t\"020205\": \"Capitão da polícia militar\",\n\t\"020305\": \"Primeiro tenente de polícia militar\",\n\t\"020310\": \"Segundo tenente de polícia militar\",\n\t\"021105\": \"Subtenente da policia militar\",\n\t\"021110\": \"Sargento da policia militar\",\n\t\"021205\": \"Cabo da polícia militar\",\n\t\"021210\": \"Soldado da polícia militar\",\n\t\"030105\": \"Coronel bombeiro militar\",\n\t\"030110\": \"Major bombeiro militar\",\n\t\"030115\": \"Tenente-coronel bombeiro militar\",\n\t\"030205\": \"Capitão bombeiro militar\",\n\t\"030305\": \"Tenente do corpo de bombeiros militar\",\n\t\"031105\": \"Subtenente bombeiro militar\",\n\t\"031110\": \"Sargento bombeiro militar\",\n\t\"031205\": \"Cabo bombeiro militar\",\n\t\"031210\": \"Soldado bombeiro militar\",\n};\n\n/**\n * Shape a CBO code has to be written in: the 6 digits, optionally split into the printed\n * groups of 4 and 2 by a single whitespace or mask character.\n */\nexport const CBO_FORMAT_REGEX = /^\\d{4}[\\s.\\-/]?\\d{2}$/;\n","const BARE_DIGITS_REGEX = /^\\d+$/;\n\n/**\n * Left pads a lookup code with zeros up to the fixed width of its table, so the leading zeros a\n * table's codes carry never depend on how the caller wrote the value.\n *\n * A table whose codes all have the same width and may start with a zero (CBO with 6 digits,\n * CNAE with 7, NCM with 8) is looked up by that padded form, so `10205`, `\"10205\"` and\n * `\"010205\"` are all the CBO code `010205`, the same way `getBankByCode(1)` and\n * `getBankByCode(\"1\")` are both the bank `\"001\"`.\n *\n * Only a value written as bare digits is padded: a masked value (`\"6201-5/01\"`) already carries\n * its separators and is handed back untouched, and so is anything that is not digits at all\n * (`\"abc\"`), which the caller's own format check then turns down. Surrounding whitespace is\n * trimmed either way, and an empty value is never turned into a code of zeros.\n *\n * @param {string|number} value - The value to normalize, a string or a number.\n * @param {number} length - The fixed digit width of the table's codes.\n * @returns {string} The trimmed value, left padded with zeros when it is written as bare digits.\n *\n * @example\n * ```typescript\n * padLookupCode(10205, 6); // \"010205\"\n * padLookupCode(\"10205\", 6); // \"010205\"\n * padLookupCode(\" 212405 \", 6); // \"212405\"\n * padLookupCode(\"6201-5/01\", 7); // \"6201-5/01\"\n * padLookupCode(\"\", 6); // \"\"\n * ```\n */\nexport const padLookupCode = (value: string | number, length: number): string => {\n\tconst code = String(value).trim();\n\n\treturn BARE_DIGITS_REGEX.test(code) ? code.padStart(length, \"0\") : code;\n};\n","import { CBO_FORMAT_REGEX, CBO_TITLES } from \"../_internals/constants/cbo\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { padLookupCode } from \"../_internals/pad-lookup-code/pad-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nconst CBO_LENGTH = 6;\n\n/**\n * A CBO (Classificação Brasileira de Ocupações) occupation.\n */\nexport type Cbo = {\n\t/** The 6 digit occupation code, without the hyphen mask. */\n\tcode: string;\n\t/** The official occupation description, the title the MTE table prints. */\n\tdescription: string;\n};\n\n/**\n * Looks a CBO (Classificação Brasileira de Ocupações) code up in the official CBO 2002\n * table.\n *\n * A string is only read as a code when it is written in one of the documented forms: the 6\n * digits, or the `NNNN-NN` mask, with a single separator between the groups and optional\n * surrounding whitespace. Anything else (`\"2124abc05\"`) is rejected instead of having its\n * digits picked out. A number is only read as a code when it is a non-negative safe integer,\n * since a sign, a decimal point or a rounded magnitude would otherwise be read as a code the\n * caller never wrote.\n *\n * A CBO code is always 6 digits and its leading zeros are part of it, so a value written as\n * bare digits is left padded with zeros to 6 whether it comes as a string or as a number:\n * `10205`, `\"10205\"` and `\"010205\"` are the same code. A masked value already carries its\n * separators and is read as written.\n *\n * @param {string|number} value - The CBO code to look up, with or without the hyphen\n * mask, e.g. `\"2124-05\"`, `\"212405\"` or `212405`.\n * @returns {Cbo|null} The matching occupation, or null when the code is unknown or invalid.\n *\n * @example\n * ```typescript\n * getCbo(\"2124-05\"); // { code: \"212405\", description: \"Analista de desenvolvimento de sistemas\" }\n * getCbo(10205); // { code: \"010205\", description: \"Oficial da aeronáutica\" } (padded to 6 digits)\n * getCbo(\"10205\"); // { code: \"010205\", description: \"Oficial da aeronáutica\" } (padded to 6 digits)\n * getCbo(\"999999\"); // null\n * getCbo(\"2124abc05\"); // null (not a documented form)\n * getCbo(-212405); // null (not a non-negative safe integer)\n * ```\n *\n * @see Official: https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/cbo/servicos/downloads/cbo2002-ocupacao.csv\n * The CBO 2002 occupation table, as published by the Ministério do Trabalho e Emprego.\n * @see Based on: https://raw.githubusercontent.com/lucaashoff/lista-cbo-json/main/cbos.json\n * Community mirror of the same table, the fallback `CBO_TITLES` was built from before the\n * official CSV was used.\n */\nexport const getCbo = (value: string | number): Cbo | null => {\n\tif (!isLookupCode(value)) return null;\n\n\tconst code = padLookupCode(value, CBO_LENGTH);\n\n\tif (!CBO_FORMAT_REGEX.test(code)) return null;\n\n\tconst digits = sanitizeToDigits(code);\n\tconst description = CBO_TITLES[digits];\n\n\tif (description === undefined) return null;\n\n\treturn { code: digits, description };\n};\n","import { STATE_CODES } from \"../constants/state-codes\";\nimport { type StateCode } from \"../constants/states\";\n\n/**\n * Checks whether a value is the two letter code of a Brazilian state, as published by the IBGE.\n *\n * The check is exact: the value has to be already trimmed and in upper case, and a key of the\n * prototype chain (`\"constructor\"`) is no state code like any other unknown value.\n *\n * @param {string} value - The value to check.\n * @returns {boolean} True when the value is one of the 27 state codes.\n *\n * @example\n * ```typescript\n * isStateCode(\"SP\"); // true\n * isStateCode(\"sp\"); // false\n * isStateCode(\"XX\"); // false\n * ```\n */\nexport const isStateCode = (value: string): value is StateCode =>\n\tSTATE_CODES.some((code) => code === value);\n","const COMBINING_MARKS_REGEX = /\\p{M}/gu;\n\n/**\n * Removes diacritical marks (accents, tildes, cedillas) from a string, decomposing every\n * accented character into its base letter plus combining marks (Unicode NFD) and then\n * dropping every combining mark (Unicode general category M, so accents from any script).\n *\n * @param {string} value - The text to strip accents from.\n * @returns {string} The text with every diacritical mark removed. `\"\"` when `value` is not a\n * non-empty string.\n *\n * @see Official: https://unicode.org/reports/tr15/\n * @see Official: https://www.unicode.org/reports/tr44/#General_Category_Values\n *\n * @example\n * ```typescript\n * removeAccents(\"São Paulo\"); // \"Sao Paulo\"\n * removeAccents(\"Piauí\"); // \"Piaui\"\n * removeAccents(\"Ceará\"); // \"Ceara\"\n * removeAccents(\"Açaí\"); // \"Acai\"\n * removeAccents(\"\"); // \"\"\n * ```\n */\nexport const removeAccents = (value: string): string => {\n\tif (typeof value !== \"string\") return \"\";\n\n\treturn value.normalize(\"NFD\").replace(COMBINING_MARKS_REGEX, \"\");\n};\n","import { fetchWithRetry } from \"../_internals/fetch-with-retry/fetch-with-retry\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { isStateCode } from \"../_internals/is-state-code/is-state-code\";\nimport { removeAccents } from \"../remove-accents/remove-accents\";\n\n/** Base class of every error `getCepInfoByAddress` rejects with. */\nexport class GetCepInfoByAddressError extends Error {\n\tpublic constructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetCepInfoByAddressError\";\n\t}\n}\n\n/** Thrown by `getCepInfoByAddress` when the state, city or street given is missing or invalid. */\nexport class GetCepInfoByAddressValidationError extends GetCepInfoByAddressError {\n\tpublic constructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetCepInfoByAddressValidationError\";\n\t}\n}\n\n/** Thrown by `getCepInfoByAddress` when no address matches the query. */\nexport class GetCepInfoByAddressNotFoundError extends GetCepInfoByAddressError {\n\tpublic constructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"GetCepInfoByAddressNotFoundError\";\n\t}\n}\n\n/**\n * One address returned by `getCepInfoByAddress`, under the field names ViaCEP itself uses. The\n * ViaCEP payload is passed through unchanged, so every field the service sends is present and a\n * field it adds later shows up even though it is not declared here.\n */\nexport type CepAddressInfo = {\n\t/** The CEP, masked as \"00000-000\" the way ViaCEP returns it. */\n\tcep: string;\n\t/** Street name. */\n\tlogradouro: string;\n\t/** Extra address information, e.g. a house number range. */\n\tcomplemento: string;\n\t/** Name of the establishment the CEP belongs to, e.g. \"AC São Carlos\"; empty for a street CEP. */\n\tunidade?: string;\n\t/** Neighborhood name. */\n\tbairro: string;\n\t/** City name. */\n\tlocalidade: string;\n\t/** Two letter state code, e.g. \"SP\". */\n\tuf: string;\n\t/** Full state name, e.g. \"Minas Gerais\". */\n\testado?: string;\n\t/** Region name, e.g. \"Sudeste\". */\n\tregiao?: string;\n\t/** The 7 digit IBGE municipality code. */\n\tibge?: string;\n\t/** GIA code, used by the São Paulo state tax authority. */\n\tgia?: string;\n\t/** Area code (DDD) of the city. */\n\tddd?: string;\n\t/** SIAFI code of the municipality. */\n\tsiafi?: string;\n};\n\n/** The address `getCepInfoByAddress` looks up. */\nexport type GetCepInfoByAddressParams = {\n\t/** Two letter state code, e.g. \"SP\". */\n\tfederalUnit: string;\n\t/** City name. Must not be empty; ViaCEP itself rejects values shorter than 3 characters. */\n\tcity: string;\n\t/** Street name or part of it. Must not be empty; ViaCEP itself rejects values shorter than 3 characters. */\n\tstreet: string;\n};\n\n/**\n * The address `getCepInfoByAddress` looks up, the 2.3.0 name of `GetCepInfoByAddressParams`.\n *\n * @deprecated Use `GetCepInfoByAddressParams` instead.\n */\nexport type GetCepInfoByAddressOptions = GetCepInfoByAddressParams;\n\nconst normalizeAddressPart = (value: string): string => removeAccents(value).trim();\n\n// The ViaCEP response shape is trusted structurally (as the original implementation always\n// was): every element the array holds is assumed to already match `CepAddressInfo`.\nconst isCepAddressInfoArray = (value: unknown): value is CepAddressInfo[] => Array.isArray(value);\n\n/**\n * Looks every CEP of a Brazilian street up on the ViaCEP API.\n *\n * @param {GetCepInfoByAddressParams} params - The address to look up.\n * @param {string} params.federalUnit - The two letter state code (e.g. \"SP\").\n * @param {string} params.city - The city name.\n * @param {string} params.street - The street name, or part of it.\n * @returns {Promise<CepAddressInfo[]>} Every address matching the query.\n * @throws {GetCepInfoByAddressValidationError} When the UF, city or street is missing or invalid.\n * A `params` that is not an object at all (omitted, `null`, a string) and a `federalUnit` that is\n * not a string reject this way too, rather than with a raw `TypeError`.\n * @throws {GetCepInfoByAddressNotFoundError} When no address matches the query.\n * @throws {GetCepInfoByAddressError} When ViaCEP answers with an HTTP error status. A request\n * that cannot be performed at all rejects with the underlying `fetch` error instead.\n *\n * @example\n * ```typescript\n * await getCepInfoByAddress({ federalUnit: \"MG\", city: \"Ouro Preto\", street: \"Rua Direita\" });\n * // [\n * //   {\n * //     cep: \"35411-152\",\n * //     logradouro: \"Rua Direita\",\n * //     complemento: \"\",\n * //     unidade: \"\",\n * //     bairro: \"Riacho (Amarantina)\",\n * //     localidade: \"Ouro Preto\",\n * //     uf: \"MG\",\n * //     estado: \"Minas Gerais\",\n * //     regiao: \"Sudeste\",\n * //     ibge: \"3146107\",\n * //     gia: \"\",\n * //     ddd: \"31\",\n * //     siafi: \"4921\"\n * //   }\n * // ]\n * ```\n *\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/tudo-sobre-cep\n * @see Based on: https://viacep.com.br/\n * ViaCEP, the service queried. A third-party service, not a Correios one.\n */\nexport const getCepInfoByAddress = async (\n\tparams: GetCepInfoByAddressParams,\n): Promise<CepAddressInfo[]> => {\n\tif (isNullish(params) || typeof params !== \"object\") {\n\t\tthrow new GetCepInfoByAddressValidationError(\"UF, city and street are required\");\n\t}\n\n\tconst { federalUnit, city, street } = params;\n\n\tif (typeof federalUnit !== \"string\") {\n\t\tthrow new GetCepInfoByAddressValidationError(\"Invalid UF: a two letter string is required\");\n\t}\n\n\tconst normalizedUf = federalUnit.trim().toUpperCase();\n\n\tif (!isStateCode(normalizedUf)) {\n\t\tthrow new GetCepInfoByAddressValidationError(`Invalid UF: ${federalUnit}`);\n\t}\n\n\tif (!city || !street) {\n\t\tthrow new GetCepInfoByAddressValidationError(\"City and street are required\");\n\t}\n\n\tconst response = await fetchWithRetry(\n\t\t`https://viacep.com.br/ws/${normalizedUf}/${encodeURIComponent(normalizeAddressPart(city))}/${encodeURIComponent(normalizeAddressPart(street))}/json/`,\n\t);\n\n\tif (!response.ok) {\n\t\tthrow new GetCepInfoByAddressError(`ViaCEP request failed with status ${response.status}`);\n\t}\n\n\tconst data: unknown = await response.json();\n\n\tif (!isCepAddressInfoArray(data) || data.length === 0) {\n\t\tthrow new GetCepInfoByAddressNotFoundError(`${normalizedUf} - ${city} - ${street}`);\n\t}\n\n\treturn data;\n};\n","/**\n * The nine books (tipo do livro) a matrícula de registro civil can point to, in the order of\n * the codes 1 to 9: Livro A (nascimento), Livro B (casamento), Livro B Auxiliar (casamento\n * religioso com efeito civil), Livro C (óbito), Livro C Auxiliar (natimorto), Livro D\n * (proclamas), Livro E (demais atos), Livro E desdobrado para emancipações and Livro E\n * desdobrado para interdições.\n *\n * The in-force art. 473, V of the Código Nacional de Normas da Corregedoria Nacional de Justiça\n * lists only the codes 1 to 7, and no CNJ primary text reachable today publishes the other two:\n * the Anexo IV of the revoked Provimento CNJ nº 63/2017 lists the same seven. The codes 8\n * (emancipação) and 9 (interdição) come from the `Based on:` references below: ghiorzi.org prints\n * the nine book list and the cited Casilhero support class maps the same nine. They are kept\n * because matrículas carrying them circulate.\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/5243\n * Código Nacional de Normas da Corregedoria Nacional de Justiça - Foro Extrajudicial (Provimento\n * CNJ nº 149/2023), art. 473 as currently published: the in-force layout of the 32 digit\n * matrícula. Inciso II and §§ 1º and 3º to 5º carry the redação of the Provimento CN nº 237, de\n * 13/07/2026; the rest of the article, § 2º included, and the digit layout this library depends\n * on, come from the Provimento CN nº 182, de 17/09/2024.\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1311\n * Provimento CNJ nº 2, de 27/04/2009, art. 1º and 2º, which instituted the modelos únicos de\n * certidão and ordered that \"as certidões passarão a consignar matrícula que identifica o código\n * nacional da serventia, o código do acervo, o tipo do serviço prestado, o tipo do livro, o número\n * do livro, o número da folha, o número do termo e o digito verificador\" (revoked; historical).\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1310\n * Provimento CNJ nº 3, de 17/11/2009, art. 7º, which is where that matrícula first got its digit\n * structure: \"a matrícula, de inserção obrigatória nas certidões (primeira e demais vias) emitidas\n * pelos Cartórios de Registro Civil das Pessoas Naturais a partir de 1º de janeiro de 2010, é\n * formada pelos seguintes elementos\", incisos I to IX fixing the same 6 + 2 + 2 + 4 + 1 + 5 + 3 +\n * 7 + 2 positions art. 473 carries today (revoked; historical).\n * @see Based on: http://ghiorzi.org/DVnew.htm\n * Description of the nine books and their codes.\n * @see Based on: https://github.com/Casilhero/brazilian-validators/blob/main/src/Support/CertidaoInfo.php\n * Reference implementation agreeing on the same nine books, in the same order.\n */\nexport const CERTIDAO_TYPES = [\n\t\"birth\",\n\t\"marriage\",\n\t\"religious-marriage\",\n\t\"death\",\n\t\"stillbirth\",\n\t\"banns\",\n\t\"other\",\n\t\"emancipation\",\n\t\"interdiction\",\n] as const;\n","import {\n\tCERTIDAO_BASE_LENGTH,\n\tCERTIDAO_FORMAT_REGEX,\n\tCERTIDAO_LENGTH,\n\tCERTIDAO_SERVICE_CODE,\n} from \"../_internals/constants/certidao\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { CERTIDAO_TYPES } from \"../get-certidao-info/constants\";\nimport { type CertidaoType } from \"../get-certidao-info/get-certidao-info\";\n\n/** Options of `isValidCertidao`. */\nexport type IsValidCertidaoOptions = {\n\t/** Kinds of certidão (book types) that count as valid (default: all of them). */\n\taccept?: CertidaoType[];\n};\n\nconst getCheckDigit = (value: string): number => {\n\tlet weight = CERTIDAO_LENGTH - value.length;\n\tlet sum = 0;\n\n\tfor (let i = 0; i < value.length; i++) {\n\t\tsum += (value.charCodeAt(i) - 48) * weight;\n\t\tweight += 1;\n\t}\n\n\tconst remainder = sum % 11;\n\n\treturn remainder === 10 ? 1 : remainder;\n};\n\n/**\n * Validates the matrícula of a certidão de registro civil (nascimento, casamento, óbito and the\n * other acts kept by a serventia de registro civil das pessoas naturais).\n *\n * The matrícula has 32 digits laid out as 6 (CNS da serventia) + 2 (acervo) + 2 (serviço) +\n * 4 (ano) + 1 (tipo do livro) + 5 (livro) + 3 (folha) + 7 (termo) + 2 (dígitos verificadores),\n * printed as \"000000 00 00 0000 0 00000 000 0000000 00\". The serviço is fixed at `55`, the code\n * art. 473, III assigns to the registro civil das pessoas naturais, so a matrícula carrying any\n * other pair there is rejected. Both check digits are modulus 11: the\n * first weights the 30 base digits by 2, 3, ... 10, 0, 1, 2, ... restarting the cycle every 11\n * digits, the second weights the 31 digits that include the first check digit by 1, 2, ... 10,\n * 0, 1, ... In both passes the check digit is the remainder itself, with a remainder of 10 read\n * as 1.\n *\n * The book-type digit (fifteenth position of the matrícula) always has to name one of the nine\n * books (see `CertidaoType`, reused from `getCertidaoInfo`), so a matrícula whose digit is `0` is\n * rejected however good its check digits are, the same way `getCertidaoInfo` returns `null` for\n * it. `options.accept` narrows that further to the listed types; when it is omitted, or when it\n * is not an array, every book type is accepted.\n *\n * Only a string is accepted: the 32 digits of a matrícula are more than a JavaScript number can\n * hold, so a numeric argument is always rejected instead of being read as a rounded value.\n *\n * @param {string} value - The matrícula value to be validated.\n * @param {IsValidCertidaoOptions} [options] - Optional validation options.\n * @param {CertidaoType[]} [options.accept] - The book types to accept. Defaults to all of them.\n * @returns {boolean} True if the matrícula is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCertidao(\"104539 01 55 2013 1 00012 021 0000123 21\"); // true\n * isValidCertidao(\"09430001552010100020112000012087\"); // true\n * isValidCertidao(\"104539 01 55 2013 1 00012 021 0000123 22\"); // false (invalid check digits)\n * isValidCertidao(\"09400301542011100110002005191744\"); // false (serviço is not 55)\n * isValidCertidao(\"123456\"); // false (wrong length)\n * isValidCertidao(\"104539 01 55 2013 1 00012 021 0000123 21\", { accept: [\"birth\"] }); // true\n * isValidCertidao(\"104539 01 55 2013 1 00012 021 0000123 21\", { accept: [\"death\"] }); // false\n * ```\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/5243\n * Código Nacional de Normas da Corregedoria Nacional de Justiça - Foro Extrajudicial (Provimento\n * CNJ nº 149/2023), art. 473 as currently published: the in-force layout of the 32 digit\n * matrícula. Inciso II and §§ 1º and 3º to 5º carry the redação of the Provimento CN nº 237, de\n * 13/07/2026; the rest of the article, § 2º included, and the digit layout this library depends\n * on, come from the Provimento CN nº 182, de 17/09/2024.\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1311\n * Provimento CNJ nº 2, de 27/04/2009, art. 1º and 2º, which instituted the modelos únicos de\n * certidão and ordered that \"as certidões passarão a consignar matrícula que identifica o código\n * nacional da serventia, o código do acervo, o tipo do serviço prestado, o tipo do livro, o número\n * do livro, o número da folha, o número do termo e o digito verificador\" (revoked; historical).\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1310\n * Provimento CNJ nº 3, de 17/11/2009, art. 7º, which is where that matrícula first got its digit\n * structure: \"a matrícula, de inserção obrigatória nas certidões (primeira e demais vias) emitidas\n * pelos Cartórios de Registro Civil das Pessoas Naturais a partir de 1º de janeiro de 2010, é\n * formada pelos seguintes elementos\", incisos I to IX fixing the same 6 + 2 + 2 + 4 + 1 + 5 + 3 +\n * 7 + 2 positions art. 473 carries today (revoked; historical).\n * @see Based on: http://ghiorzi.org/DVnew.htm\n * Worked example of the two check digits (sums 288 and 309).\n * @see Based on: https://github.com/klawdyo/validation-br/blob/feat-certidao/src/certidao.ts\n * Reference implementation, and the source of the matrículas used as test vectors.\n * @see Based on: https://github.com/geekcom/validator-docs/blob/master/src/validator-docs/Rules/Certidao.php\n * Third reference implementation agreeing on the weights and on the remainder of 10 read as 1.\n */\nexport const isValidCertidao = (value: string, options?: IsValidCertidaoOptions): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (!CERTIDAO_FORMAT_REGEX.test(value.trim())) return false;\n\n\tif (digits.slice(8, 10) !== CERTIDAO_SERVICE_CODE) return false;\n\n\tconst base = digits.slice(0, CERTIDAO_BASE_LENGTH);\n\tconst first = getCheckDigit(base);\n\tconst second = getCheckDigit(`${base}${first}`);\n\n\tif (digits.slice(CERTIDAO_BASE_LENGTH) !== `${first}${second}`) return false;\n\n\tconst typeCode = digits.charCodeAt(14) - 48;\n\tconst type: CertidaoType | undefined = CERTIDAO_TYPES[typeCode - 1];\n\n\tif (type === undefined) return false;\n\n\tconst accept = options?.accept;\n\n\tif (!Array.isArray(accept)) return true;\n\n\treturn accept.includes(type);\n};\n","import { CERTIDAO_BASE_LENGTH } from \"../_internals/constants/certidao\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { isValidCertidao } from \"../is-valid-certidao/is-valid-certidao\";\nimport { CERTIDAO_TYPES } from \"./constants\";\n\n/**\n * The nine books (tipo do livro) a matrícula de registro civil can point to, in the order of the\n * codes 1 to 9. `getCertidaoInfo` names the book of a matrícula with one of these, and\n * `isValidCertidao` accepts a list of them.\n *\n * The in-force art. 473, V of the Código Nacional de Normas da Corregedoria Nacional de Justiça\n * lists only the codes 1 to 7, and no CNJ primary text reachable today publishes the other two:\n * the Anexo IV of the revoked Provimento CNJ nº 63/2017 lists the same seven. The codes 8\n * (`\"emancipation\"`) and 9 (`\"interdiction\"`) come from the `Based on:` references below: ghiorzi.org and\n * validation-br both print the nine book list. They are kept because matrículas carrying them\n * circulate.\n */\nexport type CertidaoType =\n\t| \"birth\"\n\t| \"marriage\"\n\t| \"religious-marriage\"\n\t| \"death\"\n\t| \"stillbirth\"\n\t| \"banns\"\n\t| \"other\"\n\t| \"emancipation\"\n\t| \"interdiction\";\n\n/** The fields `getCertidaoInfo` reads out of the matrícula of a certidão de registro civil. */\nexport type CertidaoInfo = {\n\t/** The 6 digit CNS (Código Nacional de Serventia) of the serventia that issued the act. */\n\tregistryCns: string;\n\t/**\n\t * Acervo the book belongs to: `\"01\"` the serventia's own acervo; `\"02\"` and up, one per\n\t * incorporated acervo. Art. 473, §§ 3º to 5º splits the incorporated ones by the date the\n\t * origin serventia was extinguished or deactivated: up to 31 December 2009 the matrícula\n\t * carries the CNS of the incorporating unit and an acervo code from `\"02\"` up, one per\n\t * incorporation in their numeric order; from 1 January 2010 on it carries the CNS of the\n\t * incorporated unit itself and the acervo code `\"01\"`, counted as that unit's own acervo. When\n\t * one acervo is split between two or more successor serventias, each of them uses its own CNS\n\t * with the acervo code `\"02\"`.\n\t */\n\tacervo: string;\n\t/** Service rendered by the serventia, always \"55\", the registro civil das pessoas naturais. */\n\tservice: string;\n\t/** Four digit year the act was recorded. */\n\tyear: number;\n\t/** The book the act belongs to, as an English name. */\n\ttype: CertidaoType;\n\t/** Raw book code, 1 to 9, as printed in the fifteenth position of the matrícula. */\n\ttypeCode: number;\n\t/** The 5 digit book (livro) number, zero padded. */\n\tbook: string;\n\t/** The 3 digit page (folha) number, zero padded. */\n\tpage: string;\n\t/** The 7 digit term (termo) number, zero padded. */\n\tterm: string;\n\t/** The 2 modulus 11 check digits of the matrícula. */\n\tcheckDigits: string;\n};\n\n/**\n * Parses the matrícula of a certidão de registro civil into its fields.\n *\n * Accepts the same input forms as `isValidCertidao` and returns `null` when the matrícula is\n * not valid, which includes a serviço other than the `55` art. 473, III fixes for the registro\n * civil das pessoas naturais, and a book code that is not one of the nine books defined by the\n * Provimento, since an unknown book cannot be named.\n *\n * Only a string is accepted: the 32 digits of a matrícula are more than a JavaScript number can\n * hold, so a numeric argument always gives `null` instead of being read as a rounded value.\n *\n * @param {string} value - The matrícula value to be parsed.\n * @returns {CertidaoInfo | null} The parsed matrícula, or `null` when it is not valid.\n *\n * @example\n * ```typescript\n * getCertidaoInfo(\"104539 01 55 2013 1 00012 021 0000123 21\");\n * // { registryCns: \"104539\", acervo: \"01\", service: \"55\", year: 2013, type: \"birth\",\n * //   typeCode: 1, book: \"00012\", page: \"021\", term: \"0000123\", checkDigits: \"21\" }\n *\n * getCertidaoInfo(\"invalid\"); // null\n * ```\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/5243\n * Código Nacional de Normas da Corregedoria Nacional de Justiça - Foro Extrajudicial (Provimento\n * CNJ nº 149/2023), art. 473 as currently published: the in-force layout of the 32 digit\n * matrícula. Inciso II and §§ 1º and 3º to 5º carry the redação of the Provimento CN nº 237, de\n * 13/07/2026; the rest of the article, § 2º included, and the digit layout this library depends\n * on, come from the Provimento CN nº 182, de 17/09/2024.\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1311\n * Provimento CNJ nº 2, de 27/04/2009, art. 1º and 2º, which instituted the modelos únicos de\n * certidão and ordered that \"as certidões passarão a consignar matrícula que identifica o código\n * nacional da serventia, o código do acervo, o tipo do serviço prestado, o tipo do livro, o número\n * do livro, o número da folha, o número do termo e o digito verificador\" (revoked; historical).\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1310\n * Provimento CNJ nº 3, de 17/11/2009, art. 7º, which is where that matrícula first got its digit\n * structure: \"a matrícula, de inserção obrigatória nas certidões (primeira e demais vias) emitidas\n * pelos Cartórios de Registro Civil das Pessoas Naturais a partir de 1º de janeiro de 2010, é\n * formada pelos seguintes elementos\", incisos I to IX fixing the same 6 + 2 + 2 + 4 + 1 + 5 + 3 +\n * 7 + 2 positions art. 473 carries today (revoked; historical).\n * @see Based on: http://ghiorzi.org/DVnew.htm\n * Worked example of the two check digits (sums 288 and 309).\n * @see Based on: https://github.com/klawdyo/validation-br/blob/feat-certidao/src/certidao.ts\n * Reference implementation, and the source of the matrículas used as test vectors.\n * @see Based on: https://github.com/geekcom/validator-docs/blob/master/src/validator-docs/Rules/Certidao.php\n * Third reference implementation agreeing on the weights and on the remainder of 10 read as 1.\n */\nexport const getCertidaoInfo = (value: string): CertidaoInfo | null => {\n\tif (!isValidCertidao(value)) return null;\n\n\tconst digits = sanitizeToDigits(value);\n\tconst typeCode = digits.charCodeAt(14) - 48;\n\tconst type = CERTIDAO_TYPES[typeCode - 1];\n\n\treturn {\n\t\tregistryCns: digits.slice(0, 6),\n\t\tacervo: digits.slice(6, 8),\n\t\tservice: digits.slice(8, 10),\n\t\tyear: Number(digits.slice(10, 14)),\n\t\ttype,\n\t\ttypeCode,\n\t\tbook: digits.slice(15, 20),\n\t\tpage: digits.slice(20, 23),\n\t\tterm: digits.slice(23, CERTIDAO_BASE_LENGTH),\n\t\tcheckDigits: digits.slice(CERTIDAO_BASE_LENGTH),\n\t};\n};\n","/**\n * CFOP (Código Fiscal de Operações e Prestações) table, indexed by the 4 digit code.\n *\n * Built from the consolidated Anexo II of Convênio SINIEF s/nº of 15 December 1970, the text in\n * force (given its current wording by Ajuste SINIEF 03/24 and last amended by Ajuste SINIEF\n * 39/25), not from the frozen 2001 text of Ajuste SINIEF 07/01.\n *\n * Group and subgroup headers (codes ending in \"00\" or \"50\", e.g. \"1000\", \"1100\", \"1150\")\n * are section titles from the official nomenclature rather than operable codes, so they\n * are excluded: the annex prints them in upper case with no \"Classificam-se neste código\"\n * body, unlike the operable codes they head (1151, 1152, ...).\n *\n * Generated by `node ./scripts/cfop.ts`. Do not edit by hand.\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cfop_cvsn_1-6.24\n * Anexo II of Convênio SINIEF s/nº 1970, the CFOP table in force.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cvsn_70\n * Convênio SINIEF s/nº 1970, the consolidated text the annex belongs to.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2025/AJ039_25\n * Ajuste SINIEF 39/25, the last amendment the annex carries (CFOP 7.667, from 01.02.26).\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2001/AJ_007_01\n * Ajuste SINIEF 07/01, the historical text that gave the CFOP its 4 digit form.\n */\nexport const CFOP_TABLE: Record<string, string> = {\n\t\"1101\": \"Compra para industrialização ou produção rural\",\n\t\"1102\": \"Compra para comercialização\",\n\t\"1111\":\n\t\t\"Compra para industrialização de mercadoria recebida anteriormente em consignação industrial\",\n\t\"1113\":\n\t\t\"Compra para comercialização, de mercadoria recebida anteriormente em consignação mercantil\",\n\t\"1116\":\n\t\t\"Compra para industrialização ou produção rural originada de encomenda para recebimento futuro\",\n\t\"1117\": \"Compra para comercialização originada de encomenda para recebimento futuro\",\n\t\"1118\":\n\t\t\"Compra de mercadoria para comercialização pelo adquirente originário, entregue pelo vendedor remetente ao destinatário, em venda à ordem\",\n\t\"1120\":\n\t\t\"Compra para industrialização ou produção rural, em venda à ordem, já recebida do vendedor remetente\",\n\t\"1121\": \"Compra para comercialização, em venda à ordem, já recebida do vendedor remetente\",\n\t\"1122\":\n\t\t\"Compra para industrialização em que a mercadoria foi remetida pelo fornecedor ao industrializador sem transitar pelo estabelecimento adquirente\",\n\t\"1124\": \"Industrialização efetuada por outra empresa\",\n\t\"1125\":\n\t\t\"Industrialização efetuada por outra empresa quando a mercadoria remetida para utilização no processo de industrialização não transitou pelo estabelecimento adquirente da mercadoria\",\n\t\"1126\": \"Compra para utilização na prestação de serviço sujeita ao ICMS\",\n\t\"1128\": \"Compra para utilização na prestação de serviço sujeita ao ISSQN\",\n\t\"1131\":\n\t\t\"Entrada de mercadoria, com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"1132\":\n\t\t\"Fixação de preço de produção do estabelecimento produtor, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo, para comercialização\",\n\t\"1135\":\n\t\t\"Fixação de preço de produção do estabelecimento produtor, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo, para industrialização\",\n\t\"1151\": \"Transferência para industrialização ou produção rural\",\n\t\"1152\": \"Transferência para comercialização\",\n\t\"1153\": \"Transferência de energia elétrica para distribuição\",\n\t\"1154\": \"Transferência para utilização na prestação de serviço\",\n\t\"1159\": \"Entrada decorrente do fornecimento de produto ou mercadoria em ato cooperativo\",\n\t\"1201\": \"Devolução de venda de produção do estabelecimento\",\n\t\"1202\":\n\t\t\"Devolução de venda de mercadoria adquirida ou recebida de terceiros, ou qualquer devolução de mercadoria efetuada pelo MEI com exceção das classificadas nos códigos 1.503, 1.504, 1.505 e 1.506\",\n\t\"1203\":\n\t\t\"Devolução de venda de produção do estabelecimento, destinada à Zona Franca de Manaus ou Áreas de Livre Comércio\",\n\t\"1204\":\n\t\t\"Devolução de venda de mercadoria adquirida ou recebida de terceiros, destinada à Zona Franca de Manaus ou Áreas de Livre Comércio\",\n\t\"1205\": \"Anulação de valor relativo à prestação de serviço de comunicação\",\n\t\"1206\": \"Anulação de valor relativo à prestação de serviço de transporte\",\n\t\"1207\": \"Anulação de valor relativo à venda de energia elétrica\",\n\t\"1208\": \"Devolução de produção do estabelecimento, remetida em transferência\",\n\t\"1209\": \"Devolução de mercadoria adquirida ou recebida de terceiros, remetida em transferência\",\n\t\"1212\":\n\t\t\"Devolução de venda no mercado interno de mercadoria industrializada e insumo importado sob o Regime Aduaneiro Especial de Entreposto Industrial sob Controle Informatizado do Sistema Público de Escrituração Digital (Recof-Sped)\",\n\t\"1213\":\n\t\t\"Devolução de remessa de produção do estabelecimento, com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"1214\":\n\t\t\"Devolução referente à fixação de preço de produção do estabelecimento produtor em ato cooperativo\",\n\t\"1215\": \"Devolução de fornecimento de produção do estabelecimento em ato cooperativo\",\n\t\"1216\":\n\t\t\"Devolução de fornecimento de mercadoria adquirida ou recebida de terceiros em ato cooperativo\",\n\t\"1251\": \"Compra de energia elétrica para distribuição ou comercialização\",\n\t\"1252\": \"Compra de energia elétrica por estabelecimento industrial\",\n\t\"1253\": \"Compra de energia elétrica por estabelecimento comercial\",\n\t\"1254\": \"Compra de energia elétrica por estabelecimento prestador de serviço de transporte\",\n\t\"1255\": \"Compra de energia elétrica por estabelecimento prestador de serviço de comunicação\",\n\t\"1256\": \"Compra de energia elétrica por estabelecimento de produtor rural\",\n\t\"1257\": \"Compra de energia elétrica para consumo por demanda contratada\",\n\t\"1301\": \"Aquisição de serviço de comunicação para execução de serviço da mesma natureza\",\n\t\"1302\": \"Aquisição de serviço de comunicação por estabelecimento industrial\",\n\t\"1303\": \"Aquisição de serviço de comunicação por estabelecimento comercial\",\n\t\"1304\":\n\t\t\"Aquisição de serviço de comunicação por estabelecimento de prestador de serviço de transporte\",\n\t\"1305\":\n\t\t\"Aquisição de serviço de comunicação por estabelecimento de geradora ou de distribuidora de energia elétrica\",\n\t\"1306\": \"Aquisição de serviço de comunicação por estabelecimento de produtor rural\",\n\t\"1351\": \"Aquisição de serviço de transporte para execução de serviço da mesma natureza\",\n\t\"1352\": \"Aquisição de serviço de transporte por estabelecimento industrial\",\n\t\"1353\": \"Aquisição de serviço de transporte por estabelecimento comercial\",\n\t\"1354\":\n\t\t\"Aquisição de serviço de transporte por estabelecimento de prestador de serviço de comunicação\",\n\t\"1355\":\n\t\t\"Aquisição de serviço de transporte por estabelecimento de geradora ou de distribuidora de energia elétrica\",\n\t\"1356\": \"Aquisição de serviço de transporte por estabelecimento de produtor rural\",\n\t\"1360\":\n\t\t\"Aquisição de serviço de transporte por contribuinte substituto em relação ao serviço de transporte\",\n\t\"1401\":\n\t\t\"Compra para industrialização ou produção rural em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"1403\":\n\t\t\"Compra para comercialização em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"1406\":\n\t\t\"Compra de bem para o ativo imobilizado cuja mercadoria está sujeita ao regime de substituição tributária\",\n\t\"1407\":\n\t\t\"Compra de mercadoria para uso ou consumo cuja mercadoria está sujeita ao regime de substituição tributária\",\n\t\"1408\":\n\t\t\"Transferência para industrialização ou produção rural em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"1409\":\n\t\t\"Transferência para comercialização em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"1410\":\n\t\t\"Devolução de venda de produção do estabelecimento em operação com produto sujeito ao regime de substituição tributária\",\n\t\"1411\":\n\t\t\"Devolução de venda de mercadoria adquirida ou recebida de terceiros em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"1414\":\n\t\t\"Retorno de produção do estabelecimento, remetida para venda fora do estabelecimento em operação com produto sujeito ao regime de substituição tributária\",\n\t\"1415\":\n\t\t\"Retorno de mercadoria adquirida ou recebida de terceiros, remetida para venda fora do estabelecimento em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"1451\": \"Entrada de animal - Sistema de Integração e Parceria Rural\",\n\t\"1452\": \"Entrada de insumo - Sistema de Integração e Parceria Rural\",\n\t\"1453\": \"Retorno do animal ou da produção - Sistema de Integração e Parceria Rural\",\n\t\"1454\": \"Retorno simbólico do animal ou da produção - Sistema de Integração e Parceria Rural\",\n\t\"1455\": \"Retorno de insumo não utilizado na produção - Sistema de Integração e Parceria Rural\",\n\t\"1456\": \"Entrada referente à remuneração do produtor no Sistema de Integração e Parceria Rural\",\n\t\"1501\": \"Entrada de mercadoria recebida com fim específico de exportação\",\n\t\"1503\":\n\t\t\"Entrada decorrente de devolução de produto remetido com fim específico de exportação, de produção do estabelecimento\",\n\t\"1504\":\n\t\t\"Entrada decorrente de devolução, inclusive simbólica, de mercadoria remetida com fim específico de exportação, adquirida ou recebida de terceiros\",\n\t\"1505\":\n\t\t\"Entrada decorrente de devolução, inclusive simbólica, de mercadorias remetidas para formação de lote de exportação, de produtos industrializados ou produzidos pelo próprio estabelecimento\",\n\t\"1506\":\n\t\t\"Entrada decorrente de devolução, inclusive simbólica, de mercadorias adquiridas ou recebidas de terceiros, remetidas para formação de lote de exportação\",\n\t\"1551\": \"Compra de bem para o ativo imobilizado\",\n\t\"1552\": \"Transferência de bem do ativo imobilizado\",\n\t\"1553\": \"Devolução de venda de bem do ativo imobilizado\",\n\t\"1554\": \"Retorno de bem do ativo imobilizado remetido para uso fora do estabelecimento\",\n\t\"1555\": \"Entrada de bem do ativo imobilizado de terceiro, remetido para uso no estabelecimento\",\n\t\"1556\": \"Compra de material para uso ou consumo\",\n\t\"1557\": \"Transferência de material para uso ou consumo\",\n\t\"1601\": \"Recebimento, por transferência, de crédito de ICMS\",\n\t\"1602\":\n\t\t\"Recebimento, por transferência, de saldo credor de ICMS de outro estabelecimento da mesma empresa, para compensação de saldo devedor de ICMS\",\n\t\"1603\": \"Ressarcimento de ICMS retido por substituição tributária\",\n\t\"1604\": \"Lançamento do crédito relativo à compra de bem para o ativo imobilizado\",\n\t\"1605\":\n\t\t\"Recebimento, por transferência, de saldo devedor de ICMS de outro estabelecimento da mesma empresa\",\n\t\"1651\": \"Compra de combustíveis ou lubrificantes para industrialização subsequente\",\n\t\"1652\": \"Compra de combustíveis ou lubrificantes para comercialização\",\n\t\"1653\": \"Compra de combustíveis ou lubrificantes por consumidor ou usuário final\",\n\t\"1657\": \"Retorno de remessa de combustíveis ou lubrificantes para venda fora do estabelecimento\",\n\t\"1658\": \"Transferência de combustíveis ou lubrificantes para industrialização\",\n\t\"1659\": \"Transferência de combustíveis ou lubrificantes para comercialização\",\n\t\"1660\":\n\t\t\"Devolução de venda de combustíveis ou lubrificantes destinados à industrialização subsequente\",\n\t\"1661\": \"Devolução de venda de combustíveis ou lubrificantes destinados à comercialização\",\n\t\"1662\":\n\t\t\"Devolução de venda de combustíveis ou lubrificantes destinados a consumidor ou usuário final\",\n\t\"1663\": \"Entrada de combustíveis ou lubrificantes para armazenagem\",\n\t\"1664\": \"Retorno de combustíveis ou lubrificantes remetidos para armazenagem\",\n\t\"1901\": \"Entrada para industrialização por encomenda\",\n\t\"1902\": \"Retorno de mercadoria remetida para industrialização por encomenda\",\n\t\"1903\":\n\t\t\"Entrada de mercadoria remetida para industrialização e não aplicada no referido processo\",\n\t\"1904\":\n\t\t\"Retorno de remessa para venda fora do estabelecimento, ou qualquer entrada e retorno de remessa efetuada pelo MEI com exceção dos classificados nos códigos 1.202, 1.503, 1.504, 1.505 e 1.506\",\n\t\"1905\":\n\t\t\"Entrada de mercadoria recebida para depósito em depósito fechado, armazém geral ou outro estabelecimentoda mesma empresa ou de terceiro\",\n\t\"1906\":\n\t\t\"Retorno de mercadoria remetida para depósito fechado, armazém geral ou outro estabelecimento, da mesma empresa ou de terceiro\",\n\t\"1907\":\n\t\t\"Retorno simbólico de mercadoria remetida para depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"1908\": \"Entrada de bem por conta de contrato de comodato ou locação\",\n\t\"1909\": \"Retorno de bem remetido por conta de contrato de comodato ou locação\",\n\t\"1910\": \"Entrada de bonificação, doação ou brinde\",\n\t\"1911\": \"Entrada de amostra grátis\",\n\t\"1912\": \"Entrada de mercadoria ou bem recebido para demonstração ou mostruário\",\n\t\"1913\": \"Retorno de mercadoria ou bem remetido para demonstração, mostruário ou treinamento\",\n\t\"1914\": \"Retorno de mercadoria ou bem remetido para exposição ou feira\",\n\t\"1915\": \"Entrada de mercadoria ou bem recebido para conserto ou reparo\",\n\t\"1916\": \"Retorno de mercadoria ou bem remetido para conserto ou reparo\",\n\t\"1917\": \"Entrada de mercadoria recebida em consignação mercantil ou industrial\",\n\t\"1918\": \"Devolução de mercadoria remetida em consignação mercantil ou industrial\",\n\t\"1919\":\n\t\t\"Devolução simbólica de mercadoria vendida ou utilizada em processo industrial, remetida anteriormente em consignação mercantil ou industrial\",\n\t\"1920\": \"Entrada de embalagens, bombonas, vasilhames, sacarias, pallets ou assemelhados\",\n\t\"1921\": \"Retorno de embalagens, bombonas, vasilhames, sacarias, pallets ou assemelhados\",\n\t\"1922\":\n\t\t\"Lançamento efetuado a título de simples faturamento decorrente de compra para recebimento futuro\",\n\t\"1923\": \"Entrada de mercadoria recebida do vendedor remetente, em venda à ordem\",\n\t\"1924\":\n\t\t\"Entrada para industrialização por conta e ordem do adquirente da mercadoria, quando esta não transitar pelo estabelecimento do adquirente\",\n\t\"1925\":\n\t\t\"Retorno de mercadoria remetida para industrialização por conta e ordem do adquirente da mercadoria, quando esta não transitar pelo estabelecimento do adquirente\",\n\t\"1926\":\n\t\t\"Lançamento efetuado a título de reclassificação de mercadoria decorrente de formação de kit ou de sua desagregação\",\n\t\"1931\":\n\t\t\"Lançamento efetuado pelo tomador do serviço de transporte quando a responsabilidade de retenção do imposto for atribuída ao remetente ou alienante da mercadoria, pelo serviço de transporte realizado por transportador autônomo ou por transportador não inscrito na unidade da Federação onde iniciado o serviço\",\n\t\"1932\":\n\t\t\"Aquisição de serviço de transporte iniciado em unidade da Federação diversa daquela onde inscrito o prestador\",\n\t\"1933\": \"Aquisição de serviço sujeito ao ISSQN\",\n\t\"1934\":\n\t\t\"Entrada simbólica de mercadoria recebida para depósito em depósito fechado ou armazém geral\",\n\t\"1949\": \"Outra entrada de mercadoria ou prestação de serviço não especificada\",\n\t\"2101\": \"Compra para industrialização ou produção rural\",\n\t\"2102\": \"Compra para comercialização\",\n\t\"2111\":\n\t\t\"Compra para industrialização de mercadoria recebida anteriormente em consignação industrial\",\n\t\"2113\":\n\t\t\"Compra para comercialização, de mercadoria recebida anteriormente em consignação mercantil\",\n\t\"2116\":\n\t\t\"Compra para industrialização ou produção rural originada de encomenda para recebimento futuro\",\n\t\"2117\": \"Compra para comercialização originada de encomenda para recebimento futuro\",\n\t\"2118\":\n\t\t\"Compra de mercadoria para comercialização pelo adquirente originário, entregue pelo vendedor remetente ao destinatário, em venda à ordem\",\n\t\"2120\":\n\t\t\"Compra para industrialização ou produção rural, em venda à ordem, já recebida do vendedor remetente\",\n\t\"2121\": \"Compra para comercialização, em venda à ordem, já recebida do vendedor remetente\",\n\t\"2122\":\n\t\t\"Compra para industrialização em que a mercadoria foi remetida pelo fornecedor ao industrializador sem transitar pelo estabelecimento adquirente\",\n\t\"2124\": \"Industrialização efetuada por outra empresa\",\n\t\"2125\":\n\t\t\"Industrialização efetuada por outra empresa quando a mercadoria remetida para utilização no processo de industrialização não transitou pelo estabelecimento adquirente da mercadoria\",\n\t\"2126\": \"Compra para utilização na prestação de serviço sujeita ao ICMS\",\n\t\"2128\": \"Compra para utilização na prestação de serviço sujeita ao ISSQN\",\n\t\"2131\":\n\t\t\"Entrada de mercadoria, com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"2132\":\n\t\t\"Fixação de preço de produção do estabelecimento produtor, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo, para comercialização\",\n\t\"2135\":\n\t\t\"Fixação de preço de produção do estabelecimento produtor, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo, para industrialização\",\n\t\"2151\": \"Transferência para industrialização ou produção rural\",\n\t\"2152\": \"Transferência para comercialização\",\n\t\"2153\": \"Transferência de energia elétrica para distribuição\",\n\t\"2154\": \"Transferência para utilização na prestação de serviço\",\n\t\"2159\": \"Entrada decorrente do fornecimento de produto ou mercadoria em ato cooperativo\",\n\t\"2201\": \"Devolução de venda de produção do estabelecimento\",\n\t\"2202\":\n\t\t\"Devolução de venda de mercadoria adquirida ou recebida de terceiros, ou qualquer devolução de mercadoria efetuada pelo MEI com exceção das classificadas nos códigos 2.503, 2.504, 2.505 e 2.506\",\n\t\"2203\":\n\t\t\"Devolução de venda de produção do estabelecimento, destinada à Zona Franca de Manaus ou Áreas de Livre Comércio\",\n\t\"2204\":\n\t\t\"Devolução de venda de mercadoria adquirida ou recebida de terceiros, destinada à Zona Franca de Manaus ou Áreas de Livre Comércio\",\n\t\"2205\": \"Anulação de valor relativo à prestação de serviço de comunicação\",\n\t\"2206\": \"Anulação de valor relativo à prestação de serviço de transporte\",\n\t\"2207\": \"Anulação de valor relativo à venda de energia elétrica\",\n\t\"2208\": \"Devolução de produção do estabelecimento, remetida em transferência\",\n\t\"2209\": \"Devolução de mercadoria adquirida ou recebida de terceiros, remetida em transferência\",\n\t\"2212\":\n\t\t\"Devolução de venda no mercado interno de mercadoria industrializada e insumo importado sob o Regime Aduaneiro Especial de Entreposto Industrial sob Controle Informatizado do Sistema Público de Escrituração Digital (Recof-Sped)\",\n\t\"2213\":\n\t\t\"Devolução de remessa de produção do estabelecimento, com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"2214\":\n\t\t\"Devolução referente à fixação de preço de produção do estabelecimento produtor, em ato cooperativo\",\n\t\"2215\": \"Devolução de fornecimento de produção do estabelecimento em ato cooperativo\",\n\t\"2216\":\n\t\t\"Devolução de fornecimento de mercadoria adquirida ou recebida de terceiros em ato cooperativo\",\n\t\"2251\": \"Compra de energia elétrica para distribuição ou comercialização\",\n\t\"2252\": \"Compra de energia elétrica por estabelecimento industrial\",\n\t\"2253\": \"Compra de energia elétrica por estabelecimento comercial\",\n\t\"2254\": \"Compra de energia elétrica por estabelecimento prestador de serviço de transporte\",\n\t\"2255\": \"Compra de energia elétrica por estabelecimento prestador de serviço de comunicação\",\n\t\"2256\": \"Compra de energia elétrica por estabelecimento de produtor rural\",\n\t\"2257\": \"Compra de energia elétrica para consumo por demanda contratada\",\n\t\"2301\": \"Aquisição de serviço de comunicação para execução de serviço da mesma natureza\",\n\t\"2302\": \"Aquisição de serviço de comunicação por estabelecimento industrial\",\n\t\"2303\": \"Aquisição de serviço de comunicação por estabelecimento comercial\",\n\t\"2304\":\n\t\t\"Aquisição de serviço de comunicação por estabelecimento de prestador de serviço de transporte\",\n\t\"2305\":\n\t\t\"Aquisição de serviço de comunicação por estabelecimento de geradora ou de distribuidora de energia elétrica\",\n\t\"2306\": \"Aquisição de serviço de comunicação por estabelecimento de produtor rural\",\n\t\"2351\": \"Aquisição de serviço de transporte para execução de serviço da mesma natureza\",\n\t\"2352\": \"Aquisição de serviço de transporte por estabelecimento industrial\",\n\t\"2353\": \"Aquisição de serviço de transporte por estabelecimento comercial\",\n\t\"2354\":\n\t\t\"Aquisição de serviço de transporte por estabelecimento de prestador de serviço de comunicação\",\n\t\"2355\":\n\t\t\"Aquisição de serviço de transporte por estabelecimento de geradora ou de distribuidora de energia elétrica\",\n\t\"2356\": \"Aquisição de serviço de transporte por estabelecimento de produtor rural\",\n\t\"2401\":\n\t\t\"Compra para industrialização ou produção rural em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"2403\":\n\t\t\"Compra para comercialização em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"2406\":\n\t\t\"Compra de bem para o ativo imobilizado cuja mercadoria está sujeita ao regime de substituição tributária\",\n\t\"2407\":\n\t\t\"Compra de mercadoria para uso ou consumo cuja mercadoria está sujeita ao regime de substituição tributária\",\n\t\"2408\":\n\t\t\"Transferência para industrialização ou produção rural em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"2409\":\n\t\t\"Transferência para comercialização em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"2410\":\n\t\t\"Devolução de venda de produção do estabelecimento em operação com produto sujeito ao regime de substituição tributária\",\n\t\"2411\":\n\t\t\"Devolução de venda de mercadoria adquirida ou recebida de terceiros em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"2414\":\n\t\t\"Retorno de produção do estabelecimento, remetida para venda fora do estabelecimento em operação com produto sujeito ao regime de substituição tributária\",\n\t\"2415\":\n\t\t\"Retorno de mercadoria adquirida ou recebida de terceiros, remetida para venda fora do estabelecimento em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"2451\": \"Entrada de animal - Sistema de Integração e Parceria Rural\",\n\t\"2452\": \"Entrada de insumo - Sistema de Integração e Parceria Rural\",\n\t\"2453\": \"Retorno do animal ou da produção - Sistema de Integração e Parceria Rural\",\n\t\"2454\": \"Retorno simbólico do animal ou da produção - Sistema de Integração e Parceria Rural\",\n\t\"2455\": \"Retorno de insumo não utilizado na produção - Sistema de Integração e Parceria Rural\",\n\t\"2456\": \"Entrada referente à remuneração do produtor no Sistema de Integração e Parceria Rural\",\n\t\"2501\": \"Entrada de mercadoria recebida com fim específico de exportação\",\n\t\"2503\":\n\t\t\"Entrada decorrente de devolução de produto remetido com fim específico de exportação, de produção do estabelecimento\",\n\t\"2504\":\n\t\t\"Entrada decorrente de devolução, inclusive simbólica, de mercadoria remetida com fim específico de exportação, adquirida ou recebida de terceiros\",\n\t\"2505\":\n\t\t\"Entrada decorrente de devolução, inclusive simbólica, de mercadorias remetidas para formação de lote de exportação, de produtos industrializados ou produzidos pelo próprio estabelecimento\",\n\t\"2506\":\n\t\t\"Entrada decorrente de devolução, inclusive simbólica, de mercadorias adquiridas ou recebidas de terceiros, remetidas para formação de lote de exportação\",\n\t\"2551\": \"Compra de bem para o ativo imobilizado\",\n\t\"2552\": \"Transferência de bem do ativo imobilizado\",\n\t\"2553\": \"Devolução de venda de bem do ativo imobilizado\",\n\t\"2554\": \"Retorno de bem do ativo imobilizado remetido para uso fora do estabelecimento\",\n\t\"2555\": \"Entrada de bem do ativo imobilizado de terceiro, remetido para uso no estabelecimento\",\n\t\"2556\": \"Compra de material para uso ou consumo\",\n\t\"2557\": \"Transferência de material para uso ou consumo\",\n\t\"2603\": \"Ressarcimento de ICMS retido por substituição tributária\",\n\t\"2651\": \"Compra de combustíveis ou lubrificantes para industrialização subsequente\",\n\t\"2652\": \"Compra de combustíveis ou lubrificantes para comercialização\",\n\t\"2653\": \"Compra de combustíveis ou lubrificantes por consumidor ou usuário final\",\n\t\"2657\": \"Retorno de remessa de combustíveis ou lubrificantes para venda fora do estabelecimento\",\n\t\"2658\": \"Transferência de combustíveis ou lubrificantes para industrialização\",\n\t\"2659\": \"Transferência de combustíveis ou lubrificantes para comercialização\",\n\t\"2660\":\n\t\t\"Devolução de venda de combustíveis ou lubrificantes destinados à industrialização subsequente\",\n\t\"2661\": \"Devolução de venda de combustíveis ou lubrificantes destinados à comercialização\",\n\t\"2662\":\n\t\t\"Devolução de venda de combustíveis ou lubrificantes destinados a consumidor ou usuário final\",\n\t\"2663\": \"Entrada de combustíveis ou lubrificantes para armazenagem\",\n\t\"2664\": \"Retorno de combustíveis ou lubrificantes remetidos para armazenagem\",\n\t\"2901\": \"Entrada para industrialização por encomenda\",\n\t\"2902\": \"Retorno de mercadoria remetida para industrialização por encomenda\",\n\t\"2903\":\n\t\t\"Entrada de mercadoria remetida para industrialização e não aplicada no referido processo\",\n\t\"2904\":\n\t\t\"Retorno de remessa para venda fora do estabelecimento, ou qualquer entrada e retorno de remessa efetuada pelo MEI com exceção dos classificados nos códigos 2.202, 2.503, 2.504, 2.505 e 2.506\",\n\t\"2905\":\n\t\t\"Entrada de mercadoria recebida para depósito em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"2906\":\n\t\t\"Retorno de mercadoria remetida para depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"2907\":\n\t\t\"Retorno simbólico de mercadoria remetida para depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"2908\": \"Entrada de bem por conta de contrato de comodato ou locação\",\n\t\"2909\": \"Retorno de bem remetido por conta de contrato de comodato ou locação\",\n\t\"2910\": \"Entrada de bonificação, doação ou brinde\",\n\t\"2911\": \"Entrada de amostra grátis\",\n\t\"2912\": \"Entrada de mercadoria ou bem recebido para demonstração ou mostruário\",\n\t\"2913\": \"Retorno de mercadoria ou bem remetido para demonstração, mostruário ou treinamento\",\n\t\"2914\": \"Retorno de mercadoria ou bem remetido para exposição ou feira\",\n\t\"2915\": \"Entrada de mercadoria ou bem recebido para conserto ou reparo\",\n\t\"2916\": \"Retorno de mercadoria ou bem remetido para conserto ou reparo\",\n\t\"2917\": \"Entrada de mercadoria recebida em consignação mercantil ou industrial\",\n\t\"2918\": \"Devolução de mercadoria remetida em consignação mercantil ou industrial\",\n\t\"2919\":\n\t\t\"Devolução simbólica de mercadoria vendida ou utilizada em processo industrial, remetida anteriormente em consignação mercantil ou industrial\",\n\t\"2920\": \"Entrada de embalagens, bombonas, vasilhames, sacarias, pallets ou assemelhados\",\n\t\"2921\": \"Retorno de embalagens, bombonas, vasilhames, sacarias, pallets ou assemelhados\",\n\t\"2922\":\n\t\t\"Lançamento efetuado a título de simples faturamento decorrente de compra para recebimento futuro\",\n\t\"2923\": \"Entrada de mercadoria recebida do vendedor remetente, em venda à ordem\",\n\t\"2924\":\n\t\t\"Entrada para industrialização por conta e ordem do adquirente da mercadoria, quando esta não transitar pelo estabelecimento do adquirente\",\n\t\"2925\":\n\t\t\"Retorno de mercadoria remetida para industrialização por conta e ordem do adquirente da mercadoria, quando esta não transitar pelo estabelecimento do adquirente\",\n\t\"2931\":\n\t\t\"Lançamento efetuado pelo tomador do serviço de transporte quando a responsabilidade de retenção do imposto for atribuída ao remetente ou alienante da mercadoria, pelo serviço de transporte realizado por transportador autônomo ou por transportador não inscrito na unidade da Federação onde iniciado o serviço\",\n\t\"2932\":\n\t\t\"Aquisição de serviço de transporte iniciado em unidade da Federação diversa daquela onde inscrito o prestador\",\n\t\"2933\": \"Aquisição de serviço sujeito ao ISSQN\",\n\t\"2934\":\n\t\t\"Entrada simbólica de mercadoria recebida para depósito em depósito fechado ou armazém geral\",\n\t\"2949\": \"Outra entrada de mercadoria ou prestação de serviço não especificada\",\n\t\"3101\": \"Compra para industrialização ou produção rural\",\n\t\"3102\": \"Compra para comercialização\",\n\t\"3126\": \"Compra para utilização na prestação de serviço sujeita ao ICMS\",\n\t\"3127\": \"Compra para industrialização sob o regime de “drawback”\",\n\t\"3128\": \"Compra para utilização na prestação de serviço sujeita ao ISSQN\",\n\t\"3129\":\n\t\t\"Compra para industrialização sob o Regime Aduaneiro Especial de Entreposto Industrial sob Controle Informatizado do Sistema Público de Escrituração Digital (Recof-Sped)\",\n\t\"3201\": \"Devolução de venda de produção do estabelecimento\",\n\t\"3202\": \"Devolução de venda de mercadoria adquirida ou recebida de terceiros\",\n\t\"3205\": \"Anulação de valor relativo à prestação de serviço de comunicação\",\n\t\"3206\": \"Anulação de valor relativo à prestação de serviço de transporte\",\n\t\"3207\": \"Anulação de valor relativo à venda de energia elétrica\",\n\t\"3211\": \"Devolução de venda de produção do estabelecimento sob o regime de “drawback”\",\n\t\"3212\":\n\t\t\"Devolução de venda no mercado externo de mercadoria industrializada sob o Regime Aduaneiro Especial de Entreposto Industrial sob Controle Informatizado do Sistema Público de Escrituração Digital (Recof-Sped)\",\n\t\"3251\": \"Compra de energia elétrica para distribuição ou comercialização\",\n\t\"3301\": \"Aquisição de serviço de comunicação para execução de serviço da mesma natureza\",\n\t\"3351\": \"Aquisição de serviço de transporte para execução de serviço da mesma natureza\",\n\t\"3352\": \"Aquisição de serviço de transporte por estabelecimento industrial\",\n\t\"3353\": \"Aquisição de serviço de transporte por estabelecimento comercial\",\n\t\"3354\":\n\t\t\"Aquisição de serviço de transporte por estabelecimento de prestador de serviço de comunicação\",\n\t\"3355\":\n\t\t\"Aquisição de serviço de transporte por estabelecimento de geradora ou de distribuidora de energia elétrica\",\n\t\"3356\": \"Aquisição de serviço de transporte por estabelecimento de produtor rural\",\n\t\"3503\":\n\t\t\"Devolução de mercadoria exportada que tenha sido recebida com fim específico de exportação\",\n\t\"3551\": \"Compra de bem para o ativo imobilizado\",\n\t\"3552\":\n\t\t\"Entrada de produto destinado para uso ou consumo de bordo, em embarcações ou aeronaves exclusivamente em tráfego internacional com destino ao exterior\",\n\t\"3553\": \"Devolução de venda de bem do ativo imobilizado\",\n\t\"3556\": \"Compra de material para uso ou consumo\",\n\t\"3651\": \"Compra de combustíveis ou lubrificantes para industrialização subsequente\",\n\t\"3652\": \"Compra de combustíveis ou lubrificantes para comercialização\",\n\t\"3653\": \"Compra de combustíveis ou lubrificantes por consumidor ou usuário final\",\n\t\"3667\":\n\t\t\"Entrada de combustíveis ou lubrificantes para consumo final, em embarcações ou aeronaves exclusivamente em tráfego internacional com destino ao exterior\",\n\t\"3930\":\n\t\t\"Lançamento efetuado a título de entrada de bem sob amparo de regime especial aduaneiro de admissão temporária\",\n\t\"3949\": \"Outra entrada de mercadoria ou prestação de serviço não especificada\",\n\t\"5101\": \"Venda de produção do estabelecimento\",\n\t\"5102\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, ou qualquer venda de mercadoria efetuada pelo MEI com exceção das saídas classificadas nos códigos 5.501, 5.502, 5.504 e 5.505\",\n\t\"5103\": \"Venda de produção do estabelecimento, efetuada fora do estabelecimento\",\n\t\"5104\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, efetuada fora do estabelecimento\",\n\t\"5105\": \"Venda de produção do estabelecimento que não deva por ele transitar\",\n\t\"5106\": \"Venda de mercadoria adquirida ou recebida de terceiros, que não deva por ele transitar\",\n\t\"5109\":\n\t\t\"Venda de produção do estabelecimento, destinada à Zona Franca de Manaus ou Áreas de Livre Comércio\",\n\t\"5110\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, destinada à Zona Franca de Manaus ou Áreas de Livre Comércio\",\n\t\"5111\": \"Venda de produção do estabelecimento remetida anteriormente em consignação industrial\",\n\t\"5112\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros remetida anteriormente em consignação industrial\",\n\t\"5113\": \"Venda de produção do estabelecimento remetida anteriormente em consignação mercantil\",\n\t\"5114\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros remetida anteriormente em consignação mercantil\",\n\t\"5115\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, recebida anteriormente em consignação mercantil\",\n\t\"5116\": \"Venda de produção do estabelecimento originada de encomenda para entrega futura\",\n\t\"5117\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, originada de encomenda para entrega futura\",\n\t\"5118\":\n\t\t\"Venda de produção do estabelecimento industrial ou rural, entregue ao destinatário por conta e ordem do adquirente originário, em venda à ordem\",\n\t\"5119\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros entregue ao destinatário por conta e ordem do adquirente originário, em venda à ordem\",\n\t\"5120\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros entregue ao destinatário pelo vendedor remetente, em venda à ordem\",\n\t\"5122\":\n\t\t\"Venda de produção do estabelecimento remetida para industrialização, por conta e ordem do adquirente, sem transitar pelo estabelecimento do adquirente\",\n\t\"5123\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros remetida para industrialização, por conta e ordem do adquirente, sem transitar pelo estabelecimento do adquirente\",\n\t\"5124\": \"Industrialização efetuada para outra empresa\",\n\t\"5125\":\n\t\t\"Industrialização efetuada para outra empresa quando a mercadoria recebida para utilização no processo de industrialização não transitar pelo estabelecimento adquirente da mercadoria\",\n\t\"5129\":\n\t\t\"Venda de mercadoria industrializada e de insumo importado sob o amparo do Regime Aduaneiro Especial de Entreposto Industrial sob Controle Informatizado do Sistema Público de Escrituração Digital (Recof-Sped)\",\n\t\"5131\":\n\t\t\"Remessa de produção do estabelecimento, com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"5132\":\n\t\t\"Fixação de preço de produção do estabelecimento, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"5151\": \"Transferência de produção do estabelecimento\",\n\t\"5152\": \"Transferência de mercadoria adquirida ou recebida de terceiros\",\n\t\"5153\": \"Transferência de energia elétrica\",\n\t\"5155\":\n\t\t\"Transferência de produção do estabelecimento para depósito em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro, que não deva por ele transitar\",\n\t\"5156\":\n\t\t\"Transferência de mercadoria adquirida ou recebida de terceiros para depósito em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro, que não deva por ele transitar\",\n\t\"5159\": \"Fornecimento de produção do estabelecimento em ato cooperativo\",\n\t\"5160\": \"Fornecimento de mercadoria adquirida ou recebida de terceiros em ato cooperativo\",\n\t\"5201\": \"Devolução de compra para industrialização ou produção rural\",\n\t\"5202\":\n\t\t\"Devolução de compra para comercialização, ou qualquer devolução de mercadorias efetuada pelo MEI com exceção das classificadas no código 5.503\",\n\t\"5205\": \"Anulação de valor relativo à aquisição de serviço de comunicação\",\n\t\"5206\": \"Anulação de valor relativo à aquisição de serviço de transporte\",\n\t\"5207\": \"Anulação de valor relativo à compra de energia elétrica\",\n\t\"5208\":\n\t\t\"Devolução de mercadoria recebida em transferência para industrialização ou produção rural\",\n\t\"5209\": \"Devolução de mercadoria recebida em transferência para comercialização\",\n\t\"5210\": \"Devolução de compra para utilização na prestação de serviço\",\n\t\"5213\":\n\t\t\"Devolução de entrada, inclusive simbólica, de mercadoria com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"5214\":\n\t\t\"Devolução referente à fixação de preço de produção do estabelecimento produtor, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo, para comercialização\",\n\t\"5215\":\n\t\t\"Devolução referente à fixação de preço de produção do estabelecimento produtor, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo, para industrialização\",\n\t\"5216\":\n\t\t\"Devolução de entrada decorrente do fornecimento de produto ou mercadoria em ato cooperativo\",\n\t\"5251\": \"Venda de energia elétrica para distribuição ou comercialização\",\n\t\"5252\": \"Venda de energia elétrica para estabelecimento industrial\",\n\t\"5253\": \"Venda de energia elétrica para estabelecimento comercial\",\n\t\"5254\": \"Venda de energia elétrica para estabelecimento prestador de serviço de transporte\",\n\t\"5255\": \"Venda de energia elétrica para estabelecimento prestador de serviço de comunicação\",\n\t\"5256\": \"Venda de energia elétrica para estabelecimento de produtor rural\",\n\t\"5257\": \"Venda de energia elétrica para consumo por demanda contratada\",\n\t\"5258\": \"Venda de energia elétrica a não contribuinte\",\n\t\"5301\": \"Prestação de serviço de comunicação para execução de serviço da mesma natureza\",\n\t\"5302\": \"Prestação de serviço de comunicação a estabelecimento industrial\",\n\t\"5303\": \"Prestação de serviço de comunicação a estabelecimento comercial\",\n\t\"5304\":\n\t\t\"Prestação de serviço de comunicação a estabelecimento de prestador de serviço de transporte\",\n\t\"5305\":\n\t\t\"Prestação de serviço de comunicação a estabelecimento de geradora ou de distribuidora de energia elétrica\",\n\t\"5306\": \"Prestação de serviço de comunicação a estabelecimento de produtor rural\",\n\t\"5307\": \"Prestação de serviço de comunicação a não contribuinte\",\n\t\"5351\": \"Prestação de serviço de transporte para execução de serviço da mesma natureza\",\n\t\"5352\": \"Prestação de serviço de transporte a estabelecimento industrial\",\n\t\"5353\": \"Prestação de serviço de transporte a estabelecimento comercial\",\n\t\"5354\":\n\t\t\"Prestação de serviço de transporte a estabelecimento de prestador de serviço de comunicação\",\n\t\"5355\":\n\t\t\"Prestação de serviço de transporte a estabelecimento de geradora ou de distribuidora de energia elétrica\",\n\t\"5356\": \"Prestação de serviço de transporte a estabelecimento de produtor rural\",\n\t\"5357\": \"Prestação de serviço de transporte a não contribuinte\",\n\t\"5359\":\n\t\t\"Prestação de serviço de transporte a contribuinte ou a não contribuinte quando a mercadoria transportada está dispensada de emissão de nota fiscal\",\n\t\"5360\":\n\t\t\"Prestação de serviço de transporte a contribuinte substituto em relação ao serviço de transporte\",\n\t\"5401\":\n\t\t\"Venda de produção do estabelecimento em operação com produto sujeito ao regime de substituição tributária, na condição de contribuinte substituto\",\n\t\"5402\":\n\t\t\"Venda de produção do estabelecimento de produto sujeito ao regime de substituição tributária, em operação entre contribuintes substitutos do mesmo produto\",\n\t\"5403\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros em operação com mercadoria sujeita ao regime de substituição tributária, na condição de contribuinte substituto\",\n\t\"5405\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros em operação com mercadoria sujeita ao regime de substituição tributária, na condição de contribuinte substituído\",\n\t\"5408\":\n\t\t\"Transferência de produção do estabelecimento em operação com produto sujeito ao regime de substituição tributária\",\n\t\"5409\":\n\t\t\"Transferência de mercadoria adquirida ou recebida de terceiros em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"5410\":\n\t\t\"Devolução de compra para industrialização ou produção rural em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"5411\":\n\t\t\"Devolução de compra para comercialização em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"5412\":\n\t\t\"Devolução de bem do ativo imobilizado, em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"5413\":\n\t\t\"Devolução de mercadoria destinada para uso ou consumo, em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"5414\":\n\t\t\"Remessa de produção do estabelecimento para venda fora do estabelecimento em operação com produto sujeito ao regime de substituição tributária\",\n\t\"5415\":\n\t\t\"Remessa de mercadoria adquirida ou recebida de terceiros para venda fora do estabelecimento, em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"5451\": \"Remessa de animal - Sistema de Integração e Parceria Rural\",\n\t\"5452\": \"Remessa de insumo - Sistema de Integração e Parceria Rural\",\n\t\"5453\": \"Retorno de animal ou da produção - Sistema de Integração e Parceria Rural\",\n\t\"5454\": \"Retorno simbólico de animal ou da produção - Sistema de Integração e Parceria Rural\",\n\t\"5455\": \"Retorno de insumos não utilizados na produção - Sistema de Integração e Parceria Rural\",\n\t\"5456\": \"Saída referente à remuneração do produtor - Sistema de Integração e Parceria Rural\",\n\t\"5501\": \"Remessa de produção do estabelecimento, com fim específico de exportação\",\n\t\"5502\":\n\t\t\"Remessa de mercadoria adquirida ou recebida de terceiros, com fim específico de exportação\",\n\t\"5503\": \"Devolução de mercadoria recebida com fim específico de exportação\",\n\t\"5504\":\n\t\t\"Remessa de mercadorias para formação de lote de exportação, de produtos industrializados ou produzidos pelo próprio estabelecimento\",\n\t\"5505\":\n\t\t\"Remessa de mercadorias, adquiridas ou recebidas de terceiros, para formação de lote de exportação\",\n\t\"5551\": \"Venda de bem do ativo imobilizado\",\n\t\"5552\": \"Transferência de bem do ativo imobilizado\",\n\t\"5553\": \"Devolução de compra de bem para o ativo imobilizado\",\n\t\"5554\": \"Remessa de bem do ativo imobilizado para uso fora do estabelecimento\",\n\t\"5555\": \"Devolução de bem do ativo imobilizado de terceiro, recebido para uso no estabelecimento\",\n\t\"5556\": \"Devolução de compra de material para uso ou consumo\",\n\t\"5557\": \"Transferência de material para uso ou consumo\",\n\t\"5601\": \"Transferência de crédito de ICMS acumulado\",\n\t\"5602\":\n\t\t\"Transferência de saldo credor de ICMS para outro estabelecimento da mesma empresa, destinado à compensação de saldo devedor de ICMS\",\n\t\"5603\": \"Ressarcimento de ICMS retido por substituição tributária\",\n\t\"5605\": \"Transferência de saldo devedor de ICMS de outro estabelecimento da mesma empresa\",\n\t\"5606\": \"Utilização de saldo credor de ICMS para extinção por compensação de débitos fiscais\",\n\t\"5651\":\n\t\t\"Venda de combustíveis ou lubrificantes de produção do estabelecimento destinados à industrialização subsequente\",\n\t\"5652\":\n\t\t\"Venda de combustíveis ou lubrificantes de produção do estabelecimento destinados à comercialização\",\n\t\"5653\":\n\t\t\"Venda de combustíveis ou lubrificantes de produção do estabelecimento destinados a consumidor ou usuário final\",\n\t\"5654\":\n\t\t\"Venda de combustíveis ou lubrificantes adquiridos ou recebidos de terceiros destinados à industrialização subsequente\",\n\t\"5655\":\n\t\t\"Venda de combustíveis ou lubrificantes adquiridos ou recebidos de terceiros destinados à comercialização\",\n\t\"5656\":\n\t\t\"Venda de combustíveis ou lubrificantes adquiridos ou recebidos de terceiros destinados a consumidor ou usuário final\",\n\t\"5657\":\n\t\t\"Remessa de combustíveis ou lubrificantes adquiridos ou recebidos de terceiros para venda fora do estabelecimento\",\n\t\"5658\": \"Transferência de combustíveis ou lubrificantes de produção do estabelecimento\",\n\t\"5659\": \"Transferência de combustíveis ou lubrificantes adquiridos ou recebidos de terceiro\",\n\t\"5660\":\n\t\t\"Devolução de compra de combustíveis ou lubrificantes adquiridos para industrialização subsequente\",\n\t\"5661\": \"Devolução de compra de combustíveis ou lubrificantes adquiridos para comercialização\",\n\t\"5662\":\n\t\t\"Devolução de compra de combustíveis ou lubrificantes adquiridos por consumidor ou usuário final\",\n\t\"5663\": \"Remessa para armazenagem de combustíveis ou lubrificantes\",\n\t\"5664\": \"Retorno de combustíveis ou lubrificantes recebidos para armazenagem\",\n\t\"5665\": \"Retorno simbólico de combustíveis ou lubrificantes recebidos para armazenagem\",\n\t\"5666\":\n\t\t\"Remessa por conta e ordem de terceiros de combustíveis ou lubrificantes recebidos para armazenagem\",\n\t\"5667\":\n\t\t\"Venda de combustíveis ou lubrificantes a consumidor ou usuário final estabelecido em outra unidade da Federação\",\n\t\"5901\": \"Remessa para industrialização por encomenda\",\n\t\"5902\": \"Retorno de mercadoria utilizada na industrialização por encomenda\",\n\t\"5903\":\n\t\t\"Retorno de mercadoria recebida para industrialização e não aplicada no referido processo\",\n\t\"5904\":\n\t\t\"Remessa para venda fora do estabelecimento, ou qualquer remessa efetuada pelo MEI com exceção das classificadas nos códigos 5.502 e 5.505\",\n\t\"5905\":\n\t\t\"Remessa para depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"5906\":\n\t\t\"Retorno de mercadoria depositada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"5907\":\n\t\t\"Retorno simbólico de mercadoria depositada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"5908\": \"Remessa de bem por conta de contrato de comodato ou locação\",\n\t\"5909\": \"Retorno de bem recebido por conta de contrato de comodato ou locação\",\n\t\"5910\": \"Remessa em bonificação, doação ou brinde\",\n\t\"5911\": \"Remessa de amostra grátis\",\n\t\"5912\": \"Remessa de mercadoria ou bem para demonstração, mostruário ou treinamento\",\n\t\"5913\": \"Retorno de mercadoria ou bem recebido para demonstração ou mostruário\",\n\t\"5914\": \"Remessa de mercadoria ou bem para exposição ou feira\",\n\t\"5915\": \"Remessa de mercadoria ou bem para conserto ou reparo\",\n\t\"5916\": \"Retorno de mercadoria ou bem recebido para conserto ou reparo\",\n\t\"5917\": \"Remessa de mercadoria em consignação mercantil ou industrial\",\n\t\"5918\": \"Devolução de mercadoria recebida em consignação mercantil ou industrial\",\n\t\"5919\":\n\t\t\"Devolução simbólica de mercadoria vendida ou utilizada em processo industrial, recebida anteriormente em consignação mercantil ou industrial\",\n\t\"5920\":\n\t\t\"Remessa de embalagens, bombonas, vasilhames, sacarias, pallets, containers ou assemelhados\",\n\t\"5921\":\n\t\t\"Devolução de embalagens, bombonas, vasilhames, sacarias, pallets, containers ou assemelhados\",\n\t\"5922\":\n\t\t\"Lançamento efetuado a título de simples faturamento decorrente de venda para entrega futura\",\n\t\"5923\":\n\t\t\"Remessa de mercadoria por conta e ordem de terceiros, em venda à ordem ou em operações com armazém geral ou depósito fechado\",\n\t\"5924\":\n\t\t\"Remessa para industrialização por conta e ordem do adquirente da mercadoria, quando esta não transitar pelo estabelecimento do adquirente\",\n\t\"5925\":\n\t\t\"Retorno de mercadoria recebida para industrialização por conta e ordem do adquirente da mercadoria, quando aquela não transitar pelo estabelecimento do adquirente\",\n\t\"5926\":\n\t\t\"Lançamento efetuado a título de reclassificação de mercadoria decorrente de formação de kit ou de sua desagregação\",\n\t\"5927\":\n\t\t\"Lançamento efetuado a título de baixa de estoque decorrente de perda, roubo, deterioração\",\n\t\"5928\":\n\t\t\"Lançamento efetuado a título de baixa de estoque decorrente do encerramento da atividade do estabelecimento da empresa ou transferência por venda do fundo de comércio\",\n\t\"5929\":\n\t\t\"Lançamento efetuado em decorrência de emissão de documento fiscal relativo à operação ou prestação também acobertada por documento fiscal do varejo\",\n\t\"5931\":\n\t\t\"Lançamento efetuado em decorrência da responsabilidade de retenção do imposto por substituição tributária, atribuída ao remetente ou alienante da mercadoria, pelo serviço de transporte realizado por transportador autônomo ou por transportador não inscrito na unidade da Federação onde iniciado o serviço\",\n\t\"5932\":\n\t\t\"Prestação de serviço de transporte iniciada em unidade da Federação diversa daquela onde inscrito o prestador\",\n\t\"5933\": \"Prestação de serviço sujeita ao ISSQN\",\n\t\"5934\": \"Remessa simbólica de mercadoria depositada em armazém geral ou depósito fechado\",\n\t\"5949\": \"Outra saída de mercadoria ou prestação de serviço não especificada\",\n\t\"6101\": \"Venda de produção do estabelecimento\",\n\t\"6102\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, ou qualquer venda de mercadoria efetuada pelo MEI com exceção das saídas classificadas nos códigos 6.501, 6.502, 6.504 e 6.505\",\n\t\"6103\": \"Venda de produção do estabelecimento, efetuada fora do estabelecimento\",\n\t\"6104\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, efetuada fora do estabelecimento\",\n\t\"6105\":\n\t\t\"Venda de produção do estabelecimento armazenada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro, que não deva por ele transitar\",\n\t\"6106\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros armazenada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro, que não deva por ele transitar\",\n\t\"6107\": \"Venda de produção do estabelecimento, destinada a não contribuinte\",\n\t\"6108\": \"Venda de mercadoria adquirida ou recebida de terceiros, destinada a não contribuinte\",\n\t\"6109\":\n\t\t\"Venda de produção do estabelecimento, destinada à Zona Franca de Manaus ou Áreas de Livre Comércio\",\n\t\"6110\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, destinada à Zona Franca de Manaus ou Áreas de Livre Comércio\",\n\t\"6111\": \"Venda de produção do estabelecimento remetida anteriormente em consignação industrial\",\n\t\"6112\":\n\t\t\"Venda de mercadoria adquirida ou recebida de Terceiros remetida anteriormente em consignação industrial\",\n\t\"6113\": \"Venda de produção do estabelecimento remetida anteriormente em consignação mercantil\",\n\t\"6114\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros remetida anteriormente em consignação mercantil\",\n\t\"6115\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, recebida anteriormente em consignação mercantil\",\n\t\"6116\": \"Venda de produção do estabelecimento originada de encomenda para entrega futura\",\n\t\"6117\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros, originada de encomenda para entrega futura\",\n\t\"6118\":\n\t\t\"Venda de produção do estabelecimento industrial ou rural, entregue ao destinatário por conta e ordem do adquirente originário, em venda à ordem\",\n\t\"6119\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros entregue ao destinatário por conta e ordem do adquirente originário, em venda à ordem\",\n\t\"6120\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros entregue ao destinatário pelo vendedor remetente, em venda à ordem\",\n\t\"6122\":\n\t\t\"Venda de produção do estabelecimento remetida para industrialização, por conta e ordem do adquirente, sem transitar pelo estabelecimento do adquirente\",\n\t\"6123\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros remetida para industrialização, por conta e ordem do adquirente, sem transitar pelo estabelecimento do adquirente\",\n\t\"6124\": \"Industrialização efetuada para outra empresa\",\n\t\"6125\":\n\t\t\"Industrialização efetuada para outra empresa quando a mercadoria recebida para utilização no processo de industrialização não transitar pelo estabelecimento adquirente da mercadoria\",\n\t\"6129\":\n\t\t\"Venda de mercadoria industrializada e de insumo importado sob o amparo do Regime Aduaneiro Especial de Entreposto Industrial sob Controle Informatizado do Sistema Público de Escrituração Digital (Recof-Sped)\",\n\t\"6131\":\n\t\t\"Remessa de produção do estabelecimento, com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"6132\":\n\t\t\"Fixação de preço de produção do estabelecimento, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"6151\": \"Transferência de produção do estabelecimento\",\n\t\"6152\": \"Transferência de mercadoria adquirida ou recebida de terceiros\",\n\t\"6153\": \"Transferência de energia elétrica\",\n\t\"6155\":\n\t\t\"Transferência de produção do estabelecimento armazenada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro, que não deva por ele transitar\",\n\t\"6156\":\n\t\t\"Transferência de mercadoria adquirida ou recebida de terceiros armazenada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro, que não deva por ele transitar\",\n\t\"6159\": \"Fornecimento de produção do estabelecimento em ato cooperativo\",\n\t\"6160\": \"Fornecimento de mercadoria adquirida ou recebida de terceiros em ato cooperativo\",\n\t\"6201\": \"Devolução de compra para industrialização ou produção rural\",\n\t\"6202\":\n\t\t\"Devolução de compra para comercialização, ou qualquer devolução de mercadoria efetuada pelo MEI com exceção das classificadas no código 6.503\",\n\t\"6205\": \"Anulação de valor relativo à aquisição de serviço de comunicação\",\n\t\"6206\": \"Anulação de valor relativo à aquisição de serviço de transporte\",\n\t\"6207\": \"Anulação de valor relativo à compra de energia elétrica\",\n\t\"6208\":\n\t\t\"Devolução de mercadoria recebida em transferência para industrialização ou produção rural\",\n\t\"6209\": \"Devolução de mercadoria recebida em transferência para comercialização\",\n\t\"6210\": \"Devolução de compra para utilização na prestação de serviço\",\n\t\"6213\":\n\t\t\"Devolução de entrada, inclusive simbólica, de mercadoria, com previsão de posterior ajuste ou fixação de preço, em ato cooperativo\",\n\t\"6214\":\n\t\t\"Devolução referente à fixação de preço de produção do estabelecimento produtor, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo, para comercialização\",\n\t\"6215\":\n\t\t\"Devolução referente à fixação de preço de produção do estabelecimento produtor, inclusive quando remetidas anteriormente com previsão de posterior ajuste ou fixação de preço, em ato cooperativo, para industrialização\",\n\t\"6216\":\n\t\t\"Devolução de entrada decorrente do fornecimento de produto ou mercadoria em ato cooperativo\",\n\t\"6251\": \"Venda de energia elétrica para distribuição ou comercialização\",\n\t\"6252\": \"Venda de energia elétrica para estabelecimento industrial\",\n\t\"6253\": \"Venda de energia elétrica para estabelecimento comercial\",\n\t\"6254\": \"Venda de energia elétrica para estabelecimento prestador de serviço de transporte\",\n\t\"6255\": \"Venda de energia elétrica para estabelecimento prestador de serviço de comunicação\",\n\t\"6256\": \"Venda de energia elétrica para estabelecimento de produtor rural\",\n\t\"6257\": \"Venda de energia elétrica para consumo por demanda contratada\",\n\t\"6258\": \"Venda de energia elétrica a não contribuinte\",\n\t\"6301\": \"Prestação de serviço de comunicação para execução de serviço da mesma natureza\",\n\t\"6302\": \"Prestação de serviço de comunicação a estabelecimento industrial\",\n\t\"6303\": \"Prestação de serviço de comunicação a estabelecimento comercial\",\n\t\"6304\":\n\t\t\"Prestação de serviço de comunicação a estabelecimento de prestador de serviço de transporte\",\n\t\"6305\":\n\t\t\"Prestação de serviço de comunicação a estabelecimento de geradora ou de distribuidora de energia elétrica\",\n\t\"6306\": \"Prestação de serviço de comunicação a estabelecimento de produtor rural\",\n\t\"6307\": \"Prestação de serviço de comunicação a não contribuinte\",\n\t\"6351\": \"Prestação de serviço de transporte para execução de serviço da mesma natureza\",\n\t\"6352\": \"Prestação de serviço de transporte a estabelecimento industrial\",\n\t\"6353\": \"Prestação de serviço de transporte a estabelecimento comercial\",\n\t\"6354\":\n\t\t\"Prestação de serviço de transporte a estabelecimento de prestador de serviço de comunicação\",\n\t\"6355\":\n\t\t\"Prestação de serviço de transporte a estabelecimento de geradora ou de distribuidora de energia elétrica\",\n\t\"6356\": \"Prestação de serviço de transporte a estabelecimento de produtor rural\",\n\t\"6357\": \"Prestação de serviço de transporte a não contribuinte\",\n\t\"6359\":\n\t\t\"Prestação de serviço de transporte a contribuinte ou a não contribuinte quando a mercadoria transportada está dispensada de emissão de nota fiscal\",\n\t\"6360\":\n\t\t\"Prestação de serviço de transporte a contribuinte substituto em relação ao serviço de transporte\",\n\t\"6401\":\n\t\t\"Venda de produção do estabelecimento em operação com produto sujeito ao regime de substituição tributária, na condição de contribuinte substituto\",\n\t\"6402\":\n\t\t\"Venda de produção do estabelecimento de produto sujeito ao regime de substituição tributária, em operação entre contribuintes substitutos do mesmo produto\",\n\t\"6403\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros em operação com mercadoria sujeita ao regime de substituição tributária, na condição de contribuinte substituto\",\n\t\"6404\":\n\t\t\"Venda de mercadoria sujeita ao regime de substituição tributária, cujo imposto já tenha sido retido anteriormente\",\n\t\"6408\":\n\t\t\"Transferência de produção do estabelecimento em operação com produto sujeito ao regime de substituição tributária\",\n\t\"6409\":\n\t\t\"Transferência de mercadoria adquirida ou recebida de terceiros em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"6410\":\n\t\t\"Devolução de compra para industrialização ou produção rural em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"6411\":\n\t\t\"Devolução de compra para comercialização em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"6412\":\n\t\t\"Devolução de bem do ativo imobilizado, em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"6413\":\n\t\t\"Devolução de mercadoria destinada para uso ou consumo, em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"6414\":\n\t\t\"Remessa de produção do estabelecimento para venda fora do estabelecimento em operação com produto sujeito ao regime de substituição tributária\",\n\t\"6415\":\n\t\t\"Remessa de mercadoria adquirida ou recebida de terceiros para venda fora do estabelecimento, em operação com mercadoria sujeita ao regime de substituição tributária\",\n\t\"6451\": \"Remessa de animal - Sistema de Integração e Parceria Rural\",\n\t\"6452\": \"Remessa de insumo - Sistema de Integração e Parceria Rural\",\n\t\"6453\": \"Retorno de animal ou da produção - Sistema de Integração e Parceria Rural\",\n\t\"6454\": \"Retorno simbólico de animal ou da produção - Sistema de Integração e Parceria Rural\",\n\t\"6455\": \"Retorno de insumos não utilizados na produção - Sistema de Integração e Parceria Rural\",\n\t\"6456\": \"Saída referente à remuneração do produtor - Sistema de Integração e Parceria Rural\",\n\t\"6501\": \"Remessa de produção do estabelecimento, com fim específico de exportação\",\n\t\"6502\":\n\t\t\"Remessa de mercadoria adquirida ou recebida de terceiros, com fim específico de exportação\",\n\t\"6503\": \"Devolução de mercadoria recebida com fim específico de exportação\",\n\t\"6504\":\n\t\t\"Remessa de mercadorias para formação de lote de exportação, de produtos industrializados ou produzidos pelo próprio estabelecimento\",\n\t\"6505\":\n\t\t\"Remessa de mercadorias, adquiridas ou recebidas de terceiros, para formação de lote de exportação\",\n\t\"6551\": \"Venda de bem do ativo imobilizado\",\n\t\"6552\": \"Transferência de bem do ativo imobilizado\",\n\t\"6553\": \"Devolução de compra de bem para o ativo imobilizado\",\n\t\"6554\": \"Remessa de bem do ativo imobilizado para uso fora do estabelecimento\",\n\t\"6555\": \"Devolução de bem do ativo imobilizado de terceiro, recebido para uso no estabelecimento\",\n\t\"6556\": \"Devolução de compra de material para uso ou consumo\",\n\t\"6557\": \"Transferência de material para uso ou consumo\",\n\t\"6603\": \"Ressarcimento de ICMS retido por substituição tributária\",\n\t\"6651\":\n\t\t\"Venda de combustíveis ou lubrificantes de produção do estabelecimento destinados à industrialização subsequente\",\n\t\"6652\":\n\t\t\"Venda de combustíveis ou lubrificantes de produção do estabelecimento destinados à comercialização\",\n\t\"6653\":\n\t\t\"Venda de combustíveis ou lubrificantes de produção do estabelecimento destinados a consumidor ou usuário final\",\n\t\"6654\":\n\t\t\"Venda de combustíveis ou lubrificantes adquiridos ou recebidos de terceiros destinados à industrialização subsequente\",\n\t\"6655\":\n\t\t\"Venda de combustíveis ou lubrificantes adquiridos ou recebidos de terceiros destinados à comercialização\",\n\t\"6656\":\n\t\t\"Venda de combustíveis ou lubrificantes adquiridos ou recebidos de terceiros destinados a consumidor ou usuário final\",\n\t\"6657\":\n\t\t\"Remessa de combustíveis ou lubrificantes adquiridos ou recebidos de terceiros para venda fora do estabelecimento\",\n\t\"6658\": \"Transferência de combustíveis ou lubrificantes de produção do estabelecimento\",\n\t\"6659\": \"Transferência de combustíveis ou lubrificantes adquiridos ou recebidos de terceiro\",\n\t\"6660\":\n\t\t\"Devolução de compra de combustíveis ou lubrificantes adquiridos para industrialização subsequente\",\n\t\"6661\": \"Devolução de compra de combustíveis ou lubrificantes adquiridos para comercialização\",\n\t\"6662\":\n\t\t\"Devolução de compra de combustíveis ou lubrificantes adquiridos por consumidor ou usuário final\",\n\t\"6663\": \"Remessa para armazenagem de combustíveis ou lubrificantes\",\n\t\"6664\": \"Retorno de combustíveis ou lubrificantes recebidos para armazenagem\",\n\t\"6665\": \"Retorno simbólico de combustíveis ou lubrificantes recebidos para armazenagem\",\n\t\"6666\":\n\t\t\"Remessa por conta e ordem de terceiros de combustíveis ou lubrificantes recebidos para armazenagem\",\n\t\"6667\":\n\t\t\"Venda de combustíveis ou lubrificantes a consumidor ou usuário final estabelecido em outra unidade da Federação diferente da que ocorrer o consumo\",\n\t\"6901\": \"Remessa para industrialização por encomenda\",\n\t\"6902\": \"Retorno de mercadoria utilizada na industrialização por encomenda\",\n\t\"6903\":\n\t\t\"Retorno de mercadoria recebida para industrialização e não aplicada no referido processo\",\n\t\"6904\":\n\t\t\"Remessa para venda fora do estabelecimento, ou qualquer remessa efetuada pelo MEI com exceção das classificadas nos códigos 6.502 e 6.505\",\n\t\"6905\":\n\t\t\"Remessa para depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"6906\":\n\t\t\"Retorno de mercadoria depositada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"6907\":\n\t\t\"Retorno simbólico de mercadoria depositada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro\",\n\t\"6908\": \"Remessa de bem por conta de contrato de comodato ou locação\",\n\t\"6909\": \"Retorno de bem recebido por conta de contrato de comodato ou locação\",\n\t\"6910\": \"Remessa em bonificação, doação ou brinde\",\n\t\"6911\": \"Remessa de amostra grátis\",\n\t\"6912\": \"Remessa de mercadoria ou bem para demonstração, mostruário ou treinamento\",\n\t\"6913\": \"Retorno de mercadoria ou bem recebido para demonstração ou mostruário\",\n\t\"6914\": \"Remessa de mercadoria ou bem para exposição ou feira\",\n\t\"6915\": \"Remessa de mercadoria ou bem para conserto ou reparo\",\n\t\"6916\": \"Retorno de mercadoria ou bem recebido para conserto ou reparo\",\n\t\"6917\": \"Remessa de mercadoria em consignação mercantil ou industrial\",\n\t\"6918\": \"Devolução de mercadoria recebida em consignação mercantil ou industrial\",\n\t\"6919\":\n\t\t\"Devolução simbólica de mercadoria vendida ou utilizada em processo industrial, recebida anteriormente em consignação mercantil ou industrial\",\n\t\"6920\":\n\t\t\"Remessa de embalagens, bombonas, vasilhames, sacarias, pallets, containers ou assemelhados\",\n\t\"6921\":\n\t\t\"Devolução de embalagens, bombonas, vasilhames, sacarias, pallets, containers ou assemelhados\",\n\t\"6922\":\n\t\t\"Lançamento efetuado a título de simples faturamento decorrente de venda para entrega futura\",\n\t\"6923\":\n\t\t\"Remessa de mercadoria por conta e ordem de terceiros, em venda à ordem ou em operações com armazém geral ou depósito fechado\",\n\t\"6924\":\n\t\t\"Remessa para industrialização por conta e ordem do adquirente da mercadoria, quando esta não transitar pelo estabelecimento do adquirente\",\n\t\"6925\":\n\t\t\"Retorno de mercadoria recebida para industrialização por conta e ordem do adquirente da mercadoria, quando aquela não transitar pelo estabelecimento do adquirente\",\n\t\"6929\":\n\t\t\"Lançamento efetuado em decorrência de emissão de documento fiscal relativo à operação ou prestação também acobertada por documento fiscal do varejo\",\n\t\"6931\":\n\t\t\"Lançamento efetuado em decorrência da responsabilidade de retenção do imposto por substituição tributária, atribuída ao remetente ou alienante da mercadoria, pelo serviço de transporte realizado por transportador autônomo ou por transportador não inscrito na unidade da Federação onde iniciado o serviço\",\n\t\"6932\":\n\t\t\"Prestação de serviço de transporte iniciada em unidade da Federação diversa daquela onde inscrito o prestador\",\n\t\"6933\": \"Prestação de serviço sujeita ao ISSQN\",\n\t\"6934\": \"Remessa simbólica de mercadoria depositada em armazém geral ou depósito fechado\",\n\t\"6949\": \"Outra saída de mercadoria ou prestação de serviço não especificada\",\n\t\"7101\": \"Venda de produção do estabelecimento\",\n\t\"7102\": \"Venda de mercadoria adquirida ou recebida de terceiros\",\n\t\"7105\":\n\t\t\"Venda de produção do estabelecimento armazenada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro, que não deva por ele transitar\",\n\t\"7106\":\n\t\t\"Venda de mercadoria adquirida ou recebida de terceiros armazenada em depósito fechado, armazém geral ou outro estabelecimento da mesma empresa ou de terceiro, que não deva por ele transitar\",\n\t\"7127\": \"Venda de produção do estabelecimento sob o regime de “drawback”\",\n\t\"7129\":\n\t\t\"Venda de produção do estabelecimento ao mercado externo de mercadoria industrializada sob o amparo do Regime Aduaneiro Especial de Entreposto Industrial sob Controle Informatizado do Sistema Público de Escrituração Digital (Recof-Sped)\",\n\t\"7201\": \"Devolução de compra para industrialização ou produção rural\",\n\t\"7202\": \"Devolução de compra para comercialização\",\n\t\"7205\": \"Anulação de valor relativo à aquisição de serviço de comunicação\",\n\t\"7206\": \"Anulação de valor relativo à aquisição de serviço de transporte\",\n\t\"7207\": \"Anulação de valor relativo à compra de energia elétrica\",\n\t\"7210\": \"Devolução de compra para utilização na prestação de serviço\",\n\t\"7211\": \"Devolução de compras para industrialização sob o regime de “drawback”\",\n\t\"7212\":\n\t\t\"Devolução de compras para industrialização sob o regime de Regime Aduaneiro Especial de Entreposto Industrial sob Controle Informatizado do Sistema Público de Escrituração Digital (Recof-Sped)\",\n\t\"7251\": \"Venda de energia elétrica para o exterior\",\n\t\"7301\": \"Prestação de serviço de comunicação para execução de serviço da mesma natureza\",\n\t\"7358\": \"Prestação de serviço de transporte\",\n\t\"7501\": \"Exportação de mercadorias recebidas com fim específico de exportação\",\n\t\"7504\": \"Exportação de mercadoria que foi objeto de formação de lote de exportação\",\n\t\"7551\": \"Venda de bem do ativo imobilizado\",\n\t\"7552\":\n\t\t\"Saída de produto destinado para uso ou consumo de bordo, em embarcações ou aeronaves exclusivamente em tráfego internacional com destino ao exterior\",\n\t\"7553\": \"Devolução de compra de bem para o ativo imobilizado\",\n\t\"7556\": \"Devolução de compra de material para uso ou consumo\",\n\t\"7651\": \"Venda de combustíveis ou lubrificantes de produção do estabelecimento\",\n\t\"7654\": \"Venda de combustíveis ou lubrificantes adquiridos ou recebidos de terceiros\",\n\t\"7667\": \"Saída de combustíveis ou lubrificantes a consumidor ou usuário final\",\n\t\"7930\":\n\t\t\"Lançamento efetuado a título de devolução de bem cuja entrada tenha ocorrido sob amparo de regime especial aduaneiro de admissão temporária\",\n\t\"7949\": \"Outra saída de mercadoria ou prestação de serviço não especificada\",\n};\n\n/**\n * Shape a CFOP code has to be written in: the 4 digits, optionally split after the series\n * digit by a single whitespace or mask character, the way the annex prints them (\"1.101\").\n */\nexport const CFOP_FORMAT_REGEX = /^\\d[\\s.\\-/]?\\d{3}$/;\n","import { CFOP_FORMAT_REGEX, CFOP_TABLE } from \"../_internals/constants/cfop\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * A CFOP (Código Fiscal de Operações e Prestações) code.\n */\nexport type Cfop = {\n\t/** The 4 digit CFOP code. */\n\tcode: string;\n\t/** The official operation description. */\n\tdescription: string;\n};\n\n/**\n * Looks a CFOP (Código Fiscal de Operações e Prestações) code up in the official table.\n *\n * The table is the consolidated Anexo II of Convênio SINIEF s/nº 1970, the text in force\n * (current wording given by Ajuste SINIEF 03/24, last amended by Ajuste SINIEF 39/25).\n *\n * Only operable codes are in the table: the group and subgroup headings of the official\n * nomenclature, the codes ending in \"00\" and \"50\" (1000, 1100, 1150, 5350, ...), are section\n * titles rather than codes a document can carry, so they give `null`.\n *\n * A string is only read as a code when it is written in one of the documented forms: the 4\n * digits, or the `N.NNN` form the annex prints, with a single separator between the groups\n * and optional surrounding whitespace. Anything else (`\"abc5102\"`) is rejected instead of\n * having its digits picked out. A number is only read as a code when it is a non-negative\n * safe integer, since a sign, a decimal point or a rounded magnitude would otherwise be read\n * as a code the caller never wrote.\n *\n * No CFOP code starts with a zero, its first digit is the operation group (1 to 7), so nothing\n * is ever padded here: a number and the string of the same digits are read identically, and a\n * value narrower than 4 digits is not a code at all.\n *\n * @param {string|number} value - The CFOP code to look up, with or without the `N.NNN` mask,\n * e.g. `\"1.101\"`, `\"1101\"` or `1101`.\n * @returns {Cfop|null} The matching CFOP entry, or null when the code is unknown or\n * invalid.\n *\n * @example\n * ```typescript\n * getCfop(\"1101\"); // { code: \"1101\", description: \"Compra para industrialização ou produção rural\" }\n * getCfop(\"1.101\"); // { code: \"1101\", description: \"Compra para industrialização ou produção rural\" }\n * getCfop(\"0000\"); // null\n * getCfop(\"5350\"); // null (a subgroup heading, not an operable code)\n * getCfop(\"abc5102\"); // null (not a documented form)\n * getCfop(-5102); // null (not a non-negative safe integer)\n * ```\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cfop_cvsn_1-6.24\n * Anexo II of Convênio SINIEF s/nº 1970, the CFOP table in force.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cvsn_70\n * Convênio SINIEF s/nº 1970, the consolidated text the annex belongs to.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2025/AJ039_25\n * Ajuste SINIEF 39/25, the last amendment the annex carries (CFOP 7.667, from 01.02.26).\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2001/AJ_007_01\n * Ajuste SINIEF 07/01, the historical text that gave the CFOP its 4 digit form.\n */\nexport const getCfop = (value: string | number): Cfop | null => {\n\tif (!isLookupCode(value)) return null;\n\n\tconst code = String(value).trim();\n\n\tif (!CFOP_FORMAT_REGEX.test(code)) return null;\n\n\tconst digits = sanitizeToDigits(code);\n\tconst description = CFOP_TABLE[digits];\n\n\tif (description === undefined) return null;\n\n\treturn { code: digits, description };\n};\n","import { type StateCode } from \"./states\";\n\n/**\n * Brazilian municipalities by state, published by the IBGE. `DATA` holds, for each state, a\n * `[name, ibgeCode]` tuple per municipality, sorted by name with `localeCompare` in the\n * \"pt-BR\" locale. Generated by `scripts/cities.ts`.\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport type Municipality = {\n\t/** The 7-digit IBGE municipality code. */\n\tcode: string;\n\t/** The municipality name. */\n\tname: string;\n\t/** The two-letter code of the state the municipality belongs to. */\n\tstateCode: StateCode;\n};\n\nexport const DATA: Record<StateCode, readonly (readonly [string, string])[]> = {\n\tAC: [\n\t\t[\"Acrelândia\", \"1200013\"],\n\t\t[\"Assis Brasil\", \"1200054\"],\n\t\t[\"Brasiléia\", \"1200104\"],\n\t\t[\"Bujari\", \"1200138\"],\n\t\t[\"Capixaba\", \"1200179\"],\n\t\t[\"Cruzeiro do Sul\", \"1200203\"],\n\t\t[\"Epitaciolândia\", \"1200252\"],\n\t\t[\"Feijó\", \"1200302\"],\n\t\t[\"Jordão\", \"1200328\"],\n\t\t[\"Mâncio Lima\", \"1200336\"],\n\t\t[\"Manoel Urbano\", \"1200344\"],\n\t\t[\"Marechal Thaumaturgo\", \"1200351\"],\n\t\t[\"Plácido de Castro\", \"1200385\"],\n\t\t[\"Porto Acre\", \"1200807\"],\n\t\t[\"Porto Walter\", \"1200393\"],\n\t\t[\"Rio Branco\", \"1200401\"],\n\t\t[\"Rodrigues Alves\", \"1200427\"],\n\t\t[\"Santa Rosa do Purus\", \"1200435\"],\n\t\t[\"Sena Madureira\", \"1200500\"],\n\t\t[\"Senador Guiomard\", \"1200450\"],\n\t\t[\"Tarauacá\", \"1200609\"],\n\t\t[\"Xapuri\", \"1200708\"],\n\t],\n\tAL: [\n\t\t[\"Água Branca\", \"2700102\"],\n\t\t[\"Anadia\", \"2700201\"],\n\t\t[\"Arapiraca\", \"2700300\"],\n\t\t[\"Atalaia\", \"2700409\"],\n\t\t[\"Barra de Santo Antônio\", \"2700508\"],\n\t\t[\"Barra de São Miguel\", \"2700607\"],\n\t\t[\"Batalha\", \"2700706\"],\n\t\t[\"Belém\", \"2700805\"],\n\t\t[\"Belo Monte\", \"2700904\"],\n\t\t[\"Boca da Mata\", \"2701001\"],\n\t\t[\"Branquinha\", \"2701100\"],\n\t\t[\"Cacimbinhas\", \"2701209\"],\n\t\t[\"Cajueiro\", \"2701308\"],\n\t\t[\"Campestre\", \"2701357\"],\n\t\t[\"Campo Alegre\", \"2701407\"],\n\t\t[\"Campo Grande\", \"2701506\"],\n\t\t[\"Canapi\", \"2701605\"],\n\t\t[\"Capela\", \"2701704\"],\n\t\t[\"Carneiros\", \"2701803\"],\n\t\t[\"Chã Preta\", \"2701902\"],\n\t\t[\"Coité do Nóia\", \"2702009\"],\n\t\t[\"Colônia Leopoldina\", \"2702108\"],\n\t\t[\"Coqueiro Seco\", \"2702207\"],\n\t\t[\"Coruripe\", \"2702306\"],\n\t\t[\"Craíbas\", \"2702355\"],\n\t\t[\"Delmiro Gouveia\", \"2702405\"],\n\t\t[\"Dois Riachos\", \"2702504\"],\n\t\t[\"Estrela de Alagoas\", \"2702553\"],\n\t\t[\"Feira Grande\", \"2702603\"],\n\t\t[\"Feliz Deserto\", \"2702702\"],\n\t\t[\"Flexeiras\", \"2702801\"],\n\t\t[\"Girau do Ponciano\", \"2702900\"],\n\t\t[\"Ibateguara\", \"2703007\"],\n\t\t[\"Igaci\", \"2703106\"],\n\t\t[\"Igreja Nova\", \"2703205\"],\n\t\t[\"Inhapi\", \"2703304\"],\n\t\t[\"Jacaré dos Homens\", \"2703403\"],\n\t\t[\"Jacuípe\", \"2703502\"],\n\t\t[\"Japaratinga\", \"2703601\"],\n\t\t[\"Jaramataia\", \"2703700\"],\n\t\t[\"Jequiá da Praia\", \"2703759\"],\n\t\t[\"Joaquim Gomes\", \"2703809\"],\n\t\t[\"Jundiá\", \"2703908\"],\n\t\t[\"Junqueiro\", \"2704005\"],\n\t\t[\"Lagoa da Canoa\", \"2704104\"],\n\t\t[\"Limoeiro de Anadia\", \"2704203\"],\n\t\t[\"Maceió\", \"2704302\"],\n\t\t[\"Major Isidoro\", \"2704401\"],\n\t\t[\"Mar Vermelho\", \"2704906\"],\n\t\t[\"Maragogi\", \"2704500\"],\n\t\t[\"Maravilha\", \"2704609\"],\n\t\t[\"Marechal Deodoro\", \"2704708\"],\n\t\t[\"Maribondo\", \"2704807\"],\n\t\t[\"Mata Grande\", \"2705002\"],\n\t\t[\"Matriz de Camaragibe\", \"2705101\"],\n\t\t[\"Messias\", \"2705200\"],\n\t\t[\"Minador do Negrão\", \"2705309\"],\n\t\t[\"Monteirópolis\", \"2705408\"],\n\t\t[\"Murici\", \"2705507\"],\n\t\t[\"Novo Lino\", \"2705606\"],\n\t\t[\"Olho d'Água das Flores\", \"2705705\"],\n\t\t[\"Olho d'Água do Casado\", \"2705804\"],\n\t\t[\"Olho d'Água Grande\", \"2705903\"],\n\t\t[\"Olivença\", \"2706000\"],\n\t\t[\"Ouro Branco\", \"2706109\"],\n\t\t[\"Palestina\", \"2706208\"],\n\t\t[\"Palmeira dos Índios\", \"2706307\"],\n\t\t[\"Pão de Açúcar\", \"2706406\"],\n\t\t[\"Pariconha\", \"2706422\"],\n\t\t[\"Paripueira\", \"2706448\"],\n\t\t[\"Passo de Camaragibe\", \"2706505\"],\n\t\t[\"Paulo Jacinto\", \"2706604\"],\n\t\t[\"Penedo\", \"2706703\"],\n\t\t[\"Piaçabuçu\", \"2706802\"],\n\t\t[\"Pilar\", \"2706901\"],\n\t\t[\"Pindoba\", \"2707008\"],\n\t\t[\"Piranhas\", \"2707107\"],\n\t\t[\"Poço das Trincheiras\", \"2707206\"],\n\t\t[\"Porto Calvo\", \"2707305\"],\n\t\t[\"Porto de Pedras\", \"2707404\"],\n\t\t[\"Porto Real do Colégio\", \"2707503\"],\n\t\t[\"Quebrangulo\", \"2707602\"],\n\t\t[\"Rio Largo\", \"2707701\"],\n\t\t[\"Roteiro\", \"2707800\"],\n\t\t[\"Santa Luzia do Norte\", \"2707909\"],\n\t\t[\"Santana do Ipanema\", \"2708006\"],\n\t\t[\"Santana do Mundaú\", \"2708105\"],\n\t\t[\"São Brás\", \"2708204\"],\n\t\t[\"São José da Laje\", \"2708303\"],\n\t\t[\"São José da Tapera\", \"2708402\"],\n\t\t[\"São Luís do Quitunde\", \"2708501\"],\n\t\t[\"São Miguel dos Campos\", \"2708600\"],\n\t\t[\"São Miguel dos Milagres\", \"2708709\"],\n\t\t[\"São Sebastião\", \"2708808\"],\n\t\t[\"Satuba\", \"2708907\"],\n\t\t[\"Senador Rui Palmeira\", \"2708956\"],\n\t\t[\"Tanque d'Arca\", \"2709004\"],\n\t\t[\"Taquarana\", \"2709103\"],\n\t\t[\"Teotônio Vilela\", \"2709152\"],\n\t\t[\"Traipu\", \"2709202\"],\n\t\t[\"União dos Palmares\", \"2709301\"],\n\t\t[\"Viçosa\", \"2709400\"],\n\t],\n\tAM: [\n\t\t[\"Alvarães\", \"1300029\"],\n\t\t[\"Amaturá\", \"1300060\"],\n\t\t[\"Anamã\", \"1300086\"],\n\t\t[\"Anori\", \"1300102\"],\n\t\t[\"Apuí\", \"1300144\"],\n\t\t[\"Atalaia do Norte\", \"1300201\"],\n\t\t[\"Autazes\", \"1300300\"],\n\t\t[\"Barcelos\", \"1300409\"],\n\t\t[\"Barreirinha\", \"1300508\"],\n\t\t[\"Benjamin Constant\", \"1300607\"],\n\t\t[\"Beruri\", \"1300631\"],\n\t\t[\"Boa Vista do Ramos\", \"1300680\"],\n\t\t[\"Boca do Acre\", \"1300706\"],\n\t\t[\"Borba\", \"1300805\"],\n\t\t[\"Caapiranga\", \"1300839\"],\n\t\t[\"Canutama\", \"1300904\"],\n\t\t[\"Carauari\", \"1301001\"],\n\t\t[\"Careiro\", \"1301100\"],\n\t\t[\"Careiro da Várzea\", \"1301159\"],\n\t\t[\"Coari\", \"1301209\"],\n\t\t[\"Codajás\", \"1301308\"],\n\t\t[\"Eirunepé\", \"1301407\"],\n\t\t[\"Envira\", \"1301506\"],\n\t\t[\"Fonte Boa\", \"1301605\"],\n\t\t[\"Guajará\", \"1301654\"],\n\t\t[\"Humaitá\", \"1301704\"],\n\t\t[\"Ipixuna\", \"1301803\"],\n\t\t[\"Iranduba\", \"1301852\"],\n\t\t[\"Itacoatiara\", \"1301902\"],\n\t\t[\"Itamarati\", \"1301951\"],\n\t\t[\"Itapiranga\", \"1302009\"],\n\t\t[\"Japurá\", \"1302108\"],\n\t\t[\"Juruá\", \"1302207\"],\n\t\t[\"Jutaí\", \"1302306\"],\n\t\t[\"Lábrea\", \"1302405\"],\n\t\t[\"Manacapuru\", \"1302504\"],\n\t\t[\"Manaquiri\", \"1302553\"],\n\t\t[\"Manaus\", \"1302603\"],\n\t\t[\"Manicoré\", \"1302702\"],\n\t\t[\"Maraã\", \"1302801\"],\n\t\t[\"Maués\", \"1302900\"],\n\t\t[\"Nhamundá\", \"1303007\"],\n\t\t[\"Nova Olinda do Norte\", \"1303106\"],\n\t\t[\"Novo Airão\", \"1303205\"],\n\t\t[\"Novo Aripuanã\", \"1303304\"],\n\t\t[\"Parintins\", \"1303403\"],\n\t\t[\"Pauini\", \"1303502\"],\n\t\t[\"Presidente Figueiredo\", \"1303536\"],\n\t\t[\"Rio Preto da Eva\", \"1303569\"],\n\t\t[\"Santa Isabel do Rio Negro\", \"1303601\"],\n\t\t[\"Santo Antônio do Içá\", \"1303700\"],\n\t\t[\"São Gabriel da Cachoeira\", \"1303809\"],\n\t\t[\"São Paulo de Olivença\", \"1303908\"],\n\t\t[\"São Sebastião do Uatumã\", \"1303957\"],\n\t\t[\"Silves\", \"1304005\"],\n\t\t[\"Tabatinga\", \"1304062\"],\n\t\t[\"Tapauá\", \"1304104\"],\n\t\t[\"Tefé\", \"1304203\"],\n\t\t[\"Tonantins\", \"1304237\"],\n\t\t[\"Uarini\", \"1304260\"],\n\t\t[\"Urucará\", \"1304302\"],\n\t\t[\"Urucurituba\", \"1304401\"],\n\t],\n\tAP: [\n\t\t[\"Amapá\", \"1600105\"],\n\t\t[\"Calçoene\", \"1600204\"],\n\t\t[\"Cutias\", \"1600212\"],\n\t\t[\"Ferreira Gomes\", \"1600238\"],\n\t\t[\"Itaubal\", \"1600253\"],\n\t\t[\"Laranjal do Jari\", \"1600279\"],\n\t\t[\"Macapá\", \"1600303\"],\n\t\t[\"Mazagão\", \"1600402\"],\n\t\t[\"Oiapoque\", \"1600501\"],\n\t\t[\"Pedra Branca do Amapari\", \"1600154\"],\n\t\t[\"Porto Grande\", \"1600535\"],\n\t\t[\"Pracuúba\", \"1600550\"],\n\t\t[\"Santana\", \"1600600\"],\n\t\t[\"Serra do Navio\", \"1600055\"],\n\t\t[\"Tartarugalzinho\", \"1600709\"],\n\t\t[\"Vitória do Jari\", \"1600808\"],\n\t],\n\tBA: [\n\t\t[\"Abaíra\", \"2900108\"],\n\t\t[\"Abaré\", \"2900207\"],\n\t\t[\"Acajutiba\", \"2900306\"],\n\t\t[\"Adustina\", \"2900355\"],\n\t\t[\"Água Fria\", \"2900405\"],\n\t\t[\"Aiquara\", \"2900603\"],\n\t\t[\"Alagoinhas\", \"2900702\"],\n\t\t[\"Alcobaça\", \"2900801\"],\n\t\t[\"Almadina\", \"2900900\"],\n\t\t[\"Amargosa\", \"2901007\"],\n\t\t[\"Amélia Rodrigues\", \"2901106\"],\n\t\t[\"América Dourada\", \"2901155\"],\n\t\t[\"Anagé\", \"2901205\"],\n\t\t[\"Andaraí\", \"2901304\"],\n\t\t[\"Andorinha\", \"2901353\"],\n\t\t[\"Angical\", \"2901403\"],\n\t\t[\"Anguera\", \"2901502\"],\n\t\t[\"Antas\", \"2901601\"],\n\t\t[\"Antônio Cardoso\", \"2901700\"],\n\t\t[\"Antônio Gonçalves\", \"2901809\"],\n\t\t[\"Aporá\", \"2901908\"],\n\t\t[\"Apuarema\", \"2901957\"],\n\t\t[\"Araçás\", \"2902054\"],\n\t\t[\"Aracatu\", \"2902005\"],\n\t\t[\"Araci\", \"2902104\"],\n\t\t[\"Aramari\", \"2902203\"],\n\t\t[\"Arataca\", \"2902252\"],\n\t\t[\"Aratuípe\", \"2902302\"],\n\t\t[\"Aurelino Leal\", \"2902401\"],\n\t\t[\"Baianópolis\", \"2902500\"],\n\t\t[\"Baixa Grande\", \"2902609\"],\n\t\t[\"Banzaê\", \"2902658\"],\n\t\t[\"Barra\", \"2902708\"],\n\t\t[\"Barra da Estiva\", \"2902807\"],\n\t\t[\"Barra do Choça\", \"2902906\"],\n\t\t[\"Barra do Mendes\", \"2903003\"],\n\t\t[\"Barra do Rocha\", \"2903102\"],\n\t\t[\"Barreiras\", \"2903201\"],\n\t\t[\"Barro Alto\", \"2903235\"],\n\t\t[\"Barro Preto\", \"2903300\"],\n\t\t[\"Barrocas\", \"2903276\"],\n\t\t[\"Belmonte\", \"2903409\"],\n\t\t[\"Belo Campo\", \"2903508\"],\n\t\t[\"Biritinga\", \"2903607\"],\n\t\t[\"Boa Nova\", \"2903706\"],\n\t\t[\"Boa Vista do Tupim\", \"2903805\"],\n\t\t[\"Bom Jesus da Lapa\", \"2903904\"],\n\t\t[\"Bom Jesus da Serra\", \"2903953\"],\n\t\t[\"Boninal\", \"2904001\"],\n\t\t[\"Bonito\", \"2904050\"],\n\t\t[\"Boquira\", \"2904100\"],\n\t\t[\"Botuporã\", \"2904209\"],\n\t\t[\"Brejões\", \"2904308\"],\n\t\t[\"Brejolândia\", \"2904407\"],\n\t\t[\"Brotas de Macaúbas\", \"2904506\"],\n\t\t[\"Brumado\", \"2904605\"],\n\t\t[\"Buerarema\", \"2904704\"],\n\t\t[\"Buritirama\", \"2904753\"],\n\t\t[\"Caatiba\", \"2904803\"],\n\t\t[\"Cabaceiras do Paraguaçu\", \"2904852\"],\n\t\t[\"Cachoeira\", \"2904902\"],\n\t\t[\"Caculé\", \"2905008\"],\n\t\t[\"Caém\", \"2905107\"],\n\t\t[\"Caetanos\", \"2905156\"],\n\t\t[\"Caetité\", \"2905206\"],\n\t\t[\"Cafarnaum\", \"2905305\"],\n\t\t[\"Cairu\", \"2905404\"],\n\t\t[\"Caldeirão Grande\", \"2905503\"],\n\t\t[\"Camacan\", \"2905602\"],\n\t\t[\"Camaçari\", \"2905701\"],\n\t\t[\"Camamu\", \"2905800\"],\n\t\t[\"Campo Alegre de Lourdes\", \"2905909\"],\n\t\t[\"Campo Formoso\", \"2906006\"],\n\t\t[\"Canápolis\", \"2906105\"],\n\t\t[\"Canarana\", \"2906204\"],\n\t\t[\"Canavieiras\", \"2906303\"],\n\t\t[\"Candeal\", \"2906402\"],\n\t\t[\"Candeias\", \"2906501\"],\n\t\t[\"Candiba\", \"2906600\"],\n\t\t[\"Cândido Sales\", \"2906709\"],\n\t\t[\"Cansanção\", \"2906808\"],\n\t\t[\"Canudos\", \"2906824\"],\n\t\t[\"Capela do Alto Alegre\", \"2906857\"],\n\t\t[\"Capim Grosso\", \"2906873\"],\n\t\t[\"Caraíbas\", \"2906899\"],\n\t\t[\"Caravelas\", \"2906907\"],\n\t\t[\"Cardeal da Silva\", \"2907004\"],\n\t\t[\"Carinhanha\", \"2907103\"],\n\t\t[\"Casa Nova\", \"2907202\"],\n\t\t[\"Castro Alves\", \"2907301\"],\n\t\t[\"Catolândia\", \"2907400\"],\n\t\t[\"Catu\", \"2907509\"],\n\t\t[\"Caturama\", \"2907558\"],\n\t\t[\"Central\", \"2907608\"],\n\t\t[\"Chorrochó\", \"2907707\"],\n\t\t[\"Cícero Dantas\", \"2907806\"],\n\t\t[\"Cipó\", \"2907905\"],\n\t\t[\"Coaraci\", \"2908002\"],\n\t\t[\"Cocos\", \"2908101\"],\n\t\t[\"Conceição da Feira\", \"2908200\"],\n\t\t[\"Conceição do Almeida\", \"2908309\"],\n\t\t[\"Conceição do Coité\", \"2908408\"],\n\t\t[\"Conceição do Jacuípe\", \"2908507\"],\n\t\t[\"Conde\", \"2908606\"],\n\t\t[\"Condeúba\", \"2908705\"],\n\t\t[\"Contendas do Sincorá\", \"2908804\"],\n\t\t[\"Coração de Maria\", \"2908903\"],\n\t\t[\"Cordeiros\", \"2909000\"],\n\t\t[\"Coribe\", \"2909109\"],\n\t\t[\"Coronel João Sá\", \"2909208\"],\n\t\t[\"Correntina\", \"2909307\"],\n\t\t[\"Cotegipe\", \"2909406\"],\n\t\t[\"Cravolândia\", \"2909505\"],\n\t\t[\"Crisópolis\", \"2909604\"],\n\t\t[\"Cristópolis\", \"2909703\"],\n\t\t[\"Cruz das Almas\", \"2909802\"],\n\t\t[\"Curaçá\", \"2909901\"],\n\t\t[\"Dário Meira\", \"2910008\"],\n\t\t[\"Dias d'Ávila\", \"2910057\"],\n\t\t[\"Dom Basílio\", \"2910107\"],\n\t\t[\"Dom Macedo Costa\", \"2910206\"],\n\t\t[\"Elísio Medrado\", \"2910305\"],\n\t\t[\"Encruzilhada\", \"2910404\"],\n\t\t[\"Entre Rios\", \"2910503\"],\n\t\t[\"Érico Cardoso\", \"2900504\"],\n\t\t[\"Esplanada\", \"2910602\"],\n\t\t[\"Euclides da Cunha\", \"2910701\"],\n\t\t[\"Eunápolis\", \"2910727\"],\n\t\t[\"Fátima\", \"2910750\"],\n\t\t[\"Feira da Mata\", \"2910776\"],\n\t\t[\"Feira de Santana\", \"2910800\"],\n\t\t[\"Filadélfia\", \"2910859\"],\n\t\t[\"Firmino Alves\", \"2910909\"],\n\t\t[\"Floresta Azul\", \"2911006\"],\n\t\t[\"Formosa do Rio Preto\", \"2911105\"],\n\t\t[\"Gandu\", \"2911204\"],\n\t\t[\"Gavião\", \"2911253\"],\n\t\t[\"Gentio do Ouro\", \"2911303\"],\n\t\t[\"Glória\", \"2911402\"],\n\t\t[\"Gongogi\", \"2911501\"],\n\t\t[\"Governador Mangabeira\", \"2911600\"],\n\t\t[\"Guajeru\", \"2911659\"],\n\t\t[\"Guanambi\", \"2911709\"],\n\t\t[\"Guaratinga\", \"2911808\"],\n\t\t[\"Heliópolis\", \"2911857\"],\n\t\t[\"Iaçu\", \"2911907\"],\n\t\t[\"Ibiassucê\", \"2912004\"],\n\t\t[\"Ibicaraí\", \"2912103\"],\n\t\t[\"Ibicoara\", \"2912202\"],\n\t\t[\"Ibicuí\", \"2912301\"],\n\t\t[\"Ibipeba\", \"2912400\"],\n\t\t[\"Ibipitanga\", \"2912509\"],\n\t\t[\"Ibiquera\", \"2912608\"],\n\t\t[\"Ibirapitanga\", \"2912707\"],\n\t\t[\"Ibirapuã\", \"2912806\"],\n\t\t[\"Ibirataia\", \"2912905\"],\n\t\t[\"Ibitiara\", \"2913002\"],\n\t\t[\"Ibititá\", \"2913101\"],\n\t\t[\"Ibotirama\", \"2913200\"],\n\t\t[\"Ichu\", \"2913309\"],\n\t\t[\"Igaporã\", \"2913408\"],\n\t\t[\"Igrapiúna\", \"2913457\"],\n\t\t[\"Iguaí\", \"2913507\"],\n\t\t[\"Ilhéus\", \"2913606\"],\n\t\t[\"Inhambupe\", \"2913705\"],\n\t\t[\"Ipecaetá\", \"2913804\"],\n\t\t[\"Ipiaú\", \"2913903\"],\n\t\t[\"Ipirá\", \"2914000\"],\n\t\t[\"Ipupiara\", \"2914109\"],\n\t\t[\"Irajuba\", \"2914208\"],\n\t\t[\"Iramaia\", \"2914307\"],\n\t\t[\"Iraquara\", \"2914406\"],\n\t\t[\"Irará\", \"2914505\"],\n\t\t[\"Irecê\", \"2914604\"],\n\t\t[\"Itabela\", \"2914653\"],\n\t\t[\"Itaberaba\", \"2914703\"],\n\t\t[\"Itabuna\", \"2914802\"],\n\t\t[\"Itacaré\", \"2914901\"],\n\t\t[\"Itaeté\", \"2915007\"],\n\t\t[\"Itagi\", \"2915106\"],\n\t\t[\"Itagibá\", \"2915205\"],\n\t\t[\"Itagimirim\", \"2915304\"],\n\t\t[\"Itaguaçu da Bahia\", \"2915353\"],\n\t\t[\"Itaju do Colônia\", \"2915403\"],\n\t\t[\"Itajuípe\", \"2915502\"],\n\t\t[\"Itamaraju\", \"2915601\"],\n\t\t[\"Itamari\", \"2915700\"],\n\t\t[\"Itambé\", \"2915809\"],\n\t\t[\"Itanagra\", \"2915908\"],\n\t\t[\"Itanhém\", \"2916005\"],\n\t\t[\"Itaparica\", \"2916104\"],\n\t\t[\"Itapé\", \"2916203\"],\n\t\t[\"Itapebi\", \"2916302\"],\n\t\t[\"Itapetinga\", \"2916401\"],\n\t\t[\"Itapicuru\", \"2916500\"],\n\t\t[\"Itapitanga\", \"2916609\"],\n\t\t[\"Itaquara\", \"2916708\"],\n\t\t[\"Itarantim\", \"2916807\"],\n\t\t[\"Itatim\", \"2916856\"],\n\t\t[\"Itiruçu\", \"2916906\"],\n\t\t[\"Itiúba\", \"2917003\"],\n\t\t[\"Itororó\", \"2917102\"],\n\t\t[\"Ituaçu\", \"2917201\"],\n\t\t[\"Ituberá\", \"2917300\"],\n\t\t[\"Iuiu\", \"2917334\"],\n\t\t[\"Jaborandi\", \"2917359\"],\n\t\t[\"Jacaraci\", \"2917409\"],\n\t\t[\"Jacobina\", \"2917508\"],\n\t\t[\"Jaguaquara\", \"2917607\"],\n\t\t[\"Jaguarari\", \"2917706\"],\n\t\t[\"Jaguaripe\", \"2917805\"],\n\t\t[\"Jandaíra\", \"2917904\"],\n\t\t[\"Jequié\", \"2918001\"],\n\t\t[\"Jeremoabo\", \"2918100\"],\n\t\t[\"Jiquiriçá\", \"2918209\"],\n\t\t[\"Jitaúna\", \"2918308\"],\n\t\t[\"João Dourado\", \"2918357\"],\n\t\t[\"Juazeiro\", \"2918407\"],\n\t\t[\"Jucuruçu\", \"2918456\"],\n\t\t[\"Jussara\", \"2918506\"],\n\t\t[\"Jussari\", \"2918555\"],\n\t\t[\"Jussiape\", \"2918605\"],\n\t\t[\"Lafaiete Coutinho\", \"2918704\"],\n\t\t[\"Lagoa Real\", \"2918753\"],\n\t\t[\"Laje\", \"2918803\"],\n\t\t[\"Lajedão\", \"2918902\"],\n\t\t[\"Lajedinho\", \"2919009\"],\n\t\t[\"Lajedo do Tabocal\", \"2919058\"],\n\t\t[\"Lamarão\", \"2919108\"],\n\t\t[\"Lapão\", \"2919157\"],\n\t\t[\"Lauro de Freitas\", \"2919207\"],\n\t\t[\"Lençóis\", \"2919306\"],\n\t\t[\"Licínio de Almeida\", \"2919405\"],\n\t\t[\"Livramento de Nossa Senhora\", \"2919504\"],\n\t\t[\"Luís Eduardo Magalhães\", \"2919553\"],\n\t\t[\"Macajuba\", \"2919603\"],\n\t\t[\"Macarani\", \"2919702\"],\n\t\t[\"Macaúbas\", \"2919801\"],\n\t\t[\"Macururé\", \"2919900\"],\n\t\t[\"Madre de Deus\", \"2919926\"],\n\t\t[\"Maetinga\", \"2919959\"],\n\t\t[\"Maiquinique\", \"2920007\"],\n\t\t[\"Mairi\", \"2920106\"],\n\t\t[\"Malhada\", \"2920205\"],\n\t\t[\"Malhada de Pedras\", \"2920304\"],\n\t\t[\"Manoel Vitorino\", \"2920403\"],\n\t\t[\"Mansidão\", \"2920452\"],\n\t\t[\"Maracás\", \"2920502\"],\n\t\t[\"Maragogipe\", \"2920601\"],\n\t\t[\"Maraú\", \"2920700\"],\n\t\t[\"Marcionílio Souza\", \"2920809\"],\n\t\t[\"Mascote\", \"2920908\"],\n\t\t[\"Mata de São João\", \"2921005\"],\n\t\t[\"Matina\", \"2921054\"],\n\t\t[\"Medeiros Neto\", \"2921104\"],\n\t\t[\"Miguel Calmon\", \"2921203\"],\n\t\t[\"Milagres\", \"2921302\"],\n\t\t[\"Mirangaba\", \"2921401\"],\n\t\t[\"Mirante\", \"2921450\"],\n\t\t[\"Monte Santo\", \"2921500\"],\n\t\t[\"Morpará\", \"2921609\"],\n\t\t[\"Morro do Chapéu\", \"2921708\"],\n\t\t[\"Mortugaba\", \"2921807\"],\n\t\t[\"Mucugê\", \"2921906\"],\n\t\t[\"Mucuri\", \"2922003\"],\n\t\t[\"Mulungu do Morro\", \"2922052\"],\n\t\t[\"Mundo Novo\", \"2922102\"],\n\t\t[\"Muniz Ferreira\", \"2922201\"],\n\t\t[\"Muquém do São Francisco\", \"2922250\"],\n\t\t[\"Muritiba\", \"2922300\"],\n\t\t[\"Mutuípe\", \"2922409\"],\n\t\t[\"Nazaré\", \"2922508\"],\n\t\t[\"Nilo Peçanha\", \"2922607\"],\n\t\t[\"Nordestina\", \"2922656\"],\n\t\t[\"Nova Canaã\", \"2922706\"],\n\t\t[\"Nova Fátima\", \"2922730\"],\n\t\t[\"Nova Ibiá\", \"2922755\"],\n\t\t[\"Nova Itarana\", \"2922805\"],\n\t\t[\"Nova Redenção\", \"2922854\"],\n\t\t[\"Nova Soure\", \"2922904\"],\n\t\t[\"Nova Viçosa\", \"2923001\"],\n\t\t[\"Novo Horizonte\", \"2923035\"],\n\t\t[\"Novo Triunfo\", \"2923050\"],\n\t\t[\"Olindina\", \"2923100\"],\n\t\t[\"Oliveira dos Brejinhos\", \"2923209\"],\n\t\t[\"Ouriçangas\", \"2923308\"],\n\t\t[\"Ourolândia\", \"2923357\"],\n\t\t[\"Palmas de Monte Alto\", \"2923407\"],\n\t\t[\"Palmeiras\", \"2923506\"],\n\t\t[\"Paramirim\", \"2923605\"],\n\t\t[\"Paratinga\", \"2923704\"],\n\t\t[\"Paripiranga\", \"2923803\"],\n\t\t[\"Pau Brasil\", \"2923902\"],\n\t\t[\"Paulo Afonso\", \"2924009\"],\n\t\t[\"Pé de Serra\", \"2924058\"],\n\t\t[\"Pedrão\", \"2924108\"],\n\t\t[\"Pedro Alexandre\", \"2924207\"],\n\t\t[\"Piatã\", \"2924306\"],\n\t\t[\"Pilão Arcado\", \"2924405\"],\n\t\t[\"Pindaí\", \"2924504\"],\n\t\t[\"Pindobaçu\", \"2924603\"],\n\t\t[\"Pintadas\", \"2924652\"],\n\t\t[\"Piraí do Norte\", \"2924678\"],\n\t\t[\"Piripá\", \"2924702\"],\n\t\t[\"Piritiba\", \"2924801\"],\n\t\t[\"Planaltino\", \"2924900\"],\n\t\t[\"Planalto\", \"2925006\"],\n\t\t[\"Poções\", \"2925105\"],\n\t\t[\"Pojuca\", \"2925204\"],\n\t\t[\"Ponto Novo\", \"2925253\"],\n\t\t[\"Porto Seguro\", \"2925303\"],\n\t\t[\"Potiraguá\", \"2925402\"],\n\t\t[\"Prado\", \"2925501\"],\n\t\t[\"Presidente Dutra\", \"2925600\"],\n\t\t[\"Presidente Jânio Quadros\", \"2925709\"],\n\t\t[\"Presidente Tancredo Neves\", \"2925758\"],\n\t\t[\"Queimadas\", \"2925808\"],\n\t\t[\"Quijingue\", \"2925907\"],\n\t\t[\"Quixabeira\", \"2925931\"],\n\t\t[\"Rafael Jambeiro\", \"2925956\"],\n\t\t[\"Remanso\", \"2926004\"],\n\t\t[\"Retirolândia\", \"2926103\"],\n\t\t[\"Riachão das Neves\", \"2926202\"],\n\t\t[\"Riachão do Jacuípe\", \"2926301\"],\n\t\t[\"Riacho de Santana\", \"2926400\"],\n\t\t[\"Ribeira do Amparo\", \"2926509\"],\n\t\t[\"Ribeira do Pombal\", \"2926608\"],\n\t\t[\"Ribeirão do Largo\", \"2926657\"],\n\t\t[\"Rio de Contas\", \"2926707\"],\n\t\t[\"Rio do Antônio\", \"2926806\"],\n\t\t[\"Rio do Pires\", \"2926905\"],\n\t\t[\"Rio Real\", \"2927002\"],\n\t\t[\"Rodelas\", \"2927101\"],\n\t\t[\"Ruy Barbosa\", \"2927200\"],\n\t\t[\"Salinas da Margarida\", \"2927309\"],\n\t\t[\"Salvador\", \"2927408\"],\n\t\t[\"Santa Bárbara\", \"2927507\"],\n\t\t[\"Santa Brígida\", \"2927606\"],\n\t\t[\"Santa Cruz Cabrália\", \"2927705\"],\n\t\t[\"Santa Cruz da Vitória\", \"2927804\"],\n\t\t[\"Santa Inês\", \"2927903\"],\n\t\t[\"Santa Luzia\", \"2928059\"],\n\t\t[\"Santa Maria da Vitória\", \"2928109\"],\n\t\t[\"Santa Rita de Cássia\", \"2928406\"],\n\t\t[\"Santa Terezinha\", \"2928505\"],\n\t\t[\"Santaluz\", \"2928000\"],\n\t\t[\"Santana\", \"2928208\"],\n\t\t[\"Santanópolis\", \"2928307\"],\n\t\t[\"Santo Amaro\", \"2928604\"],\n\t\t[\"Santo Antônio de Jesus\", \"2928703\"],\n\t\t[\"Santo Estêvão\", \"2928802\"],\n\t\t[\"São Desidério\", \"2928901\"],\n\t\t[\"São Domingos\", \"2928950\"],\n\t\t[\"São Felipe\", \"2929107\"],\n\t\t[\"São Félix\", \"2929008\"],\n\t\t[\"São Félix do Coribe\", \"2929057\"],\n\t\t[\"São Francisco do Conde\", \"2929206\"],\n\t\t[\"São Gabriel\", \"2929255\"],\n\t\t[\"São Gonçalo dos Campos\", \"2929305\"],\n\t\t[\"São José da Vitória\", \"2929354\"],\n\t\t[\"São José do Jacuípe\", \"2929370\"],\n\t\t[\"São Miguel das Matas\", \"2929404\"],\n\t\t[\"São Sebastião do Passé\", \"2929503\"],\n\t\t[\"Sapeaçu\", \"2929602\"],\n\t\t[\"Sátiro Dias\", \"2929701\"],\n\t\t[\"Saubara\", \"2929750\"],\n\t\t[\"Saúde\", \"2929800\"],\n\t\t[\"Seabra\", \"2929909\"],\n\t\t[\"Sebastião Laranjeiras\", \"2930006\"],\n\t\t[\"Senhor do Bonfim\", \"2930105\"],\n\t\t[\"Sento Sé\", \"2930204\"],\n\t\t[\"Serra do Ramalho\", \"2930154\"],\n\t\t[\"Serra Dourada\", \"2930303\"],\n\t\t[\"Serra Preta\", \"2930402\"],\n\t\t[\"Serrinha\", \"2930501\"],\n\t\t[\"Serrolândia\", \"2930600\"],\n\t\t[\"Simões Filho\", \"2930709\"],\n\t\t[\"Sítio do Mato\", \"2930758\"],\n\t\t[\"Sítio do Quinto\", \"2930766\"],\n\t\t[\"Sobradinho\", \"2930774\"],\n\t\t[\"Souto Soares\", \"2930808\"],\n\t\t[\"Tabocas do Brejo Velho\", \"2930907\"],\n\t\t[\"Tanhaçu\", \"2931004\"],\n\t\t[\"Tanque Novo\", \"2931053\"],\n\t\t[\"Tanquinho\", \"2931103\"],\n\t\t[\"Taperoá\", \"2931202\"],\n\t\t[\"Tapiramutá\", \"2931301\"],\n\t\t[\"Teixeira de Freitas\", \"2931350\"],\n\t\t[\"Teodoro Sampaio\", \"2931400\"],\n\t\t[\"Teofilândia\", \"2931509\"],\n\t\t[\"Teolândia\", \"2931608\"],\n\t\t[\"Terra Nova\", \"2931707\"],\n\t\t[\"Tremedal\", \"2931806\"],\n\t\t[\"Tucano\", \"2931905\"],\n\t\t[\"Uauá\", \"2932002\"],\n\t\t[\"Ubaíra\", \"2932101\"],\n\t\t[\"Ubaitaba\", \"2932200\"],\n\t\t[\"Ubatã\", \"2932309\"],\n\t\t[\"Uibaí\", \"2932408\"],\n\t\t[\"Umburanas\", \"2932457\"],\n\t\t[\"Una\", \"2932507\"],\n\t\t[\"Urandi\", \"2932606\"],\n\t\t[\"Uruçuca\", \"2932705\"],\n\t\t[\"Utinga\", \"2932804\"],\n\t\t[\"Valença\", \"2932903\"],\n\t\t[\"Valente\", \"2933000\"],\n\t\t[\"Várzea da Roça\", \"2933059\"],\n\t\t[\"Várzea do Poço\", \"2933109\"],\n\t\t[\"Várzea Nova\", \"2933158\"],\n\t\t[\"Varzedo\", \"2933174\"],\n\t\t[\"Vera Cruz\", \"2933208\"],\n\t\t[\"Vereda\", \"2933257\"],\n\t\t[\"Vitória da Conquista\", \"2933307\"],\n\t\t[\"Wagner\", \"2933406\"],\n\t\t[\"Wanderley\", \"2933455\"],\n\t\t[\"Wenceslau Guimarães\", \"2933505\"],\n\t\t[\"Xique-Xique\", \"2933604\"],\n\t],\n\tCE: [\n\t\t[\"Abaiara\", \"2300101\"],\n\t\t[\"Acarape\", \"2300150\"],\n\t\t[\"Acaraú\", \"2300200\"],\n\t\t[\"Acopiara\", \"2300309\"],\n\t\t[\"Aiuaba\", \"2300408\"],\n\t\t[\"Alcântaras\", \"2300507\"],\n\t\t[\"Altaneira\", \"2300606\"],\n\t\t[\"Alto Santo\", \"2300705\"],\n\t\t[\"Amontada\", \"2300754\"],\n\t\t[\"Antonina do Norte\", \"2300804\"],\n\t\t[\"Apuiarés\", \"2300903\"],\n\t\t[\"Aquiraz\", \"2301000\"],\n\t\t[\"Aracati\", \"2301109\"],\n\t\t[\"Aracoiaba\", \"2301208\"],\n\t\t[\"Ararendá\", \"2301257\"],\n\t\t[\"Araripe\", \"2301307\"],\n\t\t[\"Aratuba\", \"2301406\"],\n\t\t[\"Arneiroz\", \"2301505\"],\n\t\t[\"Assaré\", \"2301604\"],\n\t\t[\"Aurora\", \"2301703\"],\n\t\t[\"Baixio\", \"2301802\"],\n\t\t[\"Banabuiú\", \"2301851\"],\n\t\t[\"Barbalha\", \"2301901\"],\n\t\t[\"Barreira\", \"2301950\"],\n\t\t[\"Barro\", \"2302008\"],\n\t\t[\"Barroquinha\", \"2302057\"],\n\t\t[\"Baturité\", \"2302107\"],\n\t\t[\"Beberibe\", \"2302206\"],\n\t\t[\"Bela Cruz\", \"2302305\"],\n\t\t[\"Boa Viagem\", \"2302404\"],\n\t\t[\"Brejo Santo\", \"2302503\"],\n\t\t[\"Camocim\", \"2302602\"],\n\t\t[\"Campos Sales\", \"2302701\"],\n\t\t[\"Canindé\", \"2302800\"],\n\t\t[\"Capistrano\", \"2302909\"],\n\t\t[\"Caridade\", \"2303006\"],\n\t\t[\"Cariré\", \"2303105\"],\n\t\t[\"Caririaçu\", \"2303204\"],\n\t\t[\"Cariús\", \"2303303\"],\n\t\t[\"Carnaubal\", \"2303402\"],\n\t\t[\"Cascavel\", \"2303501\"],\n\t\t[\"Catarina\", \"2303600\"],\n\t\t[\"Catunda\", \"2303659\"],\n\t\t[\"Caucaia\", \"2303709\"],\n\t\t[\"Cedro\", \"2303808\"],\n\t\t[\"Chaval\", \"2303907\"],\n\t\t[\"Choró\", \"2303931\"],\n\t\t[\"Chorozinho\", \"2303956\"],\n\t\t[\"Coreaú\", \"2304004\"],\n\t\t[\"Crateús\", \"2304103\"],\n\t\t[\"Crato\", \"2304202\"],\n\t\t[\"Croatá\", \"2304236\"],\n\t\t[\"Cruz\", \"2304251\"],\n\t\t[\"Deputado Irapuan Pinheiro\", \"2304269\"],\n\t\t[\"Ereré\", \"2304277\"],\n\t\t[\"Eusébio\", \"2304285\"],\n\t\t[\"Farias Brito\", \"2304301\"],\n\t\t[\"Forquilha\", \"2304350\"],\n\t\t[\"Fortaleza\", \"2304400\"],\n\t\t[\"Fortim\", \"2304459\"],\n\t\t[\"Frecheirinha\", \"2304509\"],\n\t\t[\"General Sampaio\", \"2304608\"],\n\t\t[\"Graça\", \"2304657\"],\n\t\t[\"Granja\", \"2304707\"],\n\t\t[\"Granjeiro\", \"2304806\"],\n\t\t[\"Groaíras\", \"2304905\"],\n\t\t[\"Guaiúba\", \"2304954\"],\n\t\t[\"Guaraciaba do Norte\", \"2305001\"],\n\t\t[\"Guaramiranga\", \"2305100\"],\n\t\t[\"Hidrolândia\", \"2305209\"],\n\t\t[\"Horizonte\", \"2305233\"],\n\t\t[\"Ibaretama\", \"2305266\"],\n\t\t[\"Ibiapina\", \"2305308\"],\n\t\t[\"Ibicuitinga\", \"2305332\"],\n\t\t[\"Icapuí\", \"2305357\"],\n\t\t[\"Icó\", \"2305407\"],\n\t\t[\"Iguatu\", \"2305506\"],\n\t\t[\"Independência\", \"2305605\"],\n\t\t[\"Ipaporanga\", \"2305654\"],\n\t\t[\"Ipaumirim\", \"2305704\"],\n\t\t[\"Ipu\", \"2305803\"],\n\t\t[\"Ipueiras\", \"2305902\"],\n\t\t[\"Iracema\", \"2306009\"],\n\t\t[\"Irauçuba\", \"2306108\"],\n\t\t[\"Itaiçaba\", \"2306207\"],\n\t\t[\"Itaitinga\", \"2306256\"],\n\t\t[\"Itapajé\", \"2306306\"],\n\t\t[\"Itapipoca\", \"2306405\"],\n\t\t[\"Itapiúna\", \"2306504\"],\n\t\t[\"Itarema\", \"2306553\"],\n\t\t[\"Itatira\", \"2306603\"],\n\t\t[\"Jaguaretama\", \"2306702\"],\n\t\t[\"Jaguaribara\", \"2306801\"],\n\t\t[\"Jaguaribe\", \"2306900\"],\n\t\t[\"Jaguaruana\", \"2307007\"],\n\t\t[\"Jardim\", \"2307106\"],\n\t\t[\"Jati\", \"2307205\"],\n\t\t[\"Jijoca de Jericoacoara\", \"2307254\"],\n\t\t[\"Juazeiro do Norte\", \"2307304\"],\n\t\t[\"Jucás\", \"2307403\"],\n\t\t[\"Lavras da Mangabeira\", \"2307502\"],\n\t\t[\"Limoeiro do Norte\", \"2307601\"],\n\t\t[\"Madalena\", \"2307635\"],\n\t\t[\"Maracanaú\", \"2307650\"],\n\t\t[\"Maranguape\", \"2307700\"],\n\t\t[\"Marco\", \"2307809\"],\n\t\t[\"Martinópole\", \"2307908\"],\n\t\t[\"Massapê\", \"2308005\"],\n\t\t[\"Mauriti\", \"2308104\"],\n\t\t[\"Meruoca\", \"2308203\"],\n\t\t[\"Milagres\", \"2308302\"],\n\t\t[\"Milhã\", \"2308351\"],\n\t\t[\"Miraíma\", \"2308377\"],\n\t\t[\"Missão Velha\", \"2308401\"],\n\t\t[\"Mombaça\", \"2308500\"],\n\t\t[\"Monsenhor Tabosa\", \"2308609\"],\n\t\t[\"Morada Nova\", \"2308708\"],\n\t\t[\"Moraújo\", \"2308807\"],\n\t\t[\"Morrinhos\", \"2308906\"],\n\t\t[\"Mucambo\", \"2309003\"],\n\t\t[\"Mulungu\", \"2309102\"],\n\t\t[\"Nova Olinda\", \"2309201\"],\n\t\t[\"Nova Russas\", \"2309300\"],\n\t\t[\"Novo Oriente\", \"2309409\"],\n\t\t[\"Ocara\", \"2309458\"],\n\t\t[\"Orós\", \"2309508\"],\n\t\t[\"Pacajus\", \"2309607\"],\n\t\t[\"Pacatuba\", \"2309706\"],\n\t\t[\"Pacoti\", \"2309805\"],\n\t\t[\"Pacujá\", \"2309904\"],\n\t\t[\"Palhano\", \"2310001\"],\n\t\t[\"Palmácia\", \"2310100\"],\n\t\t[\"Paracuru\", \"2310209\"],\n\t\t[\"Paraipaba\", \"2310258\"],\n\t\t[\"Parambu\", \"2310308\"],\n\t\t[\"Paramoti\", \"2310407\"],\n\t\t[\"Pedra Branca\", \"2310506\"],\n\t\t[\"Penaforte\", \"2310605\"],\n\t\t[\"Pentecoste\", \"2310704\"],\n\t\t[\"Pereiro\", \"2310803\"],\n\t\t[\"Pindoretama\", \"2310852\"],\n\t\t[\"Piquet Carneiro\", \"2310902\"],\n\t\t[\"Pires Ferreira\", \"2310951\"],\n\t\t[\"Poranga\", \"2311009\"],\n\t\t[\"Porteiras\", \"2311108\"],\n\t\t[\"Potengi\", \"2311207\"],\n\t\t[\"Potiretama\", \"2311231\"],\n\t\t[\"Quiterianópolis\", \"2311264\"],\n\t\t[\"Quixadá\", \"2311306\"],\n\t\t[\"Quixelô\", \"2311355\"],\n\t\t[\"Quixeramobim\", \"2311405\"],\n\t\t[\"Quixeré\", \"2311504\"],\n\t\t[\"Redenção\", \"2311603\"],\n\t\t[\"Reriutaba\", \"2311702\"],\n\t\t[\"Russas\", \"2311801\"],\n\t\t[\"Saboeiro\", \"2311900\"],\n\t\t[\"Salitre\", \"2311959\"],\n\t\t[\"Santa Quitéria\", \"2312205\"],\n\t\t[\"Santana do Acaraú\", \"2312007\"],\n\t\t[\"Santana do Cariri\", \"2312106\"],\n\t\t[\"São Benedito\", \"2312304\"],\n\t\t[\"São Gonçalo do Amarante\", \"2312403\"],\n\t\t[\"São João do Jaguaribe\", \"2312502\"],\n\t\t[\"São Luís do Curu\", \"2312601\"],\n\t\t[\"Senador Pompeu\", \"2312700\"],\n\t\t[\"Senador Sá\", \"2312809\"],\n\t\t[\"Sobral\", \"2312908\"],\n\t\t[\"Solonópole\", \"2313005\"],\n\t\t[\"Tabuleiro do Norte\", \"2313104\"],\n\t\t[\"Tamboril\", \"2313203\"],\n\t\t[\"Tarrafas\", \"2313252\"],\n\t\t[\"Tauá\", \"2313302\"],\n\t\t[\"Tejuçuoca\", \"2313351\"],\n\t\t[\"Tianguá\", \"2313401\"],\n\t\t[\"Trairi\", \"2313500\"],\n\t\t[\"Tururu\", \"2313559\"],\n\t\t[\"Ubajara\", \"2313609\"],\n\t\t[\"Umari\", \"2313708\"],\n\t\t[\"Umirim\", \"2313757\"],\n\t\t[\"Uruburetama\", \"2313807\"],\n\t\t[\"Uruoca\", \"2313906\"],\n\t\t[\"Varjota\", \"2313955\"],\n\t\t[\"Várzea Alegre\", \"2314003\"],\n\t\t[\"Viçosa do Ceará\", \"2314102\"],\n\t],\n\tDF: [[\"Brasília\", \"5300108\"]],\n\tES: [\n\t\t[\"Afonso Cláudio\", \"3200102\"],\n\t\t[\"Água Doce do Norte\", \"3200169\"],\n\t\t[\"Águia Branca\", \"3200136\"],\n\t\t[\"Alegre\", \"3200201\"],\n\t\t[\"Alfredo Chaves\", \"3200300\"],\n\t\t[\"Alto Rio Novo\", \"3200359\"],\n\t\t[\"Anchieta\", \"3200409\"],\n\t\t[\"Apiacá\", \"3200508\"],\n\t\t[\"Aracruz\", \"3200607\"],\n\t\t[\"Atílio Vivácqua\", \"3200706\"],\n\t\t[\"Baixo Guandu\", \"3200805\"],\n\t\t[\"Barra de São Francisco\", \"3200904\"],\n\t\t[\"Boa Esperança\", \"3201001\"],\n\t\t[\"Bom Jesus do Norte\", \"3201100\"],\n\t\t[\"Brejetuba\", \"3201159\"],\n\t\t[\"Cachoeiro de Itapemirim\", \"3201209\"],\n\t\t[\"Cariacica\", \"3201308\"],\n\t\t[\"Castelo\", \"3201407\"],\n\t\t[\"Colatina\", \"3201506\"],\n\t\t[\"Conceição da Barra\", \"3201605\"],\n\t\t[\"Conceição do Castelo\", \"3201704\"],\n\t\t[\"Divino de São Lourenço\", \"3201803\"],\n\t\t[\"Domingos Martins\", \"3201902\"],\n\t\t[\"Dores do Rio Preto\", \"3202009\"],\n\t\t[\"Ecoporanga\", \"3202108\"],\n\t\t[\"Fundão\", \"3202207\"],\n\t\t[\"Governador Lindenberg\", \"3202256\"],\n\t\t[\"Guaçuí\", \"3202306\"],\n\t\t[\"Guarapari\", \"3202405\"],\n\t\t[\"Ibatiba\", \"3202454\"],\n\t\t[\"Ibiraçu\", \"3202504\"],\n\t\t[\"Ibitirama\", \"3202553\"],\n\t\t[\"Iconha\", \"3202603\"],\n\t\t[\"Irupi\", \"3202652\"],\n\t\t[\"Itaguaçu\", \"3202702\"],\n\t\t[\"Itapemirim\", \"3202801\"],\n\t\t[\"Itarana\", \"3202900\"],\n\t\t[\"Iúna\", \"3203007\"],\n\t\t[\"Jaguaré\", \"3203056\"],\n\t\t[\"Jerônimo Monteiro\", \"3203106\"],\n\t\t[\"João Neiva\", \"3203130\"],\n\t\t[\"Laranja da Terra\", \"3203163\"],\n\t\t[\"Linhares\", \"3203205\"],\n\t\t[\"Mantenópolis\", \"3203304\"],\n\t\t[\"Marataízes\", \"3203320\"],\n\t\t[\"Marechal Floriano\", \"3203346\"],\n\t\t[\"Marilândia\", \"3203353\"],\n\t\t[\"Mimoso do Sul\", \"3203403\"],\n\t\t[\"Montanha\", \"3203502\"],\n\t\t[\"Mucurici\", \"3203601\"],\n\t\t[\"Muniz Freire\", \"3203700\"],\n\t\t[\"Muqui\", \"3203809\"],\n\t\t[\"Nova Venécia\", \"3203908\"],\n\t\t[\"Pancas\", \"3204005\"],\n\t\t[\"Pedro Canário\", \"3204054\"],\n\t\t[\"Pinheiros\", \"3204104\"],\n\t\t[\"Piúma\", \"3204203\"],\n\t\t[\"Ponto Belo\", \"3204252\"],\n\t\t[\"Presidente Kennedy\", \"3204302\"],\n\t\t[\"Rio Bananal\", \"3204351\"],\n\t\t[\"Rio Novo do Sul\", \"3204401\"],\n\t\t[\"Santa Leopoldina\", \"3204500\"],\n\t\t[\"Santa Maria de Jetibá\", \"3204559\"],\n\t\t[\"Santa Teresa\", \"3204609\"],\n\t\t[\"São Domingos do Norte\", \"3204658\"],\n\t\t[\"São Gabriel da Palha\", \"3204708\"],\n\t\t[\"São José do Calçado\", \"3204807\"],\n\t\t[\"São Mateus\", \"3204906\"],\n\t\t[\"São Roque do Canaã\", \"3204955\"],\n\t\t[\"Serra\", \"3205002\"],\n\t\t[\"Sooretama\", \"3205010\"],\n\t\t[\"Vargem Alta\", \"3205036\"],\n\t\t[\"Venda Nova do Imigrante\", \"3205069\"],\n\t\t[\"Viana\", \"3205101\"],\n\t\t[\"Vila Pavão\", \"3205150\"],\n\t\t[\"Vila Valério\", \"3205176\"],\n\t\t[\"Vila Velha\", \"3205200\"],\n\t\t[\"Vitória\", \"3205309\"],\n\t],\n\tGO: [\n\t\t[\"Abadia de Goiás\", \"5200050\"],\n\t\t[\"Abadiânia\", \"5200100\"],\n\t\t[\"Acreúna\", \"5200134\"],\n\t\t[\"Adelândia\", \"5200159\"],\n\t\t[\"Água Fria de Goiás\", \"5200175\"],\n\t\t[\"Água Limpa\", \"5200209\"],\n\t\t[\"Águas Lindas de Goiás\", \"5200258\"],\n\t\t[\"Alexânia\", \"5200308\"],\n\t\t[\"Aloândia\", \"5200506\"],\n\t\t[\"Alto Horizonte\", \"5200555\"],\n\t\t[\"Alto Paraíso de Goiás\", \"5200605\"],\n\t\t[\"Alvorada do Norte\", \"5200803\"],\n\t\t[\"Amaralina\", \"5200829\"],\n\t\t[\"Americano do Brasil\", \"5200852\"],\n\t\t[\"Amorinópolis\", \"5200902\"],\n\t\t[\"Anápolis\", \"5201108\"],\n\t\t[\"Anhanguera\", \"5201207\"],\n\t\t[\"Anicuns\", \"5201306\"],\n\t\t[\"Aparecida de Goiânia\", \"5201405\"],\n\t\t[\"Aparecida do Rio Doce\", \"5201454\"],\n\t\t[\"Aporé\", \"5201504\"],\n\t\t[\"Araçu\", \"5201603\"],\n\t\t[\"Aragarças\", \"5201702\"],\n\t\t[\"Aragoiânia\", \"5201801\"],\n\t\t[\"Araguapaz\", \"5202155\"],\n\t\t[\"Arenópolis\", \"5202353\"],\n\t\t[\"Aruanã\", \"5202502\"],\n\t\t[\"Aurilândia\", \"5202601\"],\n\t\t[\"Avelinópolis\", \"5202809\"],\n\t\t[\"Baliza\", \"5203104\"],\n\t\t[\"Barro Alto\", \"5203203\"],\n\t\t[\"Bela Vista de Goiás\", \"5203302\"],\n\t\t[\"Bom Jardim de Goiás\", \"5203401\"],\n\t\t[\"Bom Jesus de Goiás\", \"5203500\"],\n\t\t[\"Bonfinópolis\", \"5203559\"],\n\t\t[\"Bonópolis\", \"5203575\"],\n\t\t[\"Brazabrantes\", \"5203609\"],\n\t\t[\"Britânia\", \"5203807\"],\n\t\t[\"Buriti Alegre\", \"5203906\"],\n\t\t[\"Buriti de Goiás\", \"5203939\"],\n\t\t[\"Buritinópolis\", \"5203962\"],\n\t\t[\"Cabeceiras\", \"5204003\"],\n\t\t[\"Cachoeira Alta\", \"5204102\"],\n\t\t[\"Cachoeira de Goiás\", \"5204201\"],\n\t\t[\"Cachoeira Dourada\", \"5204250\"],\n\t\t[\"Caçu\", \"5204300\"],\n\t\t[\"Caiapônia\", \"5204409\"],\n\t\t[\"Caldas Novas\", \"5204508\"],\n\t\t[\"Caldazinha\", \"5204557\"],\n\t\t[\"Campestre de Goiás\", \"5204607\"],\n\t\t[\"Campinaçu\", \"5204656\"],\n\t\t[\"Campinorte\", \"5204706\"],\n\t\t[\"Campo Alegre de Goiás\", \"5204805\"],\n\t\t[\"Campo Limpo de Goiás\", \"5204854\"],\n\t\t[\"Campos Belos\", \"5204904\"],\n\t\t[\"Campos Verdes\", \"5204953\"],\n\t\t[\"Carmo do Rio Verde\", \"5205000\"],\n\t\t[\"Castelândia\", \"5205059\"],\n\t\t[\"Catalão\", \"5205109\"],\n\t\t[\"Caturaí\", \"5205208\"],\n\t\t[\"Cavalcante\", \"5205307\"],\n\t\t[\"Ceres\", \"5205406\"],\n\t\t[\"Cezarina\", \"5205455\"],\n\t\t[\"Chapadão do Céu\", \"5205471\"],\n\t\t[\"Cidade Ocidental\", \"5205497\"],\n\t\t[\"Cocalzinho de Goiás\", \"5205513\"],\n\t\t[\"Colinas do Sul\", \"5205521\"],\n\t\t[\"Córrego do Ouro\", \"5205703\"],\n\t\t[\"Corumbá de Goiás\", \"5205802\"],\n\t\t[\"Corumbaíba\", \"5205901\"],\n\t\t[\"Cristalina\", \"5206206\"],\n\t\t[\"Cristianópolis\", \"5206305\"],\n\t\t[\"Crixás\", \"5206404\"],\n\t\t[\"Cromínia\", \"5206503\"],\n\t\t[\"Cumari\", \"5206602\"],\n\t\t[\"Damianópolis\", \"5206701\"],\n\t\t[\"Damolândia\", \"5206800\"],\n\t\t[\"Davinópolis\", \"5206909\"],\n\t\t[\"Diorama\", \"5207105\"],\n\t\t[\"Divinópolis de Goiás\", \"5208301\"],\n\t\t[\"Doverlândia\", \"5207253\"],\n\t\t[\"Edealina\", \"5207352\"],\n\t\t[\"Edéia\", \"5207402\"],\n\t\t[\"Estrela do Norte\", \"5207501\"],\n\t\t[\"Faina\", \"5207535\"],\n\t\t[\"Fazenda Nova\", \"5207600\"],\n\t\t[\"Firminópolis\", \"5207808\"],\n\t\t[\"Flores de Goiás\", \"5207907\"],\n\t\t[\"Formosa\", \"5208004\"],\n\t\t[\"Formoso\", \"5208103\"],\n\t\t[\"Gameleira de Goiás\", \"5208152\"],\n\t\t[\"Goianápolis\", \"5208400\"],\n\t\t[\"Goiandira\", \"5208509\"],\n\t\t[\"Goianésia\", \"5208608\"],\n\t\t[\"Goiânia\", \"5208707\"],\n\t\t[\"Goianira\", \"5208806\"],\n\t\t[\"Goiás\", \"5208905\"],\n\t\t[\"Goiatuba\", \"5209101\"],\n\t\t[\"Gouvelândia\", \"5209150\"],\n\t\t[\"Guapó\", \"5209200\"],\n\t\t[\"Guaraíta\", \"5209291\"],\n\t\t[\"Guarani de Goiás\", \"5209408\"],\n\t\t[\"Guarinos\", \"5209457\"],\n\t\t[\"Heitoraí\", \"5209606\"],\n\t\t[\"Hidrolândia\", \"5209705\"],\n\t\t[\"Hidrolina\", \"5209804\"],\n\t\t[\"Iaciara\", \"5209903\"],\n\t\t[\"Inaciolândia\", \"5209937\"],\n\t\t[\"Indiara\", \"5209952\"],\n\t\t[\"Inhumas\", \"5210000\"],\n\t\t[\"Ipameri\", \"5210109\"],\n\t\t[\"Ipiranga de Goiás\", \"5210158\"],\n\t\t[\"Iporá\", \"5210208\"],\n\t\t[\"Israelândia\", \"5210307\"],\n\t\t[\"Itaberaí\", \"5210406\"],\n\t\t[\"Itaguari\", \"5210562\"],\n\t\t[\"Itaguaru\", \"5210604\"],\n\t\t[\"Itajá\", \"5210802\"],\n\t\t[\"Itapaci\", \"5210901\"],\n\t\t[\"Itapirapuã\", \"5211008\"],\n\t\t[\"Itapuranga\", \"5211206\"],\n\t\t[\"Itarumã\", \"5211305\"],\n\t\t[\"Itauçu\", \"5211404\"],\n\t\t[\"Itumbiara\", \"5211503\"],\n\t\t[\"Ivolândia\", \"5211602\"],\n\t\t[\"Jandaia\", \"5211701\"],\n\t\t[\"Jaraguá\", \"5211800\"],\n\t\t[\"Jataí\", \"5211909\"],\n\t\t[\"Jaupaci\", \"5212006\"],\n\t\t[\"Jesúpolis\", \"5212055\"],\n\t\t[\"Joviânia\", \"5212105\"],\n\t\t[\"Jussara\", \"5212204\"],\n\t\t[\"Lagoa Santa\", \"5212253\"],\n\t\t[\"Leopoldo de Bulhões\", \"5212303\"],\n\t\t[\"Luziânia\", \"5212501\"],\n\t\t[\"Mairipotaba\", \"5212600\"],\n\t\t[\"Mambaí\", \"5212709\"],\n\t\t[\"Mara Rosa\", \"5212808\"],\n\t\t[\"Marzagão\", \"5212907\"],\n\t\t[\"Matrinchã\", \"5212956\"],\n\t\t[\"Maurilândia\", \"5213004\"],\n\t\t[\"Mimoso de Goiás\", \"5213053\"],\n\t\t[\"Minaçu\", \"5213087\"],\n\t\t[\"Mineiros\", \"5213103\"],\n\t\t[\"Moiporá\", \"5213400\"],\n\t\t[\"Monte Alegre de Goiás\", \"5213509\"],\n\t\t[\"Montes Claros de Goiás\", \"5213707\"],\n\t\t[\"Montividiu\", \"5213756\"],\n\t\t[\"Montividiu do Norte\", \"5213772\"],\n\t\t[\"Morrinhos\", \"5213806\"],\n\t\t[\"Morro Agudo de Goiás\", \"5213855\"],\n\t\t[\"Mossâmedes\", \"5213905\"],\n\t\t[\"Mozarlândia\", \"5214002\"],\n\t\t[\"Mundo Novo\", \"5214051\"],\n\t\t[\"Mutunópolis\", \"5214101\"],\n\t\t[\"Nazário\", \"5214408\"],\n\t\t[\"Nerópolis\", \"5214507\"],\n\t\t[\"Niquelândia\", \"5214606\"],\n\t\t[\"Nova América\", \"5214705\"],\n\t\t[\"Nova Aurora\", \"5214804\"],\n\t\t[\"Nova Crixás\", \"5214838\"],\n\t\t[\"Nova Glória\", \"5214861\"],\n\t\t[\"Nova Iguaçu de Goiás\", \"5214879\"],\n\t\t[\"Nova Roma\", \"5214903\"],\n\t\t[\"Nova Veneza\", \"5215009\"],\n\t\t[\"Novo Brasil\", \"5215207\"],\n\t\t[\"Novo Gama\", \"5215231\"],\n\t\t[\"Novo Planalto\", \"5215256\"],\n\t\t[\"Orizona\", \"5215306\"],\n\t\t[\"Ouro Verde de Goiás\", \"5215405\"],\n\t\t[\"Ouvidor\", \"5215504\"],\n\t\t[\"Padre Bernardo\", \"5215603\"],\n\t\t[\"Palestina de Goiás\", \"5215652\"],\n\t\t[\"Palmeiras de Goiás\", \"5215702\"],\n\t\t[\"Palmelo\", \"5215801\"],\n\t\t[\"Palminópolis\", \"5215900\"],\n\t\t[\"Panamá\", \"5216007\"],\n\t\t[\"Paranaiguara\", \"5216304\"],\n\t\t[\"Paraúna\", \"5216403\"],\n\t\t[\"Perolândia\", \"5216452\"],\n\t\t[\"Petrolina de Goiás\", \"5216809\"],\n\t\t[\"Pilar de Goiás\", \"5216908\"],\n\t\t[\"Piracanjuba\", \"5217104\"],\n\t\t[\"Piranhas\", \"5217203\"],\n\t\t[\"Pirenópolis\", \"5217302\"],\n\t\t[\"Pires do Rio\", \"5217401\"],\n\t\t[\"Planaltina\", \"5217609\"],\n\t\t[\"Pontalina\", \"5217708\"],\n\t\t[\"Porangatu\", \"5218003\"],\n\t\t[\"Porteirão\", \"5218052\"],\n\t\t[\"Portelândia\", \"5218102\"],\n\t\t[\"Posse\", \"5218300\"],\n\t\t[\"Professor Jamil\", \"5218391\"],\n\t\t[\"Quirinópolis\", \"5218508\"],\n\t\t[\"Rialma\", \"5218607\"],\n\t\t[\"Rianápolis\", \"5218706\"],\n\t\t[\"Rio Quente\", \"5218789\"],\n\t\t[\"Rio Verde\", \"5218805\"],\n\t\t[\"Rubiataba\", \"5218904\"],\n\t\t[\"Sanclerlândia\", \"5219001\"],\n\t\t[\"Santa Bárbara de Goiás\", \"5219100\"],\n\t\t[\"Santa Cruz de Goiás\", \"5219209\"],\n\t\t[\"Santa Fé de Goiás\", \"5219258\"],\n\t\t[\"Santa Helena de Goiás\", \"5219308\"],\n\t\t[\"Santa Isabel\", \"5219357\"],\n\t\t[\"Santa Rita do Araguaia\", \"5219407\"],\n\t\t[\"Santa Rita do Novo Destino\", \"5219456\"],\n\t\t[\"Santa Rosa de Goiás\", \"5219506\"],\n\t\t[\"Santa Tereza de Goiás\", \"5219605\"],\n\t\t[\"Santa Terezinha de Goiás\", \"5219704\"],\n\t\t[\"Santo Antônio da Barra\", \"5219712\"],\n\t\t[\"Santo Antônio de Goiás\", \"5219738\"],\n\t\t[\"Santo Antônio do Descoberto\", \"5219753\"],\n\t\t[\"São Domingos\", \"5219803\"],\n\t\t[\"São Francisco de Goiás\", \"5219902\"],\n\t\t[\"São João d'Aliança\", \"5220009\"],\n\t\t[\"São João da Paraúna\", \"5220058\"],\n\t\t[\"São Luís de Montes Belos\", \"5220108\"],\n\t\t[\"São Luiz do Norte\", \"5220157\"],\n\t\t[\"São Miguel do Araguaia\", \"5220207\"],\n\t\t[\"São Miguel do Passa Quatro\", \"5220264\"],\n\t\t[\"São Patrício\", \"5220280\"],\n\t\t[\"São Simão\", \"5220405\"],\n\t\t[\"Senador Canedo\", \"5220454\"],\n\t\t[\"Serranópolis\", \"5220504\"],\n\t\t[\"Silvânia\", \"5220603\"],\n\t\t[\"Simolândia\", \"5220686\"],\n\t\t[\"Sítio d'Abadia\", \"5220702\"],\n\t\t[\"Taquaral de Goiás\", \"5221007\"],\n\t\t[\"Teresina de Goiás\", \"5221080\"],\n\t\t[\"Terezópolis de Goiás\", \"5221197\"],\n\t\t[\"Três Ranchos\", \"5221304\"],\n\t\t[\"Trindade\", \"5221403\"],\n\t\t[\"Trombas\", \"5221452\"],\n\t\t[\"Turvânia\", \"5221502\"],\n\t\t[\"Turvelândia\", \"5221551\"],\n\t\t[\"Uirapuru\", \"5221577\"],\n\t\t[\"Uruaçu\", \"5221601\"],\n\t\t[\"Uruana\", \"5221700\"],\n\t\t[\"Urutaí\", \"5221809\"],\n\t\t[\"Valparaíso de Goiás\", \"5221858\"],\n\t\t[\"Varjão\", \"5221908\"],\n\t\t[\"Vianópolis\", \"5222005\"],\n\t\t[\"Vicentinópolis\", \"5222054\"],\n\t\t[\"Vila Boa\", \"5222203\"],\n\t\t[\"Vila Propício\", \"5222302\"],\n\t],\n\tMA: [\n\t\t[\"Açailândia\", \"2100055\"],\n\t\t[\"Afonso Cunha\", \"2100105\"],\n\t\t[\"Água Doce do Maranhão\", \"2100154\"],\n\t\t[\"Alcântara\", \"2100204\"],\n\t\t[\"Aldeias Altas\", \"2100303\"],\n\t\t[\"Altamira do Maranhão\", \"2100402\"],\n\t\t[\"Alto Alegre do Maranhão\", \"2100436\"],\n\t\t[\"Alto Alegre do Pindaré\", \"2100477\"],\n\t\t[\"Alto Parnaíba\", \"2100501\"],\n\t\t[\"Amapá do Maranhão\", \"2100550\"],\n\t\t[\"Amarante do Maranhão\", \"2100600\"],\n\t\t[\"Anajatuba\", \"2100709\"],\n\t\t[\"Anapurus\", \"2100808\"],\n\t\t[\"Apicum-Açu\", \"2100832\"],\n\t\t[\"Araguanã\", \"2100873\"],\n\t\t[\"Araioses\", \"2100907\"],\n\t\t[\"Arame\", \"2100956\"],\n\t\t[\"Arari\", \"2101004\"],\n\t\t[\"Axixá\", \"2101103\"],\n\t\t[\"Bacabal\", \"2101202\"],\n\t\t[\"Bacabeira\", \"2101251\"],\n\t\t[\"Bacuri\", \"2101301\"],\n\t\t[\"Bacurituba\", \"2101350\"],\n\t\t[\"Balsas\", \"2101400\"],\n\t\t[\"Barão de Grajaú\", \"2101509\"],\n\t\t[\"Barra do Corda\", \"2101608\"],\n\t\t[\"Barreirinhas\", \"2101707\"],\n\t\t[\"Bela Vista do Maranhão\", \"2101772\"],\n\t\t[\"Belágua\", \"2101731\"],\n\t\t[\"Benedito Leite\", \"2101806\"],\n\t\t[\"Bequimão\", \"2101905\"],\n\t\t[\"Bernardo do Mearim\", \"2101939\"],\n\t\t[\"Boa Vista do Gurupi\", \"2101970\"],\n\t\t[\"Bom Jardim\", \"2102002\"],\n\t\t[\"Bom Jesus das Selvas\", \"2102036\"],\n\t\t[\"Bom Lugar\", \"2102077\"],\n\t\t[\"Brejo\", \"2102101\"],\n\t\t[\"Brejo de Areia\", \"2102150\"],\n\t\t[\"Buriti\", \"2102200\"],\n\t\t[\"Buriti Bravo\", \"2102309\"],\n\t\t[\"Buriticupu\", \"2102325\"],\n\t\t[\"Buritirana\", \"2102358\"],\n\t\t[\"Cachoeira Grande\", \"2102374\"],\n\t\t[\"Cajapió\", \"2102408\"],\n\t\t[\"Cajari\", \"2102507\"],\n\t\t[\"Campestre do Maranhão\", \"2102556\"],\n\t\t[\"Cândido Mendes\", \"2102606\"],\n\t\t[\"Cantanhede\", \"2102705\"],\n\t\t[\"Capinzal do Norte\", \"2102754\"],\n\t\t[\"Carolina\", \"2102804\"],\n\t\t[\"Carutapera\", \"2102903\"],\n\t\t[\"Caxias\", \"2103000\"],\n\t\t[\"Cedral\", \"2103109\"],\n\t\t[\"Central do Maranhão\", \"2103125\"],\n\t\t[\"Centro do Guilherme\", \"2103158\"],\n\t\t[\"Centro Novo do Maranhão\", \"2103174\"],\n\t\t[\"Chapadinha\", \"2103208\"],\n\t\t[\"Cidelândia\", \"2103257\"],\n\t\t[\"Codó\", \"2103307\"],\n\t\t[\"Coelho Neto\", \"2103406\"],\n\t\t[\"Colinas\", \"2103505\"],\n\t\t[\"Conceição do Lago-Açu\", \"2103554\"],\n\t\t[\"Coroatá\", \"2103604\"],\n\t\t[\"Cururupu\", \"2103703\"],\n\t\t[\"Davinópolis\", \"2103752\"],\n\t\t[\"Dom Pedro\", \"2103802\"],\n\t\t[\"Duque Bacelar\", \"2103901\"],\n\t\t[\"Esperantinópolis\", \"2104008\"],\n\t\t[\"Estreito\", \"2104057\"],\n\t\t[\"Feira Nova do Maranhão\", \"2104073\"],\n\t\t[\"Fernando Falcão\", \"2104081\"],\n\t\t[\"Formosa da Serra Negra\", \"2104099\"],\n\t\t[\"Fortaleza dos Nogueiras\", \"2104107\"],\n\t\t[\"Fortuna\", \"2104206\"],\n\t\t[\"Godofredo Viana\", \"2104305\"],\n\t\t[\"Gonçalves Dias\", \"2104404\"],\n\t\t[\"Governador Archer\", \"2104503\"],\n\t\t[\"Governador Edison Lobão\", \"2104552\"],\n\t\t[\"Governador Eugênio Barros\", \"2104602\"],\n\t\t[\"Governador Luiz Rocha\", \"2104628\"],\n\t\t[\"Governador Newton Bello\", \"2104651\"],\n\t\t[\"Governador Nunes Freire\", \"2104677\"],\n\t\t[\"Graça Aranha\", \"2104701\"],\n\t\t[\"Grajaú\", \"2104800\"],\n\t\t[\"Guimarães\", \"2104909\"],\n\t\t[\"Humberto de Campos\", \"2105005\"],\n\t\t[\"Icatu\", \"2105104\"],\n\t\t[\"Igarapé do Meio\", \"2105153\"],\n\t\t[\"Igarapé Grande\", \"2105203\"],\n\t\t[\"Imperatriz\", \"2105302\"],\n\t\t[\"Itaipava do Grajaú\", \"2105351\"],\n\t\t[\"Itapecuru Mirim\", \"2105401\"],\n\t\t[\"Itinga do Maranhão\", \"2105427\"],\n\t\t[\"Jatobá\", \"2105450\"],\n\t\t[\"Jenipapo dos Vieiras\", \"2105476\"],\n\t\t[\"João Lisboa\", \"2105500\"],\n\t\t[\"Joselândia\", \"2105609\"],\n\t\t[\"Junco do Maranhão\", \"2105658\"],\n\t\t[\"Lago da Pedra\", \"2105708\"],\n\t\t[\"Lago do Junco\", \"2105807\"],\n\t\t[\"Lago dos Rodrigues\", \"2105948\"],\n\t\t[\"Lago Verde\", \"2105906\"],\n\t\t[\"Lagoa do Mato\", \"2105922\"],\n\t\t[\"Lagoa Grande do Maranhão\", \"2105963\"],\n\t\t[\"Lajeado Novo\", \"2105989\"],\n\t\t[\"Lima Campos\", \"2106003\"],\n\t\t[\"Loreto\", \"2106102\"],\n\t\t[\"Luís Domingues\", \"2106201\"],\n\t\t[\"Magalhães de Almeida\", \"2106300\"],\n\t\t[\"Maracaçumé\", \"2106326\"],\n\t\t[\"Marajá do Sena\", \"2106359\"],\n\t\t[\"Maranhãozinho\", \"2106375\"],\n\t\t[\"Mata Roma\", \"2106409\"],\n\t\t[\"Matinha\", \"2106508\"],\n\t\t[\"Matões\", \"2106607\"],\n\t\t[\"Matões do Norte\", \"2106631\"],\n\t\t[\"Milagres do Maranhão\", \"2106672\"],\n\t\t[\"Mirador\", \"2106706\"],\n\t\t[\"Miranda do Norte\", \"2106755\"],\n\t\t[\"Mirinzal\", \"2106805\"],\n\t\t[\"Monção\", \"2106904\"],\n\t\t[\"Montes Altos\", \"2107001\"],\n\t\t[\"Morros\", \"2107100\"],\n\t\t[\"Nina Rodrigues\", \"2107209\"],\n\t\t[\"Nova Colinas\", \"2107258\"],\n\t\t[\"Nova Iorque\", \"2107308\"],\n\t\t[\"Nova Olinda do Maranhão\", \"2107357\"],\n\t\t[\"Olho d'Água das Cunhãs\", \"2107407\"],\n\t\t[\"Olinda Nova do Maranhão\", \"2107456\"],\n\t\t[\"Paço do Lumiar\", \"2107506\"],\n\t\t[\"Palmeirândia\", \"2107605\"],\n\t\t[\"Paraibano\", \"2107704\"],\n\t\t[\"Parnarama\", \"2107803\"],\n\t\t[\"Passagem Franca\", \"2107902\"],\n\t\t[\"Pastos Bons\", \"2108009\"],\n\t\t[\"Paulino Neves\", \"2108058\"],\n\t\t[\"Paulo Ramos\", \"2108108\"],\n\t\t[\"Pedreiras\", \"2108207\"],\n\t\t[\"Pedro do Rosário\", \"2108256\"],\n\t\t[\"Penalva\", \"2108306\"],\n\t\t[\"Peri Mirim\", \"2108405\"],\n\t\t[\"Peritoró\", \"2108454\"],\n\t\t[\"Pindaré-Mirim\", \"2108504\"],\n\t\t[\"Pinheiro\", \"2108603\"],\n\t\t[\"Pio XII\", \"2108702\"],\n\t\t[\"Pirapemas\", \"2108801\"],\n\t\t[\"Poção de Pedras\", \"2108900\"],\n\t\t[\"Porto Franco\", \"2109007\"],\n\t\t[\"Porto Rico do Maranhão\", \"2109056\"],\n\t\t[\"Presidente Dutra\", \"2109106\"],\n\t\t[\"Presidente Juscelino\", \"2109205\"],\n\t\t[\"Presidente Médici\", \"2109239\"],\n\t\t[\"Presidente Sarney\", \"2109270\"],\n\t\t[\"Presidente Vargas\", \"2109304\"],\n\t\t[\"Primeira Cruz\", \"2109403\"],\n\t\t[\"Raposa\", \"2109452\"],\n\t\t[\"Riachão\", \"2109502\"],\n\t\t[\"Ribamar Fiquene\", \"2109551\"],\n\t\t[\"Rosário\", \"2109601\"],\n\t\t[\"Sambaíba\", \"2109700\"],\n\t\t[\"Santa Filomena do Maranhão\", \"2109759\"],\n\t\t[\"Santa Helena\", \"2109809\"],\n\t\t[\"Santa Inês\", \"2109908\"],\n\t\t[\"Santa Luzia\", \"2110005\"],\n\t\t[\"Santa Luzia do Paruá\", \"2110039\"],\n\t\t[\"Santa Quitéria do Maranhão\", \"2110104\"],\n\t\t[\"Santa Rita\", \"2110203\"],\n\t\t[\"Santana do Maranhão\", \"2110237\"],\n\t\t[\"Santo Amaro do Maranhão\", \"2110278\"],\n\t\t[\"Santo Antônio dos Lopes\", \"2110302\"],\n\t\t[\"São Benedito do Rio Preto\", \"2110401\"],\n\t\t[\"São Bento\", \"2110500\"],\n\t\t[\"São Bernardo\", \"2110609\"],\n\t\t[\"São Domingos do Azeitão\", \"2110658\"],\n\t\t[\"São Domingos do Maranhão\", \"2110708\"],\n\t\t[\"São Félix de Balsas\", \"2110807\"],\n\t\t[\"São Francisco do Brejão\", \"2110856\"],\n\t\t[\"São Francisco do Maranhão\", \"2110906\"],\n\t\t[\"São João Batista\", \"2111003\"],\n\t\t[\"São João do Carú\", \"2111029\"],\n\t\t[\"São João do Paraíso\", \"2111052\"],\n\t\t[\"São João do Soter\", \"2111078\"],\n\t\t[\"São João dos Patos\", \"2111102\"],\n\t\t[\"São José de Ribamar\", \"2111201\"],\n\t\t[\"São José dos Basílios\", \"2111250\"],\n\t\t[\"São Luís\", \"2111300\"],\n\t\t[\"São Luís Gonzaga do Maranhão\", \"2111409\"],\n\t\t[\"São Mateus do Maranhão\", \"2111508\"],\n\t\t[\"São Pedro da Água Branca\", \"2111532\"],\n\t\t[\"São Pedro dos Crentes\", \"2111573\"],\n\t\t[\"São Raimundo das Mangabeiras\", \"2111607\"],\n\t\t[\"São Raimundo do Doca Bezerra\", \"2111631\"],\n\t\t[\"São Roberto\", \"2111672\"],\n\t\t[\"São Vicente Ferrer\", \"2111706\"],\n\t\t[\"Satubinha\", \"2111722\"],\n\t\t[\"Senador Alexandre Costa\", \"2111748\"],\n\t\t[\"Senador La Rocque\", \"2111763\"],\n\t\t[\"Serrano do Maranhão\", \"2111789\"],\n\t\t[\"Sítio Novo\", \"2111805\"],\n\t\t[\"Sucupira do Norte\", \"2111904\"],\n\t\t[\"Sucupira do Riachão\", \"2111953\"],\n\t\t[\"Tasso Fragoso\", \"2112001\"],\n\t\t[\"Timbiras\", \"2112100\"],\n\t\t[\"Timon\", \"2112209\"],\n\t\t[\"Trizidela do Vale\", \"2112233\"],\n\t\t[\"Tufilândia\", \"2112274\"],\n\t\t[\"Tuntum\", \"2112308\"],\n\t\t[\"Turiaçu\", \"2112407\"],\n\t\t[\"Turilândia\", \"2112456\"],\n\t\t[\"Tutóia\", \"2112506\"],\n\t\t[\"Urbano Santos\", \"2112605\"],\n\t\t[\"Vargem Grande\", \"2112704\"],\n\t\t[\"Viana\", \"2112803\"],\n\t\t[\"Vila Nova dos Martírios\", \"2112852\"],\n\t\t[\"Vitória do Mearim\", \"2112902\"],\n\t\t[\"Vitorino Freire\", \"2113009\"],\n\t\t[\"Zé Doca\", \"2114007\"],\n\t],\n\tMG: [\n\t\t[\"Abadia dos Dourados\", \"3100104\"],\n\t\t[\"Abaeté\", \"3100203\"],\n\t\t[\"Abre Campo\", \"3100302\"],\n\t\t[\"Acaiaca\", \"3100401\"],\n\t\t[\"Açucena\", \"3100500\"],\n\t\t[\"Água Boa\", \"3100609\"],\n\t\t[\"Água Comprida\", \"3100708\"],\n\t\t[\"Aguanil\", \"3100807\"],\n\t\t[\"Águas Formosas\", \"3100906\"],\n\t\t[\"Águas Vermelhas\", \"3101003\"],\n\t\t[\"Aimorés\", \"3101102\"],\n\t\t[\"Aiuruoca\", \"3101201\"],\n\t\t[\"Alagoa\", \"3101300\"],\n\t\t[\"Albertina\", \"3101409\"],\n\t\t[\"Além Paraíba\", \"3101508\"],\n\t\t[\"Alfenas\", \"3101607\"],\n\t\t[\"Alfredo Vasconcelos\", \"3101631\"],\n\t\t[\"Almenara\", \"3101706\"],\n\t\t[\"Alpercata\", \"3101805\"],\n\t\t[\"Alpinópolis\", \"3101904\"],\n\t\t[\"Alterosa\", \"3102001\"],\n\t\t[\"Alto Caparaó\", \"3102050\"],\n\t\t[\"Alto Jequitibá\", \"3153509\"],\n\t\t[\"Alto Rio Doce\", \"3102100\"],\n\t\t[\"Alvarenga\", \"3102209\"],\n\t\t[\"Alvinópolis\", \"3102308\"],\n\t\t[\"Alvorada de Minas\", \"3102407\"],\n\t\t[\"Amparo do Serra\", \"3102506\"],\n\t\t[\"Andradas\", \"3102605\"],\n\t\t[\"Andrelândia\", \"3102803\"],\n\t\t[\"Angelândia\", \"3102852\"],\n\t\t[\"Antônio Carlos\", \"3102902\"],\n\t\t[\"Antônio Dias\", \"3103009\"],\n\t\t[\"Antônio Prado de Minas\", \"3103108\"],\n\t\t[\"Araçaí\", \"3103207\"],\n\t\t[\"Aracitaba\", \"3103306\"],\n\t\t[\"Araçuaí\", \"3103405\"],\n\t\t[\"Araguari\", \"3103504\"],\n\t\t[\"Arantina\", \"3103603\"],\n\t\t[\"Araponga\", \"3103702\"],\n\t\t[\"Araporã\", \"3103751\"],\n\t\t[\"Arapuá\", \"3103801\"],\n\t\t[\"Araújos\", \"3103900\"],\n\t\t[\"Araxá\", \"3104007\"],\n\t\t[\"Arceburgo\", \"3104106\"],\n\t\t[\"Arcos\", \"3104205\"],\n\t\t[\"Areado\", \"3104304\"],\n\t\t[\"Argirita\", \"3104403\"],\n\t\t[\"Aricanduva\", \"3104452\"],\n\t\t[\"Arinos\", \"3104502\"],\n\t\t[\"Astolfo Dutra\", \"3104601\"],\n\t\t[\"Ataléia\", \"3104700\"],\n\t\t[\"Augusto de Lima\", \"3104809\"],\n\t\t[\"Baependi\", \"3104908\"],\n\t\t[\"Baldim\", \"3105004\"],\n\t\t[\"Bambuí\", \"3105103\"],\n\t\t[\"Bandeira\", \"3105202\"],\n\t\t[\"Bandeira do Sul\", \"3105301\"],\n\t\t[\"Barão de Cocais\", \"3105400\"],\n\t\t[\"Barão do Monte Alto\", \"3105509\"],\n\t\t[\"Barbacena\", \"3105608\"],\n\t\t[\"Barra Longa\", \"3105707\"],\n\t\t[\"Barroso\", \"3105905\"],\n\t\t[\"Bela Vista de Minas\", \"3106002\"],\n\t\t[\"Belmiro Braga\", \"3106101\"],\n\t\t[\"Belo Horizonte\", \"3106200\"],\n\t\t[\"Belo Oriente\", \"3106309\"],\n\t\t[\"Belo Vale\", \"3106408\"],\n\t\t[\"Berilo\", \"3106507\"],\n\t\t[\"Berizal\", \"3106655\"],\n\t\t[\"Bertópolis\", \"3106606\"],\n\t\t[\"Betim\", \"3106705\"],\n\t\t[\"Bias Fortes\", \"3106804\"],\n\t\t[\"Bicas\", \"3106903\"],\n\t\t[\"Biquinhas\", \"3107000\"],\n\t\t[\"Boa Esperança\", \"3107109\"],\n\t\t[\"Bocaina de Minas\", \"3107208\"],\n\t\t[\"Bocaiúva\", \"3107307\"],\n\t\t[\"Bom Despacho\", \"3107406\"],\n\t\t[\"Bom Jardim de Minas\", \"3107505\"],\n\t\t[\"Bom Jesus da Penha\", \"3107604\"],\n\t\t[\"Bom Jesus do Amparo\", \"3107703\"],\n\t\t[\"Bom Jesus do Galho\", \"3107802\"],\n\t\t[\"Bom Repouso\", \"3107901\"],\n\t\t[\"Bom Sucesso\", \"3108008\"],\n\t\t[\"Bonfim\", \"3108107\"],\n\t\t[\"Bonfinópolis de Minas\", \"3108206\"],\n\t\t[\"Bonito de Minas\", \"3108255\"],\n\t\t[\"Borda da Mata\", \"3108305\"],\n\t\t[\"Botelhos\", \"3108404\"],\n\t\t[\"Botumirim\", \"3108503\"],\n\t\t[\"Brás Pires\", \"3108701\"],\n\t\t[\"Brasilândia de Minas\", \"3108552\"],\n\t\t[\"Brasília de Minas\", \"3108602\"],\n\t\t[\"Braúnas\", \"3108800\"],\n\t\t[\"Brazópolis\", \"3108909\"],\n\t\t[\"Brumadinho\", \"3109006\"],\n\t\t[\"Bueno Brandão\", \"3109105\"],\n\t\t[\"Buenópolis\", \"3109204\"],\n\t\t[\"Bugre\", \"3109253\"],\n\t\t[\"Buritis\", \"3109303\"],\n\t\t[\"Buritizeiro\", \"3109402\"],\n\t\t[\"Cabeceira Grande\", \"3109451\"],\n\t\t[\"Cabo Verde\", \"3109501\"],\n\t\t[\"Cachoeira da Prata\", \"3109600\"],\n\t\t[\"Cachoeira de Minas\", \"3109709\"],\n\t\t[\"Cachoeira de Pajeú\", \"3102704\"],\n\t\t[\"Cachoeira Dourada\", \"3109808\"],\n\t\t[\"Caetanópolis\", \"3109907\"],\n\t\t[\"Caeté\", \"3110004\"],\n\t\t[\"Caiana\", \"3110103\"],\n\t\t[\"Cajuri\", \"3110202\"],\n\t\t[\"Caldas\", \"3110301\"],\n\t\t[\"Camacho\", \"3110400\"],\n\t\t[\"Camanducaia\", \"3110509\"],\n\t\t[\"Cambuí\", \"3110608\"],\n\t\t[\"Cambuquira\", \"3110707\"],\n\t\t[\"Campanário\", \"3110806\"],\n\t\t[\"Campanha\", \"3110905\"],\n\t\t[\"Campestre\", \"3111002\"],\n\t\t[\"Campina Verde\", \"3111101\"],\n\t\t[\"Campo Azul\", \"3111150\"],\n\t\t[\"Campo Belo\", \"3111200\"],\n\t\t[\"Campo do Meio\", \"3111309\"],\n\t\t[\"Campo Florido\", \"3111408\"],\n\t\t[\"Campos Altos\", \"3111507\"],\n\t\t[\"Campos Gerais\", \"3111606\"],\n\t\t[\"Cana Verde\", \"3111903\"],\n\t\t[\"Canaã\", \"3111705\"],\n\t\t[\"Canápolis\", \"3111804\"],\n\t\t[\"Candeias\", \"3112000\"],\n\t\t[\"Cantagalo\", \"3112059\"],\n\t\t[\"Caparaó\", \"3112109\"],\n\t\t[\"Capela Nova\", \"3112208\"],\n\t\t[\"Capelinha\", \"3112307\"],\n\t\t[\"Capetinga\", \"3112406\"],\n\t\t[\"Capim Branco\", \"3112505\"],\n\t\t[\"Capinópolis\", \"3112604\"],\n\t\t[\"Capitão Andrade\", \"3112653\"],\n\t\t[\"Capitão Enéas\", \"3112703\"],\n\t\t[\"Capitólio\", \"3112802\"],\n\t\t[\"Caputira\", \"3112901\"],\n\t\t[\"Caraí\", \"3113008\"],\n\t\t[\"Caranaíba\", \"3113107\"],\n\t\t[\"Carandaí\", \"3113206\"],\n\t\t[\"Carangola\", \"3113305\"],\n\t\t[\"Caratinga\", \"3113404\"],\n\t\t[\"Carbonita\", \"3113503\"],\n\t\t[\"Careaçu\", \"3113602\"],\n\t\t[\"Carlos Chagas\", \"3113701\"],\n\t\t[\"Carmésia\", \"3113800\"],\n\t\t[\"Carmo da Cachoeira\", \"3113909\"],\n\t\t[\"Carmo da Mata\", \"3114006\"],\n\t\t[\"Carmo de Minas\", \"3114105\"],\n\t\t[\"Carmo do Cajuru\", \"3114204\"],\n\t\t[\"Carmo do Paranaíba\", \"3114303\"],\n\t\t[\"Carmo do Rio Claro\", \"3114402\"],\n\t\t[\"Carmópolis de Minas\", \"3114501\"],\n\t\t[\"Carneirinho\", \"3114550\"],\n\t\t[\"Carrancas\", \"3114600\"],\n\t\t[\"Carvalhópolis\", \"3114709\"],\n\t\t[\"Carvalhos\", \"3114808\"],\n\t\t[\"Casa Grande\", \"3114907\"],\n\t\t[\"Cascalho Rico\", \"3115003\"],\n\t\t[\"Cássia\", \"3115102\"],\n\t\t[\"Cataguases\", \"3115300\"],\n\t\t[\"Catas Altas\", \"3115359\"],\n\t\t[\"Catas Altas da Noruega\", \"3115409\"],\n\t\t[\"Catuji\", \"3115458\"],\n\t\t[\"Catuti\", \"3115474\"],\n\t\t[\"Caxambu\", \"3115508\"],\n\t\t[\"Cedro do Abaeté\", \"3115607\"],\n\t\t[\"Central de Minas\", \"3115706\"],\n\t\t[\"Centralina\", \"3115805\"],\n\t\t[\"Chácara\", \"3115904\"],\n\t\t[\"Chalé\", \"3116001\"],\n\t\t[\"Chapada do Norte\", \"3116100\"],\n\t\t[\"Chapada Gaúcha\", \"3116159\"],\n\t\t[\"Chiador\", \"3116209\"],\n\t\t[\"Cipotânea\", \"3116308\"],\n\t\t[\"Claraval\", \"3116407\"],\n\t\t[\"Claro dos Poções\", \"3116506\"],\n\t\t[\"Cláudio\", \"3116605\"],\n\t\t[\"Coimbra\", \"3116704\"],\n\t\t[\"Coluna\", \"3116803\"],\n\t\t[\"Comendador Gomes\", \"3116902\"],\n\t\t[\"Comercinho\", \"3117009\"],\n\t\t[\"Conceição da Aparecida\", \"3117108\"],\n\t\t[\"Conceição da Barra de Minas\", \"3115201\"],\n\t\t[\"Conceição das Alagoas\", \"3117306\"],\n\t\t[\"Conceição das Pedras\", \"3117207\"],\n\t\t[\"Conceição de Ipanema\", \"3117405\"],\n\t\t[\"Conceição do Mato Dentro\", \"3117504\"],\n\t\t[\"Conceição do Pará\", \"3117603\"],\n\t\t[\"Conceição do Rio Verde\", \"3117702\"],\n\t\t[\"Conceição dos Ouros\", \"3117801\"],\n\t\t[\"Cônego Marinho\", \"3117836\"],\n\t\t[\"Confins\", \"3117876\"],\n\t\t[\"Congonhal\", \"3117900\"],\n\t\t[\"Congonhas\", \"3118007\"],\n\t\t[\"Congonhas do Norte\", \"3118106\"],\n\t\t[\"Conquista\", \"3118205\"],\n\t\t[\"Conselheiro Lafaiete\", \"3118304\"],\n\t\t[\"Conselheiro Pena\", \"3118403\"],\n\t\t[\"Consolação\", \"3118502\"],\n\t\t[\"Contagem\", \"3118601\"],\n\t\t[\"Coqueiral\", \"3118700\"],\n\t\t[\"Coração de Jesus\", \"3118809\"],\n\t\t[\"Cordisburgo\", \"3118908\"],\n\t\t[\"Cordislândia\", \"3119005\"],\n\t\t[\"Corinto\", \"3119104\"],\n\t\t[\"Coroaci\", \"3119203\"],\n\t\t[\"Coromandel\", \"3119302\"],\n\t\t[\"Coronel Fabriciano\", \"3119401\"],\n\t\t[\"Coronel Murta\", \"3119500\"],\n\t\t[\"Coronel Pacheco\", \"3119609\"],\n\t\t[\"Coronel Xavier Chaves\", \"3119708\"],\n\t\t[\"Córrego Danta\", \"3119807\"],\n\t\t[\"Córrego do Bom Jesus\", \"3119906\"],\n\t\t[\"Córrego Fundo\", \"3119955\"],\n\t\t[\"Córrego Novo\", \"3120003\"],\n\t\t[\"Couto de Magalhães de Minas\", \"3120102\"],\n\t\t[\"Crisólita\", \"3120151\"],\n\t\t[\"Cristais\", \"3120201\"],\n\t\t[\"Cristália\", \"3120300\"],\n\t\t[\"Cristiano Otoni\", \"3120409\"],\n\t\t[\"Cristina\", \"3120508\"],\n\t\t[\"Crucilândia\", \"3120607\"],\n\t\t[\"Cruzeiro da Fortaleza\", \"3120706\"],\n\t\t[\"Cruzília\", \"3120805\"],\n\t\t[\"Cuparaque\", \"3120839\"],\n\t\t[\"Curral de Dentro\", \"3120870\"],\n\t\t[\"Curvelo\", \"3120904\"],\n\t\t[\"Datas\", \"3121001\"],\n\t\t[\"Delfim Moreira\", \"3121100\"],\n\t\t[\"Delfinópolis\", \"3121209\"],\n\t\t[\"Delta\", \"3121258\"],\n\t\t[\"Descoberto\", \"3121308\"],\n\t\t[\"Desterro de Entre Rios\", \"3121407\"],\n\t\t[\"Desterro do Melo\", \"3121506\"],\n\t\t[\"Diamantina\", \"3121605\"],\n\t\t[\"Diogo de Vasconcelos\", \"3121704\"],\n\t\t[\"Dionísio\", \"3121803\"],\n\t\t[\"Divinésia\", \"3121902\"],\n\t\t[\"Divino\", \"3122009\"],\n\t\t[\"Divino das Laranjeiras\", \"3122108\"],\n\t\t[\"Divinolândia de Minas\", \"3122207\"],\n\t\t[\"Divinópolis\", \"3122306\"],\n\t\t[\"Divisa Alegre\", \"3122355\"],\n\t\t[\"Divisa Nova\", \"3122405\"],\n\t\t[\"Divisópolis\", \"3122454\"],\n\t\t[\"Dom Bosco\", \"3122470\"],\n\t\t[\"Dom Cavati\", \"3122504\"],\n\t\t[\"Dom Joaquim\", \"3122603\"],\n\t\t[\"Dom Silvério\", \"3122702\"],\n\t\t[\"Dom Viçoso\", \"3122801\"],\n\t\t[\"Dona Euzébia\", \"3122900\"],\n\t\t[\"Dores de Campos\", \"3123007\"],\n\t\t[\"Dores de Guanhães\", \"3123106\"],\n\t\t[\"Dores do Indaiá\", \"3123205\"],\n\t\t[\"Dores do Turvo\", \"3123304\"],\n\t\t[\"Doresópolis\", \"3123403\"],\n\t\t[\"Douradoquara\", \"3123502\"],\n\t\t[\"Durandé\", \"3123528\"],\n\t\t[\"Elói Mendes\", \"3123601\"],\n\t\t[\"Engenheiro Caldas\", \"3123700\"],\n\t\t[\"Engenheiro Navarro\", \"3123809\"],\n\t\t[\"Entre Folhas\", \"3123858\"],\n\t\t[\"Entre Rios de Minas\", \"3123908\"],\n\t\t[\"Ervália\", \"3124005\"],\n\t\t[\"Esmeraldas\", \"3124104\"],\n\t\t[\"Espera Feliz\", \"3124203\"],\n\t\t[\"Espinosa\", \"3124302\"],\n\t\t[\"Espírito Santo do Dourado\", \"3124401\"],\n\t\t[\"Estiva\", \"3124500\"],\n\t\t[\"Estrela Dalva\", \"3124609\"],\n\t\t[\"Estrela do Indaiá\", \"3124708\"],\n\t\t[\"Estrela do Sul\", \"3124807\"],\n\t\t[\"Eugenópolis\", \"3124906\"],\n\t\t[\"Ewbank da Câmara\", \"3125002\"],\n\t\t[\"Extrema\", \"3125101\"],\n\t\t[\"Fama\", \"3125200\"],\n\t\t[\"Faria Lemos\", \"3125309\"],\n\t\t[\"Felício dos Santos\", \"3125408\"],\n\t\t[\"Felisburgo\", \"3125606\"],\n\t\t[\"Felixlândia\", \"3125705\"],\n\t\t[\"Fernandes Tourinho\", \"3125804\"],\n\t\t[\"Ferros\", \"3125903\"],\n\t\t[\"Fervedouro\", \"3125952\"],\n\t\t[\"Florestal\", \"3126000\"],\n\t\t[\"Formiga\", \"3126109\"],\n\t\t[\"Formoso\", \"3126208\"],\n\t\t[\"Fortaleza de Minas\", \"3126307\"],\n\t\t[\"Fortuna de Minas\", \"3126406\"],\n\t\t[\"Francisco Badaró\", \"3126505\"],\n\t\t[\"Francisco Dumont\", \"3126604\"],\n\t\t[\"Francisco Sá\", \"3126703\"],\n\t\t[\"Franciscópolis\", \"3126752\"],\n\t\t[\"Frei Gaspar\", \"3126802\"],\n\t\t[\"Frei Inocêncio\", \"3126901\"],\n\t\t[\"Frei Lagonegro\", \"3126950\"],\n\t\t[\"Fronteira\", \"3127008\"],\n\t\t[\"Fronteira dos Vales\", \"3127057\"],\n\t\t[\"Fruta de Leite\", \"3127073\"],\n\t\t[\"Frutal\", \"3127107\"],\n\t\t[\"Funilândia\", \"3127206\"],\n\t\t[\"Galiléia\", \"3127305\"],\n\t\t[\"Gameleiras\", \"3127339\"],\n\t\t[\"Glaucilândia\", \"3127354\"],\n\t\t[\"Goiabeira\", \"3127370\"],\n\t\t[\"Goianá\", \"3127388\"],\n\t\t[\"Gonçalves\", \"3127404\"],\n\t\t[\"Gonzaga\", \"3127503\"],\n\t\t[\"Gouveia\", \"3127602\"],\n\t\t[\"Governador Valadares\", \"3127701\"],\n\t\t[\"Grão Mogol\", \"3127800\"],\n\t\t[\"Grupiara\", \"3127909\"],\n\t\t[\"Guanhães\", \"3128006\"],\n\t\t[\"Guapé\", \"3128105\"],\n\t\t[\"Guaraciaba\", \"3128204\"],\n\t\t[\"Guaraciama\", \"3128253\"],\n\t\t[\"Guaranésia\", \"3128303\"],\n\t\t[\"Guarani\", \"3128402\"],\n\t\t[\"Guarará\", \"3128501\"],\n\t\t[\"Guarda-Mor\", \"3128600\"],\n\t\t[\"Guaxupé\", \"3128709\"],\n\t\t[\"Guidoval\", \"3128808\"],\n\t\t[\"Guimarânia\", \"3128907\"],\n\t\t[\"Guiricema\", \"3129004\"],\n\t\t[\"Gurinhatã\", \"3129103\"],\n\t\t[\"Heliodora\", \"3129202\"],\n\t\t[\"Iapu\", \"3129301\"],\n\t\t[\"Ibertioga\", \"3129400\"],\n\t\t[\"Ibiá\", \"3129509\"],\n\t\t[\"Ibiaí\", \"3129608\"],\n\t\t[\"Ibiracatu\", \"3129657\"],\n\t\t[\"Ibiraci\", \"3129707\"],\n\t\t[\"Ibirité\", \"3129806\"],\n\t\t[\"Ibitiúra de Minas\", \"3129905\"],\n\t\t[\"Ibituruna\", \"3130002\"],\n\t\t[\"Icaraí de Minas\", \"3130051\"],\n\t\t[\"Igarapé\", \"3130101\"],\n\t\t[\"Igaratinga\", \"3130200\"],\n\t\t[\"Iguatama\", \"3130309\"],\n\t\t[\"Ijaci\", \"3130408\"],\n\t\t[\"Ilicínea\", \"3130507\"],\n\t\t[\"Imbé de Minas\", \"3130556\"],\n\t\t[\"Inconfidentes\", \"3130606\"],\n\t\t[\"Indaiabira\", \"3130655\"],\n\t\t[\"Indianópolis\", \"3130705\"],\n\t\t[\"Ingaí\", \"3130804\"],\n\t\t[\"Inhapim\", \"3130903\"],\n\t\t[\"Inhaúma\", \"3131000\"],\n\t\t[\"Inimutaba\", \"3131109\"],\n\t\t[\"Ipaba\", \"3131158\"],\n\t\t[\"Ipanema\", \"3131208\"],\n\t\t[\"Ipatinga\", \"3131307\"],\n\t\t[\"Ipiaçu\", \"3131406\"],\n\t\t[\"Ipuiúna\", \"3131505\"],\n\t\t[\"Iraí de Minas\", \"3131604\"],\n\t\t[\"Itabira\", \"3131703\"],\n\t\t[\"Itabirinha\", \"3131802\"],\n\t\t[\"Itabirito\", \"3131901\"],\n\t\t[\"Itacambira\", \"3132008\"],\n\t\t[\"Itacarambi\", \"3132107\"],\n\t\t[\"Itaguara\", \"3132206\"],\n\t\t[\"Itaipé\", \"3132305\"],\n\t\t[\"Itajubá\", \"3132404\"],\n\t\t[\"Itamarandiba\", \"3132503\"],\n\t\t[\"Itamarati de Minas\", \"3132602\"],\n\t\t[\"Itambacuri\", \"3132701\"],\n\t\t[\"Itambé do Mato Dentro\", \"3132800\"],\n\t\t[\"Itamogi\", \"3132909\"],\n\t\t[\"Itamonte\", \"3133006\"],\n\t\t[\"Itanhandu\", \"3133105\"],\n\t\t[\"Itanhomi\", \"3133204\"],\n\t\t[\"Itaobim\", \"3133303\"],\n\t\t[\"Itapagipe\", \"3133402\"],\n\t\t[\"Itapecerica\", \"3133501\"],\n\t\t[\"Itapeva\", \"3133600\"],\n\t\t[\"Itatiaiuçu\", \"3133709\"],\n\t\t[\"Itaú de Minas\", \"3133758\"],\n\t\t[\"Itaúna\", \"3133808\"],\n\t\t[\"Itaverava\", \"3133907\"],\n\t\t[\"Itinga\", \"3134004\"],\n\t\t[\"Itueta\", \"3134103\"],\n\t\t[\"Ituiutaba\", \"3134202\"],\n\t\t[\"Itumirim\", \"3134301\"],\n\t\t[\"Iturama\", \"3134400\"],\n\t\t[\"Itutinga\", \"3134509\"],\n\t\t[\"Jaboticatubas\", \"3134608\"],\n\t\t[\"Jacinto\", \"3134707\"],\n\t\t[\"Jacuí\", \"3134806\"],\n\t\t[\"Jacutinga\", \"3134905\"],\n\t\t[\"Jaguaraçu\", \"3135001\"],\n\t\t[\"Jaíba\", \"3135050\"],\n\t\t[\"Jampruca\", \"3135076\"],\n\t\t[\"Janaúba\", \"3135100\"],\n\t\t[\"Januária\", \"3135209\"],\n\t\t[\"Japaraíba\", \"3135308\"],\n\t\t[\"Japonvar\", \"3135357\"],\n\t\t[\"Jeceaba\", \"3135407\"],\n\t\t[\"Jenipapo de Minas\", \"3135456\"],\n\t\t[\"Jequeri\", \"3135506\"],\n\t\t[\"Jequitaí\", \"3135605\"],\n\t\t[\"Jequitibá\", \"3135704\"],\n\t\t[\"Jequitinhonha\", \"3135803\"],\n\t\t[\"Jesuânia\", \"3135902\"],\n\t\t[\"Joaíma\", \"3136009\"],\n\t\t[\"Joanésia\", \"3136108\"],\n\t\t[\"João Monlevade\", \"3136207\"],\n\t\t[\"João Pinheiro\", \"3136306\"],\n\t\t[\"Joaquim Felício\", \"3136405\"],\n\t\t[\"Jordânia\", \"3136504\"],\n\t\t[\"José Gonçalves de Minas\", \"3136520\"],\n\t\t[\"José Raydan\", \"3136553\"],\n\t\t[\"Josenópolis\", \"3136579\"],\n\t\t[\"Juatuba\", \"3136652\"],\n\t\t[\"Juiz de Fora\", \"3136702\"],\n\t\t[\"Juramento\", \"3136801\"],\n\t\t[\"Juruaia\", \"3136900\"],\n\t\t[\"Juvenília\", \"3136959\"],\n\t\t[\"Ladainha\", \"3137007\"],\n\t\t[\"Lagamar\", \"3137106\"],\n\t\t[\"Lagoa da Prata\", \"3137205\"],\n\t\t[\"Lagoa dos Patos\", \"3137304\"],\n\t\t[\"Lagoa Dourada\", \"3137403\"],\n\t\t[\"Lagoa Formosa\", \"3137502\"],\n\t\t[\"Lagoa Grande\", \"3137536\"],\n\t\t[\"Lagoa Santa\", \"3137601\"],\n\t\t[\"Lajinha\", \"3137700\"],\n\t\t[\"Lambari\", \"3137809\"],\n\t\t[\"Lamim\", \"3137908\"],\n\t\t[\"Laranjal\", \"3138005\"],\n\t\t[\"Lassance\", \"3138104\"],\n\t\t[\"Lavras\", \"3138203\"],\n\t\t[\"Leandro Ferreira\", \"3138302\"],\n\t\t[\"Leme do Prado\", \"3138351\"],\n\t\t[\"Leopoldina\", \"3138401\"],\n\t\t[\"Liberdade\", \"3138500\"],\n\t\t[\"Lima Duarte\", \"3138609\"],\n\t\t[\"Limeira do Oeste\", \"3138625\"],\n\t\t[\"Lontra\", \"3138658\"],\n\t\t[\"Luisburgo\", \"3138674\"],\n\t\t[\"Luislândia\", \"3138682\"],\n\t\t[\"Luminárias\", \"3138708\"],\n\t\t[\"Luz\", \"3138807\"],\n\t\t[\"Machacalis\", \"3138906\"],\n\t\t[\"Machado\", \"3139003\"],\n\t\t[\"Madre de Deus de Minas\", \"3139102\"],\n\t\t[\"Malacacheta\", \"3139201\"],\n\t\t[\"Mamonas\", \"3139250\"],\n\t\t[\"Manga\", \"3139300\"],\n\t\t[\"Manhuaçu\", \"3139409\"],\n\t\t[\"Manhumirim\", \"3139508\"],\n\t\t[\"Mantena\", \"3139607\"],\n\t\t[\"Mar de Espanha\", \"3139805\"],\n\t\t[\"Maravilhas\", \"3139706\"],\n\t\t[\"Maria da Fé\", \"3139904\"],\n\t\t[\"Mariana\", \"3140001\"],\n\t\t[\"Marilac\", \"3140100\"],\n\t\t[\"Mário Campos\", \"3140159\"],\n\t\t[\"Maripá de Minas\", \"3140209\"],\n\t\t[\"Marliéria\", \"3140308\"],\n\t\t[\"Marmelópolis\", \"3140407\"],\n\t\t[\"Martinho Campos\", \"3140506\"],\n\t\t[\"Martins Soares\", \"3140530\"],\n\t\t[\"Mata Verde\", \"3140555\"],\n\t\t[\"Materlândia\", \"3140605\"],\n\t\t[\"Mateus Leme\", \"3140704\"],\n\t\t[\"Mathias Lobato\", \"3171501\"],\n\t\t[\"Matias Barbosa\", \"3140803\"],\n\t\t[\"Matias Cardoso\", \"3140852\"],\n\t\t[\"Matipó\", \"3140902\"],\n\t\t[\"Mato Verde\", \"3141009\"],\n\t\t[\"Matozinhos\", \"3141108\"],\n\t\t[\"Matutina\", \"3141207\"],\n\t\t[\"Medeiros\", \"3141306\"],\n\t\t[\"Medina\", \"3141405\"],\n\t\t[\"Mendes Pimentel\", \"3141504\"],\n\t\t[\"Mercês\", \"3141603\"],\n\t\t[\"Mesquita\", \"3141702\"],\n\t\t[\"Minas Novas\", \"3141801\"],\n\t\t[\"Minduri\", \"3141900\"],\n\t\t[\"Mirabela\", \"3142007\"],\n\t\t[\"Miradouro\", \"3142106\"],\n\t\t[\"Miraí\", \"3142205\"],\n\t\t[\"Miravânia\", \"3142254\"],\n\t\t[\"Moeda\", \"3142304\"],\n\t\t[\"Moema\", \"3142403\"],\n\t\t[\"Monjolos\", \"3142502\"],\n\t\t[\"Monsenhor Paulo\", \"3142601\"],\n\t\t[\"Montalvânia\", \"3142700\"],\n\t\t[\"Monte Alegre de Minas\", \"3142809\"],\n\t\t[\"Monte Azul\", \"3142908\"],\n\t\t[\"Monte Belo\", \"3143005\"],\n\t\t[\"Monte Carmelo\", \"3143104\"],\n\t\t[\"Monte Formoso\", \"3143153\"],\n\t\t[\"Monte Santo de Minas\", \"3143203\"],\n\t\t[\"Monte Sião\", \"3143401\"],\n\t\t[\"Montes Claros\", \"3143302\"],\n\t\t[\"Montezuma\", \"3143450\"],\n\t\t[\"Morada Nova de Minas\", \"3143500\"],\n\t\t[\"Morro da Garça\", \"3143609\"],\n\t\t[\"Morro do Pilar\", \"3143708\"],\n\t\t[\"Munhoz\", \"3143807\"],\n\t\t[\"Muriaé\", \"3143906\"],\n\t\t[\"Mutum\", \"3144003\"],\n\t\t[\"Muzambinho\", \"3144102\"],\n\t\t[\"Nacip Raydan\", \"3144201\"],\n\t\t[\"Nanuque\", \"3144300\"],\n\t\t[\"Naque\", \"3144359\"],\n\t\t[\"Natalândia\", \"3144375\"],\n\t\t[\"Natércia\", \"3144409\"],\n\t\t[\"Nazareno\", \"3144508\"],\n\t\t[\"Nepomuceno\", \"3144607\"],\n\t\t[\"Ninheira\", \"3144656\"],\n\t\t[\"Nova Belém\", \"3144672\"],\n\t\t[\"Nova Era\", \"3144706\"],\n\t\t[\"Nova Lima\", \"3144805\"],\n\t\t[\"Nova Módica\", \"3144904\"],\n\t\t[\"Nova Ponte\", \"3145000\"],\n\t\t[\"Nova Porteirinha\", \"3145059\"],\n\t\t[\"Nova Resende\", \"3145109\"],\n\t\t[\"Nova Serrana\", \"3145208\"],\n\t\t[\"Nova União\", \"3136603\"],\n\t\t[\"Novo Cruzeiro\", \"3145307\"],\n\t\t[\"Novo Oriente de Minas\", \"3145356\"],\n\t\t[\"Novorizonte\", \"3145372\"],\n\t\t[\"Olaria\", \"3145406\"],\n\t\t[\"Olhos-d'Água\", \"3145455\"],\n\t\t[\"Olímpio Noronha\", \"3145505\"],\n\t\t[\"Oliveira\", \"3145604\"],\n\t\t[\"Oliveira Fortes\", \"3145703\"],\n\t\t[\"Onça de Pitangui\", \"3145802\"],\n\t\t[\"Oratórios\", \"3145851\"],\n\t\t[\"Orizânia\", \"3145877\"],\n\t\t[\"Ouro Branco\", \"3145901\"],\n\t\t[\"Ouro Fino\", \"3146008\"],\n\t\t[\"Ouro Preto\", \"3146107\"],\n\t\t[\"Ouro Verde de Minas\", \"3146206\"],\n\t\t[\"Padre Carvalho\", \"3146255\"],\n\t\t[\"Padre Paraíso\", \"3146305\"],\n\t\t[\"Pai Pedro\", \"3146552\"],\n\t\t[\"Paineiras\", \"3146404\"],\n\t\t[\"Pains\", \"3146503\"],\n\t\t[\"Paiva\", \"3146602\"],\n\t\t[\"Palma\", \"3146701\"],\n\t\t[\"Palmópolis\", \"3146750\"],\n\t\t[\"Papagaios\", \"3146909\"],\n\t\t[\"Pará de Minas\", \"3147105\"],\n\t\t[\"Paracatu\", \"3147006\"],\n\t\t[\"Paraguaçu\", \"3147204\"],\n\t\t[\"Paraisópolis\", \"3147303\"],\n\t\t[\"Paraopeba\", \"3147402\"],\n\t\t[\"Passa Quatro\", \"3147600\"],\n\t\t[\"Passa Tempo\", \"3147709\"],\n\t\t[\"Passa Vinte\", \"3147808\"],\n\t\t[\"Passabém\", \"3147501\"],\n\t\t[\"Passos\", \"3147907\"],\n\t\t[\"Patis\", \"3147956\"],\n\t\t[\"Patos de Minas\", \"3148004\"],\n\t\t[\"Patrocínio\", \"3148103\"],\n\t\t[\"Patrocínio do Muriaé\", \"3148202\"],\n\t\t[\"Paula Cândido\", \"3148301\"],\n\t\t[\"Paulistas\", \"3148400\"],\n\t\t[\"Pavão\", \"3148509\"],\n\t\t[\"Peçanha\", \"3148608\"],\n\t\t[\"Pedra Azul\", \"3148707\"],\n\t\t[\"Pedra Bonita\", \"3148756\"],\n\t\t[\"Pedra do Anta\", \"3148806\"],\n\t\t[\"Pedra do Indaiá\", \"3148905\"],\n\t\t[\"Pedra Dourada\", \"3149002\"],\n\t\t[\"Pedralva\", \"3149101\"],\n\t\t[\"Pedras de Maria da Cruz\", \"3149150\"],\n\t\t[\"Pedrinópolis\", \"3149200\"],\n\t\t[\"Pedro Leopoldo\", \"3149309\"],\n\t\t[\"Pedro Teixeira\", \"3149408\"],\n\t\t[\"Pequeri\", \"3149507\"],\n\t\t[\"Pequi\", \"3149606\"],\n\t\t[\"Perdigão\", \"3149705\"],\n\t\t[\"Perdizes\", \"3149804\"],\n\t\t[\"Perdões\", \"3149903\"],\n\t\t[\"Periquito\", \"3149952\"],\n\t\t[\"Pescador\", \"3150000\"],\n\t\t[\"Piau\", \"3150109\"],\n\t\t[\"Piedade de Caratinga\", \"3150158\"],\n\t\t[\"Piedade de Ponte Nova\", \"3150208\"],\n\t\t[\"Piedade do Rio Grande\", \"3150307\"],\n\t\t[\"Piedade dos Gerais\", \"3150406\"],\n\t\t[\"Pimenta\", \"3150505\"],\n\t\t[\"Pingo-d'Água\", \"3150539\"],\n\t\t[\"Pintópolis\", \"3150570\"],\n\t\t[\"Piracema\", \"3150604\"],\n\t\t[\"Pirajuba\", \"3150703\"],\n\t\t[\"Piranga\", \"3150802\"],\n\t\t[\"Piranguçu\", \"3150901\"],\n\t\t[\"Piranguinho\", \"3151008\"],\n\t\t[\"Pirapetinga\", \"3151107\"],\n\t\t[\"Pirapora\", \"3151206\"],\n\t\t[\"Piraúba\", \"3151305\"],\n\t\t[\"Pitangui\", \"3151404\"],\n\t\t[\"Piumhi\", \"3151503\"],\n\t\t[\"Planura\", \"3151602\"],\n\t\t[\"Poço Fundo\", \"3151701\"],\n\t\t[\"Poços de Caldas\", \"3151800\"],\n\t\t[\"Pocrane\", \"3151909\"],\n\t\t[\"Pompéu\", \"3152006\"],\n\t\t[\"Ponte Nova\", \"3152105\"],\n\t\t[\"Ponto Chique\", \"3152131\"],\n\t\t[\"Ponto dos Volantes\", \"3152170\"],\n\t\t[\"Porteirinha\", \"3152204\"],\n\t\t[\"Porto Firme\", \"3152303\"],\n\t\t[\"Poté\", \"3152402\"],\n\t\t[\"Pouso Alegre\", \"3152501\"],\n\t\t[\"Pouso Alto\", \"3152600\"],\n\t\t[\"Prados\", \"3152709\"],\n\t\t[\"Prata\", \"3152808\"],\n\t\t[\"Pratápolis\", \"3152907\"],\n\t\t[\"Pratinha\", \"3153004\"],\n\t\t[\"Presidente Bernardes\", \"3153103\"],\n\t\t[\"Presidente Juscelino\", \"3153202\"],\n\t\t[\"Presidente Kubitschek\", \"3153301\"],\n\t\t[\"Presidente Olegário\", \"3153400\"],\n\t\t[\"Prudente de Morais\", \"3153608\"],\n\t\t[\"Quartel Geral\", \"3153707\"],\n\t\t[\"Queluzito\", \"3153806\"],\n\t\t[\"Raposos\", \"3153905\"],\n\t\t[\"Raul Soares\", \"3154002\"],\n\t\t[\"Recreio\", \"3154101\"],\n\t\t[\"Reduto\", \"3154150\"],\n\t\t[\"Resende Costa\", \"3154200\"],\n\t\t[\"Resplendor\", \"3154309\"],\n\t\t[\"Ressaquinha\", \"3154408\"],\n\t\t[\"Riachinho\", \"3154457\"],\n\t\t[\"Riacho dos Machados\", \"3154507\"],\n\t\t[\"Ribeirão das Neves\", \"3154606\"],\n\t\t[\"Ribeirão Vermelho\", \"3154705\"],\n\t\t[\"Rio Acima\", \"3154804\"],\n\t\t[\"Rio Casca\", \"3154903\"],\n\t\t[\"Rio do Prado\", \"3155108\"],\n\t\t[\"Rio Doce\", \"3155009\"],\n\t\t[\"Rio Espera\", \"3155207\"],\n\t\t[\"Rio Manso\", \"3155306\"],\n\t\t[\"Rio Novo\", \"3155405\"],\n\t\t[\"Rio Paranaíba\", \"3155504\"],\n\t\t[\"Rio Pardo de Minas\", \"3155603\"],\n\t\t[\"Rio Piracicaba\", \"3155702\"],\n\t\t[\"Rio Pomba\", \"3155801\"],\n\t\t[\"Rio Preto\", \"3155900\"],\n\t\t[\"Rio Vermelho\", \"3156007\"],\n\t\t[\"Ritápolis\", \"3156106\"],\n\t\t[\"Rochedo de Minas\", \"3156205\"],\n\t\t[\"Rodeiro\", \"3156304\"],\n\t\t[\"Romaria\", \"3156403\"],\n\t\t[\"Rosário da Limeira\", \"3156452\"],\n\t\t[\"Rubelita\", \"3156502\"],\n\t\t[\"Rubim\", \"3156601\"],\n\t\t[\"Sabará\", \"3156700\"],\n\t\t[\"Sabinópolis\", \"3156809\"],\n\t\t[\"Sacramento\", \"3156908\"],\n\t\t[\"Salinas\", \"3157005\"],\n\t\t[\"Salto da Divisa\", \"3157104\"],\n\t\t[\"Santa Bárbara\", \"3157203\"],\n\t\t[\"Santa Bárbara do Leste\", \"3157252\"],\n\t\t[\"Santa Bárbara do Monte Verde\", \"3157278\"],\n\t\t[\"Santa Bárbara do Tugúrio\", \"3157302\"],\n\t\t[\"Santa Cruz de Minas\", \"3157336\"],\n\t\t[\"Santa Cruz de Salinas\", \"3157377\"],\n\t\t[\"Santa Cruz do Escalvado\", \"3157401\"],\n\t\t[\"Santa Efigênia de Minas\", \"3157500\"],\n\t\t[\"Santa Fé de Minas\", \"3157609\"],\n\t\t[\"Santa Helena de Minas\", \"3157658\"],\n\t\t[\"Santa Juliana\", \"3157708\"],\n\t\t[\"Santa Luzia\", \"3157807\"],\n\t\t[\"Santa Margarida\", \"3157906\"],\n\t\t[\"Santa Maria de Itabira\", \"3158003\"],\n\t\t[\"Santa Maria do Salto\", \"3158102\"],\n\t\t[\"Santa Maria do Suaçuí\", \"3158201\"],\n\t\t[\"Santa Rita de Caldas\", \"3159209\"],\n\t\t[\"Santa Rita de Ibitipoca\", \"3159407\"],\n\t\t[\"Santa Rita de Jacutinga\", \"3159308\"],\n\t\t[\"Santa Rita de Minas\", \"3159357\"],\n\t\t[\"Santa Rita do Itueto\", \"3159506\"],\n\t\t[\"Santa Rita do Sapucaí\", \"3159605\"],\n\t\t[\"Santa Rosa da Serra\", \"3159704\"],\n\t\t[\"Santa Vitória\", \"3159803\"],\n\t\t[\"Santana da Vargem\", \"3158300\"],\n\t\t[\"Santana de Cataguases\", \"3158409\"],\n\t\t[\"Santana de Pirapama\", \"3158508\"],\n\t\t[\"Santana do Deserto\", \"3158607\"],\n\t\t[\"Santana do Garambéu\", \"3158706\"],\n\t\t[\"Santana do Jacaré\", \"3158805\"],\n\t\t[\"Santana do Manhuaçu\", \"3158904\"],\n\t\t[\"Santana do Paraíso\", \"3158953\"],\n\t\t[\"Santana do Riacho\", \"3159001\"],\n\t\t[\"Santana dos Montes\", \"3159100\"],\n\t\t[\"Santo Antônio do Amparo\", \"3159902\"],\n\t\t[\"Santo Antônio do Aventureiro\", \"3160009\"],\n\t\t[\"Santo Antônio do Grama\", \"3160108\"],\n\t\t[\"Santo Antônio do Itambé\", \"3160207\"],\n\t\t[\"Santo Antônio do Jacinto\", \"3160306\"],\n\t\t[\"Santo Antônio do Monte\", \"3160405\"],\n\t\t[\"Santo Antônio do Retiro\", \"3160454\"],\n\t\t[\"Santo Antônio do Rio Abaixo\", \"3160504\"],\n\t\t[\"Santo Hipólito\", \"3160603\"],\n\t\t[\"Santos Dumont\", \"3160702\"],\n\t\t[\"São Bento Abade\", \"3160801\"],\n\t\t[\"São Brás do Suaçuí\", \"3160900\"],\n\t\t[\"São Domingos das Dores\", \"3160959\"],\n\t\t[\"São Domingos do Prata\", \"3161007\"],\n\t\t[\"São Félix de Minas\", \"3161056\"],\n\t\t[\"São Francisco\", \"3161106\"],\n\t\t[\"São Francisco de Paula\", \"3161205\"],\n\t\t[\"São Francisco de Sales\", \"3161304\"],\n\t\t[\"São Francisco do Glória\", \"3161403\"],\n\t\t[\"São Geraldo\", \"3161502\"],\n\t\t[\"São Geraldo da Piedade\", \"3161601\"],\n\t\t[\"São Geraldo do Baixio\", \"3161650\"],\n\t\t[\"São Gonçalo do Abaeté\", \"3161700\"],\n\t\t[\"São Gonçalo do Pará\", \"3161809\"],\n\t\t[\"São Gonçalo do Rio Abaixo\", \"3161908\"],\n\t\t[\"São Gonçalo do Rio Preto\", \"3125507\"],\n\t\t[\"São Gonçalo do Sapucaí\", \"3162005\"],\n\t\t[\"São Gotardo\", \"3162104\"],\n\t\t[\"São João Batista do Glória\", \"3162203\"],\n\t\t[\"São João da Lagoa\", \"3162252\"],\n\t\t[\"São João da Mata\", \"3162302\"],\n\t\t[\"São João da Ponte\", \"3162401\"],\n\t\t[\"São João das Missões\", \"3162450\"],\n\t\t[\"São João del Rei\", \"3162500\"],\n\t\t[\"São João do Manhuaçu\", \"3162559\"],\n\t\t[\"São João do Manteninha\", \"3162575\"],\n\t\t[\"São João do Oriente\", \"3162609\"],\n\t\t[\"São João do Pacuí\", \"3162658\"],\n\t\t[\"São João do Paraíso\", \"3162708\"],\n\t\t[\"São João Evangelista\", \"3162807\"],\n\t\t[\"São João Nepomuceno\", \"3162906\"],\n\t\t[\"São Joaquim de Bicas\", \"3162922\"],\n\t\t[\"São José da Barra\", \"3162948\"],\n\t\t[\"São José da Lapa\", \"3162955\"],\n\t\t[\"São José da Safira\", \"3163003\"],\n\t\t[\"São José da Varginha\", \"3163102\"],\n\t\t[\"São José do Alegre\", \"3163201\"],\n\t\t[\"São José do Divino\", \"3163300\"],\n\t\t[\"São José do Goiabal\", \"3163409\"],\n\t\t[\"São José do Jacuri\", \"3163508\"],\n\t\t[\"São José do Mantimento\", \"3163607\"],\n\t\t[\"São Lourenço\", \"3163706\"],\n\t\t[\"São Miguel do Anta\", \"3163805\"],\n\t\t[\"São Pedro da União\", \"3163904\"],\n\t\t[\"São Pedro do Suaçuí\", \"3164100\"],\n\t\t[\"São Pedro dos Ferros\", \"3164001\"],\n\t\t[\"São Romão\", \"3164209\"],\n\t\t[\"São Roque de Minas\", \"3164308\"],\n\t\t[\"São Sebastião da Bela Vista\", \"3164407\"],\n\t\t[\"São Sebastião da Vargem Alegre\", \"3164431\"],\n\t\t[\"São Sebastião do Anta\", \"3164472\"],\n\t\t[\"São Sebastião do Maranhão\", \"3164506\"],\n\t\t[\"São Sebastião do Oeste\", \"3164605\"],\n\t\t[\"São Sebastião do Paraíso\", \"3164704\"],\n\t\t[\"São Sebastião do Rio Preto\", \"3164803\"],\n\t\t[\"São Sebastião do Rio Verde\", \"3164902\"],\n\t\t[\"São Tiago\", \"3165008\"],\n\t\t[\"São Tomás de Aquino\", \"3165107\"],\n\t\t[\"São Tomé das Letras\", \"3165206\"],\n\t\t[\"São Vicente de Minas\", \"3165305\"],\n\t\t[\"Sapucaí-Mirim\", \"3165404\"],\n\t\t[\"Sardoá\", \"3165503\"],\n\t\t[\"Sarzedo\", \"3165537\"],\n\t\t[\"Sem-Peixe\", \"3165560\"],\n\t\t[\"Senador Amaral\", \"3165578\"],\n\t\t[\"Senador Cortes\", \"3165602\"],\n\t\t[\"Senador Firmino\", \"3165701\"],\n\t\t[\"Senador José Bento\", \"3165800\"],\n\t\t[\"Senador Modestino Gonçalves\", \"3165909\"],\n\t\t[\"Senhora de Oliveira\", \"3166006\"],\n\t\t[\"Senhora do Porto\", \"3166105\"],\n\t\t[\"Senhora dos Remédios\", \"3166204\"],\n\t\t[\"Sericita\", \"3166303\"],\n\t\t[\"Seritinga\", \"3166402\"],\n\t\t[\"Serra Azul de Minas\", \"3166501\"],\n\t\t[\"Serra da Saudade\", \"3166600\"],\n\t\t[\"Serra do Salitre\", \"3166808\"],\n\t\t[\"Serra dos Aimorés\", \"3166709\"],\n\t\t[\"Serrania\", \"3166907\"],\n\t\t[\"Serranópolis de Minas\", \"3166956\"],\n\t\t[\"Serranos\", \"3167004\"],\n\t\t[\"Serro\", \"3167103\"],\n\t\t[\"Sete Lagoas\", \"3167202\"],\n\t\t[\"Setubinha\", \"3165552\"],\n\t\t[\"Silveirânia\", \"3167301\"],\n\t\t[\"Silvianópolis\", \"3167400\"],\n\t\t[\"Simão Pereira\", \"3167509\"],\n\t\t[\"Simonésia\", \"3167608\"],\n\t\t[\"Sobrália\", \"3167707\"],\n\t\t[\"Soledade de Minas\", \"3167806\"],\n\t\t[\"Tabuleiro\", \"3167905\"],\n\t\t[\"Taiobeiras\", \"3168002\"],\n\t\t[\"Taparuba\", \"3168051\"],\n\t\t[\"Tapira\", \"3168101\"],\n\t\t[\"Tapiraí\", \"3168200\"],\n\t\t[\"Taquaraçu de Minas\", \"3168309\"],\n\t\t[\"Tarumirim\", \"3168408\"],\n\t\t[\"Teixeiras\", \"3168507\"],\n\t\t[\"Teófilo Otoni\", \"3168606\"],\n\t\t[\"Timóteo\", \"3168705\"],\n\t\t[\"Tiradentes\", \"3168804\"],\n\t\t[\"Tiros\", \"3168903\"],\n\t\t[\"Tocantins\", \"3169000\"],\n\t\t[\"Tocos do Moji\", \"3169059\"],\n\t\t[\"Toledo\", \"3169109\"],\n\t\t[\"Tombos\", \"3169208\"],\n\t\t[\"Três Corações\", \"3169307\"],\n\t\t[\"Três Marias\", \"3169356\"],\n\t\t[\"Três Pontas\", \"3169406\"],\n\t\t[\"Tumiritinga\", \"3169505\"],\n\t\t[\"Tupaciguara\", \"3169604\"],\n\t\t[\"Turmalina\", \"3169703\"],\n\t\t[\"Turvolândia\", \"3169802\"],\n\t\t[\"Ubá\", \"3169901\"],\n\t\t[\"Ubaí\", \"3170008\"],\n\t\t[\"Ubaporanga\", \"3170057\"],\n\t\t[\"Uberaba\", \"3170107\"],\n\t\t[\"Uberlândia\", \"3170206\"],\n\t\t[\"Umburatiba\", \"3170305\"],\n\t\t[\"Unaí\", \"3170404\"],\n\t\t[\"União de Minas\", \"3170438\"],\n\t\t[\"Uruana de Minas\", \"3170479\"],\n\t\t[\"Urucânia\", \"3170503\"],\n\t\t[\"Urucuia\", \"3170529\"],\n\t\t[\"Vargem Alegre\", \"3170578\"],\n\t\t[\"Vargem Bonita\", \"3170602\"],\n\t\t[\"Vargem Grande do Rio Pardo\", \"3170651\"],\n\t\t[\"Varginha\", \"3170701\"],\n\t\t[\"Varjão de Minas\", \"3170750\"],\n\t\t[\"Várzea da Palma\", \"3170800\"],\n\t\t[\"Varzelândia\", \"3170909\"],\n\t\t[\"Vazante\", \"3171006\"],\n\t\t[\"Verdelândia\", \"3171030\"],\n\t\t[\"Veredinha\", \"3171071\"],\n\t\t[\"Veríssimo\", \"3171105\"],\n\t\t[\"Vermelho Novo\", \"3171154\"],\n\t\t[\"Vespasiano\", \"3171204\"],\n\t\t[\"Viçosa\", \"3171303\"],\n\t\t[\"Vieiras\", \"3171402\"],\n\t\t[\"Virgem da Lapa\", \"3171600\"],\n\t\t[\"Virgínia\", \"3171709\"],\n\t\t[\"Virginópolis\", \"3171808\"],\n\t\t[\"Virgolândia\", \"3171907\"],\n\t\t[\"Visconde do Rio Branco\", \"3172004\"],\n\t\t[\"Volta Grande\", \"3172103\"],\n\t\t[\"Wenceslau Braz\", \"3172202\"],\n\t],\n\tMS: [\n\t\t[\"Água Clara\", \"5000203\"],\n\t\t[\"Alcinópolis\", \"5000252\"],\n\t\t[\"Amambai\", \"5000609\"],\n\t\t[\"Anastácio\", \"5000708\"],\n\t\t[\"Anaurilândia\", \"5000807\"],\n\t\t[\"Angélica\", \"5000856\"],\n\t\t[\"Antônio João\", \"5000906\"],\n\t\t[\"Aparecida do Taboado\", \"5001003\"],\n\t\t[\"Aquidauana\", \"5001102\"],\n\t\t[\"Aral Moreira\", \"5001243\"],\n\t\t[\"Bandeirantes\", \"5001508\"],\n\t\t[\"Bataguassu\", \"5001904\"],\n\t\t[\"Batayporã\", \"5002001\"],\n\t\t[\"Bela Vista\", \"5002100\"],\n\t\t[\"Bodoquena\", \"5002159\"],\n\t\t[\"Bonito\", \"5002209\"],\n\t\t[\"Brasilândia\", \"5002308\"],\n\t\t[\"Caarapó\", \"5002407\"],\n\t\t[\"Camapuã\", \"5002605\"],\n\t\t[\"Campo Grande\", \"5002704\"],\n\t\t[\"Caracol\", \"5002803\"],\n\t\t[\"Cassilândia\", \"5002902\"],\n\t\t[\"Chapadão do Sul\", \"5002951\"],\n\t\t[\"Corguinho\", \"5003108\"],\n\t\t[\"Coronel Sapucaia\", \"5003157\"],\n\t\t[\"Corumbá\", \"5003207\"],\n\t\t[\"Costa Rica\", \"5003256\"],\n\t\t[\"Coxim\", \"5003306\"],\n\t\t[\"Deodápolis\", \"5003454\"],\n\t\t[\"Dois Irmãos do Buriti\", \"5003488\"],\n\t\t[\"Douradina\", \"5003504\"],\n\t\t[\"Dourados\", \"5003702\"],\n\t\t[\"Eldorado\", \"5003751\"],\n\t\t[\"Fátima do Sul\", \"5003801\"],\n\t\t[\"Figueirão\", \"5003900\"],\n\t\t[\"Glória de Dourados\", \"5004007\"],\n\t\t[\"Guia Lopes da Laguna\", \"5004106\"],\n\t\t[\"Iguatemi\", \"5004304\"],\n\t\t[\"Inocência\", \"5004403\"],\n\t\t[\"Itaporã\", \"5004502\"],\n\t\t[\"Itaquiraí\", \"5004601\"],\n\t\t[\"Ivinhema\", \"5004700\"],\n\t\t[\"Japorã\", \"5004809\"],\n\t\t[\"Jaraguari\", \"5004908\"],\n\t\t[\"Jardim\", \"5005004\"],\n\t\t[\"Jateí\", \"5005103\"],\n\t\t[\"Juti\", \"5005152\"],\n\t\t[\"Ladário\", \"5005202\"],\n\t\t[\"Laguna Carapã\", \"5005251\"],\n\t\t[\"Maracaju\", \"5005400\"],\n\t\t[\"Miranda\", \"5005608\"],\n\t\t[\"Mundo Novo\", \"5005681\"],\n\t\t[\"Naviraí\", \"5005707\"],\n\t\t[\"Nioaque\", \"5005806\"],\n\t\t[\"Nova Alvorada do Sul\", \"5006002\"],\n\t\t[\"Nova Andradina\", \"5006200\"],\n\t\t[\"Novo Horizonte do Sul\", \"5006259\"],\n\t\t[\"Paraíso das Águas\", \"5006275\"],\n\t\t[\"Paranaíba\", \"5006309\"],\n\t\t[\"Paranhos\", \"5006358\"],\n\t\t[\"Pedro Gomes\", \"5006408\"],\n\t\t[\"Ponta Porã\", \"5006606\"],\n\t\t[\"Porto Murtinho\", \"5006903\"],\n\t\t[\"Ribas do Rio Pardo\", \"5007109\"],\n\t\t[\"Rio Brilhante\", \"5007208\"],\n\t\t[\"Rio Negro\", \"5007307\"],\n\t\t[\"Rio Verde de Mato Grosso\", \"5007406\"],\n\t\t[\"Rochedo\", \"5007505\"],\n\t\t[\"Santa Rita do Pardo\", \"5007554\"],\n\t\t[\"São Gabriel do Oeste\", \"5007695\"],\n\t\t[\"Selvíria\", \"5007802\"],\n\t\t[\"Sete Quedas\", \"5007703\"],\n\t\t[\"Sidrolândia\", \"5007901\"],\n\t\t[\"Sonora\", \"5007935\"],\n\t\t[\"Tacuru\", \"5007950\"],\n\t\t[\"Taquarussu\", \"5007976\"],\n\t\t[\"Terenos\", \"5008008\"],\n\t\t[\"Três Lagoas\", \"5008305\"],\n\t\t[\"Vicentina\", \"5008404\"],\n\t],\n\tMT: [\n\t\t[\"Acorizal\", \"5100102\"],\n\t\t[\"Água Boa\", \"5100201\"],\n\t\t[\"Alta Floresta\", \"5100250\"],\n\t\t[\"Alto Araguaia\", \"5100300\"],\n\t\t[\"Alto Boa Vista\", \"5100359\"],\n\t\t[\"Alto Garças\", \"5100409\"],\n\t\t[\"Alto Paraguai\", \"5100508\"],\n\t\t[\"Alto Taquari\", \"5100607\"],\n\t\t[\"Apiacás\", \"5100805\"],\n\t\t[\"Araguaiana\", \"5101001\"],\n\t\t[\"Araguainha\", \"5101209\"],\n\t\t[\"Araputanga\", \"5101258\"],\n\t\t[\"Arenápolis\", \"5101308\"],\n\t\t[\"Aripuanã\", \"5101407\"],\n\t\t[\"Barão de Melgaço\", \"5101605\"],\n\t\t[\"Barra do Bugres\", \"5101704\"],\n\t\t[\"Barra do Garças\", \"5101803\"],\n\t\t[\"Boa Esperança do Norte\", \"5101837\"],\n\t\t[\"Bom Jesus do Araguaia\", \"5101852\"],\n\t\t[\"Brasnorte\", \"5101902\"],\n\t\t[\"Cáceres\", \"5102504\"],\n\t\t[\"Campinápolis\", \"5102603\"],\n\t\t[\"Campo Novo do Parecis\", \"5102637\"],\n\t\t[\"Campo Verde\", \"5102678\"],\n\t\t[\"Campos de Júlio\", \"5102686\"],\n\t\t[\"Canabrava do Norte\", \"5102694\"],\n\t\t[\"Canarana\", \"5102702\"],\n\t\t[\"Carlinda\", \"5102793\"],\n\t\t[\"Castanheira\", \"5102850\"],\n\t\t[\"Chapada dos Guimarães\", \"5103007\"],\n\t\t[\"Cláudia\", \"5103056\"],\n\t\t[\"Cocalinho\", \"5103106\"],\n\t\t[\"Colíder\", \"5103205\"],\n\t\t[\"Colniza\", \"5103254\"],\n\t\t[\"Comodoro\", \"5103304\"],\n\t\t[\"Confresa\", \"5103353\"],\n\t\t[\"Conquista D'Oeste\", \"5103361\"],\n\t\t[\"Cotriguaçu\", \"5103379\"],\n\t\t[\"Cuiabá\", \"5103403\"],\n\t\t[\"Curvelândia\", \"5103437\"],\n\t\t[\"Denise\", \"5103452\"],\n\t\t[\"Diamantino\", \"5103502\"],\n\t\t[\"Dom Aquino\", \"5103601\"],\n\t\t[\"Feliz Natal\", \"5103700\"],\n\t\t[\"Figueirópolis D'Oeste\", \"5103809\"],\n\t\t[\"Gaúcha do Norte\", \"5103858\"],\n\t\t[\"General Carneiro\", \"5103908\"],\n\t\t[\"Glória D'Oeste\", \"5103957\"],\n\t\t[\"Guarantã do Norte\", \"5104104\"],\n\t\t[\"Guiratinga\", \"5104203\"],\n\t\t[\"Indiavaí\", \"5104500\"],\n\t\t[\"Ipiranga do Norte\", \"5104526\"],\n\t\t[\"Itanhangá\", \"5104542\"],\n\t\t[\"Itaúba\", \"5104559\"],\n\t\t[\"Itiquira\", \"5104609\"],\n\t\t[\"Jaciara\", \"5104807\"],\n\t\t[\"Jangada\", \"5104906\"],\n\t\t[\"Jauru\", \"5105002\"],\n\t\t[\"Juara\", \"5105101\"],\n\t\t[\"Juína\", \"5105150\"],\n\t\t[\"Juruena\", \"5105176\"],\n\t\t[\"Juscimeira\", \"5105200\"],\n\t\t[\"Lambari D'Oeste\", \"5105234\"],\n\t\t[\"Lucas do Rio Verde\", \"5105259\"],\n\t\t[\"Luciara\", \"5105309\"],\n\t\t[\"Marcelândia\", \"5105580\"],\n\t\t[\"Matupá\", \"5105606\"],\n\t\t[\"Mirassol d'Oeste\", \"5105622\"],\n\t\t[\"Nobres\", \"5105903\"],\n\t\t[\"Nortelândia\", \"5106000\"],\n\t\t[\"Nossa Senhora do Livramento\", \"5106109\"],\n\t\t[\"Nova Bandeirantes\", \"5106158\"],\n\t\t[\"Nova Brasilândia\", \"5106208\"],\n\t\t[\"Nova Canaã do Norte\", \"5106216\"],\n\t\t[\"Nova Guarita\", \"5108808\"],\n\t\t[\"Nova Lacerda\", \"5106182\"],\n\t\t[\"Nova Marilândia\", \"5108857\"],\n\t\t[\"Nova Maringá\", \"5108907\"],\n\t\t[\"Nova Monte Verde\", \"5108956\"],\n\t\t[\"Nova Mutum\", \"5106224\"],\n\t\t[\"Nova Nazaré\", \"5106174\"],\n\t\t[\"Nova Olímpia\", \"5106232\"],\n\t\t[\"Nova Santa Helena\", \"5106190\"],\n\t\t[\"Nova Ubiratã\", \"5106240\"],\n\t\t[\"Nova Xavantina\", \"5106257\"],\n\t\t[\"Novo Horizonte do Norte\", \"5106273\"],\n\t\t[\"Novo Mundo\", \"5106265\"],\n\t\t[\"Novo Santo Antônio\", \"5106315\"],\n\t\t[\"Novo São Joaquim\", \"5106281\"],\n\t\t[\"Paranaíta\", \"5106299\"],\n\t\t[\"Paranatinga\", \"5106307\"],\n\t\t[\"Pedra Preta\", \"5106372\"],\n\t\t[\"Peixoto de Azevedo\", \"5106422\"],\n\t\t[\"Planalto da Serra\", \"5106455\"],\n\t\t[\"Poconé\", \"5106505\"],\n\t\t[\"Pontal do Araguaia\", \"5106653\"],\n\t\t[\"Ponte Branca\", \"5106703\"],\n\t\t[\"Pontes e Lacerda\", \"5106752\"],\n\t\t[\"Porto Alegre do Norte\", \"5106778\"],\n\t\t[\"Porto dos Gaúchos\", \"5106802\"],\n\t\t[\"Porto Esperidião\", \"5106828\"],\n\t\t[\"Porto Estrela\", \"5106851\"],\n\t\t[\"Poxoréu\", \"5107008\"],\n\t\t[\"Primavera do Leste\", \"5107040\"],\n\t\t[\"Querência\", \"5107065\"],\n\t\t[\"Reserva do Cabaçal\", \"5107156\"],\n\t\t[\"Ribeirão Cascalheira\", \"5107180\"],\n\t\t[\"Ribeirãozinho\", \"5107198\"],\n\t\t[\"Rio Branco\", \"5107206\"],\n\t\t[\"Rondolândia\", \"5107578\"],\n\t\t[\"Rondonópolis\", \"5107602\"],\n\t\t[\"Rosário Oeste\", \"5107701\"],\n\t\t[\"Salto do Céu\", \"5107750\"],\n\t\t[\"Santa Carmem\", \"5107248\"],\n\t\t[\"Santa Cruz do Xingu\", \"5107743\"],\n\t\t[\"Santa Rita do Trivelato\", \"5107768\"],\n\t\t[\"Santa Terezinha\", \"5107776\"],\n\t\t[\"Santo Afonso\", \"5107263\"],\n\t\t[\"Santo Antônio de Leverger\", \"5107800\"],\n\t\t[\"Santo Antônio do Leste\", \"5107792\"],\n\t\t[\"São Félix do Araguaia\", \"5107859\"],\n\t\t[\"São José do Povo\", \"5107297\"],\n\t\t[\"São José do Rio Claro\", \"5107305\"],\n\t\t[\"São José do Xingu\", \"5107354\"],\n\t\t[\"São José dos Quatro Marcos\", \"5107107\"],\n\t\t[\"São Pedro da Cipa\", \"5107404\"],\n\t\t[\"Sapezal\", \"5107875\"],\n\t\t[\"Serra Nova Dourada\", \"5107883\"],\n\t\t[\"Sinop\", \"5107909\"],\n\t\t[\"Sorriso\", \"5107925\"],\n\t\t[\"Tabaporã\", \"5107941\"],\n\t\t[\"Tangará da Serra\", \"5107958\"],\n\t\t[\"Tapurah\", \"5108006\"],\n\t\t[\"Terra Nova do Norte\", \"5108055\"],\n\t\t[\"Tesouro\", \"5108105\"],\n\t\t[\"Torixoréu\", \"5108204\"],\n\t\t[\"União do Sul\", \"5108303\"],\n\t\t[\"Vale de São Domingos\", \"5108352\"],\n\t\t[\"Várzea Grande\", \"5108402\"],\n\t\t[\"Vera\", \"5108501\"],\n\t\t[\"Vila Bela da Santíssima Trindade\", \"5105507\"],\n\t\t[\"Vila Rica\", \"5108600\"],\n\t],\n\tPA: [\n\t\t[\"Abaetetuba\", \"1500107\"],\n\t\t[\"Abel Figueiredo\", \"1500131\"],\n\t\t[\"Acará\", \"1500206\"],\n\t\t[\"Afuá\", \"1500305\"],\n\t\t[\"Água Azul do Norte\", \"1500347\"],\n\t\t[\"Alenquer\", \"1500404\"],\n\t\t[\"Almeirim\", \"1500503\"],\n\t\t[\"Altamira\", \"1500602\"],\n\t\t[\"Anajás\", \"1500701\"],\n\t\t[\"Ananindeua\", \"1500800\"],\n\t\t[\"Anapu\", \"1500859\"],\n\t\t[\"Augusto Corrêa\", \"1500909\"],\n\t\t[\"Aurora do Pará\", \"1500958\"],\n\t\t[\"Aveiro\", \"1501006\"],\n\t\t[\"Bagre\", \"1501105\"],\n\t\t[\"Baião\", \"1501204\"],\n\t\t[\"Bannach\", \"1501253\"],\n\t\t[\"Barcarena\", \"1501303\"],\n\t\t[\"Belém\", \"1501402\"],\n\t\t[\"Belterra\", \"1501451\"],\n\t\t[\"Benevides\", \"1501501\"],\n\t\t[\"Bom Jesus do Tocantins\", \"1501576\"],\n\t\t[\"Bonito\", \"1501600\"],\n\t\t[\"Bragança\", \"1501709\"],\n\t\t[\"Brasil Novo\", \"1501725\"],\n\t\t[\"Brejo Grande do Araguaia\", \"1501758\"],\n\t\t[\"Breu Branco\", \"1501782\"],\n\t\t[\"Breves\", \"1501808\"],\n\t\t[\"Bujaru\", \"1501907\"],\n\t\t[\"Cachoeira do Arari\", \"1502004\"],\n\t\t[\"Cachoeira do Piriá\", \"1501956\"],\n\t\t[\"Cametá\", \"1502103\"],\n\t\t[\"Canaã dos Carajás\", \"1502152\"],\n\t\t[\"Capanema\", \"1502202\"],\n\t\t[\"Capitão Poço\", \"1502301\"],\n\t\t[\"Castanhal\", \"1502400\"],\n\t\t[\"Chaves\", \"1502509\"],\n\t\t[\"Colares\", \"1502608\"],\n\t\t[\"Conceição do Araguaia\", \"1502707\"],\n\t\t[\"Concórdia do Pará\", \"1502756\"],\n\t\t[\"Cumaru do Norte\", \"1502764\"],\n\t\t[\"Curionópolis\", \"1502772\"],\n\t\t[\"Curralinho\", \"1502806\"],\n\t\t[\"Curuá\", \"1502855\"],\n\t\t[\"Curuçá\", \"1502905\"],\n\t\t[\"Dom Eliseu\", \"1502939\"],\n\t\t[\"Eldorado do Carajás\", \"1502954\"],\n\t\t[\"Faro\", \"1503002\"],\n\t\t[\"Floresta do Araguaia\", \"1503044\"],\n\t\t[\"Garrafão do Norte\", \"1503077\"],\n\t\t[\"Goianésia do Pará\", \"1503093\"],\n\t\t[\"Gurupá\", \"1503101\"],\n\t\t[\"Igarapé-Açu\", \"1503200\"],\n\t\t[\"Igarapé-Miri\", \"1503309\"],\n\t\t[\"Inhangapi\", \"1503408\"],\n\t\t[\"Ipixuna do Pará\", \"1503457\"],\n\t\t[\"Irituia\", \"1503507\"],\n\t\t[\"Itaituba\", \"1503606\"],\n\t\t[\"Itupiranga\", \"1503705\"],\n\t\t[\"Jacareacanga\", \"1503754\"],\n\t\t[\"Jacundá\", \"1503804\"],\n\t\t[\"Juruti\", \"1503903\"],\n\t\t[\"Limoeiro do Ajuru\", \"1504000\"],\n\t\t[\"Mãe do Rio\", \"1504059\"],\n\t\t[\"Magalhães Barata\", \"1504109\"],\n\t\t[\"Marabá\", \"1504208\"],\n\t\t[\"Maracanã\", \"1504307\"],\n\t\t[\"Marapanim\", \"1504406\"],\n\t\t[\"Marituba\", \"1504422\"],\n\t\t[\"Medicilândia\", \"1504455\"],\n\t\t[\"Melgaço\", \"1504505\"],\n\t\t[\"Mocajuba\", \"1504604\"],\n\t\t[\"Moju\", \"1504703\"],\n\t\t[\"Mojuí dos Campos\", \"1504752\"],\n\t\t[\"Monte Alegre\", \"1504802\"],\n\t\t[\"Muaná\", \"1504901\"],\n\t\t[\"Nova Esperança do Piriá\", \"1504950\"],\n\t\t[\"Nova Ipixuna\", \"1504976\"],\n\t\t[\"Nova Timboteua\", \"1505007\"],\n\t\t[\"Novo Progresso\", \"1505031\"],\n\t\t[\"Novo Repartimento\", \"1505064\"],\n\t\t[\"Óbidos\", \"1505106\"],\n\t\t[\"Oeiras do Pará\", \"1505205\"],\n\t\t[\"Oriximiná\", \"1505304\"],\n\t\t[\"Ourém\", \"1505403\"],\n\t\t[\"Ourilândia do Norte\", \"1505437\"],\n\t\t[\"Pacajá\", \"1505486\"],\n\t\t[\"Palestina do Pará\", \"1505494\"],\n\t\t[\"Paragominas\", \"1505502\"],\n\t\t[\"Parauapebas\", \"1505536\"],\n\t\t[\"Pau D'Arco\", \"1505551\"],\n\t\t[\"Peixe-Boi\", \"1505601\"],\n\t\t[\"Piçarra\", \"1505635\"],\n\t\t[\"Placas\", \"1505650\"],\n\t\t[\"Ponta de Pedras\", \"1505700\"],\n\t\t[\"Portel\", \"1505809\"],\n\t\t[\"Porto de Moz\", \"1505908\"],\n\t\t[\"Prainha\", \"1506005\"],\n\t\t[\"Primavera\", \"1506104\"],\n\t\t[\"Quatipuru\", \"1506112\"],\n\t\t[\"Redenção\", \"1506138\"],\n\t\t[\"Rio Maria\", \"1506161\"],\n\t\t[\"Rondon do Pará\", \"1506187\"],\n\t\t[\"Rurópolis\", \"1506195\"],\n\t\t[\"Salinópolis\", \"1506203\"],\n\t\t[\"Salvaterra\", \"1506302\"],\n\t\t[\"Santa Bárbara do Pará\", \"1506351\"],\n\t\t[\"Santa Cruz do Arari\", \"1506401\"],\n\t\t[\"Santa Izabel do Pará\", \"1506500\"],\n\t\t[\"Santa Luzia do Pará\", \"1506559\"],\n\t\t[\"Santa Maria das Barreiras\", \"1506583\"],\n\t\t[\"Santa Maria do Pará\", \"1506609\"],\n\t\t[\"Santana do Araguaia\", \"1506708\"],\n\t\t[\"Santarém\", \"1506807\"],\n\t\t[\"Santarém Novo\", \"1506906\"],\n\t\t[\"Santo Antônio do Tauá\", \"1507003\"],\n\t\t[\"São Caetano de Odivelas\", \"1507102\"],\n\t\t[\"São Domingos do Araguaia\", \"1507151\"],\n\t\t[\"São Domingos do Capim\", \"1507201\"],\n\t\t[\"São Félix do Xingu\", \"1507300\"],\n\t\t[\"São Francisco do Pará\", \"1507409\"],\n\t\t[\"São Geraldo do Araguaia\", \"1507458\"],\n\t\t[\"São João da Ponta\", \"1507466\"],\n\t\t[\"São João de Pirabas\", \"1507474\"],\n\t\t[\"São João do Araguaia\", \"1507508\"],\n\t\t[\"São Miguel do Guamá\", \"1507607\"],\n\t\t[\"São Sebastião da Boa Vista\", \"1507706\"],\n\t\t[\"Sapucaia\", \"1507755\"],\n\t\t[\"Senador José Porfírio\", \"1507805\"],\n\t\t[\"Soure\", \"1507904\"],\n\t\t[\"Tailândia\", \"1507953\"],\n\t\t[\"Terra Alta\", \"1507961\"],\n\t\t[\"Terra Santa\", \"1507979\"],\n\t\t[\"Tomé-Açu\", \"1508001\"],\n\t\t[\"Tracuateua\", \"1508035\"],\n\t\t[\"Trairão\", \"1508050\"],\n\t\t[\"Tucumã\", \"1508084\"],\n\t\t[\"Tucuruí\", \"1508100\"],\n\t\t[\"Ulianópolis\", \"1508126\"],\n\t\t[\"Uruará\", \"1508159\"],\n\t\t[\"Vigia\", \"1508209\"],\n\t\t[\"Viseu\", \"1508308\"],\n\t\t[\"Vitória do Xingu\", \"1508357\"],\n\t\t[\"Xinguara\", \"1508407\"],\n\t],\n\tPB: [\n\t\t[\"Água Branca\", \"2500106\"],\n\t\t[\"Aguiar\", \"2500205\"],\n\t\t[\"Alagoa Grande\", \"2500304\"],\n\t\t[\"Alagoa Nova\", \"2500403\"],\n\t\t[\"Alagoinha\", \"2500502\"],\n\t\t[\"Alcantil\", \"2500536\"],\n\t\t[\"Algodão de Jandaíra\", \"2500577\"],\n\t\t[\"Alhandra\", \"2500601\"],\n\t\t[\"Amparo\", \"2500734\"],\n\t\t[\"Aparecida\", \"2500775\"],\n\t\t[\"Araçagi\", \"2500809\"],\n\t\t[\"Arara\", \"2500908\"],\n\t\t[\"Araruna\", \"2501005\"],\n\t\t[\"Areia\", \"2501104\"],\n\t\t[\"Areia de Baraúnas\", \"2501153\"],\n\t\t[\"Areial\", \"2501203\"],\n\t\t[\"Aroeiras\", \"2501302\"],\n\t\t[\"Assunção\", \"2501351\"],\n\t\t[\"Baía da Traição\", \"2501401\"],\n\t\t[\"Bananeiras\", \"2501500\"],\n\t\t[\"Baraúna\", \"2501534\"],\n\t\t[\"Barra de Santa Rosa\", \"2501609\"],\n\t\t[\"Barra de Santana\", \"2501575\"],\n\t\t[\"Barra de São Miguel\", \"2501708\"],\n\t\t[\"Bayeux\", \"2501807\"],\n\t\t[\"Belém\", \"2501906\"],\n\t\t[\"Belém do Brejo do Cruz\", \"2502003\"],\n\t\t[\"Bernardino Batista\", \"2502052\"],\n\t\t[\"Boa Ventura\", \"2502102\"],\n\t\t[\"Boa Vista\", \"2502151\"],\n\t\t[\"Bom Jesus\", \"2502201\"],\n\t\t[\"Bom Sucesso\", \"2502300\"],\n\t\t[\"Bonito de Santa Fé\", \"2502409\"],\n\t\t[\"Boqueirão\", \"2502508\"],\n\t\t[\"Borborema\", \"2502706\"],\n\t\t[\"Brejo do Cruz\", \"2502805\"],\n\t\t[\"Brejo dos Santos\", \"2502904\"],\n\t\t[\"Caaporã\", \"2503001\"],\n\t\t[\"Cabaceiras\", \"2503100\"],\n\t\t[\"Cabedelo\", \"2503209\"],\n\t\t[\"Cachoeira dos Índios\", \"2503308\"],\n\t\t[\"Cacimba de Areia\", \"2503407\"],\n\t\t[\"Cacimba de Dentro\", \"2503506\"],\n\t\t[\"Cacimbas\", \"2503555\"],\n\t\t[\"Caiçara\", \"2503605\"],\n\t\t[\"Cajazeiras\", \"2503704\"],\n\t\t[\"Cajazeirinhas\", \"2503753\"],\n\t\t[\"Caldas Brandão\", \"2503803\"],\n\t\t[\"Camalaú\", \"2503902\"],\n\t\t[\"Campina Grande\", \"2504009\"],\n\t\t[\"Capim\", \"2504033\"],\n\t\t[\"Caraúbas\", \"2504074\"],\n\t\t[\"Carrapateira\", \"2504108\"],\n\t\t[\"Casserengue\", \"2504157\"],\n\t\t[\"Catingueira\", \"2504207\"],\n\t\t[\"Catolé do Rocha\", \"2504306\"],\n\t\t[\"Caturité\", \"2504355\"],\n\t\t[\"Conceição\", \"2504405\"],\n\t\t[\"Condado\", \"2504504\"],\n\t\t[\"Conde\", \"2504603\"],\n\t\t[\"Congo\", \"2504702\"],\n\t\t[\"Coremas\", \"2504801\"],\n\t\t[\"Coxixola\", \"2504850\"],\n\t\t[\"Cruz do Espírito Santo\", \"2504900\"],\n\t\t[\"Cubati\", \"2505006\"],\n\t\t[\"Cuité\", \"2505105\"],\n\t\t[\"Cuité de Mamanguape\", \"2505238\"],\n\t\t[\"Cuitegi\", \"2505204\"],\n\t\t[\"Curral de Cima\", \"2505279\"],\n\t\t[\"Curral Velho\", \"2505303\"],\n\t\t[\"Damião\", \"2505352\"],\n\t\t[\"Desterro\", \"2505402\"],\n\t\t[\"Diamante\", \"2505600\"],\n\t\t[\"Dona Inês\", \"2505709\"],\n\t\t[\"Duas Estradas\", \"2505808\"],\n\t\t[\"Emas\", \"2505907\"],\n\t\t[\"Esperança\", \"2506004\"],\n\t\t[\"Fagundes\", \"2506103\"],\n\t\t[\"Frei Martinho\", \"2506202\"],\n\t\t[\"Gado Bravo\", \"2506251\"],\n\t\t[\"Guarabira\", \"2506301\"],\n\t\t[\"Gurinhém\", \"2506400\"],\n\t\t[\"Gurjão\", \"2506509\"],\n\t\t[\"Ibiara\", \"2506608\"],\n\t\t[\"Igaracy\", \"2502607\"],\n\t\t[\"Imaculada\", \"2506707\"],\n\t\t[\"Ingá\", \"2506806\"],\n\t\t[\"Itabaiana\", \"2506905\"],\n\t\t[\"Itaporanga\", \"2507002\"],\n\t\t[\"Itapororoca\", \"2507101\"],\n\t\t[\"Itatuba\", \"2507200\"],\n\t\t[\"Jacaraú\", \"2507309\"],\n\t\t[\"Jericó\", \"2507408\"],\n\t\t[\"João Pessoa\", \"2507507\"],\n\t\t[\"Joca Claudino\", \"2513653\"],\n\t\t[\"Juarez Távora\", \"2507606\"],\n\t\t[\"Juazeirinho\", \"2507705\"],\n\t\t[\"Junco do Seridó\", \"2507804\"],\n\t\t[\"Juripiranga\", \"2507903\"],\n\t\t[\"Juru\", \"2508000\"],\n\t\t[\"Lagoa\", \"2508109\"],\n\t\t[\"Lagoa de Dentro\", \"2508208\"],\n\t\t[\"Lagoa Seca\", \"2508307\"],\n\t\t[\"Lastro\", \"2508406\"],\n\t\t[\"Livramento\", \"2508505\"],\n\t\t[\"Logradouro\", \"2508554\"],\n\t\t[\"Lucena\", \"2508604\"],\n\t\t[\"Mãe d'Água\", \"2508703\"],\n\t\t[\"Malta\", \"2508802\"],\n\t\t[\"Mamanguape\", \"2508901\"],\n\t\t[\"Manaíra\", \"2509008\"],\n\t\t[\"Marcação\", \"2509057\"],\n\t\t[\"Mari\", \"2509107\"],\n\t\t[\"Marizópolis\", \"2509156\"],\n\t\t[\"Massaranduba\", \"2509206\"],\n\t\t[\"Mataraca\", \"2509305\"],\n\t\t[\"Matinhas\", \"2509339\"],\n\t\t[\"Mato Grosso\", \"2509370\"],\n\t\t[\"Maturéia\", \"2509396\"],\n\t\t[\"Mogeiro\", \"2509404\"],\n\t\t[\"Montadas\", \"2509503\"],\n\t\t[\"Monte Horebe\", \"2509602\"],\n\t\t[\"Monteiro\", \"2509701\"],\n\t\t[\"Mulungu\", \"2509800\"],\n\t\t[\"Natuba\", \"2509909\"],\n\t\t[\"Nazarezinho\", \"2510006\"],\n\t\t[\"Nova Floresta\", \"2510105\"],\n\t\t[\"Nova Olinda\", \"2510204\"],\n\t\t[\"Nova Palmeira\", \"2510303\"],\n\t\t[\"Olho d'Água\", \"2510402\"],\n\t\t[\"Olivedos\", \"2510501\"],\n\t\t[\"Ouro Velho\", \"2510600\"],\n\t\t[\"Parari\", \"2510659\"],\n\t\t[\"Passagem\", \"2510709\"],\n\t\t[\"Patos\", \"2510808\"],\n\t\t[\"Paulista\", \"2510907\"],\n\t\t[\"Pedra Branca\", \"2511004\"],\n\t\t[\"Pedra Lavrada\", \"2511103\"],\n\t\t[\"Pedras de Fogo\", \"2511202\"],\n\t\t[\"Pedro Régis\", \"2512721\"],\n\t\t[\"Piancó\", \"2511301\"],\n\t\t[\"Picuí\", \"2511400\"],\n\t\t[\"Pilar\", \"2511509\"],\n\t\t[\"Pilões\", \"2511608\"],\n\t\t[\"Pilõezinhos\", \"2511707\"],\n\t\t[\"Pirpirituba\", \"2511806\"],\n\t\t[\"Pitimbu\", \"2511905\"],\n\t\t[\"Pocinhos\", \"2512002\"],\n\t\t[\"Poço Dantas\", \"2512036\"],\n\t\t[\"Poço de José de Moura\", \"2512077\"],\n\t\t[\"Pombal\", \"2512101\"],\n\t\t[\"Prata\", \"2512200\"],\n\t\t[\"Princesa Isabel\", \"2512309\"],\n\t\t[\"Puxinanã\", \"2512408\"],\n\t\t[\"Queimadas\", \"2512507\"],\n\t\t[\"Quixaba\", \"2512606\"],\n\t\t[\"Remígio\", \"2512705\"],\n\t\t[\"Riachão\", \"2512747\"],\n\t\t[\"Riachão do Bacamarte\", \"2512754\"],\n\t\t[\"Riachão do Poço\", \"2512762\"],\n\t\t[\"Riacho de Santo Antônio\", \"2512788\"],\n\t\t[\"Riacho dos Cavalos\", \"2512804\"],\n\t\t[\"Rio Tinto\", \"2512903\"],\n\t\t[\"Salgadinho\", \"2513000\"],\n\t\t[\"Salgado de São Félix\", \"2513109\"],\n\t\t[\"Santa Cecília\", \"2513158\"],\n\t\t[\"Santa Cruz\", \"2513208\"],\n\t\t[\"Santa Helena\", \"2513307\"],\n\t\t[\"Santa Inês\", \"2513356\"],\n\t\t[\"Santa Luzia\", \"2513406\"],\n\t\t[\"Santa Rita\", \"2513703\"],\n\t\t[\"Santa Teresinha\", \"2513802\"],\n\t\t[\"Santana de Mangueira\", \"2513505\"],\n\t\t[\"Santana dos Garrotes\", \"2513604\"],\n\t\t[\"Santo André\", \"2513851\"],\n\t\t[\"São Bentinho\", \"2513927\"],\n\t\t[\"São Bento\", \"2513901\"],\n\t\t[\"São Domingos\", \"2513968\"],\n\t\t[\"São Domingos do Cariri\", \"2513943\"],\n\t\t[\"São Francisco\", \"2513984\"],\n\t\t[\"São João do Cariri\", \"2514008\"],\n\t\t[\"São João do Rio do Peixe\", \"2500700\"],\n\t\t[\"São João do Tigre\", \"2514107\"],\n\t\t[\"São José da Lagoa Tapada\", \"2514206\"],\n\t\t[\"São José de Caiana\", \"2514305\"],\n\t\t[\"São José de Espinharas\", \"2514404\"],\n\t\t[\"São José de Piranhas\", \"2514503\"],\n\t\t[\"São José de Princesa\", \"2514552\"],\n\t\t[\"São José do Bonfim\", \"2514602\"],\n\t\t[\"São José do Brejo do Cruz\", \"2514651\"],\n\t\t[\"São José do Sabugi\", \"2514701\"],\n\t\t[\"São José dos Cordeiros\", \"2514800\"],\n\t\t[\"São José dos Ramos\", \"2514453\"],\n\t\t[\"São Mamede\", \"2514909\"],\n\t\t[\"São Miguel de Taipu\", \"2515005\"],\n\t\t[\"São Sebastião de Lagoa de Roça\", \"2515104\"],\n\t\t[\"São Sebastião do Umbuzeiro\", \"2515203\"],\n\t\t[\"São Vicente do Seridó\", \"2515401\"],\n\t\t[\"Sapé\", \"2515302\"],\n\t\t[\"Serra Branca\", \"2515500\"],\n\t\t[\"Serra da Raiz\", \"2515609\"],\n\t\t[\"Serra Grande\", \"2515708\"],\n\t\t[\"Serra Redonda\", \"2515807\"],\n\t\t[\"Serraria\", \"2515906\"],\n\t\t[\"Sertãozinho\", \"2515930\"],\n\t\t[\"Sobrado\", \"2515971\"],\n\t\t[\"Solânea\", \"2516003\"],\n\t\t[\"Soledade\", \"2516102\"],\n\t\t[\"Sossêgo\", \"2516151\"],\n\t\t[\"Sousa\", \"2516201\"],\n\t\t[\"Sumé\", \"2516300\"],\n\t\t[\"Tacima\", \"2516409\"],\n\t\t[\"Taperoá\", \"2516508\"],\n\t\t[\"Tavares\", \"2516607\"],\n\t\t[\"Teixeira\", \"2516706\"],\n\t\t[\"Tenório\", \"2516755\"],\n\t\t[\"Triunfo\", \"2516805\"],\n\t\t[\"Uiraúna\", \"2516904\"],\n\t\t[\"Umbuzeiro\", \"2517001\"],\n\t\t[\"Várzea\", \"2517100\"],\n\t\t[\"Vieirópolis\", \"2517209\"],\n\t\t[\"Vista Serrana\", \"2505501\"],\n\t\t[\"Zabelê\", \"2517407\"],\n\t],\n\tPE: [\n\t\t[\"Abreu e Lima\", \"2600054\"],\n\t\t[\"Afogados da Ingazeira\", \"2600104\"],\n\t\t[\"Afrânio\", \"2600203\"],\n\t\t[\"Agrestina\", \"2600302\"],\n\t\t[\"Água Preta\", \"2600401\"],\n\t\t[\"Águas Belas\", \"2600500\"],\n\t\t[\"Alagoinha\", \"2600609\"],\n\t\t[\"Aliança\", \"2600708\"],\n\t\t[\"Altinho\", \"2600807\"],\n\t\t[\"Amaraji\", \"2600906\"],\n\t\t[\"Angelim\", \"2601003\"],\n\t\t[\"Araçoiaba\", \"2601052\"],\n\t\t[\"Araripina\", \"2601102\"],\n\t\t[\"Arcoverde\", \"2601201\"],\n\t\t[\"Barra de Guabiraba\", \"2601300\"],\n\t\t[\"Barreiros\", \"2601409\"],\n\t\t[\"Belém de Maria\", \"2601508\"],\n\t\t[\"Belém do São Francisco\", \"2601607\"],\n\t\t[\"Belo Jardim\", \"2601706\"],\n\t\t[\"Betânia\", \"2601805\"],\n\t\t[\"Bezerros\", \"2601904\"],\n\t\t[\"Bodocó\", \"2602001\"],\n\t\t[\"Bom Conselho\", \"2602100\"],\n\t\t[\"Bom Jardim\", \"2602209\"],\n\t\t[\"Bonito\", \"2602308\"],\n\t\t[\"Brejão\", \"2602407\"],\n\t\t[\"Brejinho\", \"2602506\"],\n\t\t[\"Brejo da Madre de Deus\", \"2602605\"],\n\t\t[\"Buenos Aires\", \"2602704\"],\n\t\t[\"Buíque\", \"2602803\"],\n\t\t[\"Cabo de Santo Agostinho\", \"2602902\"],\n\t\t[\"Cabrobó\", \"2603009\"],\n\t\t[\"Cachoeirinha\", \"2603108\"],\n\t\t[\"Caetés\", \"2603207\"],\n\t\t[\"Calçado\", \"2603306\"],\n\t\t[\"Calumbi\", \"2603405\"],\n\t\t[\"Camaragibe\", \"2603454\"],\n\t\t[\"Camocim de São Félix\", \"2603504\"],\n\t\t[\"Camutanga\", \"2603603\"],\n\t\t[\"Canhotinho\", \"2603702\"],\n\t\t[\"Capoeiras\", \"2603801\"],\n\t\t[\"Carnaíba\", \"2603900\"],\n\t\t[\"Carnaubeira da Penha\", \"2603926\"],\n\t\t[\"Carpina\", \"2604007\"],\n\t\t[\"Caruaru\", \"2604106\"],\n\t\t[\"Casinhas\", \"2604155\"],\n\t\t[\"Catende\", \"2604205\"],\n\t\t[\"Cedro\", \"2604304\"],\n\t\t[\"Chã de Alegria\", \"2604403\"],\n\t\t[\"Chã Grande\", \"2604502\"],\n\t\t[\"Condado\", \"2604601\"],\n\t\t[\"Correntes\", \"2604700\"],\n\t\t[\"Cortês\", \"2604809\"],\n\t\t[\"Cumaru\", \"2604908\"],\n\t\t[\"Cupira\", \"2605004\"],\n\t\t[\"Custódia\", \"2605103\"],\n\t\t[\"Dormentes\", \"2605152\"],\n\t\t[\"Escada\", \"2605202\"],\n\t\t[\"Exu\", \"2605301\"],\n\t\t[\"Feira Nova\", \"2605400\"],\n\t\t[\"Fernando de Noronha\", \"2605459\"],\n\t\t[\"Ferreiros\", \"2605509\"],\n\t\t[\"Flores\", \"2605608\"],\n\t\t[\"Floresta\", \"2605707\"],\n\t\t[\"Frei Miguelinho\", \"2605806\"],\n\t\t[\"Gameleira\", \"2605905\"],\n\t\t[\"Garanhuns\", \"2606002\"],\n\t\t[\"Glória do Goitá\", \"2606101\"],\n\t\t[\"Goiana\", \"2606200\"],\n\t\t[\"Granito\", \"2606309\"],\n\t\t[\"Gravatá\", \"2606408\"],\n\t\t[\"Iati\", \"2606507\"],\n\t\t[\"Ibimirim\", \"2606606\"],\n\t\t[\"Ibirajuba\", \"2606705\"],\n\t\t[\"Igarassu\", \"2606804\"],\n\t\t[\"Iguaracy\", \"2606903\"],\n\t\t[\"Ilha de Itamaracá\", \"2607604\"],\n\t\t[\"Inajá\", \"2607000\"],\n\t\t[\"Ingazeira\", \"2607109\"],\n\t\t[\"Ipojuca\", \"2607208\"],\n\t\t[\"Ipubi\", \"2607307\"],\n\t\t[\"Itacuruba\", \"2607406\"],\n\t\t[\"Itaíba\", \"2607505\"],\n\t\t[\"Itambé\", \"2607653\"],\n\t\t[\"Itapetim\", \"2607703\"],\n\t\t[\"Itapissuma\", \"2607752\"],\n\t\t[\"Itaquitinga\", \"2607802\"],\n\t\t[\"Jaboatão dos Guararapes\", \"2607901\"],\n\t\t[\"Jaqueira\", \"2607950\"],\n\t\t[\"Jataúba\", \"2608008\"],\n\t\t[\"Jatobá\", \"2608057\"],\n\t\t[\"João Alfredo\", \"2608107\"],\n\t\t[\"Joaquim Nabuco\", \"2608206\"],\n\t\t[\"Jucati\", \"2608255\"],\n\t\t[\"Jupi\", \"2608305\"],\n\t\t[\"Jurema\", \"2608404\"],\n\t\t[\"Lagoa de Itaenga\", \"2608503\"],\n\t\t[\"Lagoa do Carro\", \"2608453\"],\n\t\t[\"Lagoa do Ouro\", \"2608602\"],\n\t\t[\"Lagoa dos Gatos\", \"2608701\"],\n\t\t[\"Lagoa Grande\", \"2608750\"],\n\t\t[\"Lajedo\", \"2608800\"],\n\t\t[\"Limoeiro\", \"2608909\"],\n\t\t[\"Macaparana\", \"2609006\"],\n\t\t[\"Machados\", \"2609105\"],\n\t\t[\"Manari\", \"2609154\"],\n\t\t[\"Maraial\", \"2609204\"],\n\t\t[\"Mirandiba\", \"2609303\"],\n\t\t[\"Moreilândia\", \"2614303\"],\n\t\t[\"Moreno\", \"2609402\"],\n\t\t[\"Nazaré da Mata\", \"2609501\"],\n\t\t[\"Olinda\", \"2609600\"],\n\t\t[\"Orobó\", \"2609709\"],\n\t\t[\"Orocó\", \"2609808\"],\n\t\t[\"Ouricuri\", \"2609907\"],\n\t\t[\"Palmares\", \"2610004\"],\n\t\t[\"Palmeirina\", \"2610103\"],\n\t\t[\"Panelas\", \"2610202\"],\n\t\t[\"Paranatama\", \"2610301\"],\n\t\t[\"Parnamirim\", \"2610400\"],\n\t\t[\"Passira\", \"2610509\"],\n\t\t[\"Paudalho\", \"2610608\"],\n\t\t[\"Paulista\", \"2610707\"],\n\t\t[\"Pedra\", \"2610806\"],\n\t\t[\"Pesqueira\", \"2610905\"],\n\t\t[\"Petrolândia\", \"2611002\"],\n\t\t[\"Petrolina\", \"2611101\"],\n\t\t[\"Poção\", \"2611200\"],\n\t\t[\"Pombos\", \"2611309\"],\n\t\t[\"Primavera\", \"2611408\"],\n\t\t[\"Quipapá\", \"2611507\"],\n\t\t[\"Quixaba\", \"2611533\"],\n\t\t[\"Recife\", \"2611606\"],\n\t\t[\"Riacho das Almas\", \"2611705\"],\n\t\t[\"Ribeirão\", \"2611804\"],\n\t\t[\"Rio Formoso\", \"2611903\"],\n\t\t[\"Sairé\", \"2612000\"],\n\t\t[\"Salgadinho\", \"2612109\"],\n\t\t[\"Salgueiro\", \"2612208\"],\n\t\t[\"Saloá\", \"2612307\"],\n\t\t[\"Sanharó\", \"2612406\"],\n\t\t[\"Santa Cruz\", \"2612455\"],\n\t\t[\"Santa Cruz da Baixa Verde\", \"2612471\"],\n\t\t[\"Santa Cruz do Capibaribe\", \"2612505\"],\n\t\t[\"Santa Filomena\", \"2612554\"],\n\t\t[\"Santa Maria da Boa Vista\", \"2612604\"],\n\t\t[\"Santa Maria do Cambucá\", \"2612703\"],\n\t\t[\"Santa Terezinha\", \"2612802\"],\n\t\t[\"São Benedito do Sul\", \"2612901\"],\n\t\t[\"São Bento do Una\", \"2613008\"],\n\t\t[\"São Caitano\", \"2613107\"],\n\t\t[\"São João\", \"2613206\"],\n\t\t[\"São Joaquim do Monte\", \"2613305\"],\n\t\t[\"São José da Coroa Grande\", \"2613404\"],\n\t\t[\"São José do Belmonte\", \"2613503\"],\n\t\t[\"São José do Egito\", \"2613602\"],\n\t\t[\"São Lourenço da Mata\", \"2613701\"],\n\t\t[\"São Vicente Férrer\", \"2613800\"],\n\t\t[\"Serra Talhada\", \"2613909\"],\n\t\t[\"Serrita\", \"2614006\"],\n\t\t[\"Sertânia\", \"2614105\"],\n\t\t[\"Sirinhaém\", \"2614204\"],\n\t\t[\"Solidão\", \"2614402\"],\n\t\t[\"Surubim\", \"2614501\"],\n\t\t[\"Tabira\", \"2614600\"],\n\t\t[\"Tacaimbó\", \"2614709\"],\n\t\t[\"Tacaratu\", \"2614808\"],\n\t\t[\"Tamandaré\", \"2614857\"],\n\t\t[\"Taquaritinga do Norte\", \"2615003\"],\n\t\t[\"Terezinha\", \"2615102\"],\n\t\t[\"Terra Nova\", \"2615201\"],\n\t\t[\"Timbaúba\", \"2615300\"],\n\t\t[\"Toritama\", \"2615409\"],\n\t\t[\"Tracunhaém\", \"2615508\"],\n\t\t[\"Trindade\", \"2615607\"],\n\t\t[\"Triunfo\", \"2615706\"],\n\t\t[\"Tupanatinga\", \"2615805\"],\n\t\t[\"Tuparetama\", \"2615904\"],\n\t\t[\"Venturosa\", \"2616001\"],\n\t\t[\"Verdejante\", \"2616100\"],\n\t\t[\"Vertente do Lério\", \"2616183\"],\n\t\t[\"Vertentes\", \"2616209\"],\n\t\t[\"Vicência\", \"2616308\"],\n\t\t[\"Vitória de Santo Antão\", \"2616407\"],\n\t\t[\"Xexéu\", \"2616506\"],\n\t],\n\tPI: [\n\t\t[\"Acauã\", \"2200053\"],\n\t\t[\"Agricolândia\", \"2200103\"],\n\t\t[\"Água Branca\", \"2200202\"],\n\t\t[\"Alagoinha do Piauí\", \"2200251\"],\n\t\t[\"Alegrete do Piauí\", \"2200277\"],\n\t\t[\"Alto Longá\", \"2200301\"],\n\t\t[\"Altos\", \"2200400\"],\n\t\t[\"Alvorada do Gurguéia\", \"2200459\"],\n\t\t[\"Amarante\", \"2200509\"],\n\t\t[\"Angical do Piauí\", \"2200608\"],\n\t\t[\"Anísio de Abreu\", \"2200707\"],\n\t\t[\"Antônio Almeida\", \"2200806\"],\n\t\t[\"Aroazes\", \"2200905\"],\n\t\t[\"Aroeiras do Itaim\", \"2200954\"],\n\t\t[\"Arraial\", \"2201002\"],\n\t\t[\"Assunção do Piauí\", \"2201051\"],\n\t\t[\"Avelino Lopes\", \"2201101\"],\n\t\t[\"Baixa Grande do Ribeiro\", \"2201150\"],\n\t\t[\"Barra D'Alcântara\", \"2201176\"],\n\t\t[\"Barras\", \"2201200\"],\n\t\t[\"Barreiras do Piauí\", \"2201309\"],\n\t\t[\"Barro Duro\", \"2201408\"],\n\t\t[\"Batalha\", \"2201507\"],\n\t\t[\"Bela Vista do Piauí\", \"2201556\"],\n\t\t[\"Belém do Piauí\", \"2201572\"],\n\t\t[\"Beneditinos\", \"2201606\"],\n\t\t[\"Bertolínia\", \"2201705\"],\n\t\t[\"Betânia do Piauí\", \"2201739\"],\n\t\t[\"Boa Hora\", \"2201770\"],\n\t\t[\"Bocaina\", \"2201804\"],\n\t\t[\"Bom Jesus\", \"2201903\"],\n\t\t[\"Bom Princípio do Piauí\", \"2201919\"],\n\t\t[\"Bonfim do Piauí\", \"2201929\"],\n\t\t[\"Boqueirão do Piauí\", \"2201945\"],\n\t\t[\"Brasileira\", \"2201960\"],\n\t\t[\"Brejo do Piauí\", \"2201988\"],\n\t\t[\"Buriti dos Lopes\", \"2202000\"],\n\t\t[\"Buriti dos Montes\", \"2202026\"],\n\t\t[\"Cabeceiras do Piauí\", \"2202059\"],\n\t\t[\"Cajazeiras do Piauí\", \"2202075\"],\n\t\t[\"Cajueiro da Praia\", \"2202083\"],\n\t\t[\"Caldeirão Grande do Piauí\", \"2202091\"],\n\t\t[\"Campinas do Piauí\", \"2202109\"],\n\t\t[\"Campo Alegre do Fidalgo\", \"2202117\"],\n\t\t[\"Campo Grande do Piauí\", \"2202133\"],\n\t\t[\"Campo Largo do Piauí\", \"2202174\"],\n\t\t[\"Campo Maior\", \"2202208\"],\n\t\t[\"Canavieira\", \"2202251\"],\n\t\t[\"Canto do Buriti\", \"2202307\"],\n\t\t[\"Capitão de Campos\", \"2202406\"],\n\t\t[\"Capitão Gervásio Oliveira\", \"2202455\"],\n\t\t[\"Caracol\", \"2202505\"],\n\t\t[\"Caraúbas do Piauí\", \"2202539\"],\n\t\t[\"Caridade do Piauí\", \"2202554\"],\n\t\t[\"Castelo do Piauí\", \"2202604\"],\n\t\t[\"Caxingó\", \"2202653\"],\n\t\t[\"Cocal\", \"2202703\"],\n\t\t[\"Cocal de Telha\", \"2202711\"],\n\t\t[\"Cocal dos Alves\", \"2202729\"],\n\t\t[\"Coivaras\", \"2202737\"],\n\t\t[\"Colônia do Gurguéia\", \"2202752\"],\n\t\t[\"Colônia do Piauí\", \"2202778\"],\n\t\t[\"Conceição do Canindé\", \"2202802\"],\n\t\t[\"Coronel José Dias\", \"2202851\"],\n\t\t[\"Corrente\", \"2202901\"],\n\t\t[\"Cristalândia do Piauí\", \"2203008\"],\n\t\t[\"Cristino Castro\", \"2203107\"],\n\t\t[\"Curimatá\", \"2203206\"],\n\t\t[\"Currais\", \"2203230\"],\n\t\t[\"Curral Novo do Piauí\", \"2203271\"],\n\t\t[\"Curralinhos\", \"2203255\"],\n\t\t[\"Demerval Lobão\", \"2203305\"],\n\t\t[\"Dirceu Arcoverde\", \"2203354\"],\n\t\t[\"Dom Expedito Lopes\", \"2203404\"],\n\t\t[\"Dom Inocêncio\", \"2203453\"],\n\t\t[\"Domingos Mourão\", \"2203420\"],\n\t\t[\"Elesbão Veloso\", \"2203503\"],\n\t\t[\"Eliseu Martins\", \"2203602\"],\n\t\t[\"Esperantina\", \"2203701\"],\n\t\t[\"Fartura do Piauí\", \"2203750\"],\n\t\t[\"Flores do Piauí\", \"2203800\"],\n\t\t[\"Floresta do Piauí\", \"2203859\"],\n\t\t[\"Floriano\", \"2203909\"],\n\t\t[\"Francinópolis\", \"2204006\"],\n\t\t[\"Francisco Ayres\", \"2204105\"],\n\t\t[\"Francisco Macedo\", \"2204154\"],\n\t\t[\"Francisco Santos\", \"2204204\"],\n\t\t[\"Fronteiras\", \"2204303\"],\n\t\t[\"Geminiano\", \"2204352\"],\n\t\t[\"Gilbués\", \"2204402\"],\n\t\t[\"Guadalupe\", \"2204501\"],\n\t\t[\"Guaribas\", \"2204550\"],\n\t\t[\"Hugo Napoleão\", \"2204600\"],\n\t\t[\"Ilha Grande\", \"2204659\"],\n\t\t[\"Inhuma\", \"2204709\"],\n\t\t[\"Ipiranga do Piauí\", \"2204808\"],\n\t\t[\"Isaías Coelho\", \"2204907\"],\n\t\t[\"Itainópolis\", \"2205003\"],\n\t\t[\"Itaueira\", \"2205102\"],\n\t\t[\"Jacobina do Piauí\", \"2205151\"],\n\t\t[\"Jaicós\", \"2205201\"],\n\t\t[\"Jardim do Mulato\", \"2205250\"],\n\t\t[\"Jatobá do Piauí\", \"2205276\"],\n\t\t[\"Jerumenha\", \"2205300\"],\n\t\t[\"João Costa\", \"2205359\"],\n\t\t[\"Joaquim Pires\", \"2205409\"],\n\t\t[\"Joca Marques\", \"2205458\"],\n\t\t[\"José de Freitas\", \"2205508\"],\n\t\t[\"Juazeiro do Piauí\", \"2205516\"],\n\t\t[\"Júlio Borges\", \"2205524\"],\n\t\t[\"Jurema\", \"2205532\"],\n\t\t[\"Lagoa Alegre\", \"2205557\"],\n\t\t[\"Lagoa de São Francisco\", \"2205573\"],\n\t\t[\"Lagoa do Barro do Piauí\", \"2205565\"],\n\t\t[\"Lagoa do Piauí\", \"2205581\"],\n\t\t[\"Lagoa do Sítio\", \"2205599\"],\n\t\t[\"Lagoinha do Piauí\", \"2205540\"],\n\t\t[\"Landri Sales\", \"2205607\"],\n\t\t[\"Luís Correia\", \"2205706\"],\n\t\t[\"Luzilândia\", \"2205805\"],\n\t\t[\"Madeiro\", \"2205854\"],\n\t\t[\"Manoel Emídio\", \"2205904\"],\n\t\t[\"Marcolândia\", \"2205953\"],\n\t\t[\"Marcos Parente\", \"2206001\"],\n\t\t[\"Massapê do Piauí\", \"2206050\"],\n\t\t[\"Matias Olímpio\", \"2206100\"],\n\t\t[\"Miguel Alves\", \"2206209\"],\n\t\t[\"Miguel Leão\", \"2206308\"],\n\t\t[\"Milton Brandão\", \"2206357\"],\n\t\t[\"Monsenhor Gil\", \"2206407\"],\n\t\t[\"Monsenhor Hipólito\", \"2206506\"],\n\t\t[\"Monte Alegre do Piauí\", \"2206605\"],\n\t\t[\"Morro Cabeça no Tempo\", \"2206654\"],\n\t\t[\"Morro do Chapéu do Piauí\", \"2206670\"],\n\t\t[\"Murici dos Portelas\", \"2206696\"],\n\t\t[\"Nazaré do Piauí\", \"2206704\"],\n\t\t[\"Nazária\", \"2206720\"],\n\t\t[\"Nossa Senhora de Nazaré\", \"2206753\"],\n\t\t[\"Nossa Senhora dos Remédios\", \"2206803\"],\n\t\t[\"Nova Santa Rita\", \"2207959\"],\n\t\t[\"Novo Oriente do Piauí\", \"2206902\"],\n\t\t[\"Novo Santo Antônio\", \"2206951\"],\n\t\t[\"Oeiras\", \"2207009\"],\n\t\t[\"Olho D'Água do Piauí\", \"2207108\"],\n\t\t[\"Padre Marcos\", \"2207207\"],\n\t\t[\"Paes Landim\", \"2207306\"],\n\t\t[\"Pajeú do Piauí\", \"2207355\"],\n\t\t[\"Palmeira do Piauí\", \"2207405\"],\n\t\t[\"Palmeirais\", \"2207504\"],\n\t\t[\"Paquetá\", \"2207553\"],\n\t\t[\"Parnaguá\", \"2207603\"],\n\t\t[\"Parnaíba\", \"2207702\"],\n\t\t[\"Passagem Franca do Piauí\", \"2207751\"],\n\t\t[\"Patos do Piauí\", \"2207777\"],\n\t\t[\"Pau D'Arco do Piauí\", \"2207793\"],\n\t\t[\"Paulistana\", \"2207801\"],\n\t\t[\"Pavussu\", \"2207850\"],\n\t\t[\"Pedro II\", \"2207900\"],\n\t\t[\"Pedro Laurentino\", \"2207934\"],\n\t\t[\"Picos\", \"2208007\"],\n\t\t[\"Pimenteiras\", \"2208106\"],\n\t\t[\"Pio IX\", \"2208205\"],\n\t\t[\"Piracuruca\", \"2208304\"],\n\t\t[\"Piripiri\", \"2208403\"],\n\t\t[\"Porto\", \"2208502\"],\n\t\t[\"Porto Alegre do Piauí\", \"2208551\"],\n\t\t[\"Prata do Piauí\", \"2208601\"],\n\t\t[\"Queimada Nova\", \"2208650\"],\n\t\t[\"Redenção do Gurguéia\", \"2208700\"],\n\t\t[\"Regeneração\", \"2208809\"],\n\t\t[\"Riacho Frio\", \"2208858\"],\n\t\t[\"Ribeira do Piauí\", \"2208874\"],\n\t\t[\"Ribeiro Gonçalves\", \"2208908\"],\n\t\t[\"Rio Grande do Piauí\", \"2209005\"],\n\t\t[\"Santa Cruz do Piauí\", \"2209104\"],\n\t\t[\"Santa Cruz dos Milagres\", \"2209153\"],\n\t\t[\"Santa Filomena\", \"2209203\"],\n\t\t[\"Santa Luz\", \"2209302\"],\n\t\t[\"Santa Rosa do Piauí\", \"2209377\"],\n\t\t[\"Santana do Piauí\", \"2209351\"],\n\t\t[\"Santo Antônio de Lisboa\", \"2209401\"],\n\t\t[\"Santo Antônio dos Milagres\", \"2209450\"],\n\t\t[\"Santo Inácio do Piauí\", \"2209500\"],\n\t\t[\"São Braz do Piauí\", \"2209559\"],\n\t\t[\"São Félix do Piauí\", \"2209609\"],\n\t\t[\"São Francisco de Assis do Piauí\", \"2209658\"],\n\t\t[\"São Francisco do Piauí\", \"2209708\"],\n\t\t[\"São Gonçalo do Gurguéia\", \"2209757\"],\n\t\t[\"São Gonçalo do Piauí\", \"2209807\"],\n\t\t[\"São João da Canabrava\", \"2209856\"],\n\t\t[\"São João da Fronteira\", \"2209872\"],\n\t\t[\"São João da Serra\", \"2209906\"],\n\t\t[\"São João da Varjota\", \"2209955\"],\n\t\t[\"São João do Arraial\", \"2209971\"],\n\t\t[\"São João do Piauí\", \"2210003\"],\n\t\t[\"São José do Divino\", \"2210052\"],\n\t\t[\"São José do Peixe\", \"2210102\"],\n\t\t[\"São José do Piauí\", \"2210201\"],\n\t\t[\"São Julião\", \"2210300\"],\n\t\t[\"São Lourenço do Piauí\", \"2210359\"],\n\t\t[\"São Luis do Piauí\", \"2210375\"],\n\t\t[\"São Miguel da Baixa Grande\", \"2210383\"],\n\t\t[\"São Miguel do Fidalgo\", \"2210391\"],\n\t\t[\"São Miguel do Tapuio\", \"2210409\"],\n\t\t[\"São Pedro do Piauí\", \"2210508\"],\n\t\t[\"São Raimundo Nonato\", \"2210607\"],\n\t\t[\"Sebastião Barros\", \"2210623\"],\n\t\t[\"Sebastião Leal\", \"2210631\"],\n\t\t[\"Sigefredo Pacheco\", \"2210656\"],\n\t\t[\"Simões\", \"2210706\"],\n\t\t[\"Simplício Mendes\", \"2210805\"],\n\t\t[\"Socorro do Piauí\", \"2210904\"],\n\t\t[\"Sussuapara\", \"2210938\"],\n\t\t[\"Tamboril do Piauí\", \"2210953\"],\n\t\t[\"Tanque do Piauí\", \"2210979\"],\n\t\t[\"Teresina\", \"2211001\"],\n\t\t[\"União\", \"2211100\"],\n\t\t[\"Uruçuí\", \"2211209\"],\n\t\t[\"Valença do Piauí\", \"2211308\"],\n\t\t[\"Várzea Branca\", \"2211357\"],\n\t\t[\"Várzea Grande\", \"2211407\"],\n\t\t[\"Vera Mendes\", \"2211506\"],\n\t\t[\"Vila Nova do Piauí\", \"2211605\"],\n\t\t[\"Wall Ferraz\", \"2211704\"],\n\t],\n\tPR: [\n\t\t[\"Abatiá\", \"4100103\"],\n\t\t[\"Adrianópolis\", \"4100202\"],\n\t\t[\"Agudos do Sul\", \"4100301\"],\n\t\t[\"Almirante Tamandaré\", \"4100400\"],\n\t\t[\"Altamira do Paraná\", \"4100459\"],\n\t\t[\"Alto Paraíso\", \"4128625\"],\n\t\t[\"Alto Paraná\", \"4100608\"],\n\t\t[\"Alto Piquiri\", \"4100707\"],\n\t\t[\"Altônia\", \"4100509\"],\n\t\t[\"Alvorada do Sul\", \"4100806\"],\n\t\t[\"Amaporã\", \"4100905\"],\n\t\t[\"Ampére\", \"4101002\"],\n\t\t[\"Anahy\", \"4101051\"],\n\t\t[\"Andirá\", \"4101101\"],\n\t\t[\"Ângulo\", \"4101150\"],\n\t\t[\"Antonina\", \"4101200\"],\n\t\t[\"Antônio Olinto\", \"4101309\"],\n\t\t[\"Apucarana\", \"4101408\"],\n\t\t[\"Arapongas\", \"4101507\"],\n\t\t[\"Arapoti\", \"4101606\"],\n\t\t[\"Arapuã\", \"4101655\"],\n\t\t[\"Araruna\", \"4101705\"],\n\t\t[\"Araucária\", \"4101804\"],\n\t\t[\"Ariranha do Ivaí\", \"4101853\"],\n\t\t[\"Assaí\", \"4101903\"],\n\t\t[\"Assis Chateaubriand\", \"4102000\"],\n\t\t[\"Astorga\", \"4102109\"],\n\t\t[\"Atalaia\", \"4102208\"],\n\t\t[\"Balsa Nova\", \"4102307\"],\n\t\t[\"Bandeirantes\", \"4102406\"],\n\t\t[\"Barbosa Ferraz\", \"4102505\"],\n\t\t[\"Barra do Jacaré\", \"4102703\"],\n\t\t[\"Barracão\", \"4102604\"],\n\t\t[\"Bela Vista da Caroba\", \"4102752\"],\n\t\t[\"Bela Vista do Paraíso\", \"4102802\"],\n\t\t[\"Bituruna\", \"4102901\"],\n\t\t[\"Boa Esperança\", \"4103008\"],\n\t\t[\"Boa Esperança do Iguaçu\", \"4103024\"],\n\t\t[\"Boa Ventura de São Roque\", \"4103040\"],\n\t\t[\"Boa Vista da Aparecida\", \"4103057\"],\n\t\t[\"Bocaiúva do Sul\", \"4103107\"],\n\t\t[\"Bom Jesus do Sul\", \"4103156\"],\n\t\t[\"Bom Sucesso\", \"4103206\"],\n\t\t[\"Bom Sucesso do Sul\", \"4103222\"],\n\t\t[\"Borrazópolis\", \"4103305\"],\n\t\t[\"Braganey\", \"4103354\"],\n\t\t[\"Brasilândia do Sul\", \"4103370\"],\n\t\t[\"Cafeara\", \"4103404\"],\n\t\t[\"Cafelândia\", \"4103453\"],\n\t\t[\"Cafezal do Sul\", \"4103479\"],\n\t\t[\"Califórnia\", \"4103503\"],\n\t\t[\"Cambará\", \"4103602\"],\n\t\t[\"Cambé\", \"4103701\"],\n\t\t[\"Cambira\", \"4103800\"],\n\t\t[\"Campina da Lagoa\", \"4103909\"],\n\t\t[\"Campina do Simão\", \"4103958\"],\n\t\t[\"Campina Grande do Sul\", \"4104006\"],\n\t\t[\"Campo Bonito\", \"4104055\"],\n\t\t[\"Campo do Tenente\", \"4104105\"],\n\t\t[\"Campo Largo\", \"4104204\"],\n\t\t[\"Campo Magro\", \"4104253\"],\n\t\t[\"Campo Mourão\", \"4104303\"],\n\t\t[\"Cândido de Abreu\", \"4104402\"],\n\t\t[\"Candói\", \"4104428\"],\n\t\t[\"Cantagalo\", \"4104451\"],\n\t\t[\"Capanema\", \"4104501\"],\n\t\t[\"Capitão Leônidas Marques\", \"4104600\"],\n\t\t[\"Carambeí\", \"4104659\"],\n\t\t[\"Carlópolis\", \"4104709\"],\n\t\t[\"Cascavel\", \"4104808\"],\n\t\t[\"Castro\", \"4104907\"],\n\t\t[\"Catanduvas\", \"4105003\"],\n\t\t[\"Centenário do Sul\", \"4105102\"],\n\t\t[\"Cerro Azul\", \"4105201\"],\n\t\t[\"Céu Azul\", \"4105300\"],\n\t\t[\"Chopinzinho\", \"4105409\"],\n\t\t[\"Cianorte\", \"4105508\"],\n\t\t[\"Cidade Gaúcha\", \"4105607\"],\n\t\t[\"Clevelândia\", \"4105706\"],\n\t\t[\"Colombo\", \"4105805\"],\n\t\t[\"Colorado\", \"4105904\"],\n\t\t[\"Congonhinhas\", \"4106001\"],\n\t\t[\"Conselheiro Mairinck\", \"4106100\"],\n\t\t[\"Contenda\", \"4106209\"],\n\t\t[\"Corbélia\", \"4106308\"],\n\t\t[\"Cornélio Procópio\", \"4106407\"],\n\t\t[\"Coronel Domingos Soares\", \"4106456\"],\n\t\t[\"Coronel Vivida\", \"4106506\"],\n\t\t[\"Corumbataí do Sul\", \"4106555\"],\n\t\t[\"Cruz Machado\", \"4106803\"],\n\t\t[\"Cruzeiro do Iguaçu\", \"4106571\"],\n\t\t[\"Cruzeiro do Oeste\", \"4106605\"],\n\t\t[\"Cruzeiro do Sul\", \"4106704\"],\n\t\t[\"Cruzmaltina\", \"4106852\"],\n\t\t[\"Curitiba\", \"4106902\"],\n\t\t[\"Curiúva\", \"4107009\"],\n\t\t[\"Diamante D'Oeste\", \"4107157\"],\n\t\t[\"Diamante do Norte\", \"4107108\"],\n\t\t[\"Diamante do Sul\", \"4107124\"],\n\t\t[\"Dois Vizinhos\", \"4107207\"],\n\t\t[\"Douradina\", \"4107256\"],\n\t\t[\"Doutor Camargo\", \"4107306\"],\n\t\t[\"Doutor Ulysses\", \"4128633\"],\n\t\t[\"Enéas Marques\", \"4107405\"],\n\t\t[\"Engenheiro Beltrão\", \"4107504\"],\n\t\t[\"Entre Rios do Oeste\", \"4107538\"],\n\t\t[\"Esperança Nova\", \"4107520\"],\n\t\t[\"Espigão Alto do Iguaçu\", \"4107546\"],\n\t\t[\"Farol\", \"4107553\"],\n\t\t[\"Faxinal\", \"4107603\"],\n\t\t[\"Fazenda Rio Grande\", \"4107652\"],\n\t\t[\"Fênix\", \"4107702\"],\n\t\t[\"Fernandes Pinheiro\", \"4107736\"],\n\t\t[\"Figueira\", \"4107751\"],\n\t\t[\"Flor da Serra do Sul\", \"4107850\"],\n\t\t[\"Floraí\", \"4107801\"],\n\t\t[\"Floresta\", \"4107900\"],\n\t\t[\"Florestópolis\", \"4108007\"],\n\t\t[\"Flórida\", \"4108106\"],\n\t\t[\"Formosa do Oeste\", \"4108205\"],\n\t\t[\"Foz do Iguaçu\", \"4108304\"],\n\t\t[\"Foz do Jordão\", \"4108452\"],\n\t\t[\"Francisco Alves\", \"4108320\"],\n\t\t[\"Francisco Beltrão\", \"4108403\"],\n\t\t[\"General Carneiro\", \"4108502\"],\n\t\t[\"Godoy Moreira\", \"4108551\"],\n\t\t[\"Goioerê\", \"4108601\"],\n\t\t[\"Goioxim\", \"4108650\"],\n\t\t[\"Grandes Rios\", \"4108700\"],\n\t\t[\"Guaíra\", \"4108809\"],\n\t\t[\"Guairaçá\", \"4108908\"],\n\t\t[\"Guamiranga\", \"4108957\"],\n\t\t[\"Guapirama\", \"4109005\"],\n\t\t[\"Guaporema\", \"4109104\"],\n\t\t[\"Guaraci\", \"4109203\"],\n\t\t[\"Guaraniaçu\", \"4109302\"],\n\t\t[\"Guarapuava\", \"4109401\"],\n\t\t[\"Guaraqueçaba\", \"4109500\"],\n\t\t[\"Guaratuba\", \"4109609\"],\n\t\t[\"Honório Serpa\", \"4109658\"],\n\t\t[\"Ibaiti\", \"4109708\"],\n\t\t[\"Ibema\", \"4109757\"],\n\t\t[\"Ibiporã\", \"4109807\"],\n\t\t[\"Icaraíma\", \"4109906\"],\n\t\t[\"Iguaraçu\", \"4110003\"],\n\t\t[\"Iguatu\", \"4110052\"],\n\t\t[\"Imbaú\", \"4110078\"],\n\t\t[\"Imbituva\", \"4110102\"],\n\t\t[\"Inácio Martins\", \"4110201\"],\n\t\t[\"Inajá\", \"4110300\"],\n\t\t[\"Indianópolis\", \"4110409\"],\n\t\t[\"Ipiranga\", \"4110508\"],\n\t\t[\"Iporã\", \"4110607\"],\n\t\t[\"Iracema do Oeste\", \"4110656\"],\n\t\t[\"Irati\", \"4110706\"],\n\t\t[\"Iretama\", \"4110805\"],\n\t\t[\"Itaguajé\", \"4110904\"],\n\t\t[\"Itaipulândia\", \"4110953\"],\n\t\t[\"Itambaracá\", \"4111001\"],\n\t\t[\"Itambé\", \"4111100\"],\n\t\t[\"Itapejara d'Oeste\", \"4111209\"],\n\t\t[\"Itaperuçu\", \"4111258\"],\n\t\t[\"Itaúna do Sul\", \"4111308\"],\n\t\t[\"Ivaí\", \"4111407\"],\n\t\t[\"Ivaiporã\", \"4111506\"],\n\t\t[\"Ivaté\", \"4111555\"],\n\t\t[\"Ivatuba\", \"4111605\"],\n\t\t[\"Jaboti\", \"4111704\"],\n\t\t[\"Jacarezinho\", \"4111803\"],\n\t\t[\"Jaguapitã\", \"4111902\"],\n\t\t[\"Jaguariaíva\", \"4112009\"],\n\t\t[\"Jandaia do Sul\", \"4112108\"],\n\t\t[\"Janiópolis\", \"4112207\"],\n\t\t[\"Japira\", \"4112306\"],\n\t\t[\"Japurá\", \"4112405\"],\n\t\t[\"Jardim Alegre\", \"4112504\"],\n\t\t[\"Jardim Olinda\", \"4112603\"],\n\t\t[\"Jataizinho\", \"4112702\"],\n\t\t[\"Jesuítas\", \"4112751\"],\n\t\t[\"Joaquim Távora\", \"4112801\"],\n\t\t[\"Jundiaí do Sul\", \"4112900\"],\n\t\t[\"Juranda\", \"4112959\"],\n\t\t[\"Jussara\", \"4113007\"],\n\t\t[\"Kaloré\", \"4113106\"],\n\t\t[\"Lapa\", \"4113205\"],\n\t\t[\"Laranjal\", \"4113254\"],\n\t\t[\"Laranjeiras do Sul\", \"4113304\"],\n\t\t[\"Leópolis\", \"4113403\"],\n\t\t[\"Lidianópolis\", \"4113429\"],\n\t\t[\"Lindoeste\", \"4113452\"],\n\t\t[\"Loanda\", \"4113502\"],\n\t\t[\"Lobato\", \"4113601\"],\n\t\t[\"Londrina\", \"4113700\"],\n\t\t[\"Luiziana\", \"4113734\"],\n\t\t[\"Lunardelli\", \"4113759\"],\n\t\t[\"Lupionópolis\", \"4113809\"],\n\t\t[\"Mallet\", \"4113908\"],\n\t\t[\"Mamborê\", \"4114005\"],\n\t\t[\"Mandaguaçu\", \"4114104\"],\n\t\t[\"Mandaguari\", \"4114203\"],\n\t\t[\"Mandirituba\", \"4114302\"],\n\t\t[\"Manfrinópolis\", \"4114351\"],\n\t\t[\"Mangueirinha\", \"4114401\"],\n\t\t[\"Manoel Ribas\", \"4114500\"],\n\t\t[\"Marechal Cândido Rondon\", \"4114609\"],\n\t\t[\"Maria Helena\", \"4114708\"],\n\t\t[\"Marialva\", \"4114807\"],\n\t\t[\"Marilândia do Sul\", \"4114906\"],\n\t\t[\"Marilena\", \"4115002\"],\n\t\t[\"Mariluz\", \"4115101\"],\n\t\t[\"Maringá\", \"4115200\"],\n\t\t[\"Mariópolis\", \"4115309\"],\n\t\t[\"Maripá\", \"4115358\"],\n\t\t[\"Marmeleiro\", \"4115408\"],\n\t\t[\"Marquinho\", \"4115457\"],\n\t\t[\"Marumbi\", \"4115507\"],\n\t\t[\"Matelândia\", \"4115606\"],\n\t\t[\"Matinhos\", \"4115705\"],\n\t\t[\"Mato Rico\", \"4115739\"],\n\t\t[\"Mauá da Serra\", \"4115754\"],\n\t\t[\"Medianeira\", \"4115804\"],\n\t\t[\"Mercedes\", \"4115853\"],\n\t\t[\"Mirador\", \"4115903\"],\n\t\t[\"Miraselva\", \"4116000\"],\n\t\t[\"Missal\", \"4116059\"],\n\t\t[\"Moreira Sales\", \"4116109\"],\n\t\t[\"Morretes\", \"4116208\"],\n\t\t[\"Munhoz de Melo\", \"4116307\"],\n\t\t[\"Nossa Senhora das Graças\", \"4116406\"],\n\t\t[\"Nova Aliança do Ivaí\", \"4116505\"],\n\t\t[\"Nova América da Colina\", \"4116604\"],\n\t\t[\"Nova Aurora\", \"4116703\"],\n\t\t[\"Nova Cantu\", \"4116802\"],\n\t\t[\"Nova Esperança\", \"4116901\"],\n\t\t[\"Nova Esperança do Sudoeste\", \"4116950\"],\n\t\t[\"Nova Fátima\", \"4117008\"],\n\t\t[\"Nova Laranjeiras\", \"4117057\"],\n\t\t[\"Nova Londrina\", \"4117107\"],\n\t\t[\"Nova Olímpia\", \"4117206\"],\n\t\t[\"Nova Prata do Iguaçu\", \"4117255\"],\n\t\t[\"Nova Santa Bárbara\", \"4117214\"],\n\t\t[\"Nova Santa Rosa\", \"4117222\"],\n\t\t[\"Nova Tebas\", \"4117271\"],\n\t\t[\"Novo Itacolomi\", \"4117297\"],\n\t\t[\"Ortigueira\", \"4117305\"],\n\t\t[\"Ourizona\", \"4117404\"],\n\t\t[\"Ouro Verde do Oeste\", \"4117453\"],\n\t\t[\"Paiçandu\", \"4117503\"],\n\t\t[\"Palmas\", \"4117602\"],\n\t\t[\"Palmeira\", \"4117701\"],\n\t\t[\"Palmital\", \"4117800\"],\n\t\t[\"Palotina\", \"4117909\"],\n\t\t[\"Paraíso do Norte\", \"4118006\"],\n\t\t[\"Paranacity\", \"4118105\"],\n\t\t[\"Paranaguá\", \"4118204\"],\n\t\t[\"Paranapoema\", \"4118303\"],\n\t\t[\"Paranavaí\", \"4118402\"],\n\t\t[\"Pato Bragado\", \"4118451\"],\n\t\t[\"Pato Branco\", \"4118501\"],\n\t\t[\"Paula Freitas\", \"4118600\"],\n\t\t[\"Paulo Frontin\", \"4118709\"],\n\t\t[\"Peabiru\", \"4118808\"],\n\t\t[\"Perobal\", \"4118857\"],\n\t\t[\"Pérola\", \"4118907\"],\n\t\t[\"Pérola d'Oeste\", \"4119004\"],\n\t\t[\"Piên\", \"4119103\"],\n\t\t[\"Pinhais\", \"4119152\"],\n\t\t[\"Pinhal de São Bento\", \"4119251\"],\n\t\t[\"Pinhalão\", \"4119202\"],\n\t\t[\"Pinhão\", \"4119301\"],\n\t\t[\"Piraí do Sul\", \"4119400\"],\n\t\t[\"Piraquara\", \"4119509\"],\n\t\t[\"Pitanga\", \"4119608\"],\n\t\t[\"Pitangueiras\", \"4119657\"],\n\t\t[\"Planaltina do Paraná\", \"4119707\"],\n\t\t[\"Planalto\", \"4119806\"],\n\t\t[\"Ponta Grossa\", \"4119905\"],\n\t\t[\"Pontal do Paraná\", \"4119954\"],\n\t\t[\"Porecatu\", \"4120002\"],\n\t\t[\"Porto Amazonas\", \"4120101\"],\n\t\t[\"Porto Barreiro\", \"4120150\"],\n\t\t[\"Porto Rico\", \"4120200\"],\n\t\t[\"Porto Vitória\", \"4120309\"],\n\t\t[\"Prado Ferreira\", \"4120333\"],\n\t\t[\"Pranchita\", \"4120358\"],\n\t\t[\"Presidente Castelo Branco\", \"4120408\"],\n\t\t[\"Primeiro de Maio\", \"4120507\"],\n\t\t[\"Prudentópolis\", \"4120606\"],\n\t\t[\"Quarto Centenário\", \"4120655\"],\n\t\t[\"Quatiguá\", \"4120705\"],\n\t\t[\"Quatro Barras\", \"4120804\"],\n\t\t[\"Quatro Pontes\", \"4120853\"],\n\t\t[\"Quedas do Iguaçu\", \"4120903\"],\n\t\t[\"Querência do Norte\", \"4121000\"],\n\t\t[\"Quinta do Sol\", \"4121109\"],\n\t\t[\"Quitandinha\", \"4121208\"],\n\t\t[\"Ramilândia\", \"4121257\"],\n\t\t[\"Rancho Alegre\", \"4121307\"],\n\t\t[\"Rancho Alegre D'Oeste\", \"4121356\"],\n\t\t[\"Realeza\", \"4121406\"],\n\t\t[\"Rebouças\", \"4121505\"],\n\t\t[\"Renascença\", \"4121604\"],\n\t\t[\"Reserva\", \"4121703\"],\n\t\t[\"Reserva do Iguaçu\", \"4121752\"],\n\t\t[\"Ribeirão Claro\", \"4121802\"],\n\t\t[\"Ribeirão do Pinhal\", \"4121901\"],\n\t\t[\"Rio Azul\", \"4122008\"],\n\t\t[\"Rio Bom\", \"4122107\"],\n\t\t[\"Rio Bonito do Iguaçu\", \"4122156\"],\n\t\t[\"Rio Branco do Ivaí\", \"4122172\"],\n\t\t[\"Rio Branco do Sul\", \"4122206\"],\n\t\t[\"Rio Negro\", \"4122305\"],\n\t\t[\"Rolândia\", \"4122404\"],\n\t\t[\"Roncador\", \"4122503\"],\n\t\t[\"Rondon\", \"4122602\"],\n\t\t[\"Rosário do Ivaí\", \"4122651\"],\n\t\t[\"Sabáudia\", \"4122701\"],\n\t\t[\"Salgado Filho\", \"4122800\"],\n\t\t[\"Salto do Itararé\", \"4122909\"],\n\t\t[\"Salto do Lontra\", \"4123006\"],\n\t\t[\"Santa Amélia\", \"4123105\"],\n\t\t[\"Santa Cecília do Pavão\", \"4123204\"],\n\t\t[\"Santa Cruz de Monte Castelo\", \"4123303\"],\n\t\t[\"Santa Fé\", \"4123402\"],\n\t\t[\"Santa Helena\", \"4123501\"],\n\t\t[\"Santa Inês\", \"4123600\"],\n\t\t[\"Santa Isabel do Ivaí\", \"4123709\"],\n\t\t[\"Santa Izabel do Oeste\", \"4123808\"],\n\t\t[\"Santa Lúcia\", \"4123824\"],\n\t\t[\"Santa Maria do Oeste\", \"4123857\"],\n\t\t[\"Santa Mariana\", \"4123907\"],\n\t\t[\"Santa Mônica\", \"4123956\"],\n\t\t[\"Santa Tereza do Oeste\", \"4124020\"],\n\t\t[\"Santa Terezinha de Itaipu\", \"4124053\"],\n\t\t[\"Santana do Itararé\", \"4124004\"],\n\t\t[\"Santo Antônio da Platina\", \"4124103\"],\n\t\t[\"Santo Antônio do Caiuá\", \"4124202\"],\n\t\t[\"Santo Antônio do Paraíso\", \"4124301\"],\n\t\t[\"Santo Antônio do Sudoeste\", \"4124400\"],\n\t\t[\"Santo Inácio\", \"4124509\"],\n\t\t[\"São Carlos do Ivaí\", \"4124608\"],\n\t\t[\"São Jerônimo da Serra\", \"4124707\"],\n\t\t[\"São João\", \"4124806\"],\n\t\t[\"São João do Caiuá\", \"4124905\"],\n\t\t[\"São João do Ivaí\", \"4125001\"],\n\t\t[\"São João do Triunfo\", \"4125100\"],\n\t\t[\"São Jorge d'Oeste\", \"4125209\"],\n\t\t[\"São Jorge do Ivaí\", \"4125308\"],\n\t\t[\"São Jorge do Patrocínio\", \"4125357\"],\n\t\t[\"São José da Boa Vista\", \"4125407\"],\n\t\t[\"São José das Palmeiras\", \"4125456\"],\n\t\t[\"São José dos Pinhais\", \"4125506\"],\n\t\t[\"São Manoel do Paraná\", \"4125555\"],\n\t\t[\"São Mateus do Sul\", \"4125605\"],\n\t\t[\"São Miguel do Iguaçu\", \"4125704\"],\n\t\t[\"São Pedro do Iguaçu\", \"4125753\"],\n\t\t[\"São Pedro do Ivaí\", \"4125803\"],\n\t\t[\"São Pedro do Paraná\", \"4125902\"],\n\t\t[\"São Sebastião da Amoreira\", \"4126009\"],\n\t\t[\"São Tomé\", \"4126108\"],\n\t\t[\"Sapopema\", \"4126207\"],\n\t\t[\"Sarandi\", \"4126256\"],\n\t\t[\"Saudade do Iguaçu\", \"4126272\"],\n\t\t[\"Sengés\", \"4126306\"],\n\t\t[\"Serranópolis do Iguaçu\", \"4126355\"],\n\t\t[\"Sertaneja\", \"4126405\"],\n\t\t[\"Sertanópolis\", \"4126504\"],\n\t\t[\"Siqueira Campos\", \"4126603\"],\n\t\t[\"Sulina\", \"4126652\"],\n\t\t[\"Tamarana\", \"4126678\"],\n\t\t[\"Tamboara\", \"4126702\"],\n\t\t[\"Tapejara\", \"4126801\"],\n\t\t[\"Tapira\", \"4126900\"],\n\t\t[\"Teixeira Soares\", \"4127007\"],\n\t\t[\"Telêmaco Borba\", \"4127106\"],\n\t\t[\"Terra Boa\", \"4127205\"],\n\t\t[\"Terra Rica\", \"4127304\"],\n\t\t[\"Terra Roxa\", \"4127403\"],\n\t\t[\"Tibagi\", \"4127502\"],\n\t\t[\"Tijucas do Sul\", \"4127601\"],\n\t\t[\"Toledo\", \"4127700\"],\n\t\t[\"Tomazina\", \"4127809\"],\n\t\t[\"Três Barras do Paraná\", \"4127858\"],\n\t\t[\"Tunas do Paraná\", \"4127882\"],\n\t\t[\"Tuneiras do Oeste\", \"4127908\"],\n\t\t[\"Tupãssi\", \"4127957\"],\n\t\t[\"Turvo\", \"4127965\"],\n\t\t[\"Ubiratã\", \"4128005\"],\n\t\t[\"Umuarama\", \"4128104\"],\n\t\t[\"União da Vitória\", \"4128203\"],\n\t\t[\"Uniflor\", \"4128302\"],\n\t\t[\"Uraí\", \"4128401\"],\n\t\t[\"Ventania\", \"4128534\"],\n\t\t[\"Vera Cruz do Oeste\", \"4128559\"],\n\t\t[\"Verê\", \"4128609\"],\n\t\t[\"Virmond\", \"4128658\"],\n\t\t[\"Vitorino\", \"4128708\"],\n\t\t[\"Wenceslau Braz\", \"4128500\"],\n\t\t[\"Xambrê\", \"4128807\"],\n\t],\n\tRJ: [\n\t\t[\"Angra dos Reis\", \"3300100\"],\n\t\t[\"Aperibé\", \"3300159\"],\n\t\t[\"Araruama\", \"3300209\"],\n\t\t[\"Areal\", \"3300225\"],\n\t\t[\"Armação dos Búzios\", \"3300233\"],\n\t\t[\"Arraial do Cabo\", \"3300258\"],\n\t\t[\"Barra do Piraí\", \"3300308\"],\n\t\t[\"Barra Mansa\", \"3300407\"],\n\t\t[\"Belford Roxo\", \"3300456\"],\n\t\t[\"Bom Jardim\", \"3300506\"],\n\t\t[\"Bom Jesus do Itabapoana\", \"3300605\"],\n\t\t[\"Cabo Frio\", \"3300704\"],\n\t\t[\"Cachoeiras de Macacu\", \"3300803\"],\n\t\t[\"Cambuci\", \"3300902\"],\n\t\t[\"Campos dos Goytacazes\", \"3301009\"],\n\t\t[\"Cantagalo\", \"3301108\"],\n\t\t[\"Carapebus\", \"3300936\"],\n\t\t[\"Cardoso Moreira\", \"3301157\"],\n\t\t[\"Carmo\", \"3301207\"],\n\t\t[\"Casimiro de Abreu\", \"3301306\"],\n\t\t[\"Comendador Levy Gasparian\", \"3300951\"],\n\t\t[\"Conceição de Macabu\", \"3301405\"],\n\t\t[\"Cordeiro\", \"3301504\"],\n\t\t[\"Duas Barras\", \"3301603\"],\n\t\t[\"Duque de Caxias\", \"3301702\"],\n\t\t[\"Engenheiro Paulo de Frontin\", \"3301801\"],\n\t\t[\"Guapimirim\", \"3301850\"],\n\t\t[\"Iguaba Grande\", \"3301876\"],\n\t\t[\"Itaboraí\", \"3301900\"],\n\t\t[\"Itaguaí\", \"3302007\"],\n\t\t[\"Italva\", \"3302056\"],\n\t\t[\"Itaocara\", \"3302106\"],\n\t\t[\"Itaperuna\", \"3302205\"],\n\t\t[\"Itatiaia\", \"3302254\"],\n\t\t[\"Japeri\", \"3302270\"],\n\t\t[\"Laje do Muriaé\", \"3302304\"],\n\t\t[\"Macaé\", \"3302403\"],\n\t\t[\"Macuco\", \"3302452\"],\n\t\t[\"Magé\", \"3302502\"],\n\t\t[\"Mangaratiba\", \"3302601\"],\n\t\t[\"Maricá\", \"3302700\"],\n\t\t[\"Mendes\", \"3302809\"],\n\t\t[\"Mesquita\", \"3302858\"],\n\t\t[\"Miguel Pereira\", \"3302908\"],\n\t\t[\"Miracema\", \"3303005\"],\n\t\t[\"Natividade\", \"3303104\"],\n\t\t[\"Nilópolis\", \"3303203\"],\n\t\t[\"Niterói\", \"3303302\"],\n\t\t[\"Nova Friburgo\", \"3303401\"],\n\t\t[\"Nova Iguaçu\", \"3303500\"],\n\t\t[\"Paracambi\", \"3303609\"],\n\t\t[\"Paraíba do Sul\", \"3303708\"],\n\t\t[\"Paraty\", \"3303807\"],\n\t\t[\"Paty do Alferes\", \"3303856\"],\n\t\t[\"Petrópolis\", \"3303906\"],\n\t\t[\"Pinheiral\", \"3303955\"],\n\t\t[\"Piraí\", \"3304003\"],\n\t\t[\"Porciúncula\", \"3304102\"],\n\t\t[\"Porto Real\", \"3304110\"],\n\t\t[\"Quatis\", \"3304128\"],\n\t\t[\"Queimados\", \"3304144\"],\n\t\t[\"Quissamã\", \"3304151\"],\n\t\t[\"Resende\", \"3304201\"],\n\t\t[\"Rio Bonito\", \"3304300\"],\n\t\t[\"Rio Claro\", \"3304409\"],\n\t\t[\"Rio das Flores\", \"3304508\"],\n\t\t[\"Rio das Ostras\", \"3304524\"],\n\t\t[\"Rio de Janeiro\", \"3304557\"],\n\t\t[\"Santa Maria Madalena\", \"3304607\"],\n\t\t[\"Santo Antônio de Pádua\", \"3304706\"],\n\t\t[\"São Fidélis\", \"3304805\"],\n\t\t[\"São Francisco de Itabapoana\", \"3304755\"],\n\t\t[\"São Gonçalo\", \"3304904\"],\n\t\t[\"São João da Barra\", \"3305000\"],\n\t\t[\"São João de Meriti\", \"3305109\"],\n\t\t[\"São José de Ubá\", \"3305133\"],\n\t\t[\"São José do Vale do Rio Preto\", \"3305158\"],\n\t\t[\"São Pedro da Aldeia\", \"3305208\"],\n\t\t[\"São Sebastião do Alto\", \"3305307\"],\n\t\t[\"Sapucaia\", \"3305406\"],\n\t\t[\"Saquarema\", \"3305505\"],\n\t\t[\"Seropédica\", \"3305554\"],\n\t\t[\"Silva Jardim\", \"3305604\"],\n\t\t[\"Sumidouro\", \"3305703\"],\n\t\t[\"Tanguá\", \"3305752\"],\n\t\t[\"Teresópolis\", \"3305802\"],\n\t\t[\"Trajano de Moraes\", \"3305901\"],\n\t\t[\"Três Rios\", \"3306008\"],\n\t\t[\"Valença\", \"3306107\"],\n\t\t[\"Varre-Sai\", \"3306156\"],\n\t\t[\"Vassouras\", \"3306206\"],\n\t\t[\"Volta Redonda\", \"3306305\"],\n\t],\n\tRN: [\n\t\t[\"Acari\", \"2400109\"],\n\t\t[\"Afonso Bezerra\", \"2400307\"],\n\t\t[\"Água Nova\", \"2400406\"],\n\t\t[\"Alexandria\", \"2400505\"],\n\t\t[\"Almino Afonso\", \"2400604\"],\n\t\t[\"Alto do Rodrigues\", \"2400703\"],\n\t\t[\"Angicos\", \"2400802\"],\n\t\t[\"Antônio Martins\", \"2400901\"],\n\t\t[\"Apodi\", \"2401008\"],\n\t\t[\"Areia Branca\", \"2401107\"],\n\t\t[\"Arez\", \"2401206\"],\n\t\t[\"Assú\", \"2400208\"],\n\t\t[\"Baía Formosa\", \"2401404\"],\n\t\t[\"Baraúna\", \"2401453\"],\n\t\t[\"Barcelona\", \"2401503\"],\n\t\t[\"Bento Fernandes\", \"2401602\"],\n\t\t[\"Bodó\", \"2401651\"],\n\t\t[\"Bom Jesus\", \"2401701\"],\n\t\t[\"Brejinho\", \"2401800\"],\n\t\t[\"Caiçara do Norte\", \"2401859\"],\n\t\t[\"Caiçara do Rio do Vento\", \"2401909\"],\n\t\t[\"Caicó\", \"2402006\"],\n\t\t[\"Campo Grande\", \"2401305\"],\n\t\t[\"Campo Redondo\", \"2402105\"],\n\t\t[\"Canguaretama\", \"2402204\"],\n\t\t[\"Caraúbas\", \"2402303\"],\n\t\t[\"Carnaúba dos Dantas\", \"2402402\"],\n\t\t[\"Carnaubais\", \"2402501\"],\n\t\t[\"Ceará-Mirim\", \"2402600\"],\n\t\t[\"Cerro Corá\", \"2402709\"],\n\t\t[\"Coronel Ezequiel\", \"2402808\"],\n\t\t[\"Coronel João Pessoa\", \"2402907\"],\n\t\t[\"Cruzeta\", \"2403004\"],\n\t\t[\"Currais Novos\", \"2403103\"],\n\t\t[\"Doutor Severiano\", \"2403202\"],\n\t\t[\"Encanto\", \"2403301\"],\n\t\t[\"Equador\", \"2403400\"],\n\t\t[\"Espírito Santo\", \"2403509\"],\n\t\t[\"Extremoz\", \"2403608\"],\n\t\t[\"Felipe Guerra\", \"2403707\"],\n\t\t[\"Fernando Pedroza\", \"2403756\"],\n\t\t[\"Florânia\", \"2403806\"],\n\t\t[\"Francisco Dantas\", \"2403905\"],\n\t\t[\"Frutuoso Gomes\", \"2404002\"],\n\t\t[\"Galinhos\", \"2404101\"],\n\t\t[\"Goianinha\", \"2404200\"],\n\t\t[\"Governador Dix-Sept Rosado\", \"2404309\"],\n\t\t[\"Grossos\", \"2404408\"],\n\t\t[\"Guamaré\", \"2404507\"],\n\t\t[\"Ielmo Marinho\", \"2404606\"],\n\t\t[\"Ipanguaçu\", \"2404705\"],\n\t\t[\"Ipueira\", \"2404804\"],\n\t\t[\"Itajá\", \"2404853\"],\n\t\t[\"Itaú\", \"2404903\"],\n\t\t[\"Jaçanã\", \"2405009\"],\n\t\t[\"Jandaíra\", \"2405108\"],\n\t\t[\"Janduís\", \"2405207\"],\n\t\t[\"Januário Cicco\", \"2405306\"],\n\t\t[\"Japi\", \"2405405\"],\n\t\t[\"Jardim de Angicos\", \"2405504\"],\n\t\t[\"Jardim de Piranhas\", \"2405603\"],\n\t\t[\"Jardim do Seridó\", \"2405702\"],\n\t\t[\"João Câmara\", \"2405801\"],\n\t\t[\"João Dias\", \"2405900\"],\n\t\t[\"José da Penha\", \"2406007\"],\n\t\t[\"Jucurutu\", \"2406106\"],\n\t\t[\"Jundiá\", \"2406155\"],\n\t\t[\"Lagoa d'Anta\", \"2406205\"],\n\t\t[\"Lagoa de Pedras\", \"2406304\"],\n\t\t[\"Lagoa de Velhos\", \"2406403\"],\n\t\t[\"Lagoa Nova\", \"2406502\"],\n\t\t[\"Lagoa Salgada\", \"2406601\"],\n\t\t[\"Lajes\", \"2406700\"],\n\t\t[\"Lajes Pintadas\", \"2406809\"],\n\t\t[\"Lucrécia\", \"2406908\"],\n\t\t[\"Luís Gomes\", \"2407005\"],\n\t\t[\"Macaíba\", \"2407104\"],\n\t\t[\"Macau\", \"2407203\"],\n\t\t[\"Major Sales\", \"2407252\"],\n\t\t[\"Marcelino Vieira\", \"2407302\"],\n\t\t[\"Martins\", \"2407401\"],\n\t\t[\"Maxaranguape\", \"2407500\"],\n\t\t[\"Messias Targino\", \"2407609\"],\n\t\t[\"Montanhas\", \"2407708\"],\n\t\t[\"Monte Alegre\", \"2407807\"],\n\t\t[\"Monte das Gameleiras\", \"2407906\"],\n\t\t[\"Mossoró\", \"2408003\"],\n\t\t[\"Natal\", \"2408102\"],\n\t\t[\"Nísia Floresta\", \"2408201\"],\n\t\t[\"Nova Cruz\", \"2408300\"],\n\t\t[\"Olho d'Água do Borges\", \"2408409\"],\n\t\t[\"Ouro Branco\", \"2408508\"],\n\t\t[\"Paraná\", \"2408607\"],\n\t\t[\"Paraú\", \"2408706\"],\n\t\t[\"Parazinho\", \"2408805\"],\n\t\t[\"Parelhas\", \"2408904\"],\n\t\t[\"Parnamirim\", \"2403251\"],\n\t\t[\"Passa e Fica\", \"2409100\"],\n\t\t[\"Passagem\", \"2409209\"],\n\t\t[\"Patu\", \"2409308\"],\n\t\t[\"Pau dos Ferros\", \"2409407\"],\n\t\t[\"Pedra Grande\", \"2409506\"],\n\t\t[\"Pedra Preta\", \"2409605\"],\n\t\t[\"Pedro Avelino\", \"2409704\"],\n\t\t[\"Pedro Velho\", \"2409803\"],\n\t\t[\"Pendências\", \"2409902\"],\n\t\t[\"Pilões\", \"2410009\"],\n\t\t[\"Poço Branco\", \"2410108\"],\n\t\t[\"Portalegre\", \"2410207\"],\n\t\t[\"Porto do Mangue\", \"2410256\"],\n\t\t[\"Pureza\", \"2410405\"],\n\t\t[\"Rafael Fernandes\", \"2410504\"],\n\t\t[\"Rafael Godeiro\", \"2410603\"],\n\t\t[\"Riacho da Cruz\", \"2410702\"],\n\t\t[\"Riacho de Santana\", \"2410801\"],\n\t\t[\"Riachuelo\", \"2410900\"],\n\t\t[\"Rio do Fogo\", \"2408953\"],\n\t\t[\"Rodolfo Fernandes\", \"2411007\"],\n\t\t[\"Ruy Barbosa\", \"2411106\"],\n\t\t[\"Santa Cruz\", \"2411205\"],\n\t\t[\"Santa Maria\", \"2409332\"],\n\t\t[\"Santana do Matos\", \"2411403\"],\n\t\t[\"Santana do Seridó\", \"2411429\"],\n\t\t[\"Santo Antônio\", \"2411502\"],\n\t\t[\"São Bento do Norte\", \"2411601\"],\n\t\t[\"São Bento do Trairí\", \"2411700\"],\n\t\t[\"São Fernando\", \"2411809\"],\n\t\t[\"São Francisco do Oeste\", \"2411908\"],\n\t\t[\"São Gonçalo do Amarante\", \"2412005\"],\n\t\t[\"São João do Sabugi\", \"2412104\"],\n\t\t[\"São José de Mipibu\", \"2412203\"],\n\t\t[\"São José do Campestre\", \"2412302\"],\n\t\t[\"São José do Seridó\", \"2412401\"],\n\t\t[\"São Miguel\", \"2412500\"],\n\t\t[\"São Miguel do Gostoso\", \"2412559\"],\n\t\t[\"São Paulo do Potengi\", \"2412609\"],\n\t\t[\"São Pedro\", \"2412708\"],\n\t\t[\"São Rafael\", \"2412807\"],\n\t\t[\"São Tomé\", \"2412906\"],\n\t\t[\"São Vicente\", \"2413003\"],\n\t\t[\"Senador Elói de Souza\", \"2413102\"],\n\t\t[\"Senador Georgino Avelino\", \"2413201\"],\n\t\t[\"Serra Caiada\", \"2410306\"],\n\t\t[\"Serra de São Bento\", \"2413300\"],\n\t\t[\"Serra do Mel\", \"2413359\"],\n\t\t[\"Serra Negra do Norte\", \"2413409\"],\n\t\t[\"Serrinha\", \"2413508\"],\n\t\t[\"Serrinha dos Pintos\", \"2413557\"],\n\t\t[\"Severiano Melo\", \"2413607\"],\n\t\t[\"Sítio Novo\", \"2413706\"],\n\t\t[\"Taboleiro Grande\", \"2413805\"],\n\t\t[\"Taipu\", \"2413904\"],\n\t\t[\"Tangará\", \"2414001\"],\n\t\t[\"Tenente Ananias\", \"2414100\"],\n\t\t[\"Tenente Laurentino Cruz\", \"2414159\"],\n\t\t[\"Tibau\", \"2411056\"],\n\t\t[\"Tibau do Sul\", \"2414209\"],\n\t\t[\"Timbaúba dos Batistas\", \"2414308\"],\n\t\t[\"Touros\", \"2414407\"],\n\t\t[\"Triunfo Potiguar\", \"2414456\"],\n\t\t[\"Umarizal\", \"2414506\"],\n\t\t[\"Upanema\", \"2414605\"],\n\t\t[\"Várzea\", \"2414704\"],\n\t\t[\"Venha-Ver\", \"2414753\"],\n\t\t[\"Vera Cruz\", \"2414803\"],\n\t\t[\"Viçosa\", \"2414902\"],\n\t\t[\"Vila Flor\", \"2415008\"],\n\t],\n\tRO: [\n\t\t[\"Alta Floresta D'Oeste\", \"1100015\"],\n\t\t[\"Alto Alegre dos Parecis\", \"1100379\"],\n\t\t[\"Alto Paraíso\", \"1100403\"],\n\t\t[\"Alvorada D'Oeste\", \"1100346\"],\n\t\t[\"Ariquemes\", \"1100023\"],\n\t\t[\"Buritis\", \"1100452\"],\n\t\t[\"Cabixi\", \"1100031\"],\n\t\t[\"Cacaulândia\", \"1100601\"],\n\t\t[\"Cacoal\", \"1100049\"],\n\t\t[\"Campo Novo de Rondônia\", \"1100700\"],\n\t\t[\"Candeias do Jamari\", \"1100809\"],\n\t\t[\"Castanheiras\", \"1100908\"],\n\t\t[\"Cerejeiras\", \"1100056\"],\n\t\t[\"Chupinguaia\", \"1100924\"],\n\t\t[\"Colorado do Oeste\", \"1100064\"],\n\t\t[\"Corumbiara\", \"1100072\"],\n\t\t[\"Costa Marques\", \"1100080\"],\n\t\t[\"Cujubim\", \"1100940\"],\n\t\t[\"Espigão D'Oeste\", \"1100098\"],\n\t\t[\"Governador Jorge Teixeira\", \"1101005\"],\n\t\t[\"Guajará-Mirim\", \"1100106\"],\n\t\t[\"Itapuã do Oeste\", \"1101104\"],\n\t\t[\"Jaru\", \"1100114\"],\n\t\t[\"Ji-Paraná\", \"1100122\"],\n\t\t[\"Machadinho D'Oeste\", \"1100130\"],\n\t\t[\"Ministro Andreazza\", \"1101203\"],\n\t\t[\"Mirante da Serra\", \"1101302\"],\n\t\t[\"Monte Negro\", \"1101401\"],\n\t\t[\"Nova Brasilândia D'Oeste\", \"1100148\"],\n\t\t[\"Nova Mamoré\", \"1100338\"],\n\t\t[\"Nova União\", \"1101435\"],\n\t\t[\"Novo Horizonte do Oeste\", \"1100502\"],\n\t\t[\"Ouro Preto do Oeste\", \"1100155\"],\n\t\t[\"Parecis\", \"1101450\"],\n\t\t[\"Pimenta Bueno\", \"1100189\"],\n\t\t[\"Pimenteiras do Oeste\", \"1101468\"],\n\t\t[\"Porto Velho\", \"1100205\"],\n\t\t[\"Presidente Médici\", \"1100254\"],\n\t\t[\"Primavera de Rondônia\", \"1101476\"],\n\t\t[\"Rio Crespo\", \"1100262\"],\n\t\t[\"Rolim de Moura\", \"1100288\"],\n\t\t[\"Santa Luzia D'Oeste\", \"1100296\"],\n\t\t[\"São Felipe D'Oeste\", \"1101484\"],\n\t\t[\"São Francisco do Guaporé\", \"1101492\"],\n\t\t[\"São Miguel do Guaporé\", \"1100320\"],\n\t\t[\"Seringueiras\", \"1101500\"],\n\t\t[\"Teixeirópolis\", \"1101559\"],\n\t\t[\"Theobroma\", \"1101609\"],\n\t\t[\"Urupá\", \"1101708\"],\n\t\t[\"Vale do Anari\", \"1101757\"],\n\t\t[\"Vale do Paraíso\", \"1101807\"],\n\t\t[\"Vilhena\", \"1100304\"],\n\t],\n\tRR: [\n\t\t[\"Alto Alegre\", \"1400050\"],\n\t\t[\"Amajari\", \"1400027\"],\n\t\t[\"Boa Vista\", \"1400100\"],\n\t\t[\"Bonfim\", \"1400159\"],\n\t\t[\"Cantá\", \"1400175\"],\n\t\t[\"Caracaraí\", \"1400209\"],\n\t\t[\"Caroebe\", \"1400233\"],\n\t\t[\"Iracema\", \"1400282\"],\n\t\t[\"Mucajaí\", \"1400308\"],\n\t\t[\"Normandia\", \"1400407\"],\n\t\t[\"Pacaraima\", \"1400456\"],\n\t\t[\"Rorainópolis\", \"1400472\"],\n\t\t[\"São João da Baliza\", \"1400506\"],\n\t\t[\"São Luiz do Anauá\", \"1400605\"],\n\t\t[\"Uiramutã\", \"1400704\"],\n\t],\n\tRS: [\n\t\t[\"Aceguá\", \"4300034\"],\n\t\t[\"Água Santa\", \"4300059\"],\n\t\t[\"Agudo\", \"4300109\"],\n\t\t[\"Ajuricaba\", \"4300208\"],\n\t\t[\"Alecrim\", \"4300307\"],\n\t\t[\"Alegrete\", \"4300406\"],\n\t\t[\"Alegria\", \"4300455\"],\n\t\t[\"Almirante Tamandaré do Sul\", \"4300471\"],\n\t\t[\"Alpestre\", \"4300505\"],\n\t\t[\"Alto Alegre\", \"4300554\"],\n\t\t[\"Alto Feliz\", \"4300570\"],\n\t\t[\"Alvorada\", \"4300604\"],\n\t\t[\"Amaral Ferrador\", \"4300638\"],\n\t\t[\"Ametista do Sul\", \"4300646\"],\n\t\t[\"André da Rocha\", \"4300661\"],\n\t\t[\"Anta Gorda\", \"4300703\"],\n\t\t[\"Antônio Prado\", \"4300802\"],\n\t\t[\"Arambaré\", \"4300851\"],\n\t\t[\"Araricá\", \"4300877\"],\n\t\t[\"Aratiba\", \"4300901\"],\n\t\t[\"Arroio do Meio\", \"4301008\"],\n\t\t[\"Arroio do Padre\", \"4301073\"],\n\t\t[\"Arroio do Sal\", \"4301057\"],\n\t\t[\"Arroio do Tigre\", \"4301206\"],\n\t\t[\"Arroio dos Ratos\", \"4301107\"],\n\t\t[\"Arroio Grande\", \"4301305\"],\n\t\t[\"Arvorezinha\", \"4301404\"],\n\t\t[\"Augusto Pestana\", \"4301503\"],\n\t\t[\"Áurea\", \"4301552\"],\n\t\t[\"Bagé\", \"4301602\"],\n\t\t[\"Balneário Pinhal\", \"4301636\"],\n\t\t[\"Barão\", \"4301651\"],\n\t\t[\"Barão de Cotegipe\", \"4301701\"],\n\t\t[\"Barão do Triunfo\", \"4301750\"],\n\t\t[\"Barra do Guarita\", \"4301859\"],\n\t\t[\"Barra do Quaraí\", \"4301875\"],\n\t\t[\"Barra do Ribeiro\", \"4301909\"],\n\t\t[\"Barra do Rio Azul\", \"4301925\"],\n\t\t[\"Barra Funda\", \"4301958\"],\n\t\t[\"Barracão\", \"4301800\"],\n\t\t[\"Barros Cassal\", \"4302006\"],\n\t\t[\"Benjamin Constant do Sul\", \"4302055\"],\n\t\t[\"Bento Gonçalves\", \"4302105\"],\n\t\t[\"Boa Vista das Missões\", \"4302154\"],\n\t\t[\"Boa Vista do Buricá\", \"4302204\"],\n\t\t[\"Boa Vista do Cadeado\", \"4302220\"],\n\t\t[\"Boa Vista do Incra\", \"4302238\"],\n\t\t[\"Boa Vista do Sul\", \"4302253\"],\n\t\t[\"Bom Jesus\", \"4302303\"],\n\t\t[\"Bom Princípio\", \"4302352\"],\n\t\t[\"Bom Progresso\", \"4302378\"],\n\t\t[\"Bom Retiro do Sul\", \"4302402\"],\n\t\t[\"Boqueirão do Leão\", \"4302451\"],\n\t\t[\"Bossoroca\", \"4302501\"],\n\t\t[\"Bozano\", \"4302584\"],\n\t\t[\"Braga\", \"4302600\"],\n\t\t[\"Brochier\", \"4302659\"],\n\t\t[\"Butiá\", \"4302709\"],\n\t\t[\"Caçapava do Sul\", \"4302808\"],\n\t\t[\"Cacequi\", \"4302907\"],\n\t\t[\"Cachoeira do Sul\", \"4303004\"],\n\t\t[\"Cachoeirinha\", \"4303103\"],\n\t\t[\"Cacique Doble\", \"4303202\"],\n\t\t[\"Caibaté\", \"4303301\"],\n\t\t[\"Caiçara\", \"4303400\"],\n\t\t[\"Camaquã\", \"4303509\"],\n\t\t[\"Camargo\", \"4303558\"],\n\t\t[\"Cambará do Sul\", \"4303608\"],\n\t\t[\"Campestre da Serra\", \"4303673\"],\n\t\t[\"Campina das Missões\", \"4303707\"],\n\t\t[\"Campinas do Sul\", \"4303806\"],\n\t\t[\"Campo Bom\", \"4303905\"],\n\t\t[\"Campo Novo\", \"4304002\"],\n\t\t[\"Campos Borges\", \"4304101\"],\n\t\t[\"Candelária\", \"4304200\"],\n\t\t[\"Cândido Godói\", \"4304309\"],\n\t\t[\"Candiota\", \"4304358\"],\n\t\t[\"Canela\", \"4304408\"],\n\t\t[\"Canguçu\", \"4304507\"],\n\t\t[\"Canoas\", \"4304606\"],\n\t\t[\"Canudos do Vale\", \"4304614\"],\n\t\t[\"Capão Bonito do Sul\", \"4304622\"],\n\t\t[\"Capão da Canoa\", \"4304630\"],\n\t\t[\"Capão do Cipó\", \"4304655\"],\n\t\t[\"Capão do Leão\", \"4304663\"],\n\t\t[\"Capela de Santana\", \"4304689\"],\n\t\t[\"Capitão\", \"4304697\"],\n\t\t[\"Capivari do Sul\", \"4304671\"],\n\t\t[\"Caraá\", \"4304713\"],\n\t\t[\"Carazinho\", \"4304705\"],\n\t\t[\"Carlos Barbosa\", \"4304804\"],\n\t\t[\"Carlos Gomes\", \"4304853\"],\n\t\t[\"Casca\", \"4304903\"],\n\t\t[\"Caseiros\", \"4304952\"],\n\t\t[\"Catuípe\", \"4305009\"],\n\t\t[\"Caxias do Sul\", \"4305108\"],\n\t\t[\"Centenário\", \"4305116\"],\n\t\t[\"Cerrito\", \"4305124\"],\n\t\t[\"Cerro Branco\", \"4305132\"],\n\t\t[\"Cerro Grande\", \"4305157\"],\n\t\t[\"Cerro Grande do Sul\", \"4305173\"],\n\t\t[\"Cerro Largo\", \"4305207\"],\n\t\t[\"Chapada\", \"4305306\"],\n\t\t[\"Charqueadas\", \"4305355\"],\n\t\t[\"Charrua\", \"4305371\"],\n\t\t[\"Chiapetta\", \"4305405\"],\n\t\t[\"Chuí\", \"4305439\"],\n\t\t[\"Chuvisca\", \"4305447\"],\n\t\t[\"Cidreira\", \"4305454\"],\n\t\t[\"Ciríaco\", \"4305504\"],\n\t\t[\"Colinas\", \"4305587\"],\n\t\t[\"Colorado\", \"4305603\"],\n\t\t[\"Condor\", \"4305702\"],\n\t\t[\"Constantina\", \"4305801\"],\n\t\t[\"Coqueiro Baixo\", \"4305835\"],\n\t\t[\"Coqueiros do Sul\", \"4305850\"],\n\t\t[\"Coronel Barros\", \"4305871\"],\n\t\t[\"Coronel Bicaco\", \"4305900\"],\n\t\t[\"Coronel Pilar\", \"4305934\"],\n\t\t[\"Cotiporã\", \"4305959\"],\n\t\t[\"Coxilha\", \"4305975\"],\n\t\t[\"Crissiumal\", \"4306007\"],\n\t\t[\"Cristal\", \"4306056\"],\n\t\t[\"Cristal do Sul\", \"4306072\"],\n\t\t[\"Cruz Alta\", \"4306106\"],\n\t\t[\"Cruzaltense\", \"4306130\"],\n\t\t[\"Cruzeiro do Sul\", \"4306205\"],\n\t\t[\"David Canabarro\", \"4306304\"],\n\t\t[\"Derrubadas\", \"4306320\"],\n\t\t[\"Dezesseis de Novembro\", \"4306353\"],\n\t\t[\"Dilermando de Aguiar\", \"4306379\"],\n\t\t[\"Dois Irmãos\", \"4306403\"],\n\t\t[\"Dois Irmãos das Missões\", \"4306429\"],\n\t\t[\"Dois Lajeados\", \"4306452\"],\n\t\t[\"Dom Feliciano\", \"4306502\"],\n\t\t[\"Dom Pedrito\", \"4306601\"],\n\t\t[\"Dom Pedro de Alcântara\", \"4306551\"],\n\t\t[\"Dona Francisca\", \"4306700\"],\n\t\t[\"Doutor Maurício Cardoso\", \"4306734\"],\n\t\t[\"Doutor Ricardo\", \"4306759\"],\n\t\t[\"Eldorado do Sul\", \"4306767\"],\n\t\t[\"Encantado\", \"4306809\"],\n\t\t[\"Encruzilhada do Sul\", \"4306908\"],\n\t\t[\"Engenho Velho\", \"4306924\"],\n\t\t[\"Entre Rios do Sul\", \"4306957\"],\n\t\t[\"Entre-Ijuís\", \"4306932\"],\n\t\t[\"Erebango\", \"4306973\"],\n\t\t[\"Erechim\", \"4307005\"],\n\t\t[\"Ernestina\", \"4307054\"],\n\t\t[\"Erval Grande\", \"4307203\"],\n\t\t[\"Erval Seco\", \"4307302\"],\n\t\t[\"Esmeralda\", \"4307401\"],\n\t\t[\"Esperança do Sul\", \"4307450\"],\n\t\t[\"Espumoso\", \"4307500\"],\n\t\t[\"Estação\", \"4307559\"],\n\t\t[\"Estância Velha\", \"4307609\"],\n\t\t[\"Esteio\", \"4307708\"],\n\t\t[\"Estrela\", \"4307807\"],\n\t\t[\"Estrela Velha\", \"4307815\"],\n\t\t[\"Eugênio de Castro\", \"4307831\"],\n\t\t[\"Fagundes Varela\", \"4307864\"],\n\t\t[\"Farroupilha\", \"4307906\"],\n\t\t[\"Faxinal do Soturno\", \"4308003\"],\n\t\t[\"Faxinalzinho\", \"4308052\"],\n\t\t[\"Fazenda Vilanova\", \"4308078\"],\n\t\t[\"Feliz\", \"4308102\"],\n\t\t[\"Flores da Cunha\", \"4308201\"],\n\t\t[\"Floriano Peixoto\", \"4308250\"],\n\t\t[\"Fontoura Xavier\", \"4308300\"],\n\t\t[\"Formigueiro\", \"4308409\"],\n\t\t[\"Forquetinha\", \"4308433\"],\n\t\t[\"Fortaleza dos Valos\", \"4308458\"],\n\t\t[\"Frederico Westphalen\", \"4308508\"],\n\t\t[\"Garibaldi\", \"4308607\"],\n\t\t[\"Garruchos\", \"4308656\"],\n\t\t[\"Gaurama\", \"4308706\"],\n\t\t[\"General Câmara\", \"4308805\"],\n\t\t[\"Gentil\", \"4308854\"],\n\t\t[\"Getúlio Vargas\", \"4308904\"],\n\t\t[\"Giruá\", \"4309001\"],\n\t\t[\"Glorinha\", \"4309050\"],\n\t\t[\"Gramado\", \"4309100\"],\n\t\t[\"Gramado dos Loureiros\", \"4309126\"],\n\t\t[\"Gramado Xavier\", \"4309159\"],\n\t\t[\"Gravataí\", \"4309209\"],\n\t\t[\"Guabiju\", \"4309258\"],\n\t\t[\"Guaíba\", \"4309308\"],\n\t\t[\"Guaporé\", \"4309407\"],\n\t\t[\"Guarani das Missões\", \"4309506\"],\n\t\t[\"Harmonia\", \"4309555\"],\n\t\t[\"Herval\", \"4307104\"],\n\t\t[\"Herveiras\", \"4309571\"],\n\t\t[\"Horizontina\", \"4309605\"],\n\t\t[\"Hulha Negra\", \"4309654\"],\n\t\t[\"Humaitá\", \"4309704\"],\n\t\t[\"Ibarama\", \"4309753\"],\n\t\t[\"Ibiaçá\", \"4309803\"],\n\t\t[\"Ibiraiaras\", \"4309902\"],\n\t\t[\"Ibirapuitã\", \"4309951\"],\n\t\t[\"Ibirubá\", \"4310009\"],\n\t\t[\"Igrejinha\", \"4310108\"],\n\t\t[\"Ijuí\", \"4310207\"],\n\t\t[\"Ilópolis\", \"4310306\"],\n\t\t[\"Imbé\", \"4310330\"],\n\t\t[\"Imigrante\", \"4310363\"],\n\t\t[\"Independência\", \"4310405\"],\n\t\t[\"Inhacorá\", \"4310413\"],\n\t\t[\"Ipê\", \"4310439\"],\n\t\t[\"Ipiranga do Sul\", \"4310462\"],\n\t\t[\"Iraí\", \"4310504\"],\n\t\t[\"Itaara\", \"4310538\"],\n\t\t[\"Itacurubi\", \"4310553\"],\n\t\t[\"Itapuca\", \"4310579\"],\n\t\t[\"Itaqui\", \"4310603\"],\n\t\t[\"Itati\", \"4310652\"],\n\t\t[\"Itatiba do Sul\", \"4310702\"],\n\t\t[\"Ivorá\", \"4310751\"],\n\t\t[\"Ivoti\", \"4310801\"],\n\t\t[\"Jaboticaba\", \"4310850\"],\n\t\t[\"Jacuizinho\", \"4310876\"],\n\t\t[\"Jacutinga\", \"4310900\"],\n\t\t[\"Jaguarão\", \"4311007\"],\n\t\t[\"Jaguari\", \"4311106\"],\n\t\t[\"Jaquirana\", \"4311122\"],\n\t\t[\"Jari\", \"4311130\"],\n\t\t[\"Jóia\", \"4311155\"],\n\t\t[\"Júlio de Castilhos\", \"4311205\"],\n\t\t[\"Lagoa Bonita do Sul\", \"4311239\"],\n\t\t[\"Lagoa dos Três Cantos\", \"4311270\"],\n\t\t[\"Lagoa Vermelha\", \"4311304\"],\n\t\t[\"Lagoão\", \"4311254\"],\n\t\t[\"Lajeado\", \"4311403\"],\n\t\t[\"Lajeado do Bugre\", \"4311429\"],\n\t\t[\"Lavras do Sul\", \"4311502\"],\n\t\t[\"Liberato Salzano\", \"4311601\"],\n\t\t[\"Lindolfo Collor\", \"4311627\"],\n\t\t[\"Linha Nova\", \"4311643\"],\n\t\t[\"Maçambará\", \"4311718\"],\n\t\t[\"Machadinho\", \"4311700\"],\n\t\t[\"Mampituba\", \"4311734\"],\n\t\t[\"Manoel Viana\", \"4311759\"],\n\t\t[\"Maquiné\", \"4311775\"],\n\t\t[\"Maratá\", \"4311791\"],\n\t\t[\"Marau\", \"4311809\"],\n\t\t[\"Marcelino Ramos\", \"4311908\"],\n\t\t[\"Mariana Pimentel\", \"4311981\"],\n\t\t[\"Mariano Moro\", \"4312005\"],\n\t\t[\"Marques de Souza\", \"4312054\"],\n\t\t[\"Mata\", \"4312104\"],\n\t\t[\"Mato Castelhano\", \"4312138\"],\n\t\t[\"Mato Leitão\", \"4312153\"],\n\t\t[\"Mato Queimado\", \"4312179\"],\n\t\t[\"Maximiliano de Almeida\", \"4312203\"],\n\t\t[\"Minas do Leão\", \"4312252\"],\n\t\t[\"Miraguaí\", \"4312302\"],\n\t\t[\"Montauri\", \"4312351\"],\n\t\t[\"Monte Alegre dos Campos\", \"4312377\"],\n\t\t[\"Monte Belo do Sul\", \"4312385\"],\n\t\t[\"Montenegro\", \"4312401\"],\n\t\t[\"Mormaço\", \"4312427\"],\n\t\t[\"Morrinhos do Sul\", \"4312443\"],\n\t\t[\"Morro Redondo\", \"4312450\"],\n\t\t[\"Morro Reuter\", \"4312476\"],\n\t\t[\"Mostardas\", \"4312500\"],\n\t\t[\"Muçum\", \"4312609\"],\n\t\t[\"Muitos Capões\", \"4312617\"],\n\t\t[\"Muliterno\", \"4312625\"],\n\t\t[\"Não-Me-Toque\", \"4312658\"],\n\t\t[\"Nicolau Vergueiro\", \"4312674\"],\n\t\t[\"Nonoai\", \"4312708\"],\n\t\t[\"Nova Alvorada\", \"4312757\"],\n\t\t[\"Nova Araçá\", \"4312807\"],\n\t\t[\"Nova Bassano\", \"4312906\"],\n\t\t[\"Nova Boa Vista\", \"4312955\"],\n\t\t[\"Nova Bréscia\", \"4313003\"],\n\t\t[\"Nova Candelária\", \"4313011\"],\n\t\t[\"Nova Esperança do Sul\", \"4313037\"],\n\t\t[\"Nova Hartz\", \"4313060\"],\n\t\t[\"Nova Pádua\", \"4313086\"],\n\t\t[\"Nova Palma\", \"4313102\"],\n\t\t[\"Nova Petrópolis\", \"4313201\"],\n\t\t[\"Nova Prata\", \"4313300\"],\n\t\t[\"Nova Ramada\", \"4313334\"],\n\t\t[\"Nova Roma do Sul\", \"4313359\"],\n\t\t[\"Nova Santa Rita\", \"4313375\"],\n\t\t[\"Novo Barreiro\", \"4313490\"],\n\t\t[\"Novo Cabrais\", \"4313391\"],\n\t\t[\"Novo Hamburgo\", \"4313409\"],\n\t\t[\"Novo Machado\", \"4313425\"],\n\t\t[\"Novo Tiradentes\", \"4313441\"],\n\t\t[\"Novo Xingu\", \"4313466\"],\n\t\t[\"Osório\", \"4313508\"],\n\t\t[\"Paim Filho\", \"4313607\"],\n\t\t[\"Palmares do Sul\", \"4313656\"],\n\t\t[\"Palmeira das Missões\", \"4313706\"],\n\t\t[\"Palmitinho\", \"4313805\"],\n\t\t[\"Panambi\", \"4313904\"],\n\t\t[\"Pantano Grande\", \"4313953\"],\n\t\t[\"Paraí\", \"4314001\"],\n\t\t[\"Paraíso do Sul\", \"4314027\"],\n\t\t[\"Pareci Novo\", \"4314035\"],\n\t\t[\"Parobé\", \"4314050\"],\n\t\t[\"Passa Sete\", \"4314068\"],\n\t\t[\"Passo do Sobrado\", \"4314076\"],\n\t\t[\"Passo Fundo\", \"4314100\"],\n\t\t[\"Paulo Bento\", \"4314134\"],\n\t\t[\"Paverama\", \"4314159\"],\n\t\t[\"Pedras Altas\", \"4314175\"],\n\t\t[\"Pedro Osório\", \"4314209\"],\n\t\t[\"Pejuçara\", \"4314308\"],\n\t\t[\"Pelotas\", \"4314407\"],\n\t\t[\"Picada Café\", \"4314423\"],\n\t\t[\"Pinhal\", \"4314456\"],\n\t\t[\"Pinhal da Serra\", \"4314464\"],\n\t\t[\"Pinhal Grande\", \"4314472\"],\n\t\t[\"Pinheirinho do Vale\", \"4314498\"],\n\t\t[\"Pinheiro Machado\", \"4314506\"],\n\t\t[\"Pinto Bandeira\", \"4314548\"],\n\t\t[\"Pirapó\", \"4314555\"],\n\t\t[\"Piratini\", \"4314605\"],\n\t\t[\"Planalto\", \"4314704\"],\n\t\t[\"Poço das Antas\", \"4314753\"],\n\t\t[\"Pontão\", \"4314779\"],\n\t\t[\"Ponte Preta\", \"4314787\"],\n\t\t[\"Portão\", \"4314803\"],\n\t\t[\"Porto Alegre\", \"4314902\"],\n\t\t[\"Porto Lucena\", \"4315008\"],\n\t\t[\"Porto Mauá\", \"4315057\"],\n\t\t[\"Porto Vera Cruz\", \"4315073\"],\n\t\t[\"Porto Xavier\", \"4315107\"],\n\t\t[\"Pouso Novo\", \"4315131\"],\n\t\t[\"Presidente Lucena\", \"4315149\"],\n\t\t[\"Progresso\", \"4315156\"],\n\t\t[\"Protásio Alves\", \"4315172\"],\n\t\t[\"Putinga\", \"4315206\"],\n\t\t[\"Quaraí\", \"4315305\"],\n\t\t[\"Quatro Irmãos\", \"4315313\"],\n\t\t[\"Quevedos\", \"4315321\"],\n\t\t[\"Quinze de Novembro\", \"4315354\"],\n\t\t[\"Redentora\", \"4315404\"],\n\t\t[\"Relvado\", \"4315453\"],\n\t\t[\"Restinga Sêca\", \"4315503\"],\n\t\t[\"Rio dos Índios\", \"4315552\"],\n\t\t[\"Rio Grande\", \"4315602\"],\n\t\t[\"Rio Pardo\", \"4315701\"],\n\t\t[\"Riozinho\", \"4315750\"],\n\t\t[\"Roca Sales\", \"4315800\"],\n\t\t[\"Rodeio Bonito\", \"4315909\"],\n\t\t[\"Rolador\", \"4315958\"],\n\t\t[\"Rolante\", \"4316006\"],\n\t\t[\"Ronda Alta\", \"4316105\"],\n\t\t[\"Rondinha\", \"4316204\"],\n\t\t[\"Roque Gonzales\", \"4316303\"],\n\t\t[\"Rosário do Sul\", \"4316402\"],\n\t\t[\"Sagrada Família\", \"4316428\"],\n\t\t[\"Saldanha Marinho\", \"4316436\"],\n\t\t[\"Salto do Jacuí\", \"4316451\"],\n\t\t[\"Salvador das Missões\", \"4316477\"],\n\t\t[\"Salvador do Sul\", \"4316501\"],\n\t\t[\"Sananduva\", \"4316600\"],\n\t\t[\"Sant'Ana do Livramento\", \"4317103\"],\n\t\t[\"Santa Bárbara do Sul\", \"4316709\"],\n\t\t[\"Santa Cecília do Sul\", \"4316733\"],\n\t\t[\"Santa Clara do Sul\", \"4316758\"],\n\t\t[\"Santa Cruz do Sul\", \"4316808\"],\n\t\t[\"Santa Margarida do Sul\", \"4316972\"],\n\t\t[\"Santa Maria\", \"4316907\"],\n\t\t[\"Santa Maria do Herval\", \"4316956\"],\n\t\t[\"Santa Rosa\", \"4317202\"],\n\t\t[\"Santa Tereza\", \"4317251\"],\n\t\t[\"Santa Vitória do Palmar\", \"4317301\"],\n\t\t[\"Santana da Boa Vista\", \"4317004\"],\n\t\t[\"Santiago\", \"4317400\"],\n\t\t[\"Santo Ângelo\", \"4317509\"],\n\t\t[\"Santo Antônio da Patrulha\", \"4317608\"],\n\t\t[\"Santo Antônio das Missões\", \"4317707\"],\n\t\t[\"Santo Antônio do Palma\", \"4317558\"],\n\t\t[\"Santo Antônio do Planalto\", \"4317756\"],\n\t\t[\"Santo Augusto\", \"4317806\"],\n\t\t[\"Santo Cristo\", \"4317905\"],\n\t\t[\"Santo Expedito do Sul\", \"4317954\"],\n\t\t[\"São Borja\", \"4318002\"],\n\t\t[\"São Domingos do Sul\", \"4318051\"],\n\t\t[\"São Francisco de Assis\", \"4318101\"],\n\t\t[\"São Francisco de Paula\", \"4318200\"],\n\t\t[\"São Gabriel\", \"4318309\"],\n\t\t[\"São Jerônimo\", \"4318408\"],\n\t\t[\"São João da Urtiga\", \"4318424\"],\n\t\t[\"São João do Polêsine\", \"4318432\"],\n\t\t[\"São Jorge\", \"4318440\"],\n\t\t[\"São José das Missões\", \"4318457\"],\n\t\t[\"São José do Herval\", \"4318465\"],\n\t\t[\"São José do Hortêncio\", \"4318481\"],\n\t\t[\"São José do Inhacorá\", \"4318499\"],\n\t\t[\"São José do Norte\", \"4318507\"],\n\t\t[\"São José do Ouro\", \"4318606\"],\n\t\t[\"São José do Sul\", \"4318614\"],\n\t\t[\"São José dos Ausentes\", \"4318622\"],\n\t\t[\"São Leopoldo\", \"4318705\"],\n\t\t[\"São Lourenço do Sul\", \"4318804\"],\n\t\t[\"São Luiz Gonzaga\", \"4318903\"],\n\t\t[\"São Marcos\", \"4319000\"],\n\t\t[\"São Martinho\", \"4319109\"],\n\t\t[\"São Martinho da Serra\", \"4319125\"],\n\t\t[\"São Miguel das Missões\", \"4319158\"],\n\t\t[\"São Nicolau\", \"4319208\"],\n\t\t[\"São Paulo das Missões\", \"4319307\"],\n\t\t[\"São Pedro da Serra\", \"4319356\"],\n\t\t[\"São Pedro das Missões\", \"4319364\"],\n\t\t[\"São Pedro do Butiá\", \"4319372\"],\n\t\t[\"São Pedro do Sul\", \"4319406\"],\n\t\t[\"São Sebastião do Caí\", \"4319505\"],\n\t\t[\"São Sepé\", \"4319604\"],\n\t\t[\"São Valentim\", \"4319703\"],\n\t\t[\"São Valentim do Sul\", \"4319711\"],\n\t\t[\"São Valério do Sul\", \"4319737\"],\n\t\t[\"São Vendelino\", \"4319752\"],\n\t\t[\"São Vicente do Sul\", \"4319802\"],\n\t\t[\"Sapiranga\", \"4319901\"],\n\t\t[\"Sapucaia do Sul\", \"4320008\"],\n\t\t[\"Sarandi\", \"4320107\"],\n\t\t[\"Seberi\", \"4320206\"],\n\t\t[\"Sede Nova\", \"4320230\"],\n\t\t[\"Segredo\", \"4320263\"],\n\t\t[\"Selbach\", \"4320305\"],\n\t\t[\"Senador Salgado Filho\", \"4320321\"],\n\t\t[\"Sentinela do Sul\", \"4320354\"],\n\t\t[\"Serafina Corrêa\", \"4320404\"],\n\t\t[\"Sério\", \"4320453\"],\n\t\t[\"Sertão\", \"4320503\"],\n\t\t[\"Sertão Santana\", \"4320552\"],\n\t\t[\"Sete de Setembro\", \"4320578\"],\n\t\t[\"Severiano de Almeida\", \"4320602\"],\n\t\t[\"Silveira Martins\", \"4320651\"],\n\t\t[\"Sinimbu\", \"4320677\"],\n\t\t[\"Sobradinho\", \"4320701\"],\n\t\t[\"Soledade\", \"4320800\"],\n\t\t[\"Tabaí\", \"4320859\"],\n\t\t[\"Tapejara\", \"4320909\"],\n\t\t[\"Tapera\", \"4321006\"],\n\t\t[\"Tapes\", \"4321105\"],\n\t\t[\"Taquara\", \"4321204\"],\n\t\t[\"Taquari\", \"4321303\"],\n\t\t[\"Taquaruçu do Sul\", \"4321329\"],\n\t\t[\"Tavares\", \"4321352\"],\n\t\t[\"Tenente Portela\", \"4321402\"],\n\t\t[\"Terra de Areia\", \"4321436\"],\n\t\t[\"Teutônia\", \"4321451\"],\n\t\t[\"Tio Hugo\", \"4321469\"],\n\t\t[\"Tiradentes do Sul\", \"4321477\"],\n\t\t[\"Toropi\", \"4321493\"],\n\t\t[\"Torres\", \"4321501\"],\n\t\t[\"Tramandaí\", \"4321600\"],\n\t\t[\"Travesseiro\", \"4321626\"],\n\t\t[\"Três Arroios\", \"4321634\"],\n\t\t[\"Três Cachoeiras\", \"4321667\"],\n\t\t[\"Três Coroas\", \"4321709\"],\n\t\t[\"Três de Maio\", \"4321808\"],\n\t\t[\"Três Forquilhas\", \"4321832\"],\n\t\t[\"Três Palmeiras\", \"4321857\"],\n\t\t[\"Três Passos\", \"4321907\"],\n\t\t[\"Trindade do Sul\", \"4321956\"],\n\t\t[\"Triunfo\", \"4322004\"],\n\t\t[\"Tucunduva\", \"4322103\"],\n\t\t[\"Tunas\", \"4322152\"],\n\t\t[\"Tupanci do Sul\", \"4322186\"],\n\t\t[\"Tupanciretã\", \"4322202\"],\n\t\t[\"Tupandi\", \"4322251\"],\n\t\t[\"Tuparendi\", \"4322301\"],\n\t\t[\"Turuçu\", \"4322327\"],\n\t\t[\"Ubiretama\", \"4322343\"],\n\t\t[\"União da Serra\", \"4322350\"],\n\t\t[\"Unistalda\", \"4322376\"],\n\t\t[\"Uruguaiana\", \"4322400\"],\n\t\t[\"Vacaria\", \"4322509\"],\n\t\t[\"Vale do Sol\", \"4322533\"],\n\t\t[\"Vale Real\", \"4322541\"],\n\t\t[\"Vale Verde\", \"4322525\"],\n\t\t[\"Vanini\", \"4322558\"],\n\t\t[\"Venâncio Aires\", \"4322608\"],\n\t\t[\"Vera Cruz\", \"4322707\"],\n\t\t[\"Veranópolis\", \"4322806\"],\n\t\t[\"Vespasiano Corrêa\", \"4322855\"],\n\t\t[\"Viadutos\", \"4322905\"],\n\t\t[\"Viamão\", \"4323002\"],\n\t\t[\"Vicente Dutra\", \"4323101\"],\n\t\t[\"Victor Graeff\", \"4323200\"],\n\t\t[\"Vila Flores\", \"4323309\"],\n\t\t[\"Vila Lângaro\", \"4323358\"],\n\t\t[\"Vila Maria\", \"4323408\"],\n\t\t[\"Vila Nova do Sul\", \"4323457\"],\n\t\t[\"Vista Alegre\", \"4323507\"],\n\t\t[\"Vista Alegre do Prata\", \"4323606\"],\n\t\t[\"Vista Gaúcha\", \"4323705\"],\n\t\t[\"Vitória das Missões\", \"4323754\"],\n\t\t[\"Westfália\", \"4323770\"],\n\t\t[\"Xangri-lá\", \"4323804\"],\n\t],\n\tSC: [\n\t\t[\"Abdon Batista\", \"4200051\"],\n\t\t[\"Abelardo Luz\", \"4200101\"],\n\t\t[\"Agrolândia\", \"4200200\"],\n\t\t[\"Agronômica\", \"4200309\"],\n\t\t[\"Água Doce\", \"4200408\"],\n\t\t[\"Águas de Chapecó\", \"4200507\"],\n\t\t[\"Águas Frias\", \"4200556\"],\n\t\t[\"Águas Mornas\", \"4200606\"],\n\t\t[\"Alfredo Wagner\", \"4200705\"],\n\t\t[\"Alto Bela Vista\", \"4200754\"],\n\t\t[\"Anchieta\", \"4200804\"],\n\t\t[\"Angelina\", \"4200903\"],\n\t\t[\"Anita Garibaldi\", \"4201000\"],\n\t\t[\"Anitápolis\", \"4201109\"],\n\t\t[\"Antônio Carlos\", \"4201208\"],\n\t\t[\"Apiúna\", \"4201257\"],\n\t\t[\"Arabutã\", \"4201273\"],\n\t\t[\"Araquari\", \"4201307\"],\n\t\t[\"Araranguá\", \"4201406\"],\n\t\t[\"Armazém\", \"4201505\"],\n\t\t[\"Arroio Trinta\", \"4201604\"],\n\t\t[\"Arvoredo\", \"4201653\"],\n\t\t[\"Ascurra\", \"4201703\"],\n\t\t[\"Atalanta\", \"4201802\"],\n\t\t[\"Aurora\", \"4201901\"],\n\t\t[\"Balneário Arroio do Silva\", \"4201950\"],\n\t\t[\"Balneário Barra do Sul\", \"4202057\"],\n\t\t[\"Balneário Camboriú\", \"4202008\"],\n\t\t[\"Balneário Gaivota\", \"4202073\"],\n\t\t[\"Balneário Piçarras\", \"4212809\"],\n\t\t[\"Balneário Rincão\", \"4220000\"],\n\t\t[\"Bandeirante\", \"4202081\"],\n\t\t[\"Barra Bonita\", \"4202099\"],\n\t\t[\"Barra Velha\", \"4202107\"],\n\t\t[\"Bela Vista do Toldo\", \"4202131\"],\n\t\t[\"Belmonte\", \"4202156\"],\n\t\t[\"Benedito Novo\", \"4202206\"],\n\t\t[\"Biguaçu\", \"4202305\"],\n\t\t[\"Blumenau\", \"4202404\"],\n\t\t[\"Bocaina do Sul\", \"4202438\"],\n\t\t[\"Bom Jardim da Serra\", \"4202503\"],\n\t\t[\"Bom Jesus\", \"4202537\"],\n\t\t[\"Bom Jesus do Oeste\", \"4202578\"],\n\t\t[\"Bom Retiro\", \"4202602\"],\n\t\t[\"Bombinhas\", \"4202453\"],\n\t\t[\"Botuverá\", \"4202701\"],\n\t\t[\"Braço do Norte\", \"4202800\"],\n\t\t[\"Braço do Trombudo\", \"4202859\"],\n\t\t[\"Brunópolis\", \"4202875\"],\n\t\t[\"Brusque\", \"4202909\"],\n\t\t[\"Caçador\", \"4203006\"],\n\t\t[\"Caibi\", \"4203105\"],\n\t\t[\"Calmon\", \"4203154\"],\n\t\t[\"Camboriú\", \"4203204\"],\n\t\t[\"Campo Alegre\", \"4203303\"],\n\t\t[\"Campo Belo do Sul\", \"4203402\"],\n\t\t[\"Campo Erê\", \"4203501\"],\n\t\t[\"Campos Novos\", \"4203600\"],\n\t\t[\"Canelinha\", \"4203709\"],\n\t\t[\"Canoinhas\", \"4203808\"],\n\t\t[\"Capão Alto\", \"4203253\"],\n\t\t[\"Capinzal\", \"4203907\"],\n\t\t[\"Capivari de Baixo\", \"4203956\"],\n\t\t[\"Catanduvas\", \"4204004\"],\n\t\t[\"Caxambu do Sul\", \"4204103\"],\n\t\t[\"Celso Ramos\", \"4204152\"],\n\t\t[\"Cerro Negro\", \"4204178\"],\n\t\t[\"Chapadão do Lageado\", \"4204194\"],\n\t\t[\"Chapecó\", \"4204202\"],\n\t\t[\"Cocal do Sul\", \"4204251\"],\n\t\t[\"Concórdia\", \"4204301\"],\n\t\t[\"Cordilheira Alta\", \"4204350\"],\n\t\t[\"Coronel Freitas\", \"4204400\"],\n\t\t[\"Coronel Martins\", \"4204459\"],\n\t\t[\"Correia Pinto\", \"4204558\"],\n\t\t[\"Corupá\", \"4204509\"],\n\t\t[\"Criciúma\", \"4204608\"],\n\t\t[\"Cunha Porã\", \"4204707\"],\n\t\t[\"Cunhataí\", \"4204756\"],\n\t\t[\"Curitibanos\", \"4204806\"],\n\t\t[\"Descanso\", \"4204905\"],\n\t\t[\"Dionísio Cerqueira\", \"4205001\"],\n\t\t[\"Dona Emma\", \"4205100\"],\n\t\t[\"Doutor Pedrinho\", \"4205159\"],\n\t\t[\"Entre Rios\", \"4205175\"],\n\t\t[\"Ermo\", \"4205191\"],\n\t\t[\"Erval Velho\", \"4205209\"],\n\t\t[\"Faxinal dos Guedes\", \"4205308\"],\n\t\t[\"Flor do Sertão\", \"4205357\"],\n\t\t[\"Florianópolis\", \"4205407\"],\n\t\t[\"Formosa do Sul\", \"4205431\"],\n\t\t[\"Forquilhinha\", \"4205456\"],\n\t\t[\"Fraiburgo\", \"4205506\"],\n\t\t[\"Frei Rogério\", \"4205555\"],\n\t\t[\"Galvão\", \"4205605\"],\n\t\t[\"Garopaba\", \"4205704\"],\n\t\t[\"Garuva\", \"4205803\"],\n\t\t[\"Gaspar\", \"4205902\"],\n\t\t[\"Governador Celso Ramos\", \"4206009\"],\n\t\t[\"Grão-Pará\", \"4206108\"],\n\t\t[\"Gravatal\", \"4206207\"],\n\t\t[\"Guabiruba\", \"4206306\"],\n\t\t[\"Guaraciaba\", \"4206405\"],\n\t\t[\"Guaramirim\", \"4206504\"],\n\t\t[\"Guarujá do Sul\", \"4206603\"],\n\t\t[\"Guatambú\", \"4206652\"],\n\t\t[\"Herval d'Oeste\", \"4206702\"],\n\t\t[\"Ibiam\", \"4206751\"],\n\t\t[\"Ibicaré\", \"4206801\"],\n\t\t[\"Ibirama\", \"4206900\"],\n\t\t[\"Içara\", \"4207007\"],\n\t\t[\"Ilhota\", \"4207106\"],\n\t\t[\"Imaruí\", \"4207205\"],\n\t\t[\"Imbituba\", \"4207304\"],\n\t\t[\"Imbuia\", \"4207403\"],\n\t\t[\"Indaial\", \"4207502\"],\n\t\t[\"Iomerê\", \"4207577\"],\n\t\t[\"Ipira\", \"4207601\"],\n\t\t[\"Iporã do Oeste\", \"4207650\"],\n\t\t[\"Ipuaçu\", \"4207684\"],\n\t\t[\"Ipumirim\", \"4207700\"],\n\t\t[\"Iraceminha\", \"4207759\"],\n\t\t[\"Irani\", \"4207809\"],\n\t\t[\"Irati\", \"4207858\"],\n\t\t[\"Irineópolis\", \"4207908\"],\n\t\t[\"Itá\", \"4208005\"],\n\t\t[\"Itaiópolis\", \"4208104\"],\n\t\t[\"Itajaí\", \"4208203\"],\n\t\t[\"Itapema\", \"4208302\"],\n\t\t[\"Itapiranga\", \"4208401\"],\n\t\t[\"Itapoá\", \"4208450\"],\n\t\t[\"Ituporanga\", \"4208500\"],\n\t\t[\"Jaborá\", \"4208609\"],\n\t\t[\"Jacinto Machado\", \"4208708\"],\n\t\t[\"Jaguaruna\", \"4208807\"],\n\t\t[\"Jaraguá do Sul\", \"4208906\"],\n\t\t[\"Jardinópolis\", \"4208955\"],\n\t\t[\"Joaçaba\", \"4209003\"],\n\t\t[\"Joinville\", \"4209102\"],\n\t\t[\"José Boiteux\", \"4209151\"],\n\t\t[\"Jupiá\", \"4209177\"],\n\t\t[\"Lacerdópolis\", \"4209201\"],\n\t\t[\"Lages\", \"4209300\"],\n\t\t[\"Laguna\", \"4209409\"],\n\t\t[\"Lajeado Grande\", \"4209458\"],\n\t\t[\"Laurentino\", \"4209508\"],\n\t\t[\"Lauro Müller\", \"4209607\"],\n\t\t[\"Lebon Régis\", \"4209706\"],\n\t\t[\"Leoberto Leal\", \"4209805\"],\n\t\t[\"Lindóia do Sul\", \"4209854\"],\n\t\t[\"Lontras\", \"4209904\"],\n\t\t[\"Luiz Alves\", \"4210001\"],\n\t\t[\"Luzerna\", \"4210035\"],\n\t\t[\"Macieira\", \"4210050\"],\n\t\t[\"Mafra\", \"4210100\"],\n\t\t[\"Major Gercino\", \"4210209\"],\n\t\t[\"Major Vieira\", \"4210308\"],\n\t\t[\"Maracajá\", \"4210407\"],\n\t\t[\"Maravilha\", \"4210506\"],\n\t\t[\"Marema\", \"4210555\"],\n\t\t[\"Massaranduba\", \"4210605\"],\n\t\t[\"Matos Costa\", \"4210704\"],\n\t\t[\"Meleiro\", \"4210803\"],\n\t\t[\"Mirim Doce\", \"4210852\"],\n\t\t[\"Modelo\", \"4210902\"],\n\t\t[\"Mondaí\", \"4211009\"],\n\t\t[\"Monte Carlo\", \"4211058\"],\n\t\t[\"Monte Castelo\", \"4211108\"],\n\t\t[\"Morro da Fumaça\", \"4211207\"],\n\t\t[\"Morro Grande\", \"4211256\"],\n\t\t[\"Navegantes\", \"4211306\"],\n\t\t[\"Nova Erechim\", \"4211405\"],\n\t\t[\"Nova Itaberaba\", \"4211454\"],\n\t\t[\"Nova Trento\", \"4211504\"],\n\t\t[\"Nova Veneza\", \"4211603\"],\n\t\t[\"Novo Horizonte\", \"4211652\"],\n\t\t[\"Orleans\", \"4211702\"],\n\t\t[\"Otacílio Costa\", \"4211751\"],\n\t\t[\"Ouro\", \"4211801\"],\n\t\t[\"Ouro Verde\", \"4211850\"],\n\t\t[\"Paial\", \"4211876\"],\n\t\t[\"Painel\", \"4211892\"],\n\t\t[\"Palhoça\", \"4211900\"],\n\t\t[\"Palma Sola\", \"4212007\"],\n\t\t[\"Palmeira\", \"4212056\"],\n\t\t[\"Palmitos\", \"4212106\"],\n\t\t[\"Papanduva\", \"4212205\"],\n\t\t[\"Paraíso\", \"4212239\"],\n\t\t[\"Passo de Torres\", \"4212254\"],\n\t\t[\"Passos Maia\", \"4212270\"],\n\t\t[\"Paulo Lopes\", \"4212304\"],\n\t\t[\"Pedras Grandes\", \"4212403\"],\n\t\t[\"Penha\", \"4212502\"],\n\t\t[\"Peritiba\", \"4212601\"],\n\t\t[\"Pescaria Brava\", \"4212650\"],\n\t\t[\"Petrolândia\", \"4212700\"],\n\t\t[\"Pinhalzinho\", \"4212908\"],\n\t\t[\"Pinheiro Preto\", \"4213005\"],\n\t\t[\"Piratuba\", \"4213104\"],\n\t\t[\"Planalto Alegre\", \"4213153\"],\n\t\t[\"Pomerode\", \"4213203\"],\n\t\t[\"Ponte Alta\", \"4213302\"],\n\t\t[\"Ponte Alta do Norte\", \"4213351\"],\n\t\t[\"Ponte Serrada\", \"4213401\"],\n\t\t[\"Porto Belo\", \"4213500\"],\n\t\t[\"Porto União\", \"4213609\"],\n\t\t[\"Pouso Redondo\", \"4213708\"],\n\t\t[\"Praia Grande\", \"4213807\"],\n\t\t[\"Presidente Castello Branco\", \"4213906\"],\n\t\t[\"Presidente Getúlio\", \"4214003\"],\n\t\t[\"Presidente Nereu\", \"4214102\"],\n\t\t[\"Princesa\", \"4214151\"],\n\t\t[\"Quilombo\", \"4214201\"],\n\t\t[\"Rancho Queimado\", \"4214300\"],\n\t\t[\"Rio das Antas\", \"4214409\"],\n\t\t[\"Rio do Campo\", \"4214508\"],\n\t\t[\"Rio do Oeste\", \"4214607\"],\n\t\t[\"Rio do Sul\", \"4214805\"],\n\t\t[\"Rio dos Cedros\", \"4214706\"],\n\t\t[\"Rio Fortuna\", \"4214904\"],\n\t\t[\"Rio Negrinho\", \"4215000\"],\n\t\t[\"Rio Rufino\", \"4215059\"],\n\t\t[\"Riqueza\", \"4215075\"],\n\t\t[\"Rodeio\", \"4215109\"],\n\t\t[\"Romelândia\", \"4215208\"],\n\t\t[\"Salete\", \"4215307\"],\n\t\t[\"Saltinho\", \"4215356\"],\n\t\t[\"Salto Veloso\", \"4215406\"],\n\t\t[\"Sangão\", \"4215455\"],\n\t\t[\"Santa Cecília\", \"4215505\"],\n\t\t[\"Santa Helena\", \"4215554\"],\n\t\t[\"Santa Rosa de Lima\", \"4215604\"],\n\t\t[\"Santa Rosa do Sul\", \"4215653\"],\n\t\t[\"Santa Terezinha\", \"4215679\"],\n\t\t[\"Santa Terezinha do Progresso\", \"4215687\"],\n\t\t[\"Santiago do Sul\", \"4215695\"],\n\t\t[\"Santo Amaro da Imperatriz\", \"4215703\"],\n\t\t[\"São Bento do Sul\", \"4215802\"],\n\t\t[\"São Bernardino\", \"4215752\"],\n\t\t[\"São Bonifácio\", \"4215901\"],\n\t\t[\"São Carlos\", \"4216008\"],\n\t\t[\"São Cristóvão do Sul\", \"4216057\"],\n\t\t[\"São Domingos\", \"4216107\"],\n\t\t[\"São Francisco do Sul\", \"4216206\"],\n\t\t[\"São João Batista\", \"4216305\"],\n\t\t[\"São João do Itaperiú\", \"4216354\"],\n\t\t[\"São João do Oeste\", \"4216255\"],\n\t\t[\"São João do Sul\", \"4216404\"],\n\t\t[\"São Joaquim\", \"4216503\"],\n\t\t[\"São José\", \"4216602\"],\n\t\t[\"São José do Cedro\", \"4216701\"],\n\t\t[\"São José do Cerrito\", \"4216800\"],\n\t\t[\"São Lourenço do Oeste\", \"4216909\"],\n\t\t[\"São Ludgero\", \"4217006\"],\n\t\t[\"São Martinho\", \"4217105\"],\n\t\t[\"São Miguel da Boa Vista\", \"4217154\"],\n\t\t[\"São Miguel do Oeste\", \"4217204\"],\n\t\t[\"São Pedro de Alcântara\", \"4217253\"],\n\t\t[\"Saudades\", \"4217303\"],\n\t\t[\"Schroeder\", \"4217402\"],\n\t\t[\"Seara\", \"4217501\"],\n\t\t[\"Serra Alta\", \"4217550\"],\n\t\t[\"Siderópolis\", \"4217600\"],\n\t\t[\"Sombrio\", \"4217709\"],\n\t\t[\"Sul Brasil\", \"4217758\"],\n\t\t[\"Taió\", \"4217808\"],\n\t\t[\"Tangará\", \"4217907\"],\n\t\t[\"Tigrinhos\", \"4217956\"],\n\t\t[\"Tijucas\", \"4218004\"],\n\t\t[\"Timbé do Sul\", \"4218103\"],\n\t\t[\"Timbó\", \"4218202\"],\n\t\t[\"Timbó Grande\", \"4218251\"],\n\t\t[\"Três Barras\", \"4218301\"],\n\t\t[\"Treviso\", \"4218350\"],\n\t\t[\"Treze de Maio\", \"4218400\"],\n\t\t[\"Treze Tílias\", \"4218509\"],\n\t\t[\"Trombudo Central\", \"4218608\"],\n\t\t[\"Tubarão\", \"4218707\"],\n\t\t[\"Tunápolis\", \"4218756\"],\n\t\t[\"Turvo\", \"4218806\"],\n\t\t[\"União do Oeste\", \"4218855\"],\n\t\t[\"Urubici\", \"4218905\"],\n\t\t[\"Urupema\", \"4218954\"],\n\t\t[\"Urussanga\", \"4219002\"],\n\t\t[\"Vargeão\", \"4219101\"],\n\t\t[\"Vargem\", \"4219150\"],\n\t\t[\"Vargem Bonita\", \"4219176\"],\n\t\t[\"Vidal Ramos\", \"4219200\"],\n\t\t[\"Videira\", \"4219309\"],\n\t\t[\"Vitor Meireles\", \"4219358\"],\n\t\t[\"Witmarsum\", \"4219408\"],\n\t\t[\"Xanxerê\", \"4219507\"],\n\t\t[\"Xavantina\", \"4219606\"],\n\t\t[\"Xaxim\", \"4219705\"],\n\t\t[\"Zortéa\", \"4219853\"],\n\t],\n\tSE: [\n\t\t[\"Amparo do São Francisco\", \"2800100\"],\n\t\t[\"Aquidabã\", \"2800209\"],\n\t\t[\"Aracaju\", \"2800308\"],\n\t\t[\"Arauá\", \"2800407\"],\n\t\t[\"Areia Branca\", \"2800506\"],\n\t\t[\"Barra dos Coqueiros\", \"2800605\"],\n\t\t[\"Boquim\", \"2800670\"],\n\t\t[\"Brejo Grande\", \"2800704\"],\n\t\t[\"Campo do Brito\", \"2801009\"],\n\t\t[\"Canhoba\", \"2801108\"],\n\t\t[\"Canindé de São Francisco\", \"2801207\"],\n\t\t[\"Capela\", \"2801306\"],\n\t\t[\"Carira\", \"2801405\"],\n\t\t[\"Carmópolis\", \"2801504\"],\n\t\t[\"Cedro de São João\", \"2801603\"],\n\t\t[\"Cristinápolis\", \"2801702\"],\n\t\t[\"Cumbe\", \"2801900\"],\n\t\t[\"Divina Pastora\", \"2802007\"],\n\t\t[\"Estância\", \"2802106\"],\n\t\t[\"Feira Nova\", \"2802205\"],\n\t\t[\"Frei Paulo\", \"2802304\"],\n\t\t[\"Gararu\", \"2802403\"],\n\t\t[\"General Maynard\", \"2802502\"],\n\t\t[\"Graccho Cardoso\", \"2802601\"],\n\t\t[\"Ilha das Flores\", \"2802700\"],\n\t\t[\"Indiaroba\", \"2802809\"],\n\t\t[\"Itabaiana\", \"2802908\"],\n\t\t[\"Itabaianinha\", \"2803005\"],\n\t\t[\"Itabi\", \"2803104\"],\n\t\t[\"Itaporanga d'Ajuda\", \"2803203\"],\n\t\t[\"Japaratuba\", \"2803302\"],\n\t\t[\"Japoatã\", \"2803401\"],\n\t\t[\"Lagarto\", \"2803500\"],\n\t\t[\"Laranjeiras\", \"2803609\"],\n\t\t[\"Macambira\", \"2803708\"],\n\t\t[\"Malhada dos Bois\", \"2803807\"],\n\t\t[\"Malhador\", \"2803906\"],\n\t\t[\"Maruim\", \"2804003\"],\n\t\t[\"Moita Bonita\", \"2804102\"],\n\t\t[\"Monte Alegre de Sergipe\", \"2804201\"],\n\t\t[\"Muribeca\", \"2804300\"],\n\t\t[\"Neópolis\", \"2804409\"],\n\t\t[\"Nossa Senhora Aparecida\", \"2804458\"],\n\t\t[\"Nossa Senhora da Glória\", \"2804508\"],\n\t\t[\"Nossa Senhora das Dores\", \"2804607\"],\n\t\t[\"Nossa Senhora de Lourdes\", \"2804706\"],\n\t\t[\"Nossa Senhora do Socorro\", \"2804805\"],\n\t\t[\"Pacatuba\", \"2804904\"],\n\t\t[\"Pedra Mole\", \"2805000\"],\n\t\t[\"Pedrinhas\", \"2805109\"],\n\t\t[\"Pinhão\", \"2805208\"],\n\t\t[\"Pirambu\", \"2805307\"],\n\t\t[\"Poço Redondo\", \"2805406\"],\n\t\t[\"Poço Verde\", \"2805505\"],\n\t\t[\"Porto da Folha\", \"2805604\"],\n\t\t[\"Propriá\", \"2805703\"],\n\t\t[\"Riachão do Dantas\", \"2805802\"],\n\t\t[\"Riachuelo\", \"2805901\"],\n\t\t[\"Ribeirópolis\", \"2806008\"],\n\t\t[\"Rosário do Catete\", \"2806107\"],\n\t\t[\"Salgado\", \"2806206\"],\n\t\t[\"Santa Luzia do Itanhy\", \"2806305\"],\n\t\t[\"Santa Rosa de Lima\", \"2806503\"],\n\t\t[\"Santana do São Francisco\", \"2806404\"],\n\t\t[\"Santo Amaro das Brotas\", \"2806602\"],\n\t\t[\"São Cristóvão\", \"2806701\"],\n\t\t[\"São Domingos\", \"2806800\"],\n\t\t[\"São Francisco\", \"2806909\"],\n\t\t[\"São Miguel do Aleixo\", \"2807006\"],\n\t\t[\"Simão Dias\", \"2807105\"],\n\t\t[\"Siriri\", \"2807204\"],\n\t\t[\"Telha\", \"2807303\"],\n\t\t[\"Tobias Barreto\", \"2807402\"],\n\t\t[\"Tomar do Geru\", \"2807501\"],\n\t\t[\"Umbaúba\", \"2807600\"],\n\t],\n\tSP: [\n\t\t[\"Adamantina\", \"3500105\"],\n\t\t[\"Adolfo\", \"3500204\"],\n\t\t[\"Aguaí\", \"3500303\"],\n\t\t[\"Águas da Prata\", \"3500402\"],\n\t\t[\"Águas de Lindóia\", \"3500501\"],\n\t\t[\"Águas de Santa Bárbara\", \"3500550\"],\n\t\t[\"Águas de São Pedro\", \"3500600\"],\n\t\t[\"Agudos\", \"3500709\"],\n\t\t[\"Alambari\", \"3500758\"],\n\t\t[\"Alfredo Marcondes\", \"3500808\"],\n\t\t[\"Altair\", \"3500907\"],\n\t\t[\"Altinópolis\", \"3501004\"],\n\t\t[\"Alto Alegre\", \"3501103\"],\n\t\t[\"Alumínio\", \"3501152\"],\n\t\t[\"Álvares Florence\", \"3501202\"],\n\t\t[\"Álvares Machado\", \"3501301\"],\n\t\t[\"Álvaro de Carvalho\", \"3501400\"],\n\t\t[\"Alvinlândia\", \"3501509\"],\n\t\t[\"Americana\", \"3501608\"],\n\t\t[\"Américo Brasiliense\", \"3501707\"],\n\t\t[\"Américo de Campos\", \"3501806\"],\n\t\t[\"Amparo\", \"3501905\"],\n\t\t[\"Analândia\", \"3502002\"],\n\t\t[\"Andradina\", \"3502101\"],\n\t\t[\"Angatuba\", \"3502200\"],\n\t\t[\"Anhembi\", \"3502309\"],\n\t\t[\"Anhumas\", \"3502408\"],\n\t\t[\"Aparecida\", \"3502507\"],\n\t\t[\"Aparecida d'Oeste\", \"3502606\"],\n\t\t[\"Apiaí\", \"3502705\"],\n\t\t[\"Araçariguama\", \"3502754\"],\n\t\t[\"Araçatuba\", \"3502804\"],\n\t\t[\"Araçoiaba da Serra\", \"3502903\"],\n\t\t[\"Aramina\", \"3503000\"],\n\t\t[\"Arandu\", \"3503109\"],\n\t\t[\"Arapeí\", \"3503158\"],\n\t\t[\"Araraquara\", \"3503208\"],\n\t\t[\"Araras\", \"3503307\"],\n\t\t[\"Arco-Íris\", \"3503356\"],\n\t\t[\"Arealva\", \"3503406\"],\n\t\t[\"Areias\", \"3503505\"],\n\t\t[\"Areiópolis\", \"3503604\"],\n\t\t[\"Ariranha\", \"3503703\"],\n\t\t[\"Artur Nogueira\", \"3503802\"],\n\t\t[\"Arujá\", \"3503901\"],\n\t\t[\"Aspásia\", \"3503950\"],\n\t\t[\"Assis\", \"3504008\"],\n\t\t[\"Atibaia\", \"3504107\"],\n\t\t[\"Auriflama\", \"3504206\"],\n\t\t[\"Avaí\", \"3504305\"],\n\t\t[\"Avanhandava\", \"3504404\"],\n\t\t[\"Avaré\", \"3504503\"],\n\t\t[\"Bady Bassitt\", \"3504602\"],\n\t\t[\"Balbinos\", \"3504701\"],\n\t\t[\"Bálsamo\", \"3504800\"],\n\t\t[\"Bananal\", \"3504909\"],\n\t\t[\"Barão de Antonina\", \"3505005\"],\n\t\t[\"Barbosa\", \"3505104\"],\n\t\t[\"Bariri\", \"3505203\"],\n\t\t[\"Barra Bonita\", \"3505302\"],\n\t\t[\"Barra do Chapéu\", \"3505351\"],\n\t\t[\"Barra do Turvo\", \"3505401\"],\n\t\t[\"Barretos\", \"3505500\"],\n\t\t[\"Barrinha\", \"3505609\"],\n\t\t[\"Barueri\", \"3505708\"],\n\t\t[\"Bastos\", \"3505807\"],\n\t\t[\"Batatais\", \"3505906\"],\n\t\t[\"Bauru\", \"3506003\"],\n\t\t[\"Bebedouro\", \"3506102\"],\n\t\t[\"Bento de Abreu\", \"3506201\"],\n\t\t[\"Bernardino de Campos\", \"3506300\"],\n\t\t[\"Bertioga\", \"3506359\"],\n\t\t[\"Bilac\", \"3506409\"],\n\t\t[\"Birigui\", \"3506508\"],\n\t\t[\"Biritiba Mirim\", \"3506607\"],\n\t\t[\"Boa Esperança do Sul\", \"3506706\"],\n\t\t[\"Bocaina\", \"3506805\"],\n\t\t[\"Bofete\", \"3506904\"],\n\t\t[\"Boituva\", \"3507001\"],\n\t\t[\"Bom Jesus dos Perdões\", \"3507100\"],\n\t\t[\"Bom Sucesso de Itararé\", \"3507159\"],\n\t\t[\"Borá\", \"3507209\"],\n\t\t[\"Boracéia\", \"3507308\"],\n\t\t[\"Borborema\", \"3507407\"],\n\t\t[\"Borebi\", \"3507456\"],\n\t\t[\"Botucatu\", \"3507506\"],\n\t\t[\"Bragança Paulista\", \"3507605\"],\n\t\t[\"Braúna\", \"3507704\"],\n\t\t[\"Brejo Alegre\", \"3507753\"],\n\t\t[\"Brodowski\", \"3507803\"],\n\t\t[\"Brotas\", \"3507902\"],\n\t\t[\"Buri\", \"3508009\"],\n\t\t[\"Buritama\", \"3508108\"],\n\t\t[\"Buritizal\", \"3508207\"],\n\t\t[\"Cabrália Paulista\", \"3508306\"],\n\t\t[\"Cabreúva\", \"3508405\"],\n\t\t[\"Caçapava\", \"3508504\"],\n\t\t[\"Cachoeira Paulista\", \"3508603\"],\n\t\t[\"Caconde\", \"3508702\"],\n\t\t[\"Cafelândia\", \"3508801\"],\n\t\t[\"Caiabu\", \"3508900\"],\n\t\t[\"Caieiras\", \"3509007\"],\n\t\t[\"Caiuá\", \"3509106\"],\n\t\t[\"Cajamar\", \"3509205\"],\n\t\t[\"Cajati\", \"3509254\"],\n\t\t[\"Cajobi\", \"3509304\"],\n\t\t[\"Cajuru\", \"3509403\"],\n\t\t[\"Campina do Monte Alegre\", \"3509452\"],\n\t\t[\"Campinas\", \"3509502\"],\n\t\t[\"Campo Limpo Paulista\", \"3509601\"],\n\t\t[\"Campos do Jordão\", \"3509700\"],\n\t\t[\"Campos Novos Paulista\", \"3509809\"],\n\t\t[\"Cananéia\", \"3509908\"],\n\t\t[\"Canas\", \"3509957\"],\n\t\t[\"Cândido Mota\", \"3510005\"],\n\t\t[\"Cândido Rodrigues\", \"3510104\"],\n\t\t[\"Canitar\", \"3510153\"],\n\t\t[\"Capão Bonito\", \"3510203\"],\n\t\t[\"Capela do Alto\", \"3510302\"],\n\t\t[\"Capivari\", \"3510401\"],\n\t\t[\"Caraguatatuba\", \"3510500\"],\n\t\t[\"Carapicuíba\", \"3510609\"],\n\t\t[\"Cardoso\", \"3510708\"],\n\t\t[\"Casa Branca\", \"3510807\"],\n\t\t[\"Cássia dos Coqueiros\", \"3510906\"],\n\t\t[\"Castilho\", \"3511003\"],\n\t\t[\"Catanduva\", \"3511102\"],\n\t\t[\"Catiguá\", \"3511201\"],\n\t\t[\"Cedral\", \"3511300\"],\n\t\t[\"Cerqueira César\", \"3511409\"],\n\t\t[\"Cerquilho\", \"3511508\"],\n\t\t[\"Cesário Lange\", \"3511607\"],\n\t\t[\"Charqueada\", \"3511706\"],\n\t\t[\"Chavantes\", \"3557204\"],\n\t\t[\"Clementina\", \"3511904\"],\n\t\t[\"Colina\", \"3512001\"],\n\t\t[\"Colômbia\", \"3512100\"],\n\t\t[\"Conchal\", \"3512209\"],\n\t\t[\"Conchas\", \"3512308\"],\n\t\t[\"Cordeirópolis\", \"3512407\"],\n\t\t[\"Coroados\", \"3512506\"],\n\t\t[\"Coronel Macedo\", \"3512605\"],\n\t\t[\"Corumbataí\", \"3512704\"],\n\t\t[\"Cosmópolis\", \"3512803\"],\n\t\t[\"Cosmorama\", \"3512902\"],\n\t\t[\"Cotia\", \"3513009\"],\n\t\t[\"Cravinhos\", \"3513108\"],\n\t\t[\"Cristais Paulista\", \"3513207\"],\n\t\t[\"Cruzália\", \"3513306\"],\n\t\t[\"Cruzeiro\", \"3513405\"],\n\t\t[\"Cubatão\", \"3513504\"],\n\t\t[\"Cunha\", \"3513603\"],\n\t\t[\"Descalvado\", \"3513702\"],\n\t\t[\"Diadema\", \"3513801\"],\n\t\t[\"Dirce Reis\", \"3513850\"],\n\t\t[\"Divinolândia\", \"3513900\"],\n\t\t[\"Dobrada\", \"3514007\"],\n\t\t[\"Dois Córregos\", \"3514106\"],\n\t\t[\"Dolcinópolis\", \"3514205\"],\n\t\t[\"Dourado\", \"3514304\"],\n\t\t[\"Dracena\", \"3514403\"],\n\t\t[\"Duartina\", \"3514502\"],\n\t\t[\"Dumont\", \"3514601\"],\n\t\t[\"Echaporã\", \"3514700\"],\n\t\t[\"Eldorado\", \"3514809\"],\n\t\t[\"Elias Fausto\", \"3514908\"],\n\t\t[\"Elisiário\", \"3514924\"],\n\t\t[\"Embaúba\", \"3514957\"],\n\t\t[\"Embu das Artes\", \"3515004\"],\n\t\t[\"Embu-Guaçu\", \"3515103\"],\n\t\t[\"Emilianópolis\", \"3515129\"],\n\t\t[\"Engenheiro Coelho\", \"3515152\"],\n\t\t[\"Espírito Santo do Pinhal\", \"3515186\"],\n\t\t[\"Espírito Santo do Turvo\", \"3515194\"],\n\t\t[\"Estiva Gerbi\", \"3557303\"],\n\t\t[\"Estrela d'Oeste\", \"3515202\"],\n\t\t[\"Estrela do Norte\", \"3515301\"],\n\t\t[\"Euclides da Cunha Paulista\", \"3515350\"],\n\t\t[\"Fartura\", \"3515400\"],\n\t\t[\"Fernando Prestes\", \"3515608\"],\n\t\t[\"Fernandópolis\", \"3515509\"],\n\t\t[\"Fernão\", \"3515657\"],\n\t\t[\"Ferraz de Vasconcelos\", \"3515707\"],\n\t\t[\"Flora Rica\", \"3515806\"],\n\t\t[\"Floreal\", \"3515905\"],\n\t\t[\"Flórida Paulista\", \"3516002\"],\n\t\t[\"Florínea\", \"3516101\"],\n\t\t[\"Franca\", \"3516200\"],\n\t\t[\"Francisco Morato\", \"3516309\"],\n\t\t[\"Franco da Rocha\", \"3516408\"],\n\t\t[\"Gabriel Monteiro\", \"3516507\"],\n\t\t[\"Gália\", \"3516606\"],\n\t\t[\"Garça\", \"3516705\"],\n\t\t[\"Gastão Vidigal\", \"3516804\"],\n\t\t[\"Gavião Peixoto\", \"3516853\"],\n\t\t[\"General Salgado\", \"3516903\"],\n\t\t[\"Getulina\", \"3517000\"],\n\t\t[\"Glicério\", \"3517109\"],\n\t\t[\"Guaiçara\", \"3517208\"],\n\t\t[\"Guaimbê\", \"3517307\"],\n\t\t[\"Guaíra\", \"3517406\"],\n\t\t[\"Guapiaçu\", \"3517505\"],\n\t\t[\"Guapiara\", \"3517604\"],\n\t\t[\"Guará\", \"3517703\"],\n\t\t[\"Guaraçaí\", \"3517802\"],\n\t\t[\"Guaraci\", \"3517901\"],\n\t\t[\"Guarani d'Oeste\", \"3518008\"],\n\t\t[\"Guarantã\", \"3518107\"],\n\t\t[\"Guararapes\", \"3518206\"],\n\t\t[\"Guararema\", \"3518305\"],\n\t\t[\"Guaratinguetá\", \"3518404\"],\n\t\t[\"Guareí\", \"3518503\"],\n\t\t[\"Guariba\", \"3518602\"],\n\t\t[\"Guarujá\", \"3518701\"],\n\t\t[\"Guarulhos\", \"3518800\"],\n\t\t[\"Guatapará\", \"3518859\"],\n\t\t[\"Guzolândia\", \"3518909\"],\n\t\t[\"Herculândia\", \"3519006\"],\n\t\t[\"Holambra\", \"3519055\"],\n\t\t[\"Hortolândia\", \"3519071\"],\n\t\t[\"Iacanga\", \"3519105\"],\n\t\t[\"Iacri\", \"3519204\"],\n\t\t[\"Iaras\", \"3519253\"],\n\t\t[\"Ibaté\", \"3519303\"],\n\t\t[\"Ibirá\", \"3519402\"],\n\t\t[\"Ibirarema\", \"3519501\"],\n\t\t[\"Ibitinga\", \"3519600\"],\n\t\t[\"Ibiúna\", \"3519709\"],\n\t\t[\"Icém\", \"3519808\"],\n\t\t[\"Iepê\", \"3519907\"],\n\t\t[\"Igaraçu do Tietê\", \"3520004\"],\n\t\t[\"Igarapava\", \"3520103\"],\n\t\t[\"Igaratá\", \"3520202\"],\n\t\t[\"Iguape\", \"3520301\"],\n\t\t[\"Ilha Comprida\", \"3520426\"],\n\t\t[\"Ilha Solteira\", \"3520442\"],\n\t\t[\"Ilhabela\", \"3520400\"],\n\t\t[\"Indaiatuba\", \"3520509\"],\n\t\t[\"Indiana\", \"3520608\"],\n\t\t[\"Indiaporã\", \"3520707\"],\n\t\t[\"Inúbia Paulista\", \"3520806\"],\n\t\t[\"Ipaussu\", \"3520905\"],\n\t\t[\"Iperó\", \"3521002\"],\n\t\t[\"Ipeúna\", \"3521101\"],\n\t\t[\"Ipiguá\", \"3521150\"],\n\t\t[\"Iporanga\", \"3521200\"],\n\t\t[\"Ipuã\", \"3521309\"],\n\t\t[\"Iracemápolis\", \"3521408\"],\n\t\t[\"Irapuã\", \"3521507\"],\n\t\t[\"Irapuru\", \"3521606\"],\n\t\t[\"Itaberá\", \"3521705\"],\n\t\t[\"Itaí\", \"3521804\"],\n\t\t[\"Itajobi\", \"3521903\"],\n\t\t[\"Itaju\", \"3522000\"],\n\t\t[\"Itanhaém\", \"3522109\"],\n\t\t[\"Itaoca\", \"3522158\"],\n\t\t[\"Itapecerica da Serra\", \"3522208\"],\n\t\t[\"Itapetininga\", \"3522307\"],\n\t\t[\"Itapeva\", \"3522406\"],\n\t\t[\"Itapevi\", \"3522505\"],\n\t\t[\"Itapira\", \"3522604\"],\n\t\t[\"Itapirapuã Paulista\", \"3522653\"],\n\t\t[\"Itápolis\", \"3522703\"],\n\t\t[\"Itaporanga\", \"3522802\"],\n\t\t[\"Itapuí\", \"3522901\"],\n\t\t[\"Itapura\", \"3523008\"],\n\t\t[\"Itaquaquecetuba\", \"3523107\"],\n\t\t[\"Itararé\", \"3523206\"],\n\t\t[\"Itariri\", \"3523305\"],\n\t\t[\"Itatiba\", \"3523404\"],\n\t\t[\"Itatinga\", \"3523503\"],\n\t\t[\"Itirapina\", \"3523602\"],\n\t\t[\"Itirapuã\", \"3523701\"],\n\t\t[\"Itobi\", \"3523800\"],\n\t\t[\"Itu\", \"3523909\"],\n\t\t[\"Itupeva\", \"3524006\"],\n\t\t[\"Ituverava\", \"3524105\"],\n\t\t[\"Jaborandi\", \"3524204\"],\n\t\t[\"Jaboticabal\", \"3524303\"],\n\t\t[\"Jacareí\", \"3524402\"],\n\t\t[\"Jaci\", \"3524501\"],\n\t\t[\"Jacupiranga\", \"3524600\"],\n\t\t[\"Jaguariúna\", \"3524709\"],\n\t\t[\"Jales\", \"3524808\"],\n\t\t[\"Jambeiro\", \"3524907\"],\n\t\t[\"Jandira\", \"3525003\"],\n\t\t[\"Jardinópolis\", \"3525102\"],\n\t\t[\"Jarinu\", \"3525201\"],\n\t\t[\"Jaú\", \"3525300\"],\n\t\t[\"Jeriquara\", \"3525409\"],\n\t\t[\"Joanópolis\", \"3525508\"],\n\t\t[\"João Ramalho\", \"3525607\"],\n\t\t[\"José Bonifácio\", \"3525706\"],\n\t\t[\"Júlio Mesquita\", \"3525805\"],\n\t\t[\"Jumirim\", \"3525854\"],\n\t\t[\"Jundiaí\", \"3525904\"],\n\t\t[\"Junqueirópolis\", \"3526001\"],\n\t\t[\"Juquiá\", \"3526100\"],\n\t\t[\"Juquitiba\", \"3526209\"],\n\t\t[\"Lagoinha\", \"3526308\"],\n\t\t[\"Laranjal Paulista\", \"3526407\"],\n\t\t[\"Lavínia\", \"3526506\"],\n\t\t[\"Lavrinhas\", \"3526605\"],\n\t\t[\"Leme\", \"3526704\"],\n\t\t[\"Lençóis Paulista\", \"3526803\"],\n\t\t[\"Limeira\", \"3526902\"],\n\t\t[\"Lindóia\", \"3527009\"],\n\t\t[\"Lins\", \"3527108\"],\n\t\t[\"Lorena\", \"3527207\"],\n\t\t[\"Lourdes\", \"3527256\"],\n\t\t[\"Louveira\", \"3527306\"],\n\t\t[\"Lucélia\", \"3527405\"],\n\t\t[\"Lucianópolis\", \"3527504\"],\n\t\t[\"Luís Antônio\", \"3527603\"],\n\t\t[\"Luiziânia\", \"3527702\"],\n\t\t[\"Lupércio\", \"3527801\"],\n\t\t[\"Lutécia\", \"3527900\"],\n\t\t[\"Macatuba\", \"3528007\"],\n\t\t[\"Macaubal\", \"3528106\"],\n\t\t[\"Macedônia\", \"3528205\"],\n\t\t[\"Magda\", \"3528304\"],\n\t\t[\"Mairinque\", \"3528403\"],\n\t\t[\"Mairiporã\", \"3528502\"],\n\t\t[\"Manduri\", \"3528601\"],\n\t\t[\"Marabá Paulista\", \"3528700\"],\n\t\t[\"Maracaí\", \"3528809\"],\n\t\t[\"Marapoama\", \"3528858\"],\n\t\t[\"Mariápolis\", \"3528908\"],\n\t\t[\"Marília\", \"3529005\"],\n\t\t[\"Marinópolis\", \"3529104\"],\n\t\t[\"Martinópolis\", \"3529203\"],\n\t\t[\"Matão\", \"3529302\"],\n\t\t[\"Mauá\", \"3529401\"],\n\t\t[\"Mendonça\", \"3529500\"],\n\t\t[\"Meridiano\", \"3529609\"],\n\t\t[\"Mesópolis\", \"3529658\"],\n\t\t[\"Miguelópolis\", \"3529708\"],\n\t\t[\"Mineiros do Tietê\", \"3529807\"],\n\t\t[\"Mira Estrela\", \"3530003\"],\n\t\t[\"Miracatu\", \"3529906\"],\n\t\t[\"Mirandópolis\", \"3530102\"],\n\t\t[\"Mirante do Paranapanema\", \"3530201\"],\n\t\t[\"Mirassol\", \"3530300\"],\n\t\t[\"Mirassolândia\", \"3530409\"],\n\t\t[\"Mococa\", \"3530508\"],\n\t\t[\"Mogi das Cruzes\", \"3530607\"],\n\t\t[\"Mogi Guaçu\", \"3530706\"],\n\t\t[\"Mogi Mirim\", \"3530805\"],\n\t\t[\"Mombuca\", \"3530904\"],\n\t\t[\"Monções\", \"3531001\"],\n\t\t[\"Mongaguá\", \"3531100\"],\n\t\t[\"Monte Alegre do Sul\", \"3531209\"],\n\t\t[\"Monte Alto\", \"3531308\"],\n\t\t[\"Monte Aprazível\", \"3531407\"],\n\t\t[\"Monte Azul Paulista\", \"3531506\"],\n\t\t[\"Monte Castelo\", \"3531605\"],\n\t\t[\"Monte Mor\", \"3531803\"],\n\t\t[\"Monteiro Lobato\", \"3531704\"],\n\t\t[\"Morro Agudo\", \"3531902\"],\n\t\t[\"Morungaba\", \"3532009\"],\n\t\t[\"Motuca\", \"3532058\"],\n\t\t[\"Murutinga do Sul\", \"3532108\"],\n\t\t[\"Nantes\", \"3532157\"],\n\t\t[\"Narandiba\", \"3532207\"],\n\t\t[\"Natividade da Serra\", \"3532306\"],\n\t\t[\"Nazaré Paulista\", \"3532405\"],\n\t\t[\"Neves Paulista\", \"3532504\"],\n\t\t[\"Nhandeara\", \"3532603\"],\n\t\t[\"Nipoã\", \"3532702\"],\n\t\t[\"Nova Aliança\", \"3532801\"],\n\t\t[\"Nova Campina\", \"3532827\"],\n\t\t[\"Nova Canaã Paulista\", \"3532843\"],\n\t\t[\"Nova Castilho\", \"3532868\"],\n\t\t[\"Nova Europa\", \"3532900\"],\n\t\t[\"Nova Granada\", \"3533007\"],\n\t\t[\"Nova Guataporanga\", \"3533106\"],\n\t\t[\"Nova Independência\", \"3533205\"],\n\t\t[\"Nova Luzitânia\", \"3533304\"],\n\t\t[\"Nova Odessa\", \"3533403\"],\n\t\t[\"Novais\", \"3533254\"],\n\t\t[\"Novo Horizonte\", \"3533502\"],\n\t\t[\"Nuporanga\", \"3533601\"],\n\t\t[\"Ocauçu\", \"3533700\"],\n\t\t[\"Óleo\", \"3533809\"],\n\t\t[\"Olímpia\", \"3533908\"],\n\t\t[\"Onda Verde\", \"3534005\"],\n\t\t[\"Oriente\", \"3534104\"],\n\t\t[\"Orindiúva\", \"3534203\"],\n\t\t[\"Orlândia\", \"3534302\"],\n\t\t[\"Osasco\", \"3534401\"],\n\t\t[\"Oscar Bressane\", \"3534500\"],\n\t\t[\"Osvaldo Cruz\", \"3534609\"],\n\t\t[\"Ourinhos\", \"3534708\"],\n\t\t[\"Ouro Verde\", \"3534807\"],\n\t\t[\"Ouroeste\", \"3534757\"],\n\t\t[\"Pacaembu\", \"3534906\"],\n\t\t[\"Palestina\", \"3535002\"],\n\t\t[\"Palmares Paulista\", \"3535101\"],\n\t\t[\"Palmeira d'Oeste\", \"3535200\"],\n\t\t[\"Palmital\", \"3535309\"],\n\t\t[\"Panorama\", \"3535408\"],\n\t\t[\"Paraguaçu Paulista\", \"3535507\"],\n\t\t[\"Paraibuna\", \"3535606\"],\n\t\t[\"Paraíso\", \"3535705\"],\n\t\t[\"Paranapanema\", \"3535804\"],\n\t\t[\"Paranapuã\", \"3535903\"],\n\t\t[\"Parapuã\", \"3536000\"],\n\t\t[\"Pardinho\", \"3536109\"],\n\t\t[\"Pariquera-Açu\", \"3536208\"],\n\t\t[\"Parisi\", \"3536257\"],\n\t\t[\"Patrocínio Paulista\", \"3536307\"],\n\t\t[\"Paulicéia\", \"3536406\"],\n\t\t[\"Paulínia\", \"3536505\"],\n\t\t[\"Paulistânia\", \"3536570\"],\n\t\t[\"Paulo de Faria\", \"3536604\"],\n\t\t[\"Pederneiras\", \"3536703\"],\n\t\t[\"Pedra Bela\", \"3536802\"],\n\t\t[\"Pedranópolis\", \"3536901\"],\n\t\t[\"Pedregulho\", \"3537008\"],\n\t\t[\"Pedreira\", \"3537107\"],\n\t\t[\"Pedrinhas Paulista\", \"3537156\"],\n\t\t[\"Pedro de Toledo\", \"3537206\"],\n\t\t[\"Penápolis\", \"3537305\"],\n\t\t[\"Pereira Barreto\", \"3537404\"],\n\t\t[\"Pereiras\", \"3537503\"],\n\t\t[\"Peruíbe\", \"3537602\"],\n\t\t[\"Piacatu\", \"3537701\"],\n\t\t[\"Piedade\", \"3537800\"],\n\t\t[\"Pilar do Sul\", \"3537909\"],\n\t\t[\"Pindamonhangaba\", \"3538006\"],\n\t\t[\"Pindorama\", \"3538105\"],\n\t\t[\"Pinhalzinho\", \"3538204\"],\n\t\t[\"Piquerobi\", \"3538303\"],\n\t\t[\"Piquete\", \"3538501\"],\n\t\t[\"Piracaia\", \"3538600\"],\n\t\t[\"Piracicaba\", \"3538709\"],\n\t\t[\"Piraju\", \"3538808\"],\n\t\t[\"Pirajuí\", \"3538907\"],\n\t\t[\"Pirangi\", \"3539004\"],\n\t\t[\"Pirapora do Bom Jesus\", \"3539103\"],\n\t\t[\"Pirapozinho\", \"3539202\"],\n\t\t[\"Pirassununga\", \"3539301\"],\n\t\t[\"Piratininga\", \"3539400\"],\n\t\t[\"Pitangueiras\", \"3539509\"],\n\t\t[\"Planalto\", \"3539608\"],\n\t\t[\"Platina\", \"3539707\"],\n\t\t[\"Poá\", \"3539806\"],\n\t\t[\"Poloni\", \"3539905\"],\n\t\t[\"Pompéia\", \"3540002\"],\n\t\t[\"Pongaí\", \"3540101\"],\n\t\t[\"Pontal\", \"3540200\"],\n\t\t[\"Pontalinda\", \"3540259\"],\n\t\t[\"Pontes Gestal\", \"3540309\"],\n\t\t[\"Populina\", \"3540408\"],\n\t\t[\"Porangaba\", \"3540507\"],\n\t\t[\"Porto Feliz\", \"3540606\"],\n\t\t[\"Porto Ferreira\", \"3540705\"],\n\t\t[\"Potim\", \"3540754\"],\n\t\t[\"Potirendaba\", \"3540804\"],\n\t\t[\"Pracinha\", \"3540853\"],\n\t\t[\"Pradópolis\", \"3540903\"],\n\t\t[\"Praia Grande\", \"3541000\"],\n\t\t[\"Pratânia\", \"3541059\"],\n\t\t[\"Presidente Alves\", \"3541109\"],\n\t\t[\"Presidente Bernardes\", \"3541208\"],\n\t\t[\"Presidente Epitácio\", \"3541307\"],\n\t\t[\"Presidente Prudente\", \"3541406\"],\n\t\t[\"Presidente Venceslau\", \"3541505\"],\n\t\t[\"Promissão\", \"3541604\"],\n\t\t[\"Quadra\", \"3541653\"],\n\t\t[\"Quatá\", \"3541703\"],\n\t\t[\"Queiroz\", \"3541802\"],\n\t\t[\"Queluz\", \"3541901\"],\n\t\t[\"Quintana\", \"3542008\"],\n\t\t[\"Rafard\", \"3542107\"],\n\t\t[\"Rancharia\", \"3542206\"],\n\t\t[\"Redenção da Serra\", \"3542305\"],\n\t\t[\"Regente Feijó\", \"3542404\"],\n\t\t[\"Reginópolis\", \"3542503\"],\n\t\t[\"Registro\", \"3542602\"],\n\t\t[\"Restinga\", \"3542701\"],\n\t\t[\"Ribeira\", \"3542800\"],\n\t\t[\"Ribeirão Bonito\", \"3542909\"],\n\t\t[\"Ribeirão Branco\", \"3543006\"],\n\t\t[\"Ribeirão Corrente\", \"3543105\"],\n\t\t[\"Ribeirão do Sul\", \"3543204\"],\n\t\t[\"Ribeirão dos Índios\", \"3543238\"],\n\t\t[\"Ribeirão Grande\", \"3543253\"],\n\t\t[\"Ribeirão Pires\", \"3543303\"],\n\t\t[\"Ribeirão Preto\", \"3543402\"],\n\t\t[\"Rifaina\", \"3543600\"],\n\t\t[\"Rincão\", \"3543709\"],\n\t\t[\"Rinópolis\", \"3543808\"],\n\t\t[\"Rio Claro\", \"3543907\"],\n\t\t[\"Rio das Pedras\", \"3544004\"],\n\t\t[\"Rio Grande da Serra\", \"3544103\"],\n\t\t[\"Riolândia\", \"3544202\"],\n\t\t[\"Riversul\", \"3543501\"],\n\t\t[\"Rosana\", \"3544251\"],\n\t\t[\"Roseira\", \"3544301\"],\n\t\t[\"Rubiácea\", \"3544400\"],\n\t\t[\"Rubinéia\", \"3544509\"],\n\t\t[\"Sabino\", \"3544608\"],\n\t\t[\"Sagres\", \"3544707\"],\n\t\t[\"Sales\", \"3544806\"],\n\t\t[\"Sales Oliveira\", \"3544905\"],\n\t\t[\"Salesópolis\", \"3545001\"],\n\t\t[\"Salmourão\", \"3545100\"],\n\t\t[\"Saltinho\", \"3545159\"],\n\t\t[\"Salto\", \"3545209\"],\n\t\t[\"Salto de Pirapora\", \"3545308\"],\n\t\t[\"Salto Grande\", \"3545407\"],\n\t\t[\"Sandovalina\", \"3545506\"],\n\t\t[\"Santa Adélia\", \"3545605\"],\n\t\t[\"Santa Albertina\", \"3545704\"],\n\t\t[\"Santa Bárbara d'Oeste\", \"3545803\"],\n\t\t[\"Santa Branca\", \"3546009\"],\n\t\t[\"Santa Clara d'Oeste\", \"3546108\"],\n\t\t[\"Santa Cruz da Conceição\", \"3546207\"],\n\t\t[\"Santa Cruz da Esperança\", \"3546256\"],\n\t\t[\"Santa Cruz das Palmeiras\", \"3546306\"],\n\t\t[\"Santa Cruz do Rio Pardo\", \"3546405\"],\n\t\t[\"Santa Ernestina\", \"3546504\"],\n\t\t[\"Santa Fé do Sul\", \"3546603\"],\n\t\t[\"Santa Gertrudes\", \"3546702\"],\n\t\t[\"Santa Isabel\", \"3546801\"],\n\t\t[\"Santa Lúcia\", \"3546900\"],\n\t\t[\"Santa Maria da Serra\", \"3547007\"],\n\t\t[\"Santa Mercedes\", \"3547106\"],\n\t\t[\"Santa Rita d'Oeste\", \"3547403\"],\n\t\t[\"Santa Rita do Passa Quatro\", \"3547502\"],\n\t\t[\"Santa Rosa de Viterbo\", \"3547601\"],\n\t\t[\"Santa Salete\", \"3547650\"],\n\t\t[\"Santana da Ponte Pensa\", \"3547205\"],\n\t\t[\"Santana de Parnaíba\", \"3547304\"],\n\t\t[\"Santo Anastácio\", \"3547700\"],\n\t\t[\"Santo André\", \"3547809\"],\n\t\t[\"Santo Antônio da Alegria\", \"3547908\"],\n\t\t[\"Santo Antônio de Posse\", \"3548005\"],\n\t\t[\"Santo Antônio do Aracanguá\", \"3548054\"],\n\t\t[\"Santo Antônio do Jardim\", \"3548104\"],\n\t\t[\"Santo Antônio do Pinhal\", \"3548203\"],\n\t\t[\"Santo Expedito\", \"3548302\"],\n\t\t[\"Santópolis do Aguapeí\", \"3548401\"],\n\t\t[\"Santos\", \"3548500\"],\n\t\t[\"São Bento do Sapucaí\", \"3548609\"],\n\t\t[\"São Bernardo do Campo\", \"3548708\"],\n\t\t[\"São Caetano do Sul\", \"3548807\"],\n\t\t[\"São Carlos\", \"3548906\"],\n\t\t[\"São Francisco\", \"3549003\"],\n\t\t[\"São João da Boa Vista\", \"3549102\"],\n\t\t[\"São João das Duas Pontes\", \"3549201\"],\n\t\t[\"São João de Iracema\", \"3549250\"],\n\t\t[\"São João do Pau d'Alho\", \"3549300\"],\n\t\t[\"São Joaquim da Barra\", \"3549409\"],\n\t\t[\"São José da Bela Vista\", \"3549508\"],\n\t\t[\"São José do Barreiro\", \"3549607\"],\n\t\t[\"São José do Rio Pardo\", \"3549706\"],\n\t\t[\"São José do Rio Preto\", \"3549805\"],\n\t\t[\"São José dos Campos\", \"3549904\"],\n\t\t[\"São Lourenço da Serra\", \"3549953\"],\n\t\t[\"São Luiz do Paraitinga\", \"3550001\"],\n\t\t[\"São Manuel\", \"3550100\"],\n\t\t[\"São Miguel Arcanjo\", \"3550209\"],\n\t\t[\"São Paulo\", \"3550308\"],\n\t\t[\"São Pedro\", \"3550407\"],\n\t\t[\"São Pedro do Turvo\", \"3550506\"],\n\t\t[\"São Roque\", \"3550605\"],\n\t\t[\"São Sebastião\", \"3550704\"],\n\t\t[\"São Sebastião da Grama\", \"3550803\"],\n\t\t[\"São Simão\", \"3550902\"],\n\t\t[\"São Vicente\", \"3551009\"],\n\t\t[\"Sarapuí\", \"3551108\"],\n\t\t[\"Sarutaiá\", \"3551207\"],\n\t\t[\"Sebastianópolis do Sul\", \"3551306\"],\n\t\t[\"Serra Azul\", \"3551405\"],\n\t\t[\"Serra Negra\", \"3551603\"],\n\t\t[\"Serrana\", \"3551504\"],\n\t\t[\"Sertãozinho\", \"3551702\"],\n\t\t[\"Sete Barras\", \"3551801\"],\n\t\t[\"Severínia\", \"3551900\"],\n\t\t[\"Silveiras\", \"3552007\"],\n\t\t[\"Socorro\", \"3552106\"],\n\t\t[\"Sorocaba\", \"3552205\"],\n\t\t[\"Sud Mennucci\", \"3552304\"],\n\t\t[\"Sumaré\", \"3552403\"],\n\t\t[\"Suzanápolis\", \"3552551\"],\n\t\t[\"Suzano\", \"3552502\"],\n\t\t[\"Tabapuã\", \"3552601\"],\n\t\t[\"Tabatinga\", \"3552700\"],\n\t\t[\"Taboão da Serra\", \"3552809\"],\n\t\t[\"Taciba\", \"3552908\"],\n\t\t[\"Taguaí\", \"3553005\"],\n\t\t[\"Taiaçu\", \"3553104\"],\n\t\t[\"Taiúva\", \"3553203\"],\n\t\t[\"Tambaú\", \"3553302\"],\n\t\t[\"Tanabi\", \"3553401\"],\n\t\t[\"Tapiraí\", \"3553500\"],\n\t\t[\"Tapiratiba\", \"3553609\"],\n\t\t[\"Taquaral\", \"3553658\"],\n\t\t[\"Taquaritinga\", \"3553708\"],\n\t\t[\"Taquarituba\", \"3553807\"],\n\t\t[\"Taquarivaí\", \"3553856\"],\n\t\t[\"Tarabai\", \"3553906\"],\n\t\t[\"Tarumã\", \"3553955\"],\n\t\t[\"Tatuí\", \"3554003\"],\n\t\t[\"Taubaté\", \"3554102\"],\n\t\t[\"Tejupá\", \"3554201\"],\n\t\t[\"Teodoro Sampaio\", \"3554300\"],\n\t\t[\"Terra Roxa\", \"3554409\"],\n\t\t[\"Tietê\", \"3554508\"],\n\t\t[\"Timburi\", \"3554607\"],\n\t\t[\"Torre de Pedra\", \"3554656\"],\n\t\t[\"Torrinha\", \"3554706\"],\n\t\t[\"Trabiju\", \"3554755\"],\n\t\t[\"Tremembé\", \"3554805\"],\n\t\t[\"Três Fronteiras\", \"3554904\"],\n\t\t[\"Tuiuti\", \"3554953\"],\n\t\t[\"Tupã\", \"3555000\"],\n\t\t[\"Tupi Paulista\", \"3555109\"],\n\t\t[\"Turiúba\", \"3555208\"],\n\t\t[\"Turmalina\", \"3555307\"],\n\t\t[\"Ubarana\", \"3555356\"],\n\t\t[\"Ubatuba\", \"3555406\"],\n\t\t[\"Ubirajara\", \"3555505\"],\n\t\t[\"Uchoa\", \"3555604\"],\n\t\t[\"União Paulista\", \"3555703\"],\n\t\t[\"Urânia\", \"3555802\"],\n\t\t[\"Uru\", \"3555901\"],\n\t\t[\"Urupês\", \"3556008\"],\n\t\t[\"Valentim Gentil\", \"3556107\"],\n\t\t[\"Valinhos\", \"3556206\"],\n\t\t[\"Valparaíso\", \"3556305\"],\n\t\t[\"Vargem\", \"3556354\"],\n\t\t[\"Vargem Grande do Sul\", \"3556404\"],\n\t\t[\"Vargem Grande Paulista\", \"3556453\"],\n\t\t[\"Várzea Paulista\", \"3556503\"],\n\t\t[\"Vera Cruz\", \"3556602\"],\n\t\t[\"Vinhedo\", \"3556701\"],\n\t\t[\"Viradouro\", \"3556800\"],\n\t\t[\"Vista Alegre do Alto\", \"3556909\"],\n\t\t[\"Vitória Brasil\", \"3556958\"],\n\t\t[\"Votorantim\", \"3557006\"],\n\t\t[\"Votuporanga\", \"3557105\"],\n\t\t[\"Zacarias\", \"3557154\"],\n\t],\n\tTO: [\n\t\t[\"Abreulândia\", \"1700251\"],\n\t\t[\"Aguiarnópolis\", \"1700301\"],\n\t\t[\"Aliança do Tocantins\", \"1700350\"],\n\t\t[\"Almas\", \"1700400\"],\n\t\t[\"Alvorada\", \"1700707\"],\n\t\t[\"Ananás\", \"1701002\"],\n\t\t[\"Angico\", \"1701051\"],\n\t\t[\"Aparecida do Rio Negro\", \"1701101\"],\n\t\t[\"Aragominas\", \"1701309\"],\n\t\t[\"Araguacema\", \"1701903\"],\n\t\t[\"Araguaçu\", \"1702000\"],\n\t\t[\"Araguaína\", \"1702109\"],\n\t\t[\"Araguanã\", \"1702158\"],\n\t\t[\"Araguatins\", \"1702208\"],\n\t\t[\"Arapoema\", \"1702307\"],\n\t\t[\"Arraias\", \"1702406\"],\n\t\t[\"Augustinópolis\", \"1702554\"],\n\t\t[\"Aurora do Tocantins\", \"1702703\"],\n\t\t[\"Axixá do Tocantins\", \"1702901\"],\n\t\t[\"Babaçulândia\", \"1703008\"],\n\t\t[\"Bandeirantes do Tocantins\", \"1703057\"],\n\t\t[\"Barra do Ouro\", \"1703073\"],\n\t\t[\"Barrolândia\", \"1703107\"],\n\t\t[\"Bernardo Sayão\", \"1703206\"],\n\t\t[\"Bom Jesus do Tocantins\", \"1703305\"],\n\t\t[\"Brasilândia do Tocantins\", \"1703602\"],\n\t\t[\"Brejinho de Nazaré\", \"1703701\"],\n\t\t[\"Buriti do Tocantins\", \"1703800\"],\n\t\t[\"Cachoeirinha\", \"1703826\"],\n\t\t[\"Campos Lindos\", \"1703842\"],\n\t\t[\"Cariri do Tocantins\", \"1703867\"],\n\t\t[\"Carmolândia\", \"1703883\"],\n\t\t[\"Carrasco Bonito\", \"1703891\"],\n\t\t[\"Caseara\", \"1703909\"],\n\t\t[\"Centenário\", \"1704105\"],\n\t\t[\"Chapada da Natividade\", \"1705102\"],\n\t\t[\"Chapada de Areia\", \"1704600\"],\n\t\t[\"Colinas do Tocantins\", \"1705508\"],\n\t\t[\"Colméia\", \"1716703\"],\n\t\t[\"Combinado\", \"1705557\"],\n\t\t[\"Conceição do Tocantins\", \"1705607\"],\n\t\t[\"Couto Magalhães\", \"1706001\"],\n\t\t[\"Cristalândia\", \"1706100\"],\n\t\t[\"Crixás do Tocantins\", \"1706258\"],\n\t\t[\"Darcinópolis\", \"1706506\"],\n\t\t[\"Dianópolis\", \"1707009\"],\n\t\t[\"Divinópolis do Tocantins\", \"1707108\"],\n\t\t[\"Dois Irmãos do Tocantins\", \"1707207\"],\n\t\t[\"Dueré\", \"1707306\"],\n\t\t[\"Esperantina\", \"1707405\"],\n\t\t[\"Fátima\", \"1707553\"],\n\t\t[\"Figueirópolis\", \"1707652\"],\n\t\t[\"Filadélfia\", \"1707702\"],\n\t\t[\"Formoso do Araguaia\", \"1708205\"],\n\t\t[\"Goianorte\", \"1708304\"],\n\t\t[\"Goiatins\", \"1709005\"],\n\t\t[\"Guaraí\", \"1709302\"],\n\t\t[\"Gurupi\", \"1709500\"],\n\t\t[\"Ipueiras\", \"1709807\"],\n\t\t[\"Itacajá\", \"1710508\"],\n\t\t[\"Itaguatins\", \"1710706\"],\n\t\t[\"Itapiratins\", \"1710904\"],\n\t\t[\"Itaporã do Tocantins\", \"1711100\"],\n\t\t[\"Jaú do Tocantins\", \"1711506\"],\n\t\t[\"Juarina\", \"1711803\"],\n\t\t[\"Lagoa da Confusão\", \"1711902\"],\n\t\t[\"Lagoa do Tocantins\", \"1711951\"],\n\t\t[\"Lajeado\", \"1712009\"],\n\t\t[\"Lavandeira\", \"1712157\"],\n\t\t[\"Lizarda\", \"1712405\"],\n\t\t[\"Luzinópolis\", \"1712454\"],\n\t\t[\"Marianópolis do Tocantins\", \"1712504\"],\n\t\t[\"Mateiros\", \"1712702\"],\n\t\t[\"Maurilândia do Tocantins\", \"1712801\"],\n\t\t[\"Miracema do Tocantins\", \"1713205\"],\n\t\t[\"Miranorte\", \"1713304\"],\n\t\t[\"Monte do Carmo\", \"1713601\"],\n\t\t[\"Monte Santo do Tocantins\", \"1713700\"],\n\t\t[\"Muricilândia\", \"1713957\"],\n\t\t[\"Natividade\", \"1714203\"],\n\t\t[\"Nazaré\", \"1714302\"],\n\t\t[\"Nova Olinda\", \"1714880\"],\n\t\t[\"Nova Rosalândia\", \"1715002\"],\n\t\t[\"Novo Acordo\", \"1715101\"],\n\t\t[\"Novo Alegre\", \"1715150\"],\n\t\t[\"Novo Jardim\", \"1715259\"],\n\t\t[\"Oliveira de Fátima\", \"1715507\"],\n\t\t[\"Palmas\", \"1721000\"],\n\t\t[\"Palmeirante\", \"1715705\"],\n\t\t[\"Palmeiras do Tocantins\", \"1713809\"],\n\t\t[\"Palmeirópolis\", \"1715754\"],\n\t\t[\"Paraíso do Tocantins\", \"1716109\"],\n\t\t[\"Paranã\", \"1716208\"],\n\t\t[\"Pau D'Arco\", \"1716307\"],\n\t\t[\"Pedro Afonso\", \"1716505\"],\n\t\t[\"Peixe\", \"1716604\"],\n\t\t[\"Pequizeiro\", \"1716653\"],\n\t\t[\"Pindorama do Tocantins\", \"1717008\"],\n\t\t[\"Piraquê\", \"1717206\"],\n\t\t[\"Pium\", \"1717503\"],\n\t\t[\"Ponte Alta do Bom Jesus\", \"1717800\"],\n\t\t[\"Ponte Alta do Tocantins\", \"1717909\"],\n\t\t[\"Porto Alegre do Tocantins\", \"1718006\"],\n\t\t[\"Porto Nacional\", \"1718204\"],\n\t\t[\"Praia Norte\", \"1718303\"],\n\t\t[\"Presidente Kennedy\", \"1718402\"],\n\t\t[\"Pugmil\", \"1718451\"],\n\t\t[\"Recursolândia\", \"1718501\"],\n\t\t[\"Riachinho\", \"1718550\"],\n\t\t[\"Rio da Conceição\", \"1718659\"],\n\t\t[\"Rio dos Bois\", \"1718709\"],\n\t\t[\"Rio Sono\", \"1718758\"],\n\t\t[\"Sampaio\", \"1718808\"],\n\t\t[\"Sandolândia\", \"1718840\"],\n\t\t[\"Santa Fé do Araguaia\", \"1718865\"],\n\t\t[\"Santa Maria do Tocantins\", \"1718881\"],\n\t\t[\"Santa Rita do Tocantins\", \"1718899\"],\n\t\t[\"Santa Rosa do Tocantins\", \"1718907\"],\n\t\t[\"Santa Tereza do Tocantins\", \"1719004\"],\n\t\t[\"Santa Terezinha do Tocantins\", \"1720002\"],\n\t\t[\"São Bento do Tocantins\", \"1720101\"],\n\t\t[\"São Félix do Tocantins\", \"1720150\"],\n\t\t[\"São Miguel do Tocantins\", \"1720200\"],\n\t\t[\"São Salvador do Tocantins\", \"1720259\"],\n\t\t[\"São Sebastião do Tocantins\", \"1720309\"],\n\t\t[\"São Valério\", \"1720499\"],\n\t\t[\"Silvanópolis\", \"1720655\"],\n\t\t[\"Sítio Novo do Tocantins\", \"1720804\"],\n\t\t[\"Sucupira\", \"1720853\"],\n\t\t[\"Tabocão\", \"1708254\"],\n\t\t[\"Taguatinga\", \"1720903\"],\n\t\t[\"Taipas do Tocantins\", \"1720937\"],\n\t\t[\"Talismã\", \"1720978\"],\n\t\t[\"Tocantínia\", \"1721109\"],\n\t\t[\"Tocantinópolis\", \"1721208\"],\n\t\t[\"Tupirama\", \"1721257\"],\n\t\t[\"Tupiratins\", \"1721307\"],\n\t\t[\"Wanderlândia\", \"1722081\"],\n\t\t[\"Xambioá\", \"1722107\"],\n\t],\n};\n","import { DATA as CITIES_DATA } from \"../_internals/constants/cities\";\nimport { type StateCode } from \"../_internals/constants/states\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\nlet allCitiesCache: string[] | undefined;\n\n/**\n * Returns a list of city names for a given Brazilian state, or all cities if no state is specified.\n *\n * If a state code is provided, the function returns its cities sorted with `localeCompare`\n * in the \"pt-BR\" locale. If no state is provided, it returns all cities from all states,\n * sorted the same way so accented names land where a Brazilian reader expects them (the\n * combined, sorted list is computed once and cached; every call returns a fresh copy).\n *\n * Every falsy `state` asks for the full list, so `getCities(null)` and `getCities(\"\")` return\n * every city. The sibling `getMunicipalities` is stricter and only reads an omitted (or\n * `undefined`) state code that way, returning `[]` for `null` and `\"\"`.\n *\n * The state code is matched exactly, case included: `getCities(\"sp\")` returns `[]` where\n * `getCities(\"SP\")` returns the 645 São Paulo cities. `getCities` and `getMunicipalities` are\n * the only state-taking lookups that are case-sensitive; `getStateNameByCode`,\n * `getTimezoneByState`, `getAreaCodesByState` and `getMunicipality` all fold case.\n *\n * @deprecated Use `getMunicipalities` instead.\n *\n * @param {StateCode} [state] - The code of the Brazilian state to filter cities by. Optional.\n * @returns {string[]} An array of city names, sorted alphabetically. Returns an empty array if the state is not found.\n *\n * @example\n * ```typescript\n * getCities(\"SP\")[0]; // \"Adamantina\"\n * getCities(\"sp\"); // [] (the state code is case-sensitive here)\n * getCities().length; // every city of every state\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport const getCities = (state?: StateCode): string[] => {\n\tif (!state) {\n\t\tallCitiesCache ??= Object.values(CITIES_DATA)\n\t\t\t.flat()\n\t\t\t.map(([name]) => name)\n\t\t\t.sort((a, b) => a.localeCompare(b, \"pt-BR\"));\n\n\t\treturn [...allCitiesCache];\n\t}\n\n\tif (typeof state !== \"string\" || !Object.hasOwn(CITIES_DATA, state)) return [];\n\n\treturn CITIES_DATA[state].map(([name]) => name);\n};\n","/**\n * CNAE-Subclasses 2.3 (Classificação Nacional de Atividades Econômicas) subclasses, indexed by\n * the raw 7 digit code, mapping to the official subclass description.\n *\n * 2.3 is the current subclass revision of CNAE 2.0: CONCLA's own CNAE browser lists it as\n * \"CNAE-Subclasses 2.3\" under \"CNAE 2.0 (Res 02/2010)\" and tells anyone opening an older table\n * that the \"Versões atuais da CNAE\" are \"CNAE 2.0 (Res 02/2010)\" and \"CNAE-Subclasses 2.3\". The\n * classification's landing page still describes the parent CNAE 2.0 itself (\"Base Legal:\n * Resolução Concla 01/2006\", 1301 subclasses); the 1332 subclasses below are the ones the IBGE\n * data service publishes for the 2.3 revision.\n *\n * Generated by `node ./scripts/cnae.ts`. Do not edit by hand.\n *\n * @see Official: https://servicodados.ibge.gov.br/api/v2/cnae/subclasses\n * @see Official: https://concla.ibge.gov.br/busca-online-cnae.html\n * CONCLA's CNAE search and structure browser, which publishes CNAE-Subclasses 2.3.\n * @see Official: https://concla.ibge.gov.br/classificacoes/por-tema/atividades-economicas/classificacao-nacional-de-atividades-economicas\n * CNAE 2.0, the parent classification the 2.3 subclass revision belongs to.\n */\nexport const CNAE_SUBCLASSES: Record<string, string> = {\n\t\"1011201\": \"FRIGORÍFICO - ABATE DE BOVINOS\",\n\t\"1011202\": \"FRIGORÍFICO - ABATE DE EQÜINOS\",\n\t\"1011203\": \"FRIGORÍFICO - ABATE DE OVINOS E CAPRINOS\",\n\t\"1011204\": \"FRIGORÍFICO - ABATE DE BUFALINOS\",\n\t\"1011205\": \"MATADOURO - ABATE DE RESES SOB CONTRATO - EXCETO ABATE DE SUÍNOS\",\n\t\"1012101\": \"ABATE DE AVES\",\n\t\"1012102\": \"ABATE DE PEQUENOS ANIMAIS\",\n\t\"1012103\": \"FRIGORÍFICO - ABATE DE SUÍNOS\",\n\t\"1012104\": \"MATADOURO - ABATE DE SUÍNOS SOB CONTRATO\",\n\t\"1013901\": \"FABRICAÇÃO DE PRODUTOS DE CARNE\",\n\t\"1013902\": \"PREPARAÇÃO DE SUBPRODUTOS DO ABATE\",\n\t\"1020101\": \"PRESERVAÇÃO DE PEIXES, CRUSTÁCEOS E MOLUSCOS\",\n\t\"1020102\": \"FABRICAÇÃO DE CONSERVAS DE PEIXES, CRUSTÁCEOS E MOLUSCOS\",\n\t\"1031700\": \"FABRICAÇÃO DE CONSERVAS DE FRUTAS\",\n\t\"1032501\": \"FABRICAÇÃO DE CONSERVAS DE PALMITO\",\n\t\"1032599\": \"FABRICAÇÃO DE CONSERVAS DE LEGUMES E OUTROS VEGETAIS, EXCETO PALMITO\",\n\t\"1033301\": \"FABRICAÇÃO DE SUCOS CONCENTRADOS DE FRUTAS, HORTALIÇAS E LEGUMES\",\n\t\"1033302\": \"FABRICAÇÃO DE SUCOS DE FRUTAS, HORTALIÇAS E LEGUMES, EXCETO CONCENTRADOS\",\n\t\"1041400\": \"FABRICAÇÃO DE ÓLEOS VEGETAIS EM BRUTO, EXCETO ÓLEO DE MILHO\",\n\t\"1042200\": \"FABRICAÇÃO DE ÓLEOS VEGETAIS REFINADOS, EXCETO ÓLEO DE MILHO\",\n\t\"1043100\":\n\t\t\"FABRICAÇÃO DE MARGARINA E OUTRAS GORDURAS VEGETAIS E DE ÓLEOS NÃO COMESTÍVEIS DE ANIMAIS\",\n\t\"1051100\": \"PREPARAÇÃO DO LEITE\",\n\t\"1052000\": \"FABRICAÇÃO DE LATICÍNIOS\",\n\t\"1053800\": \"FABRICAÇÃO DE SORVETES E OUTROS GELADOS COMESTÍVEIS\",\n\t\"1061901\": \"BENEFICIAMENTO DE ARROZ\",\n\t\"1061902\": \"FABRICAÇÃO DE PRODUTOS DO ARROZ\",\n\t\"1062700\": \"MOAGEM DE TRIGO E FABRICAÇÃO DE DERIVADOS\",\n\t\"1063500\": \"FABRICAÇÃO DE FARINHA DE MANDIOCA E DERIVADOS\",\n\t\"1064300\": \"FABRICAÇÃO DE FARINHA DE MILHO E DERIVADOS, EXCETO ÓLEOS DE MILHO\",\n\t\"1065101\": \"FABRICAÇÃO DE AMIDOS E FÉCULAS DE VEGETAIS\",\n\t\"1065102\": \"FABRICAÇÃO DE ÓLEO DE MILHO EM BRUTO\",\n\t\"1065103\": \"FABRICAÇÃO DE ÓLEO DE MILHO REFINADO\",\n\t\"1066000\": \"FABRICAÇÃO DE ALIMENTOS PARA ANIMAIS\",\n\t\"1069400\": \"MOAGEM E FABRICAÇÃO DE PRODUTOS DE ORIGEM VEGETAL NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"1071600\": \"FABRICAÇÃO DE AÇÚCAR EM BRUTO\",\n\t\"1072401\": \"FABRICAÇÃO DE AÇÚCAR DE CANA REFINADO\",\n\t\"1072402\": \"FABRICAÇÃO DE AÇÚCAR DE CEREAIS (DEXTROSE) E DE BETERRABA\",\n\t\"1081301\": \"BENEFICIAMENTO DE CAFÉ\",\n\t\"1081302\": \"TORREFAÇÃO E MOAGEM DE CAFÉ\",\n\t\"1082100\": \"FABRICAÇÃO DE PRODUTOS À BASE DE CAFÉ\",\n\t\"1091101\": \"FABRICAÇÃO DE PRODUTOS DE PANIFICAÇÃO INDUSTRIAL\",\n\t\"1091102\":\n\t\t\"FABRICAÇÃO DE PRODUTOS DE PADARIA E CONFEITARIA COM PREDOMINÂNCIA  DE PRODUÇÃO PRÓPRIA\",\n\t\"1092900\": \"FABRICAÇÃO DE BISCOITOS E BOLACHAS\",\n\t\"1093701\": \"FABRICAÇÃO DE PRODUTOS DERIVADOS DO CACAU E DE CHOCOLATES\",\n\t\"1093702\": \"FABRICAÇÃO DE FRUTAS CRISTALIZADAS, BALAS E SEMELHANTES\",\n\t\"1094500\": \"FABRICAÇÃO DE MASSAS ALIMENTÍCIAS\",\n\t\"1095300\": \"FABRICAÇÃO DE ESPECIARIAS, MOLHOS, TEMPEROS E CONDIMENTOS\",\n\t\"1096100\": \"FABRICAÇÃO DE ALIMENTOS E PRATOS PRONTOS\",\n\t\"1099601\": \"FABRICAÇÃO DE VINAGRES\",\n\t\"1099602\": \"FABRICAÇÃO DE PÓS ALIMENTÍCIOS\",\n\t\"1099603\": \"FABRICAÇÃO DE FERMENTOS E LEVEDURAS\",\n\t\"1099604\": \"FABRICAÇÃO DE GELO COMUM\",\n\t\"1099605\": \"FABRICAÇÃO DE PRODUTOS PARA INFUSÃO (CHÁ, MATE, ETC.)\",\n\t\"1099606\": \"FABRICAÇÃO DE ADOÇANTES NATURAIS E ARTIFICIAIS\",\n\t\"1099607\": \"FABRICAÇÃO DE ALIMENTOS DIETÉTICOS E COMPLEMENTOS ALIMENTARES\",\n\t\"1099699\": \"FABRICAÇÃO DE OUTROS PRODUTOS ALIMENTÍCIOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"1111901\": \"FABRICAÇÃO DE AGUARDENTE DE CANA DE AÇÚCAR\",\n\t\"1111902\": \"FABRICAÇÃO DE OUTRAS AGUARDENTES E BEBIDAS DESTILADAS\",\n\t\"1112700\": \"FABRICAÇÃO DE VINHO\",\n\t\"1113501\": \"FABRICAÇÃO DE MALTE, INCLUSIVE MALTE UÍSQUE\",\n\t\"1113502\": \"FABRICAÇÃO DE CERVEJAS E CHOPES\",\n\t\"1121600\": \"FABRICAÇÃO DE ÁGUAS ENVASADAS\",\n\t\"1122401\": \"FABRICAÇÃO DE REFRIGERANTES\",\n\t\"1122402\": \"FABRICAÇÃO DE CHÁ MATE E OUTROS CHÁS PRONTOS PARA CONSUMO\",\n\t\"1122403\": \"FABRICAÇÃO DE REFRESCOS, XAROPES E PÓS PARA REFRESCOS, EXCETO REFRESCOS DE FRUTAS\",\n\t\"1122404\": \"FABRICAÇÃO DE BEBIDAS ISOTÔNICAS\",\n\t\"1122499\": \"FABRICAÇÃO DE OUTRAS BEBIDAS NÃO ALCOÓLICAS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"1210700\": \"PROCESSAMENTO INDUSTRIAL DO FUMO\",\n\t\"1220401\": \"FABRICAÇÃO DE CIGARROS\",\n\t\"1220402\": \"FABRICAÇÃO DE CIGARRILHAS E CHARUTOS\",\n\t\"1220403\": \"FABRICAÇÃO DE FILTROS PARA CIGARROS\",\n\t\"1220499\": \"FABRICAÇÃO DE OUTROS PRODUTOS DO FUMO, EXCETO CIGARROS, CIGARRILHAS E CHARUTOS\",\n\t\"1311100\": \"PREPARAÇÃO E FIAÇÃO DE FIBRAS DE ALGODÃO\",\n\t\"1312000\": \"PREPARAÇÃO E FIAÇÃO DE FIBRAS TÊXTEIS NATURAIS, EXCETO ALGODÃO\",\n\t\"1313800\": \"FIAÇÃO DE FIBRAS ARTIFICIAIS E SINTÉTICAS\",\n\t\"1314600\": \"FABRICAÇÃO DE LINHAS PARA COSTURAR E BORDAR\",\n\t\"1321900\": \"TECELAGEM DE FIOS DE ALGODÃO\",\n\t\"1322700\": \"TECELAGEM DE FIOS DE FIBRAS TÊXTEIS NATURAIS, EXCETO ALGODÃO\",\n\t\"1323500\": \"TECELAGEM DE FIOS DE FIBRAS ARTIFICIAIS E SINTÉTICAS\",\n\t\"1330800\": \"FABRICAÇÃO DE TECIDOS DE MALHA\",\n\t\"1340501\": \"ESTAMPARIA E TEXTURIZAÇÃO EM FIOS, TECIDOS, ARTEFATOS TÊXTEIS E PEÇAS DO VESTUÁRIO\",\n\t\"1340502\":\n\t\t\"ALVEJAMENTO, TINGIMENTO E TORÇÃO EM FIOS, TECIDOS, ARTEFATOS TÊXTEIS E PEÇAS DO VESTUÁRIO\",\n\t\"1340599\":\n\t\t\"OUTROS SERVIÇOS DE ACABAMENTO EM FIOS, TECIDOS, ARTEFATOS TÊXTEIS E PEÇAS DO VESTUÁRIO\",\n\t\"1351100\": \"FABRICAÇÃO DE ARTEFATOS TÊXTEIS PARA USO DOMÉSTICO\",\n\t\"1352900\": \"FABRICAÇÃO DE ARTEFATOS DE TAPEÇARIA\",\n\t\"1353700\": \"FABRICAÇÃO DE ARTEFATOS DE CORDOARIA\",\n\t\"1354500\": \"FABRICAÇÃO DE TECIDOS ESPECIAIS, INCLUSIVE ARTEFATOS\",\n\t\"1359600\": \"FABRICAÇÃO DE OUTROS PRODUTOS TÊXTEIS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"1411801\": \"CONFECÇÃO DE ROUPAS ÍNTIMAS\",\n\t\"1411802\": \"FACÇÃO DE ROUPAS ÍNTIMAS\",\n\t\"1412601\":\n\t\t\"CONFECÇÃO DE PEÇAS DE VESTUÁRIO, EXCETO ROUPAS ÍNTIMAS E AS CONFECCIONADAS SOB MEDIDA\",\n\t\"1412602\": \"CONFECÇÃO, SOB MEDIDA, DE PEÇAS DO VESTUÁRIO, EXCETO ROUPAS ÍNTIMAS\",\n\t\"1412603\": \"FACÇÃO DE PEÇAS DO VESTUÁRIO, EXCETO ROUPAS ÍNTIMAS\",\n\t\"1413401\": \"CONFECÇÃO DE ROUPAS PROFISSIONAIS, EXCETO SOB MEDIDA\",\n\t\"1413402\": \"CONFECÇÃO, SOB MEDIDA, DE ROUPAS PROFISSIONAIS\",\n\t\"1413403\": \"FACÇÃO DE ROUPAS PROFISSIONAIS\",\n\t\"1414200\": \"FABRICAÇÃO DE ACESSÓRIOS DO VESTUÁRIO, EXCETO PARA SEGURANÇA E PROTEÇÃO\",\n\t\"1421500\": \"FABRICAÇÃO DE MEIAS\",\n\t\"1422300\":\n\t\t\"FABRICAÇÃO DE ARTIGOS DO VESTUÁRIO, PRODUZIDOS EM MALHARIAS E TRICOTAGENS, EXCETO MEIAS\",\n\t\"1510600\": \"CURTIMENTO E OUTRAS PREPARAÇÕES DE COURO\",\n\t\"1521100\": \"FABRICAÇÃO DE ARTIGOS PARA VIAGEM, BOLSAS E SEMELHANTES DE QUALQUER MATERIAL\",\n\t\"1529700\": \"FABRICAÇÃO DE ARTEFATOS DE COURO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"1531901\": \"FABRICAÇÃO DE CALÇADOS DE COURO\",\n\t\"1531902\": \"ACABAMENTO DE CALÇADOS DE COURO SOB CONTRATO\",\n\t\"1532700\": \"FABRICAÇÃO DE TÊNIS DE QUALQUER MATERIAL\",\n\t\"1533500\": \"FABRICAÇÃO DE CALÇADOS DE MATERIAL SINTÉTICO\",\n\t\"1539400\": \"FABRICAÇÃO DE CALÇADOS DE MATERIAIS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"1540800\": \"FABRICAÇÃO DE PARTES PARA CALÇADOS, DE QUALQUER MATERIAL\",\n\t\"1610203\": \"SERRARIAS COM DESDOBRAMENTO DE MADEIRA EM BRUTO\",\n\t\"1610204\": \"SERRARIAS SEM DESDOBRAMENTO DE MADEIRA EM BRUTO - RESSERRAGEM\",\n\t\"1610205\": \"SERVIÇO DE TRATAMENTO DE MADEIRA REALIZADO SOB CONTRATO\",\n\t\"1621800\":\n\t\t\"FABRICAÇÃO DE MADEIRA LAMINADA E DE CHAPAS DE MADEIRA COMPENSADA, PRENSADA E AGLOMERADA\",\n\t\"1622601\": \"FABRICAÇÃO DE CASAS DE MADEIRA PRÉ FABRICADAS\",\n\t\"1622602\":\n\t\t\"FABRICAÇÃO DE ESQUADRIAS DE MADEIRA E DE PEÇAS DE MADEIRA PARA INSTALAÇÕES INDUSTRIAIS E COMERCIAIS\",\n\t\"1622699\": \"FABRICAÇÃO DE OUTROS ARTIGOS DE CARPINTARIA PARA CONSTRUÇÃO\",\n\t\"1623400\": \"FABRICAÇÃO DE ARTEFATOS DE TANOARIA E DE EMBALAGENS DE MADEIRA\",\n\t\"1629301\": \"FABRICAÇÃO DE ARTEFATOS DIVERSOS DE MADEIRA, EXCETO MÓVEIS\",\n\t\"1629302\":\n\t\t\"FABRICAÇÃO DE ARTEFATOS DIVERSOS DE CORTIÇA, BAMBU, PALHA, VIME E OUTROS MATERIAIS TRANÇADOS, EXCETO MÓVEIS\",\n\t\"1710900\": \"FABRICAÇÃO DE CELULOSE E OUTRAS PASTAS PARA A FABRICAÇÃO DE PAPEL\",\n\t\"1721400\": \"FABRICAÇÃO DE PAPEL\",\n\t\"1722200\": \"FABRICAÇÃO DE CARTOLINA E PAPEL CARTÃO\",\n\t\"1731100\": \"FABRICAÇÃO DE EMBALAGENS DE PAPEL\",\n\t\"1732000\": \"FABRICAÇÃO DE EMBALAGENS DE CARTOLINA E PAPEL CARTÃO\",\n\t\"1733800\": \"FABRICAÇÃO DE CHAPAS E DE EMBALAGENS DE PAPELÃO ONDULADO\",\n\t\"1741901\": \"FABRICAÇÃO DE FORMULÁRIOS CONTÍNUOS\",\n\t\"1741902\":\n\t\t\"FABRICAÇÃO DE PRODUTOS DE PAPEL, CARTOLINA, PAPEL CARTÃO E PAPELÃO ONDULADO PARA USO COMERCIAL E DE ESCRITÓRIO\",\n\t\"1742701\": \"FABRICAÇÃO DE FRALDAS DESCARTÁVEIS\",\n\t\"1742702\": \"FABRICAÇÃO DE ABSORVENTES HIGIÊNICOS\",\n\t\"1742799\":\n\t\t\"FABRICAÇÃO DE PRODUTOS DE PAPEL PARA USO DOMÉSTICO E HIGIÊNICO SANITÁRIO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"1749400\":\n\t\t\"FABRICAÇÃO DE PRODUTOS DE PASTAS CELULÓSICAS, PAPEL, CARTOLINA, PAPEL CARTÃO E PAPELÃO ONDULADO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"1811301\": \"IMPRESSÃO DE JORNAIS\",\n\t\"1811302\": \"IMPRESSÃO DE LIVROS, REVISTAS E OUTRAS PUBLICAÇÕES PERIÓDICAS\",\n\t\"1812100\": \"IMPRESSÃO DE MATERIAL DE SEGURANÇA\",\n\t\"1813001\": \"IMPRESSÃO DE MATERIAL PARA USO PUBLICITÁRIO\",\n\t\"1813099\": \"IMPRESSÃO DE MATERIAL PARA OUTROS USOS\",\n\t\"1821100\": \"SERVIÇOS DE PRÉ IMPRESSÃO\",\n\t\"1822901\": \"SERVIÇOS DE ENCADERNAÇÃO E PLASTIFICAÇÃO\",\n\t\"1822999\": \"SERVIÇOS DE ACABAMENTOS GRÁFICOS, EXCETO ENCADERNAÇÃO E PLASTIFICAÇÃO\",\n\t\"1830001\": \"REPRODUÇÃO DE SOM EM QUALQUER SUPORTE\",\n\t\"1830002\": \"REPRODUÇÃO DE VÍDEO EM QUALQUER SUPORTE\",\n\t\"1830003\": \"REPRODUÇÃO DE SOFTWARE EM QUALQUER SUPORTE\",\n\t\"1910100\": \"COQUERIAS\",\n\t\"1921700\": \"FABRICAÇÃO DE PRODUTOS DO REFINO DE PETRÓLEO\",\n\t\"1922501\": \"FORMULAÇÃO DE COMBUSTÍVEIS\",\n\t\"1922502\": \"RERREFINO DE ÓLEOS LUBRIFICANTES\",\n\t\"1922599\": \"FABRICAÇÃO DE OUTROS PRODUTOS DERIVADOS DO PETRÓLEO, EXCETO PRODUTOS DO REFINO\",\n\t\"1931400\": \"FABRICAÇÃO DE ÁLCOOL\",\n\t\"1932200\": \"FABRICAÇÃO DE BIOCOMBUSTÍVEIS, EXCETO ÁLCOOL\",\n\t\"2011800\": \"FABRICAÇÃO DE CLORO E ÁLCALIS\",\n\t\"2012600\": \"FABRICAÇÃO DE INTERMEDIÁRIOS PARA FERTILIZANTES\",\n\t\"2013401\": \"FABRICAÇÃO DE ADUBOS E FERTILIZANTES ORGANOMINERAIS\",\n\t\"2013402\": \"FABRICAÇÃO DE ADUBOS E FERTILIZANTES, EXCETO ORGANOMINERAIS\",\n\t\"2014200\": \"FABRICAÇÃO DE GASES INDUSTRIAIS\",\n\t\"2019301\": \"ELABORAÇÃO DE COMBUSTÍVEIS NUCLEARES\",\n\t\"2019399\": \"FABRICAÇÃO DE OUTROS PRODUTOS QUÍMICOS INORGÂNICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2021500\": \"FABRICAÇÃO DE PRODUTOS PETROQUÍMICOS BÁSICOS\",\n\t\"2022300\": \"FABRICAÇÃO DE INTERMEDIÁRIOS PARA PLASTIFICANTES, RESINAS E FIBRAS\",\n\t\"2029100\": \"FABRICAÇÃO DE PRODUTOS QUÍMICOS ORGÂNICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2031200\": \"FABRICAÇÃO DE RESINAS TERMOPLÁSTICAS\",\n\t\"2032100\": \"FABRICAÇÃO DE RESINAS TERMOFIXAS\",\n\t\"2033900\": \"FABRICAÇÃO DE ELASTÔMEROS\",\n\t\"2040100\": \"FABRICAÇÃO DE FIBRAS ARTIFICIAIS E SINTÉTICAS\",\n\t\"2051700\": \"FABRICAÇÃO DE DEFENSIVOS AGRÍCOLAS\",\n\t\"2052500\": \"FABRICAÇÃO DE DESINFESTANTES DOMISSANITÁRIOS\",\n\t\"2061400\": \"FABRICAÇÃO DE SABÕES E DETERGENTES SINTÉTICOS\",\n\t\"2062200\": \"FABRICAÇÃO DE PRODUTOS DE LIMPEZA E POLIMENTO\",\n\t\"2063100\": \"FABRICAÇÃO DE COSMÉTICOS, PRODUTOS DE PERFUMARIA E DE HIGIENE PESSOAL\",\n\t\"2071100\": \"FABRICAÇÃO DE TINTAS, VERNIZES, ESMALTES E LACAS\",\n\t\"2072000\": \"FABRICAÇÃO DE TINTAS DE IMPRESSÃO\",\n\t\"2073800\": \"FABRICAÇÃO DE IMPERMEABILIZANTES, SOLVENTES E PRODUTOS AFINS\",\n\t\"2091600\": \"FABRICAÇÃO DE ADESIVOS E SELANTES\",\n\t\"2092401\": \"FABRICAÇÃO DE PÓLVORAS, EXPLOSIVOS E DETONANTES\",\n\t\"2092402\": \"FABRICAÇÃO DE ARTIGOS PIROTÉCNICOS\",\n\t\"2092403\": \"FABRICAÇÃO DE FÓSFOROS DE SEGURANÇA\",\n\t\"2093200\": \"FABRICAÇÃO DE ADITIVOS DE USO INDUSTRIAL\",\n\t\"2094100\": \"FABRICAÇÃO DE CATALISADORES\",\n\t\"2099101\":\n\t\t\"FABRICAÇÃO DE CHAPAS, FILMES, PAPÉIS E OUTROS MATERIAIS E PRODUTOS QUÍMICOS PARA FOTOGRAFIA\",\n\t\"2099199\": \"FABRICAÇÃO DE OUTROS PRODUTOS QUÍMICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2110600\": \"FABRICAÇÃO DE PRODUTOS FARMOQUÍMICOS\",\n\t\"2121101\": \"FABRICAÇÃO DE MEDICAMENTOS ALOPÁTICOS PARA USO HUMANO\",\n\t\"2121102\": \"FABRICAÇÃO DE MEDICAMENTOS HOMEOPÁTICOS PARA USO HUMANO\",\n\t\"2121103\": \"FABRICAÇÃO DE MEDICAMENTOS FITOTERÁPICOS PARA USO HUMANO\",\n\t\"2122000\": \"FABRICAÇÃO DE MEDICAMENTOS PARA USO VETERINÁRIO\",\n\t\"2123800\": \"FABRICAÇÃO DE PREPARAÇÕES FARMACÊUTICAS\",\n\t\"2211100\": \"FABRICAÇÃO DE PNEUMÁTICOS E DE CÂMARAS DE AR\",\n\t\"2212900\": \"REFORMA DE PNEUMÁTICOS USADOS\",\n\t\"2219600\": \"FABRICAÇÃO DE ARTEFATOS DE BORRACHA NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2221800\": \"FABRICAÇÃO DE LAMINADOS PLANOS E TUBULARES DE MATERIAL PLÁSTICO\",\n\t\"2222600\": \"FABRICAÇÃO DE EMBALAGENS DE MATERIAL PLÁSTICO\",\n\t\"2223400\": \"FABRICAÇÃO DE TUBOS E ACESSÓRIOS DE MATERIAL PLÁSTICO PARA USO NA CONSTRUÇÃO\",\n\t\"2229301\": \"FABRICAÇÃO DE ARTEFATOS DE MATERIAL PLÁSTICO PARA USO PESSOAL E DOMÉSTICO\",\n\t\"2229302\": \"FABRICAÇÃO DE ARTEFATOS DE MATERIAL PLÁSTICO PARA USOS INDUSTRIAIS\",\n\t\"2229303\":\n\t\t\"FABRICAÇÃO DE ARTEFATOS DE MATERIAL PLÁSTICO PARA USO NA CONSTRUÇÃO, EXCETO TUBOS E ACESSÓRIOS\",\n\t\"2229399\":\n\t\t\"FABRICAÇÃO DE ARTEFATOS DE MATERIAL PLÁSTICO PARA OUTROS USOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2311700\": \"FABRICAÇÃO DE VIDRO PLANO E DE SEGURANÇA\",\n\t\"2312500\": \"FABRICAÇÃO DE EMBALAGENS DE VIDRO\",\n\t\"2319200\": \"FABRICAÇÃO DE ARTIGOS DE VIDRO\",\n\t\"2320600\": \"FABRICAÇÃO DE CIMENTO\",\n\t\"2330301\": \"FABRICAÇÃO DE ESTRUTURAS PRÉ MOLDADAS DE CONCRETO ARMADO, EM SÉRIE E SOB ENCOMENDA\",\n\t\"2330302\": \"FABRICAÇÃO DE ARTEFATOS DE CIMENTO PARA USO NA CONSTRUÇÃO\",\n\t\"2330303\": \"FABRICAÇÃO DE ARTEFATOS DE FIBROCIMENTO PARA USO NA CONSTRUÇÃO\",\n\t\"2330304\": \"FABRICAÇÃO DE CASAS PRÉ MOLDADAS DE CONCRETO\",\n\t\"2330305\": \"PREPARAÇÃO DE MASSA DE CONCRETO E ARGAMASSA PARA CONSTRUÇÃO\",\n\t\"2330399\":\n\t\t\"FABRICAÇÃO DE OUTROS ARTEFATOS E PRODUTOS DE CONCRETO, CIMENTO, FIBROCIMENTO, GESSO E MATERIAIS SEMELHANTES\",\n\t\"2341900\": \"FABRICAÇÃO DE PRODUTOS CERÂMICOS REFRATÁRIOS\",\n\t\"2342701\": \"FABRICAÇÃO DE AZULEJOS E PISOS\",\n\t\"2342702\":\n\t\t\"FABRICAÇÃO DE ARTEFATOS DE CERÂMICA E BARRO COZIDO PARA USO NA CONSTRUÇÃO, EXCETO AZULEJOS E PISOS\",\n\t\"2349401\": \"FABRICAÇÃO DE MATERIAL SANITÁRIO DE CERÂMICA\",\n\t\"2349499\": \"FABRICAÇÃO DE PRODUTOS CERÂMICOS NÃO REFRATÁRIOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2391501\": \"BRITAMENTO DE PEDRAS, EXCETO ASSOCIADO À EXTRAÇÃO\",\n\t\"2391502\": \"APARELHAMENTO DE PEDRAS PARA CONSTRUÇÃO, EXCETO ASSOCIADO À EXTRAÇÃO\",\n\t\"2391503\":\n\t\t\"APARELHAMENTO DE PLACAS E EXECUÇÃO DE TRABALHOS EM MÁRMORE, GRANITO, ARDÓSIA E OUTRAS PEDRAS\",\n\t\"2392300\": \"FABRICAÇÃO DE CAL E GESSO\",\n\t\"2399101\":\n\t\t\"DECORAÇÃO, LAPIDAÇÃO, GRAVAÇÃO, VITRIFICAÇÃO E OUTROS TRABALHOS EM CERÂMICA, LOUÇA, VIDRO E CRISTAL\",\n\t\"2399102\": \"FABRICAÇÃO DE ABRASIVOS\",\n\t\"2399199\":\n\t\t\"FABRICAÇÃO DE OUTROS PRODUTOS DE MINERAIS NÃO METÁLICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2411300\": \"PRODUÇÃO DE FERRO GUSA\",\n\t\"2412100\": \"PRODUÇÃO DE FERROLIGAS\",\n\t\"2421100\": \"PRODUÇÃO DE SEMI ACABADOS DE AÇO\",\n\t\"2422901\": \"PRODUÇÃO DE LAMINADOS PLANOS DE AÇO AO CARBONO, REVESTIDOS OU NÃO\",\n\t\"2422902\": \"PRODUÇÃO DE LAMINADOS PLANOS DE AÇOS ESPECIAIS\",\n\t\"2423701\": \"PRODUÇÃO DE TUBOS DE AÇO SEM COSTURA\",\n\t\"2423702\": \"PRODUÇÃO DE LAMINADOS LONGOS DE AÇO, EXCETO TUBOS\",\n\t\"2424501\": \"PRODUÇÃO DE ARAMES DE AÇO\",\n\t\"2424502\": \"PRODUÇÃO DE RELAMINADOS, TREFILADOS E PERFILADOS DE AÇO, EXCETO ARAMES\",\n\t\"2431800\": \"PRODUÇÃO DE TUBOS DE AÇO COM COSTURA\",\n\t\"2439300\": \"PRODUÇÃO DE OUTROS TUBOS DE FERRO E AÇO\",\n\t\"2441501\": \"PRODUÇÃO DE ALUMÍNIO E SUAS LIGAS EM FORMAS PRIMÁRIAS\",\n\t\"2441502\": \"PRODUÇÃO DE LAMINADOS DE ALUMÍNIO\",\n\t\"2442300\": \"METALURGIA DOS METAIS PRECIOSOS\",\n\t\"2443100\": \"METALURGIA DO COBRE\",\n\t\"2449101\": \"PRODUÇÃO DE ZINCO EM FORMAS PRIMÁRIAS\",\n\t\"2449102\": \"PRODUÇÃO DE LAMINADOS DE ZINCO\",\n\t\"2449103\": \"FABRICAÇÃO DE ÂNODOS PARA GALVANOPLASTIA\",\n\t\"2449199\":\n\t\t\"METALURGIA DE OUTROS METAIS NÃO FERROSOS E SUAS LIGAS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2451200\": \"FUNDIÇÃO DE FERRO E AÇO\",\n\t\"2452100\": \"FUNDIÇÃO DE METAIS NÃO FERROSOS E SUAS LIGAS\",\n\t\"2511000\": \"FABRICAÇÃO DE ESTRUTURAS METÁLICAS\",\n\t\"2512800\": \"FABRICAÇÃO DE ESQUADRIAS DE METAL\",\n\t\"2513600\": \"FABRICAÇÃO DE OBRAS DE CALDEIRARIA PESADA\",\n\t\"2521700\": \"FABRICAÇÃO DE TANQUES, RESERVATÓRIOS METÁLICOS E CALDEIRAS PARA AQUECIMENTO CENTRAL\",\n\t\"2522500\":\n\t\t\"FABRICAÇÃO DE CALDEIRAS GERADORAS DE VAPOR, EXCETO PARA AQUECIMENTO CENTRAL E PARA VEÍCULOS\",\n\t\"2531401\": \"PRODUÇÃO DE FORJADOS DE AÇO\",\n\t\"2531402\": \"PRODUÇÃO DE FORJADOS DE METAIS NÃO FERROSOS E SUAS LIGAS\",\n\t\"2532201\": \"PRODUÇÃO DE ARTEFATOS ESTAMPADOS DE METAL\",\n\t\"2532202\": \"METALURGIA DO PÓ\",\n\t\"2539001\": \"SERVIÇOS DE USINAGEM, TORNEARIA E SOLDA\",\n\t\"2539002\": \"SERVIÇOS DE TRATAMENTO E REVESTIMENTO EM METAIS\",\n\t\"2541100\": \"FABRICAÇÃO DE ARTIGOS DE CUTELARIA\",\n\t\"2542000\": \"FABRICAÇÃO DE ARTIGOS DE SERRALHERIA, EXCETO ESQUADRIAS\",\n\t\"2543800\": \"FABRICAÇÃO DE FERRAMENTAS\",\n\t\"2550101\": \"FABRICAÇÃO DE EQUIPAMENTO BÉLICO PESADO, EXCETO VEÍCULOS MILITARES DE COMBATE\",\n\t\"2550102\": \"FABRICAÇÃO DE ARMAS DE FOGO, OUTRAS ARMAS  E MUNIÇÕES\",\n\t\"2591800\": \"FABRICAÇÃO DE EMBALAGENS METÁLICAS\",\n\t\"2592601\": \"FABRICAÇÃO DE PRODUTOS DE TREFILADOS DE METAL PADRONIZADOS\",\n\t\"2592602\": \"FABRICAÇÃO DE PRODUTOS DE TREFILADOS DE METAL, EXCETO PADRONIZADOS\",\n\t\"2593400\": \"FABRICAÇÃO DE ARTIGOS DE METAL PARA USO DOMÉSTICO E PESSOAL\",\n\t\"2599301\": \"SERVIÇOS DE CONFECÇÃO DE ARMAÇÕES METÁLICAS PARA A CONSTRUÇÃO\",\n\t\"2599302\": \"SERVIÇO DE CORTE E DOBRA DE METAIS\",\n\t\"2599399\": \"FABRICAÇÃO DE OUTROS PRODUTOS DE METAL NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2610800\": \"FABRICAÇÃO DE COMPONENTES ELETRÔNICOS\",\n\t\"2621300\": \"FABRICAÇÃO DE EQUIPAMENTOS DE INFORMÁTICA\",\n\t\"2622100\": \"FABRICAÇÃO DE PERIFÉRICOS PARA EQUIPAMENTOS DE INFORMÁTICA\",\n\t\"2631100\": \"FABRICAÇÃO DE EQUIPAMENTOS TRANSMISSORES DE COMUNICAÇÃO, PEÇAS E ACESSÓRIOS\",\n\t\"2632900\":\n\t\t\"FABRICAÇÃO DE APARELHOS TELEFÔNICOS E DE OUTROS EQUIPAMENTOS DE COMUNICAÇÃO, PEÇAS E ACESSÓRIOS\",\n\t\"2640000\":\n\t\t\"FABRICAÇÃO DE APARELHOS DE RECEPÇÃO, REPRODUÇÃO, GRAVAÇÃO E AMPLIFICAÇÃO DE ÁUDIO E VÍDEO\",\n\t\"2651500\": \"FABRICAÇÃO DE APARELHOS E EQUIPAMENTOS DE MEDIDA, TESTE E CONTROLE\",\n\t\"2652300\": \"FABRICAÇÃO DE CRONÔMETROS E RELÓGIOS\",\n\t\"2660400\":\n\t\t\"FABRICAÇÃO DE APARELHOS ELETROMÉDICOS E ELETROTERAPÊUTICOS E EQUIPAMENTOS DE IRRADIAÇÃO\",\n\t\"2670101\": \"FABRICAÇÃO DE EQUIPAMENTOS E INSTRUMENTOS ÓPTICOS, PEÇAS E ACESSÓRIOS\",\n\t\"2670102\": \"FABRICAÇÃO DE APARELHOS FOTOGRÁFICOS E CINEMATOGRÁFICOS, PEÇAS E ACESSÓRIOS\",\n\t\"2680900\": \"FABRICAÇÃO DE MÍDIAS VIRGENS, MAGNÉTICAS E ÓPTICAS\",\n\t\"2710401\": \"FABRICAÇÃO DE GERADORES DE CORRENTE CONTÍNUA E ALTERNADA, PEÇAS E ACESSÓRIOS\",\n\t\"2710402\":\n\t\t\"FABRICAÇÃO DE TRANSFORMADORES, INDUTORES, CONVERSORES, SINCRONIZADORES E SEMELHANTES, PEÇAS E ACESSÓRIOS\",\n\t\"2710403\": \"FABRICAÇÃO DE MOTORES ELÉTRICOS, PEÇAS E ACESSÓRIOS\",\n\t\"2721000\":\n\t\t\"FABRICAÇÃO DE PILHAS, BATERIAS E ACUMULADORES ELÉTRICOS, EXCETO PARA VEÍCULOS AUTOMOTORES\",\n\t\"2722801\": \"FABRICAÇÃO DE BATERIAS E ACUMULADORES PARA VEÍCULOS AUTOMOTORES\",\n\t\"2722802\": \"RECONDICIONAMENTO DE BATERIAS E ACUMULADORES PARA VEÍCULOS AUTOMOTORES\",\n\t\"2731700\":\n\t\t\"FABRICAÇÃO DE APARELHOS E EQUIPAMENTOS PARA DISTRIBUIÇÃO E CONTROLE DE ENERGIA ELÉTRICA\",\n\t\"2732500\": \"FABRICAÇÃO DE MATERIAL ELÉTRICO PARA INSTALAÇÕES EM CIRCUITO DE CONSUMO\",\n\t\"2733300\": \"FABRICAÇÃO DE FIOS, CABOS E CONDUTORES ELÉTRICOS ISOLADOS\",\n\t\"2740601\": \"FABRICAÇÃO DE LÂMPADAS\",\n\t\"2740602\": \"FABRICAÇÃO DE LUMINÁRIAS E OUTROS EQUIPAMENTOS DE ILUMINAÇÃO\",\n\t\"2751100\":\n\t\t\"FABRICAÇÃO DE FOGÕES, REFRIGERADORES E MÁQUINAS DE LAVAR E SECAR PARA USO DOMÉSTICO, PEÇAS E ACESSÓRIOS\",\n\t\"2759701\": \"FABRICAÇÃO DE APARELHOS ELÉTRICOS DE USO PESSOAL, PEÇAS E ACESSÓRIOS\",\n\t\"2759799\":\n\t\t\"FABRICAÇÃO DE OUTROS APARELHOS ELETRODOMÉSTICOS NÃO ESPECIFICADOS ANTERIORMENTE, PEÇAS E ACESSÓRIOS\",\n\t\"2790201\":\n\t\t\"FABRICAÇÃO DE ELETRODOS, CONTATOS E OUTROS ARTIGOS DE CARVÃO E GRAFITA PARA USO ELÉTRICO, ELETROÍMÃS E ISOLADORES\",\n\t\"2790202\": \"FABRICAÇÃO DE EQUIPAMENTOS PARA SINALIZAÇÃO E ALARME\",\n\t\"2790299\":\n\t\t\"FABRICAÇÃO DE OUTROS EQUIPAMENTOS E APARELHOS ELÉTRICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"2811900\":\n\t\t\"FABRICAÇÃO DE MOTORES E TURBINAS, PEÇAS E ACESSÓRIOS, EXCETO PARA AVIÕES E VEÍCULOS RODOVIÁRIOS\",\n\t\"2812700\":\n\t\t\"FABRICAÇÃO DE EQUIPAMENTOS HIDRÁULICOS E PNEUMÁTICOS, PEÇAS E ACESSÓRIOS, EXCETO VÁLVULAS\",\n\t\"2813500\": \"FABRICAÇÃO DE VÁLVULAS, REGISTROS E DISPOSITIVOS SEMELHANTES, PEÇAS E ACESSÓRIOS\",\n\t\"2814301\": \"FABRICAÇÃO DE COMPRESSORES PARA USO INDUSTRIAL, PEÇAS E ACESSÓRIOS\",\n\t\"2814302\": \"FABRICAÇÃO DE COMPRESSORES PARA USO NÃO INDUSTRIAL, PEÇAS E ACESSÓRIOS\",\n\t\"2815101\": \"FABRICAÇÃO DE ROLAMENTOS PARA FINS INDUSTRIAIS\",\n\t\"2815102\": \"FABRICAÇÃO DE EQUIPAMENTOS DE TRANSMISSÃO PARA FINS INDUSTRIAIS, EXCETO ROLAMENTOS\",\n\t\"2821601\":\n\t\t\"FABRICAÇÃO DE FORNOS INDUSTRIAIS, APARELHOS E EQUIPAMENTOS NÃO ELÉTRICOS PARA INSTALAÇÕES TÉRMICAS, PEÇAS E ACESSÓRIOS\",\n\t\"2821602\": \"FABRICAÇÃO DE ESTUFAS E FORNOS ELÉTRICOS PARA FINS INDUSTRIAIS, PEÇAS E ACESSÓRIOS\",\n\t\"2822401\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS, EQUIPAMENTOS E APARELHOS PARA TRANSPORTE E ELEVAÇÃO DE PESSOAS, PEÇAS E ACESSÓRIOS\",\n\t\"2822402\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS, EQUIPAMENTOS E APARELHOS PARA TRANSPORTE E ELEVAÇÃO DE CARGAS, PEÇAS E ACESSÓRIOS\",\n\t\"2823200\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E APARELHOS DE REFRIGERAÇÃO E VENTILAÇÃO PARA USO INDUSTRIAL E COMERCIAL, PEÇAS E ACESSÓRIOS\",\n\t\"2824101\": \"FABRICAÇÃO DE APARELHOS E EQUIPAMENTOS DE AR CONDICIONADO PARA USO INDUSTRIAL\",\n\t\"2824102\": \"FABRICAÇÃO DE APARELHOS E EQUIPAMENTOS DE AR CONDICIONADO PARA USO NÃO INDUSTRIAL\",\n\t\"2825900\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA SANEAMENTO BÁSICO E AMBIENTAL, PEÇAS E ACESSÓRIOS\",\n\t\"2829101\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS DE ESCREVER, CALCULAR E OUTROS EQUIPAMENTOS NÃO ELETRÔNICOS PARA ESCRITÓRIO, PEÇAS E ACESSÓRIOS\",\n\t\"2829199\":\n\t\t\"FABRICAÇÃO DE OUTRAS MÁQUINAS E EQUIPAMENTOS DE USO GERAL NÃO ESPECIFICADOS ANTERIORMENTE, PEÇAS E ACESSÓRIOS\",\n\t\"2831300\": \"FABRICAÇÃO DE TRATORES AGRÍCOLAS, PEÇAS E ACESSÓRIOS\",\n\t\"2832100\": \"FABRICAÇÃO DE EQUIPAMENTOS PARA IRRIGAÇÃO AGRÍCOLA, PEÇAS E ACESSÓRIOS\",\n\t\"2833000\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA A AGRICULTURA E PECUÁRIA, PEÇAS E ACESSÓRIOS, EXCETO PARA IRRIGAÇÃO\",\n\t\"2840200\": \"FABRICAÇÃO DE MÁQUINAS FERRAMENTA, PEÇAS E ACESSÓRIOS\",\n\t\"2851800\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA A PROSPECÇÃO E EXTRAÇÃO DE PETRÓLEO, PEÇAS E ACESSÓRIOS\",\n\t\"2852600\":\n\t\t\"FABRICAÇÃO DE OUTRAS MÁQUINAS E EQUIPAMENTOS PARA USO NA EXTRAÇÃO MINERAL, PEÇAS E ACESSÓRIOS, EXCETO NA EXTRAÇÃO DE PETRÓLEO\",\n\t\"2853400\": \"FABRICAÇÃO DE TRATORES, PEÇAS E ACESSÓRIOS, EXCETO AGRÍCOLAS\",\n\t\"2854200\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA TERRAPLENAGEM, PAVIMENTAÇÃO E CONSTRUÇÃO, PEÇAS E ACESSÓRIOS, EXCETO TRATORES\",\n\t\"2861500\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS PARA A INDÚSTRIA METALÚRGICA, PEÇAS E ACESSÓRIOS, EXCETO MÁQUINAS FERRAMENTA\",\n\t\"2862300\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA AS INDÚSTRIAS DE ALIMENTOS, BEBIDAS E FUMO, PEÇAS E ACESSÓRIOS\",\n\t\"2863100\": \"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA A INDÚSTRIA TÊXTIL, PEÇAS E ACESSÓRIOS\",\n\t\"2864000\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA AS INDÚSTRIAS DO VESTUÁRIO, DO COURO E DE CALÇADOS, PEÇAS E ACESSÓRIOS\",\n\t\"2865800\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA AS INDÚSTRIAS DE CELULOSE, PAPEL E PAPELÃO E ARTEFATOS, PEÇAS E ACESSÓRIOS\",\n\t\"2866600\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA A INDÚSTRIA DO PLÁSTICO, PEÇAS E ACESSÓRIOS\",\n\t\"2869100\":\n\t\t\"FABRICAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA USO INDUSTRIAL ESPECÍFICO NÃO ESPECIFICADOS ANTERIORMENTE, PEÇAS E ACESSÓRIOS\",\n\t\"2910701\": \"FABRICAÇÃO DE AUTOMÓVEIS, CAMIONETAS E UTILITÁRIOS\",\n\t\"2910702\": \"FABRICAÇÃO DE CHASSIS COM MOTOR PARA AUTOMÓVEIS, CAMIONETAS E UTILITÁRIOS\",\n\t\"2910703\": \"FABRICAÇÃO DE MOTORES PARA AUTOMÓVEIS, CAMIONETAS E UTILITÁRIOS\",\n\t\"2920401\": \"FABRICAÇÃO DE CAMINHÕES E ÔNIBUS\",\n\t\"2920402\": \"FABRICAÇÃO DE MOTORES PARA CAMINHÕES E ÔNIBUS\",\n\t\"2930101\": \"FABRICAÇÃO DE CABINES, CARROCERIAS E REBOQUES PARA CAMINHÕES\",\n\t\"2930102\": \"FABRICAÇÃO DE CARROCERIAS PARA ÔNIBUS\",\n\t\"2930103\":\n\t\t\"FABRICAÇÃO DE CABINES, CARROCERIAS E REBOQUES PARA OUTROS VEÍCULOS AUTOMOTORES, EXCETO CAMINHÕES E ÔNIBUS\",\n\t\"2941700\": \"FABRICAÇÃO DE PEÇAS E ACESSÓRIOS PARA O SISTEMA MOTOR DE VEÍCULOS AUTOMOTORES\",\n\t\"2942500\":\n\t\t\"FABRICAÇÃO DE PEÇAS E ACESSÓRIOS PARA OS SISTEMAS DE MARCHA E TRANSMISSÃO DE VEÍCULOS AUTOMOTORES\",\n\t\"2943300\": \"FABRICAÇÃO DE PEÇAS E ACESSÓRIOS PARA O SISTEMA DE FREIOS DE VEÍCULOS AUTOMOTORES\",\n\t\"2944100\":\n\t\t\"FABRICAÇÃO DE PEÇAS E ACESSÓRIOS PARA O SISTEMA DE DIREÇÃO E SUSPENSÃO DE VEÍCULOS AUTOMOTORES\",\n\t\"2945000\":\n\t\t\"FABRICAÇÃO DE MATERIAL ELÉTRICO E ELETRÔNICO PARA VEÍCULOS AUTOMOTORES, EXCETO BATERIAS\",\n\t\"2949201\": \"FABRICAÇÃO DE BANCOS E ESTOFADOS PARA VEÍCULOS AUTOMOTORES\",\n\t\"2949299\":\n\t\t\"FABRICAÇÃO DE OUTRAS PEÇAS E ACESSÓRIOS PARA VEÍCULOS AUTOMOTORES NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"2950600\": \"RECONDICIONAMENTO E RECUPERAÇÃO DE MOTORES PARA VEÍCULOS AUTOMOTORES\",\n\t\"3011301\": \"CONSTRUÇÃO DE EMBARCAÇÕES DE GRANDE PORTE\",\n\t\"3011302\":\n\t\t\"CONSTRUÇÃO DE EMBARCAÇÕES PARA USO COMERCIAL E PARA USOS ESPECIAIS, EXCETO DE GRANDE PORTE\",\n\t\"3012100\": \"CONSTRUÇÃO DE EMBARCAÇÕES PARA ESPORTE E LAZER\",\n\t\"3031800\": \"FABRICAÇÃO DE LOCOMOTIVAS, VAGÕES E OUTROS MATERIAIS RODANTES\",\n\t\"3032600\": \"FABRICAÇÃO DE PEÇAS E ACESSÓRIOS PARA VEÍCULOS FERROVIÁRIOS\",\n\t\"3041500\": \"FABRICAÇÃO DE AERONAVES\",\n\t\"3042300\": \"FABRICAÇÃO DE TURBINAS, MOTORES E OUTROS COMPONENTES E PEÇAS PARA AERONAVES\",\n\t\"3050400\": \"FABRICAÇÃO DE VEÍCULOS MILITARES DE COMBATE\",\n\t\"3091101\": \"FABRICAÇÃO DE MOTOCICLETAS\",\n\t\"3091102\": \"FABRICAÇÃO DE PEÇAS E ACESSÓRIOS PARA MOTOCICLETAS\",\n\t\"3092000\": \"FABRICAÇÃO DE BICICLETAS E TRICICLOS NÃO MOTORIZADOS, PEÇAS E ACESSÓRIOS\",\n\t\"3099700\": \"FABRICAÇÃO DE EQUIPAMENTOS DE TRANSPORTE NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"3101200\": \"FABRICAÇÃO DE MÓVEIS COM PREDOMINÂNCIA DE MADEIRA\",\n\t\"3102100\": \"FABRICAÇÃO DE MÓVEIS COM PREDOMINÂNCIA DE METAL\",\n\t\"3103900\": \"FABRICAÇÃO DE MÓVEIS DE OUTROS MATERIAIS, EXCETO MADEIRA E METAL\",\n\t\"3104700\": \"FABRICAÇÃO DE COLCHÕES\",\n\t\"3211601\": \"LAPIDAÇÃO DE GEMAS\",\n\t\"3211602\": \"FABRICAÇÃO DE ARTEFATOS DE JOALHERIA E OURIVESARIA\",\n\t\"3211603\": \"CUNHAGEM DE MOEDAS E MEDALHAS\",\n\t\"3212400\": \"FABRICAÇÃO DE BIJUTERIAS E ARTEFATOS SEMELHANTES\",\n\t\"3220500\": \"FABRICAÇÃO DE INSTRUMENTOS MUSICAIS, PEÇAS E ACESSÓRIOS\",\n\t\"3230200\": \"FABRICAÇÃO DE ARTEFATOS PARA PESCA E ESPORTE\",\n\t\"3240001\": \"FABRICAÇÃO DE JOGOS ELETRÔNICOS\",\n\t\"3240002\": \"FABRICAÇÃO DE MESAS DE BILHAR, DE SINUCA E ACESSÓRIOS NÃO ASSOCIADA À LOCAÇÃO\",\n\t\"3240003\": \"FABRICAÇÃO DE MESAS DE BILHAR, DE SINUCA E ACESSÓRIOS ASSOCIADA À LOCAÇÃO\",\n\t\"3240099\": \"FABRICAÇÃO DE OUTROS BRINQUEDOS E JOGOS RECREATIVOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"3250701\":\n\t\t\"FABRICAÇÃO DE INSTRUMENTOS NÃO ELETRÔNICOS E UTENSÍLIOS PARA USO MÉDICO, CIRÚRGICO, ODONTOLÓGICO E DE LABORATÓRIO\",\n\t\"3250702\": \"FABRICAÇÃO DE MOBILIÁRIO PARA USO MÉDICO, CIRÚRGICO, ODONTOLÓGICO E DE LABORATÓRIO\",\n\t\"3250703\":\n\t\t\"FABRICAÇÃO DE APARELHOS E UTENSÍLIOS PARA CORREÇÃO DE DEFEITOS FÍSICOS E APARELHOS ORTOPÉDICOS EM GERAL SOB ENCOMENDA\",\n\t\"3250704\":\n\t\t\"FABRICAÇÃO DE APARELHOS E UTENSÍLIOS PARA CORREÇÃO DE DEFEITOS FÍSICOS E APARELHOS ORTOPÉDICOS EM GERAL, EXCETO SOB ENCOMENDA\",\n\t\"3250705\": \"FABRICAÇÃO DE MATERIAIS PARA MEDICINA E ODONTOLOGIA\",\n\t\"3250706\": \"SERVIÇOS DE PRÓTESE DENTÁRIA\",\n\t\"3250707\": \"FABRICAÇÃO DE ARTIGOS ÓPTICOS\",\n\t\"3250709\": \"SERVIÇO DE LABORATÓRIO ÓPTICO\",\n\t\"3291400\": \"FABRICAÇÃO DE ESCOVAS, PINCÉIS E VASSOURAS\",\n\t\"3292201\": \"FABRICAÇÃO DE ROUPAS DE PROTEÇÃO E SEGURANÇA E RESISTENTES A FOGO\",\n\t\"3292202\": \"FABRICAÇÃO DE EQUIPAMENTOS E ACESSÓRIOS PARA SEGURANÇA PESSOAL E PROFISSIONAL\",\n\t\"3299001\": \"FABRICAÇÃO DE GUARDA CHUVAS E SIMILARES\",\n\t\"3299002\": \"FABRICAÇÃO DE CANETAS, LÁPIS E OUTROS ARTIGOS PARA ESCRITÓRIO\",\n\t\"3299003\": \"FABRICAÇÃO DE LETRAS, LETREIROS E PLACAS DE QUALQUER MATERIAL, EXCETO LUMINOSOS\",\n\t\"3299004\": \"FABRICAÇÃO DE PAINÉIS E LETREIROS LUMINOSOS\",\n\t\"3299005\": \"FABRICAÇÃO DE AVIAMENTOS PARA COSTURA\",\n\t\"3299006\": \"FABRICAÇÃO DE VELAS, INCLUSIVE DECORATIVAS\",\n\t\"3299099\": \"FABRICAÇÃO DE PRODUTOS DIVERSOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"3311200\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE TANQUES, RESERVATÓRIOS METÁLICOS E CALDEIRAS, EXCETO PARA VEÍCULOS\",\n\t\"3312102\": \"MANUTENÇÃO E REPARAÇÃO DE APARELHOS E INSTRUMENTOS DE MEDIDA, TESTE E CONTROLE\",\n\t\"3312103\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE APARELHOS ELETROMÉDICOS E ELETROTERAPÊUTICOS E EQUIPAMENTOS DE IRRADIAÇÃO\",\n\t\"3312104\": \"MANUTENÇÃO E REPARAÇÃO DE EQUIPAMENTOS E INSTRUMENTOS ÓPTICOS\",\n\t\"3313901\": \"MANUTENÇÃO E REPARAÇÃO DE GERADORES, TRANSFORMADORES E MOTORES ELÉTRICOS\",\n\t\"3313902\": \"MANUTENÇÃO E REPARAÇÃO DE BATERIAS E ACUMULADORES ELÉTRICOS, EXCETO PARA VEÍCULOS\",\n\t\"3313999\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS, APARELHOS E MATERIAIS ELÉTRICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"3314701\": \"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS MOTRIZES NÃO ELÉTRICAS\",\n\t\"3314702\": \"MANUTENÇÃO E REPARAÇÃO DE EQUIPAMENTOS HIDRÁULICOS E PNEUMÁTICOS, EXCETO VÁLVULAS\",\n\t\"3314703\": \"MANUTENÇÃO E REPARAÇÃO DE VÁLVULAS INDUSTRIAIS\",\n\t\"3314704\": \"MANUTENÇÃO E REPARAÇÃO DE COMPRESSORES\",\n\t\"3314705\": \"MANUTENÇÃO E REPARAÇÃO DE EQUIPAMENTOS DE TRANSMISSÃO PARA FINS INDUSTRIAIS\",\n\t\"3314706\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS, APARELHOS E EQUIPAMENTOS PARA INSTALAÇÕES TÉRMICAS\",\n\t\"3314707\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E APARELHOS DE REFRIGERAÇÃO E VENTILAÇÃO PARA USO INDUSTRIAL E COMERCIAL\",\n\t\"3314708\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS, EQUIPAMENTOS E APARELHOS PARA TRANSPORTE E ELEVAÇÃO DE CARGAS\",\n\t\"3314709\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS DE ESCREVER, CALCULAR E DE OUTROS EQUIPAMENTOS NÃO ELETRÔNICOS PARA ESCRITÓRIO\",\n\t\"3314710\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA USO GERAL NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"3314711\": \"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA AGRICULTURA E PECUÁRIA\",\n\t\"3314712\": \"MANUTENÇÃO E REPARAÇÃO DE TRATORES AGRÍCOLAS\",\n\t\"3314713\": \"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS FERRAMENTA\",\n\t\"3314714\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA A PROSPECÇÃO E EXTRAÇÃO DE PETRÓLEO\",\n\t\"3314715\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA USO NA EXTRAÇÃO MINERAL, EXCETO NA EXTRAÇÃO DE PETRÓLEO\",\n\t\"3314716\": \"MANUTENÇÃO E REPARAÇÃO DE TRATORES, EXCETO AGRÍCOLAS\",\n\t\"3314717\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E EQUIPAMENTOS DE TERRAPLENAGEM, PAVIMENTAÇÃO E CONSTRUÇÃO, EXCETO TRATORES\",\n\t\"3314718\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS PARA A INDÚSTRIA METALÚRGICA, EXCETO MÁQUINAS FERRAMENTA\",\n\t\"3314719\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA AS INDÚSTRIAS DE ALIMENTOS, BEBIDAS E FUMO\",\n\t\"3314720\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E EQUIPAMENTOS PARA A INDÚSTRIA TÊXTIL, DO VESTUÁRIO, DO COURO E CALÇADOS\",\n\t\"3314721\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E APARELHOS PARA A INDÚSTRIA DE CELULOSE, PAPEL E PAPELÃO E ARTEFATOS\",\n\t\"3314722\": \"MANUTENÇÃO E REPARAÇÃO DE MÁQUINAS E APARELHOS PARA A INDÚSTRIA DO PLÁSTICO\",\n\t\"3314799\":\n\t\t\"MANUTENÇÃO E REPARAÇÃO DE OUTRAS MÁQUINAS E EQUIPAMENTOS PARA USOS INDUSTRIAIS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"3315500\": \"MANUTENÇÃO E REPARAÇÃO DE VEÍCULOS FERROVIÁRIOS\",\n\t\"3316301\": \"MANUTENÇÃO E REPARAÇÃO DE AERONAVES, EXCETO A MANUTENÇÃO NA PISTA\",\n\t\"3316302\": \"MANUTENÇÃO DE AERONAVES NA PISTA\",\n\t\"3317101\": \"MANUTENÇÃO E REPARAÇÃO DE EMBARCAÇÕES E ESTRUTURAS FLUTUANTES\",\n\t\"3317102\": \"MANUTENÇÃO E REPARAÇÃO DE EMBARCAÇÕES PARA ESPORTE E LAZER\",\n\t\"3319800\": \"MANUTENÇÃO E REPARAÇÃO DE EQUIPAMENTOS E PRODUTOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"3321000\": \"INSTALAÇÃO DE MÁQUINAS E EQUIPAMENTOS INDUSTRIAIS\",\n\t\"3329501\": \"SERVIÇOS DE MONTAGEM DE MÓVEIS DE QUALQUER MATERIAL\",\n\t\"3329599\": \"INSTALAÇÃO DE OUTROS EQUIPAMENTOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"3511501\": \"GERAÇÃO DE ENERGIA ELÉTRICA\",\n\t\"3511502\":\n\t\t\"ATIVIDADES DE COORDENAÇÃO E CONTROLE DA OPERAÇÃO DA GERAÇÃO E TRANSMISSÃO DE ENERGIA ELÉTRICA\",\n\t\"3512300\": \"TRANSMISSÃO DE ENERGIA ELÉTRICA\",\n\t\"3513100\": \"COMÉRCIO ATACADISTA DE ENERGIA ELÉTRICA\",\n\t\"3514000\": \"DISTRIBUIÇÃO DE ENERGIA ELÉTRICA\",\n\t\"3520401\": \"PRODUÇÃO DE GÁS; PROCESSAMENTO DE GÁS NATURAL\",\n\t\"3520402\": \"DISTRIBUIÇÃO DE COMBUSTÍVEIS GASOSOS POR REDES URBANAS\",\n\t\"3530100\": \"PRODUÇÃO E DISTRIBUIÇÃO DE VAPOR, ÁGUA QUENTE E AR CONDICIONADO\",\n\t\"3600601\": \"CAPTAÇÃO, TRATAMENTO E DISTRIBUIÇÃO DE ÁGUA\",\n\t\"3600602\": \"DISTRIBUIÇÃO DE ÁGUA POR CAMINHÕES\",\n\t\"3701100\": \"GESTÃO DE REDES DE ESGOTO\",\n\t\"3702900\": \"ATIVIDADES RELACIONADAS A ESGOTO, EXCETO A GESTÃO DE REDES\",\n\t\"3811400\": \"COLETA DE RESÍDUOS NÃO PERIGOSOS\",\n\t\"3812200\": \"COLETA DE RESÍDUOS PERIGOSOS\",\n\t\"3821100\": \"TRATAMENTO E DISPOSIÇÃO DE RESÍDUOS NÃO PERIGOSOS\",\n\t\"3822000\": \"TRATAMENTO E DISPOSIÇÃO DE RESÍDUOS PERIGOSOS\",\n\t\"3831901\": \"RECUPERAÇÃO DE SUCATAS DE ALUMÍNIO\",\n\t\"3831999\": \"RECUPERAÇÃO DE MATERIAIS METÁLICOS, EXCETO ALUMÍNIO\",\n\t\"3832700\": \"RECUPERAÇÃO DE MATERIAIS PLÁSTICOS\",\n\t\"3839401\": \"USINAS DE COMPOSTAGEM\",\n\t\"3839499\": \"RECUPERAÇÃO DE MATERIAIS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"3900500\": \"DESCONTAMINAÇÃO E OUTROS SERVIÇOS DE GESTÃO DE RESÍDUOS\",\n\t\"4110700\": \"INCORPORAÇÃO DE EMPREENDIMENTOS IMOBILIÁRIOS\",\n\t\"4120400\": \"CONSTRUÇÃO DE EDIFÍCIOS\",\n\t\"4211101\": \"CONSTRUÇÃO DE RODOVIAS E FERROVIAS\",\n\t\"4211102\": \"PINTURA PARA SINALIZAÇÃO EM PISTAS RODOVIÁRIAS E AEROPORTOS\",\n\t\"4212000\": \"CONSTRUÇÃO DE OBRAS DE ARTE ESPECIAIS\",\n\t\"4213800\": \"OBRAS DE URBANIZAÇÃO - RUAS, PRAÇAS E CALÇADAS\",\n\t\"4221901\": \"CONSTRUÇÃO DE BARRAGENS E REPRESAS PARA GERAÇÃO DE ENERGIA ELÉTRICA\",\n\t\"4221902\": \"CONSTRUÇÃO DE ESTAÇÕES E REDES DE DISTRIBUIÇÃO DE ENERGIA ELÉTRICA\",\n\t\"4221903\": \"MANUTENÇÃO DE REDES DE DISTRIBUIÇÃO DE ENERGIA ELÉTRICA\",\n\t\"4221904\": \"CONSTRUÇÃO DE ESTAÇÕES E REDES DE TELECOMUNICAÇÕES\",\n\t\"4221905\": \"MANUTENÇÃO DE ESTAÇÕES E REDES DE TELECOMUNICAÇÕES\",\n\t\"4222701\":\n\t\t\"CONSTRUÇÃO DE REDES DE ABASTECIMENTO DE ÁGUA, COLETA DE ESGOTO E CONSTRUÇÕES CORRELATAS, EXCETO OBRAS DE IRRIGAÇÃO\",\n\t\"4222702\": \"OBRAS DE IRRIGAÇÃO\",\n\t\"4223500\": \"CONSTRUÇÃO DE REDES DE TRANSPORTES POR DUTOS, EXCETO PARA ÁGUA E ESGOTO\",\n\t\"4291000\": \"OBRAS PORTUÁRIAS, MARÍTIMAS E FLUVIAIS\",\n\t\"4292801\": \"MONTAGEM DE ESTRUTURAS METÁLICAS\",\n\t\"4292802\": \"OBRAS DE MONTAGEM INDUSTRIAL\",\n\t\"4299501\": \"CONSTRUÇÃO DE INSTALAÇÕES ESPORTIVAS E RECREATIVAS\",\n\t\"4299599\": \"OUTRAS OBRAS DE ENGENHARIA CIVIL NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"4311801\": \"DEMOLIÇÃO DE EDIFÍCIOS E OUTRAS ESTRUTURAS\",\n\t\"4311802\": \"PREPARAÇÃO DE CANTEIRO E LIMPEZA DE TERRENO\",\n\t\"4312600\": \"PERFURAÇÕES E SONDAGENS\",\n\t\"4313400\": \"OBRAS DE TERRAPLENAGEM\",\n\t\"4319300\": \"SERVIÇOS DE PREPARAÇÃO DO TERRENO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4321500\": \"INSTALAÇÃO E MANUTENÇÃO ELÉTRICA\",\n\t\"4322301\": \"INSTALAÇÕES HIDRÁULICAS, SANITÁRIAS E DE GÁS\",\n\t\"4322302\":\n\t\t\"INSTALAÇÃO E MANUTENÇÃO DE SISTEMAS CENTRAIS DE AR CONDICIONADO, DE VENTILAÇÃO E REFRIGERAÇÃO\",\n\t\"4322303\": \"INSTALAÇÕES DE SISTEMA DE PREVENÇÃO CONTRA INCÊNDIO\",\n\t\"4329101\": \"INSTALAÇÃO DE PAINÉIS PUBLICITÁRIOS\",\n\t\"4329102\": \"INSTALAÇÃO DE EQUIPAMENTOS PARA ORIENTAÇÃO À NAVEGAÇÃO MARÍTIMA FLUVIAL E LACUSTRE\",\n\t\"4329103\": \"INSTALAÇÃO, MANUTENÇÃO E REPARAÇÃO DE ELEVADORES, ESCADAS E ESTEIRAS ROLANTES\",\n\t\"4329104\":\n\t\t\"MONTAGEM E INSTALAÇÃO DE SISTEMAS E EQUIPAMENTOS DE ILUMINAÇÃO E SINALIZAÇÃO EM VIAS PÚBLICAS, PORTOS E AEROPORTOS\",\n\t\"4329105\": \"TRATAMENTOS TÉRMICOS, ACÚSTICOS OU DE VIBRAÇÃO\",\n\t\"4329199\": \"OUTRAS OBRAS DE INSTALAÇÕES EM CONSTRUÇÕES NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"4330401\": \"IMPERMEABILIZAÇÃO EM OBRAS DE ENGENHARIA CIVIL\",\n\t\"4330402\":\n\t\t\"INSTALAÇÃO DE PORTAS, JANELAS, TETOS, DIVISÓRIAS E ARMÁRIOS EMBUTIDOS DE QUALQUER MATERIAL\",\n\t\"4330403\": \"OBRAS DE ACABAMENTO EM GESSO E ESTUQUE\",\n\t\"4330404\": \"SERVIÇOS DE PINTURA DE EDIFÍCIOS EM GERAL\",\n\t\"4330405\": \"APLICAÇÃO DE REVESTIMENTOS E DE RESINAS EM INTERIORES E EXTERIORES\",\n\t\"4330499\": \"OUTRAS OBRAS DE ACABAMENTO DA CONSTRUÇÃO\",\n\t\"4391600\": \"OBRAS DE FUNDAÇÕES\",\n\t\"4399101\": \"ADMINISTRAÇÃO DE OBRAS\",\n\t\"4399102\": \"MONTAGEM E DESMONTAGEM DE ANDAIMES E OUTRAS ESTRUTURAS TEMPORÁRIAS\",\n\t\"4399103\": \"OBRAS DE ALVENARIA\",\n\t\"4399104\":\n\t\t\"SERVIÇOS DE OPERAÇÃO E FORNECIMENTO DE EQUIPAMENTOS PARA TRANSPORTE E ELEVAÇÃO DE CARGAS E PESSOAS PARA USO EM OBRAS\",\n\t\"4399105\": \"PERFURAÇÃO E CONSTRUÇÃO DE POÇOS DE ÁGUA\",\n\t\"4399199\": \"SERVIÇOS ESPECIALIZADOS PARA CONSTRUÇÃO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4511101\": \"COMÉRCIO A VAREJO DE AUTOMÓVEIS, CAMIONETAS E UTILITÁRIOS NOVOS\",\n\t\"4511102\": \"COMÉRCIO A VAREJO DE AUTOMÓVEIS, CAMIONETAS E UTILITÁRIOS USADOS\",\n\t\"4511103\": \"COMÉRCIO POR ATACADO DE AUTOMÓVEIS, CAMIONETAS E UTILITÁRIOS NOVOS E USADOS\",\n\t\"4511104\": \"COMÉRCIO POR ATACADO DE CAMINHÕES NOVOS E USADOS\",\n\t\"4511105\": \"COMÉRCIO POR ATACADO DE REBOQUES E SEMI REBOQUES NOVOS E USADOS\",\n\t\"4511106\": \"COMÉRCIO POR ATACADO DE ÔNIBUS E MICROÔNIBUS NOVOS E USADOS\",\n\t\"4512901\": \"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE VEÍCULOS AUTOMOTORES\",\n\t\"4512902\": \"COMÉRCIO SOB CONSIGNAÇÃO DE VEÍCULOS AUTOMOTORES\",\n\t\"4520001\": \"SERVIÇOS DE MANUTENÇÃO E REPARAÇÃO MECÂNICA DE VEÍCULOS AUTOMOTORES\",\n\t\"4520002\": \"SERVIÇOS DE LANTERNAGEM OU FUNILARIA E PINTURA DE VEÍCULOS AUTOMOTORES\",\n\t\"4520003\": \"SERVIÇOS DE MANUTENÇÃO E REPARAÇÃO ELÉTRICA DE VEÍCULOS AUTOMOTORES\",\n\t\"4520004\": \"SERVIÇOS DE ALINHAMENTO E BALANCEAMENTO DE VEÍCULOS AUTOMOTORES\",\n\t\"4520005\": \"SERVIÇOS DE LAVAGEM, LUBRIFICAÇÃO E POLIMENTO DE VEÍCULOS AUTOMOTORES\",\n\t\"4520006\": \"SERVIÇOS DE BORRACHARIA PARA VEÍCULOS AUTOMOTORES\",\n\t\"4520007\":\n\t\t\"SERVIÇOS DE INSTALAÇÃO, MANUTENÇÃO E REPARAÇÃO DE ACESSÓRIOS PARA VEÍCULOS AUTOMOTORES\",\n\t\"4520008\": \"SERVIÇOS DE CAPOTARIA\",\n\t\"4530701\": \"COMÉRCIO POR ATACADO DE PEÇAS E ACESSÓRIOS NOVOS PARA VEÍCULOS AUTOMOTORES\",\n\t\"4530702\": \"COMÉRCIO POR ATACADO DE PNEUMÁTICOS E CÂMARAS DE AR\",\n\t\"4530703\": \"COMÉRCIO A VAREJO DE PEÇAS E ACESSÓRIOS NOVOS PARA VEÍCULOS AUTOMOTORES\",\n\t\"4530704\": \"COMÉRCIO A VAREJO DE PEÇAS E ACESSÓRIOS USADOS PARA VEÍCULOS AUTOMOTORES\",\n\t\"4530705\": \"COMÉRCIO A VAREJO DE PNEUMÁTICOS E CÂMARAS DE AR\",\n\t\"4530706\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE PEÇAS E ACESSÓRIOS NOVOS E USADOS PARA VEÍCULOS AUTOMOTORES\",\n\t\"4541201\": \"COMÉRCIO POR ATACADO DE MOTOCICLETAS E MOTONETAS\",\n\t\"4541202\": \"COMÉRCIO POR ATACADO DE PEÇAS E ACESSÓRIOS PARA MOTOCICLETAS E MOTONETAS\",\n\t\"4541203\": \"COMÉRCIO A VAREJO DE MOTOCICLETAS E MOTONETAS NOVAS\",\n\t\"4541204\": \"COMÉRCIO A VAREJO DE MOTOCICLETAS E MOTONETAS USADAS\",\n\t\"4541206\": \"COMÉRCIO A VAREJO DE PEÇAS E ACESSÓRIOS NOVOS PARA MOTOCICLETAS E MOTONETAS\",\n\t\"4541207\": \"COMÉRCIO A VAREJO DE PEÇAS E ACESSÓRIOS USADOS PARA MOTOCICLETAS E MOTONETAS\",\n\t\"4542101\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE MOTOCICLETAS E MOTONETAS, PEÇAS E ACESSÓRIOS\",\n\t\"4542102\": \"COMÉRCIO SOB CONSIGNAÇÃO DE MOTOCICLETAS E MOTONETAS\",\n\t\"4543900\": \"MANUTENÇÃO E REPARAÇÃO DE MOTOCICLETAS E MOTONETAS\",\n\t\"4611700\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE MATÉRIAS PRIMAS AGRÍCOLAS E ANIMAIS VIVOS\",\n\t\"4612500\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE COMBUSTÍVEIS, MINERAIS, PRODUTOS SIDERÚRGICOS E QUÍMICOS\",\n\t\"4613300\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE MADEIRA, MATERIAL DE CONSTRUÇÃO E FERRAGENS\",\n\t\"4614100\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE MÁQUINAS, EQUIPAMENTOS, EMBARCAÇÕES E AERONAVES\",\n\t\"4615000\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE ELETRODOMÉSTICOS, MÓVEIS E ARTIGOS DE USO DOMÉSTICO\",\n\t\"4616800\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE TÊXTEIS, VESTUÁRIO, CALÇADOS E ARTIGOS DE VIAGEM\",\n\t\"4617600\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE PRODUTOS ALIMENTÍCIOS, BEBIDAS E FUMO\",\n\t\"4618401\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE MEDICAMENTOS, COSMÉTICOS E PRODUTOS DE PERFUMARIA\",\n\t\"4618402\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE INSTRUMENTOS E MATERIAIS ODONTO MÉDICO HOSPITALARES\",\n\t\"4618403\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE JORNAIS, REVISTAS E OUTRAS PUBLICAÇÕES\",\n\t\"4618499\":\n\t\t\"OUTROS REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO ESPECIALIZADO EM PRODUTOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4619200\":\n\t\t\"REPRESENTANTES COMERCIAIS E AGENTES DO COMÉRCIO DE MERCADORIAS EM GERAL NÃO ESPECIALIZADO\",\n\t\"4621400\": \"COMÉRCIO ATACADISTA DE CAFÉ EM GRÃO\",\n\t\"4622200\": \"COMÉRCIO ATACADISTA DE SOJA\",\n\t\"4623101\": \"COMÉRCIO ATACADISTA DE ANIMAIS VIVOS\",\n\t\"4623102\":\n\t\t\"COMÉRCIO ATACADISTA DE COUROS, LÃS, PELES E OUTROS SUBPRODUTOS NÃO COMESTÍVEIS DE ORIGEM ANIMAL\",\n\t\"4623103\": \"COMÉRCIO ATACADISTA DE ALGODÃO\",\n\t\"4623104\": \"COMÉRCIO ATACADISTA DE FUMO EM FOLHA NÃO BENEFICIADO\",\n\t\"4623105\": \"COMÉRCIO ATACADISTA DE CACAU\",\n\t\"4623106\": \"COMÉRCIO ATACADISTA DE SEMENTES, FLORES, PLANTAS E GRAMAS\",\n\t\"4623107\": \"COMÉRCIO ATACADISTA DE SISAL\",\n\t\"4623108\":\n\t\t\"COMÉRCIO ATACADISTA DE MATÉRIAS PRIMAS AGRÍCOLAS COM ATIVIDADE DE FRACIONAMENTO E ACONDICIONAMENTO ASSOCIADA\",\n\t\"4623109\": \"COMÉRCIO ATACADISTA DE ALIMENTOS PARA ANIMAIS\",\n\t\"4623199\": \"COMÉRCIO ATACADISTA DE MATÉRIAS PRIMAS AGRÍCOLAS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"4631100\": \"COMÉRCIO ATACADISTA DE LEITE E LATICÍNIOS\",\n\t\"4632001\": \"COMÉRCIO ATACADISTA DE CEREAIS E LEGUMINOSAS BENEFICIADOS\",\n\t\"4632002\": \"COMÉRCIO ATACADISTA DE FARINHAS, AMIDOS E FÉCULAS\",\n\t\"4632003\":\n\t\t\"COMÉRCIO ATACADISTA DE CEREAIS E LEGUMINOSAS BENEFICIADOS, FARINHAS, AMIDOS E FÉCULAS, COM ATIVIDADE DE FRACIONAMENTO E ACONDICIONAMENTO ASSOCIADA\",\n\t\"4633801\":\n\t\t\"COMÉRCIO ATACADISTA DE FRUTAS, VERDURAS, RAÍZES, TUBÉRCULOS, HORTALIÇAS E LEGUMES FRESCOS\",\n\t\"4633802\": \"COMÉRCIO ATACADISTA DE AVES VIVAS E OVOS\",\n\t\"4633803\": \"COMÉRCIO ATACADISTA DE COELHOS E OUTROS PEQUENOS ANIMAIS VIVOS PARA ALIMENTAÇÃO\",\n\t\"4634601\": \"COMÉRCIO ATACADISTA DE CARNES BOVINAS E SUÍNAS E DERIVADOS\",\n\t\"4634602\": \"COMÉRCIO ATACADISTA DE AVES ABATIDAS E DERIVADOS\",\n\t\"4634603\": \"COMÉRCIO ATACADISTA DE PESCADOS E FRUTOS DO MAR\",\n\t\"4634699\": \"COMÉRCIO ATACADISTA DE CARNES E DERIVADOS DE OUTROS ANIMAIS\",\n\t\"4635401\": \"COMÉRCIO ATACADISTA DE ÁGUA MINERAL\",\n\t\"4635402\": \"COMÉRCIO ATACADISTA DE CERVEJA, CHOPE E REFRIGERANTE\",\n\t\"4635403\":\n\t\t\"COMÉRCIO ATACADISTA DE BEBIDAS COM ATIVIDADE DE FRACIONAMENTO E ACONDICIONAMENTO ASSOCIADA\",\n\t\"4635499\": \"COMÉRCIO ATACADISTA DE BEBIDAS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"4636201\": \"COMÉRCIO ATACADISTA DE FUMO BENEFICIADO\",\n\t\"4636202\": \"COMÉRCIO ATACADISTA DE CIGARROS, CIGARRILHAS E CHARUTOS\",\n\t\"4637101\": \"COMÉRCIO ATACADISTA DE CAFÉ TORRADO, MOÍDO E SOLÚVEL\",\n\t\"4637102\": \"COMÉRCIO ATACADISTA DE AÇÚCAR\",\n\t\"4637103\": \"COMÉRCIO ATACADISTA DE ÓLEOS E GORDURAS\",\n\t\"4637104\": \"COMÉRCIO ATACADISTA DE PÃES, BOLOS, BISCOITOS E SIMILARES\",\n\t\"4637105\": \"COMÉRCIO ATACADISTA DE MASSAS ALIMENTÍCIAS\",\n\t\"4637106\": \"COMÉRCIO ATACADISTA DE SORVETES\",\n\t\"4637107\": \"COMÉRCIO ATACADISTA DE CHOCOLATES, CONFEITOS, BALAS, BOMBONS E SEMELHANTES\",\n\t\"4637199\":\n\t\t\"COMÉRCIO ATACADISTA ESPECIALIZADO EM OUTROS PRODUTOS ALIMENTÍCIOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4639701\": \"COMÉRCIO ATACADISTA DE PRODUTOS ALIMENTÍCIOS EM GERAL\",\n\t\"4639702\":\n\t\t\"COMÉRCIO ATACADISTA DE PRODUTOS ALIMENTÍCIOS EM GERAL, COM ATIVIDADE DE FRACIONAMENTO E ACONDICIONAMENTO ASSOCIADA\",\n\t\"4641901\": \"COMÉRCIO ATACADISTA DE TECIDOS\",\n\t\"4641902\": \"COMÉRCIO ATACADISTA DE ARTIGOS DE CAMA, MESA E BANHO\",\n\t\"4641903\": \"COMÉRCIO ATACADISTA DE ARTIGOS DE ARMARINHO\",\n\t\"4642701\":\n\t\t\"COMÉRCIO ATACADISTA DE ARTIGOS DO VESTUÁRIO E ACESSÓRIOS, EXCETO PROFISSIONAIS E DE SEGURANÇA\",\n\t\"4642702\":\n\t\t\"COMÉRCIO ATACADISTA DE ROUPAS E ACESSÓRIOS PARA USO PROFISSIONAL E DE SEGURANÇA DO TRABALHO\",\n\t\"4643501\": \"COMÉRCIO ATACADISTA DE CALÇADOS\",\n\t\"4643502\": \"COMÉRCIO ATACADISTA DE BOLSAS, MALAS E ARTIGOS DE VIAGEM\",\n\t\"4644301\": \"COMÉRCIO ATACADISTA DE MEDICAMENTOS E DROGAS DE USO HUMANO\",\n\t\"4644302\": \"COMÉRCIO ATACADISTA DE MEDICAMENTOS E DROGAS DE USO VETERINÁRIO\",\n\t\"4645101\":\n\t\t\"COMÉRCIO ATACADISTA DE INSTRUMENTOS E MATERIAIS PARA USO MÉDICO, CIRÚRGICO, HOSPITALAR E DE LABORATÓRIOS\",\n\t\"4645102\": \"COMÉRCIO ATACADISTA DE PRÓTESES E ARTIGOS DE ORTOPEDIA\",\n\t\"4645103\": \"COMÉRCIO ATACADISTA DE PRODUTOS ODONTOLÓGICOS\",\n\t\"4646001\": \"COMÉRCIO ATACADISTA DE COSMÉTICOS E PRODUTOS DE PERFUMARIA\",\n\t\"4646002\": \"COMÉRCIO ATACADISTA DE PRODUTOS DE HIGIENE PESSOAL\",\n\t\"4647801\": \"COMÉRCIO ATACADISTA DE ARTIGOS DE ESCRITÓRIO E DE PAPELARIA\",\n\t\"4647802\": \"COMÉRCIO ATACADISTA DE LIVROS, JORNAIS E OUTRAS PUBLICAÇÕES\",\n\t\"4649401\": \"COMÉRCIO ATACADISTA DE EQUIPAMENTOS ELÉTRICOS DE USO PESSOAL E DOMÉSTICO\",\n\t\"4649402\": \"COMÉRCIO ATACADISTA DE APARELHOS ELETRÔNICOS DE USO PESSOAL E DOMÉSTICO\",\n\t\"4649403\": \"COMÉRCIO ATACADISTA DE BICICLETAS, TRICICLOS E OUTROS VEÍCULOS RECREATIVOS\",\n\t\"4649404\": \"COMÉRCIO ATACADISTA DE MÓVEIS E ARTIGOS DE COLCHOARIA\",\n\t\"4649405\": \"COMÉRCIO ATACADISTA DE ARTIGOS DE TAPEÇARIA; PERSIANAS E CORTINAS\",\n\t\"4649406\": \"COMÉRCIO ATACADISTA DE LUSTRES, LUMINÁRIAS E ABAJURES\",\n\t\"4649407\": \"COMÉRCIO ATACADISTA DE FILMES, CDS, DVDS, FITAS E DISCOS\",\n\t\"4649408\": \"COMÉRCIO ATACADISTA DE PRODUTOS DE HIGIENE, LIMPEZA E CONSERVAÇÃO DOMICILIAR\",\n\t\"4649409\":\n\t\t\"COMÉRCIO ATACADISTA DE PRODUTOS DE HIGIENE, LIMPEZA E CONSERVAÇÃO DOMICILIAR, COM ATIVIDADE DE FRACIONAMENTO E ACONDICIONAMENTO ASSOCIADA\",\n\t\"4649410\":\n\t\t\"COMÉRCIO ATACADISTA DE JÓIAS, RELÓGIOS E BIJUTERIAS, INCLUSIVE PEDRAS PRECIOSAS E SEMIPRECIOSAS LAPIDADAS\",\n\t\"4649499\":\n\t\t\"COMÉRCIO ATACADISTA DE OUTROS EQUIPAMENTOS E ARTIGOS DE USO PESSOAL E DOMÉSTICO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4651601\": \"COMÉRCIO ATACADISTA DE EQUIPAMENTOS DE INFORMÁTICA\",\n\t\"4651602\": \"COMÉRCIO ATACADISTA DE SUPRIMENTOS PARA INFORMÁTICA\",\n\t\"4652400\":\n\t\t\"COMÉRCIO ATACADISTA DE COMPONENTES ELETRÔNICOS E EQUIPAMENTOS DE TELEFONIA E COMUNICAÇÃO\",\n\t\"4661300\":\n\t\t\"COMÉRCIO ATACADISTA DE MÁQUINAS, APARELHOS E EQUIPAMENTOS PARA USO AGROPECUÁRIO; PARTES E PEÇAS\",\n\t\"4662100\":\n\t\t\"COMÉRCIO ATACADISTA DE MÁQUINAS, EQUIPAMENTOS PARA TERRAPLENAGEM, MINERAÇÃO E CONSTRUÇÃO; PARTES E PEÇAS\",\n\t\"4663000\": \"COMÉRCIO ATACADISTA DE MÁQUINAS E EQUIPAMENTOS PARA USO INDUSTRIAL; PARTES E PEÇAS\",\n\t\"4664800\":\n\t\t\"COMÉRCIO ATACADISTA DE MÁQUINAS, APARELHOS E EQUIPAMENTOS PARA USO ODONTO MÉDICO HOSPITALAR; PARTES E PEÇAS\",\n\t\"4665600\": \"COMÉRCIO ATACADISTA DE MÁQUINAS E EQUIPAMENTOS PARA USO COMERCIAL; PARTES E PEÇAS\",\n\t\"4669901\": \"COMÉRCIO ATACADISTA DE BOMBAS E COMPRESSORES; PARTES E PEÇAS\",\n\t\"4669999\":\n\t\t\"COMÉRCIO ATACADISTA DE OUTRAS MÁQUINAS E EQUIPAMENTOS NÃO ESPECIFICADOS ANTERIORMENTE; PARTES E PEÇAS\",\n\t\"4671100\": \"COMÉRCIO ATACADISTA DE MADEIRA E PRODUTOS DERIVADOS\",\n\t\"4672900\": \"COMÉRCIO ATACADISTA DE FERRAGENS E FERRAMENTAS\",\n\t\"4673700\": \"COMÉRCIO ATACADISTA DE MATERIAL ELÉTRICO\",\n\t\"4674500\": \"COMÉRCIO ATACADISTA DE CIMENTO\",\n\t\"4679601\": \"COMÉRCIO ATACADISTA DE TINTAS, VERNIZES E SIMILARES\",\n\t\"4679602\": \"COMÉRCIO ATACADISTA DE MÁRMORES E GRANITOS\",\n\t\"4679603\": \"COMÉRCIO ATACADISTA DE VIDROS, ESPELHOS E VITRAIS\",\n\t\"4679604\":\n\t\t\"COMÉRCIO ATACADISTA ESPECIALIZADO DE MATERIAIS DE CONSTRUÇÃO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4679699\": \"COMÉRCIO ATACADISTA DE MATERIAIS DE CONSTRUÇÃO EM GERAL\",\n\t\"4681801\":\n\t\t\"COMÉRCIO ATACADISTA DE ÁLCOOL CARBURANTE, BIODIESEL, GASOLINA E DEMAIS DERIVADOS DE PETRÓLEO, EXCETO LUBRIFICANTES, NÃO REALIZADO POR TRANSPORTADOR RETALHISTA (T.R.R.)\",\n\t\"4681802\": \"COMÉRCIO ATACADISTA DE COMBUSTÍVEIS REALIZADO POR TRANSPORTADOR RETALHISTA (T.R.R.)\",\n\t\"4681803\": \"COMÉRCIO ATACADISTA DE COMBUSTÍVEIS DE ORIGEM VEGETAL, EXCETO ÁLCOOL CARBURANTE\",\n\t\"4681804\": \"COMÉRCIO ATACADISTA DE COMBUSTÍVEIS DE ORIGEM MINERAL EM BRUTO\",\n\t\"4681805\": \"COMÉRCIO ATACADISTA DE LUBRIFICANTES\",\n\t\"4682600\": \"COMÉRCIO ATACADISTA DE GÁS LIQÜEFEITO DE PETRÓLEO (GLP)\",\n\t\"4683400\":\n\t\t\"COMÉRCIO ATACADISTA DE DEFENSIVOS AGRÍCOLAS, ADUBOS, FERTILIZANTES E CORRETIVOS DO SOLO\",\n\t\"4684201\": \"COMÉRCIO ATACADISTA DE RESINAS E ELASTÔMEROS\",\n\t\"4684202\": \"COMÉRCIO ATACADISTA DE SOLVENTES\",\n\t\"4684299\":\n\t\t\"COMÉRCIO ATACADISTA DE OUTROS PRODUTOS QUÍMICOS E PETROQUÍMICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4685100\": \"COMÉRCIO ATACADISTA DE PRODUTOS SIDERÚRGICOS E METALÚRGICOS, EXCETO PARA CONSTRUÇÃO\",\n\t\"4686901\": \"COMÉRCIO ATACADISTA DE PAPEL E PAPELÃO EM BRUTO\",\n\t\"4686902\": \"COMÉRCIO ATACADISTA DE EMBALAGENS\",\n\t\"4687701\": \"COMÉRCIO ATACADISTA DE RESÍDUOS DE PAPEL E PAPELÃO\",\n\t\"4687702\": \"COMÉRCIO ATACADISTA DE RESÍDUOS E SUCATAS NÃO METÁLICOS, EXCETO DE PAPEL E PAPELÃO\",\n\t\"4687703\": \"COMÉRCIO ATACADISTA DE RESÍDUOS E SUCATAS METÁLICOS\",\n\t\"4689301\": \"COMÉRCIO ATACADISTA DE PRODUTOS DA EXTRAÇÃO MINERAL, EXCETO COMBUSTÍVEIS\",\n\t\"4689302\": \"COMÉRCIO ATACADISTA DE FIOS E FIBRAS BENEFICIADOS\",\n\t\"4689399\":\n\t\t\"COMÉRCIO ATACADISTA ESPECIALIZADO EM OUTROS PRODUTOS INTERMEDIÁRIOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4691500\":\n\t\t\"COMÉRCIO ATACADISTA DE MERCADORIAS EM GERAL, COM PREDOMINÂNCIA DE PRODUTOS ALIMENTÍCIOS\",\n\t\"4692300\":\n\t\t\"COMÉRCIO ATACADISTA DE MERCADORIAS EM GERAL, COM PREDOMINÂNCIA DE INSUMOS AGROPECUÁRIOS\",\n\t\"4693100\":\n\t\t\"COMÉRCIO ATACADISTA DE MERCADORIAS EM GERAL, SEM PREDOMINÂNCIA DE ALIMENTOS OU DE INSUMOS AGROPECUÁRIOS\",\n\t\"4711301\":\n\t\t\"COMÉRCIO VAREJISTA DE MERCADORIAS EM GERAL, COM PREDOMINÂNCIA DE PRODUTOS ALIMENTÍCIOS   HIPERMERCADOS\",\n\t\"4711302\":\n\t\t\"COMÉRCIO VAREJISTA DE MERCADORIAS EM GERAL, COM PREDOMINÂNCIA DE PRODUTOS ALIMENTÍCIOS - SUPERMERCADOS\",\n\t\"4712100\":\n\t\t\"COMÉRCIO VAREJISTA DE MERCADORIAS EM GERAL, COM PREDOMINÂNCIA DE PRODUTOS ALIMENTÍCIOS - MINIMERCADOS, MERCEARIAS E ARMAZÉNS\",\n\t\"4713002\": \"LOJAS DE VARIEDADES, EXCETO LOJAS DE DEPARTAMENTOS OU MAGAZINES\",\n\t\"4713004\": \"LOJAS DE DEPARTAMENTOS OU MAGAZINES, EXCETO LOJAS FRANCAS (DUTY FREE)\",\n\t\"4713005\": \"LOJAS FRANCAS (DUTY FREE) DE AEROPORTOS, PORTOS E EM FRONTEIRAS TERRESTRES\",\n\t\"4721102\": \"PADARIA E CONFEITARIA COM PREDOMINÂNCIA DE REVENDA\",\n\t\"4721103\": \"COMÉRCIO VAREJISTA DE LATICÍNIOS E FRIOS\",\n\t\"4721104\": \"COMÉRCIO VAREJISTA DE DOCES, BALAS, BOMBONS E SEMELHANTES\",\n\t\"4722901\": \"COMÉRCIO VAREJISTA DE CARNES - AÇOUGUES\",\n\t\"4722902\": \"PEIXARIA\",\n\t\"4723700\": \"COMÉRCIO VAREJISTA DE BEBIDAS\",\n\t\"4724500\": \"COMÉRCIO VAREJISTA DE HORTIFRUTIGRANJEIROS\",\n\t\"4729601\": \"TABACARIA\",\n\t\"4729602\": \"COMÉRCIO VAREJISTA DE MERCADORIAS EM LOJAS DE CONVENIÊNCIA\",\n\t\"4729699\":\n\t\t\"COMÉRCIO VAREJISTA DE PRODUTOS ALIMENTÍCIOS EM GERAL OU ESPECIALIZADO EM PRODUTOS ALIMENTÍCIOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4731800\": \"COMÉRCIO VAREJISTA DE COMBUSTÍVEIS PARA VEÍCULOS AUTOMOTORES\",\n\t\"4732600\": \"COMÉRCIO VAREJISTA DE LUBRIFICANTES\",\n\t\"4741500\": \"COMÉRCIO VAREJISTA DE TINTAS E MATERIAIS PARA PINTURA\",\n\t\"4742300\": \"COMÉRCIO VAREJISTA DE MATERIAL ELÉTRICO\",\n\t\"4743100\": \"COMÉRCIO VAREJISTA DE VIDROS\",\n\t\"4744001\": \"COMÉRCIO VAREJISTA DE FERRAGENS E FERRAMENTAS\",\n\t\"4744002\": \"COMÉRCIO VAREJISTA DE MADEIRA E ARTEFATOS\",\n\t\"4744003\": \"COMÉRCIO VAREJISTA DE MATERIAIS HIDRÁULICOS\",\n\t\"4744004\": \"COMÉRCIO VAREJISTA DE CAL, AREIA, PEDRA BRITADA, TIJOLOS E TELHAS\",\n\t\"4744005\": \"COMÉRCIO VAREJISTA DE MATERIAIS DE CONSTRUÇÃO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4744006\": \"COMÉRCIO VAREJISTA DE PEDRAS PARA REVESTIMENTO\",\n\t\"4744099\": \"COMÉRCIO VAREJISTA DE MATERIAIS DE CONSTRUÇÃO EM GERAL\",\n\t\"4751201\": \"COMÉRCIO VAREJISTA ESPECIALIZADO DE EQUIPAMENTOS E SUPRIMENTOS DE INFORMÁTICA\",\n\t\"4751202\": \"RECARGA DE CARTUCHOS PARA EQUIPAMENTOS DE INFORMÁTICA\",\n\t\"4752100\": \"COMÉRCIO VAREJISTA ESPECIALIZADO DE EQUIPAMENTOS DE TELEFONIA E COMUNICAÇÃO\",\n\t\"4753900\": \"COMÉRCIO VAREJISTA ESPECIALIZADO DE ELETRODOMÉSTICOS E EQUIPAMENTOS DE ÁUDIO E VÍDEO\",\n\t\"4754701\": \"COMÉRCIO VAREJISTA DE MÓVEIS\",\n\t\"4754702\": \"COMÉRCIO VAREJISTA DE ARTIGOS DE COLCHOARIA\",\n\t\"4754703\": \"COMÉRCIO VAREJISTA DE ARTIGOS DE ILUMINAÇÃO\",\n\t\"4755501\": \"COMÉRCIO VAREJISTA DE TECIDOS\",\n\t\"4755502\": \"COMERCIO VAREJISTA DE ARTIGOS DE ARMARINHO\",\n\t\"4755503\": \"COMERCIO VAREJISTA DE ARTIGOS DE CAMA, MESA E BANHO\",\n\t\"4756300\": \"COMÉRCIO VAREJISTA ESPECIALIZADO DE INSTRUMENTOS MUSICAIS E ACESSÓRIOS\",\n\t\"4757100\":\n\t\t\"COMÉRCIO VAREJISTA ESPECIALIZADO DE PEÇAS E ACESSÓRIOS PARA APARELHOS ELETROELETRÔNICOS PARA USO DOMÉSTICO, EXCETO INFORMÁTICA E COMUNICAÇÃO\",\n\t\"4759801\": \"COMÉRCIO VAREJISTA DE ARTIGOS DE TAPEÇARIA, CORTINAS E PERSIANAS\",\n\t\"4759899\":\n\t\t\"COMÉRCIO VAREJISTA DE OUTROS ARTIGOS DE USO PESSOAL E DOMÉSTICO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4761001\": \"COMÉRCIO VAREJISTA DE LIVROS\",\n\t\"4761002\": \"COMÉRCIO VAREJISTA DE JORNAIS E REVISTAS\",\n\t\"4761003\": \"COMÉRCIO VAREJISTA DE ARTIGOS DE PAPELARIA\",\n\t\"4762800\": \"COMÉRCIO VAREJISTA DE DISCOS, CDS, DVDS E FITAS\",\n\t\"4763601\": \"COMÉRCIO VAREJISTA DE BRINQUEDOS E ARTIGOS RECREATIVOS\",\n\t\"4763602\": \"COMÉRCIO VAREJISTA DE ARTIGOS ESPORTIVOS\",\n\t\"4763603\": \"COMÉRCIO VAREJISTA DE BICICLETAS E TRICICLOS; PEÇAS E ACESSÓRIOS\",\n\t\"4763604\": \"COMÉRCIO VAREJISTA DE ARTIGOS DE CAÇA, PESCA E CAMPING\",\n\t\"4763605\": \"COMÉRCIO VAREJISTA DE EMBARCAÇÕES E OUTROS VEÍCULOS RECREATIVOS; PEÇAS E ACESSÓRIOS\",\n\t\"4771701\": \"COMÉRCIO VAREJISTA DE PRODUTOS FARMACÊUTICOS, SEM MANIPULAÇÃO DE FÓRMULAS\",\n\t\"4771702\": \"COMÉRCIO VAREJISTA DE PRODUTOS FARMACÊUTICOS, COM MANIPULAÇÃO DE FÓRMULAS\",\n\t\"4771703\": \"COMÉRCIO VAREJISTA DE PRODUTOS FARMACÊUTICOS HOMEOPÁTICOS\",\n\t\"4771704\": \"COMÉRCIO VAREJISTA DE MEDICAMENTOS VETERINÁRIOS\",\n\t\"4772500\": \"COMÉRCIO VAREJISTA DE COSMÉTICOS, PRODUTOS DE PERFUMARIA E DE HIGIENE PESSOAL\",\n\t\"4773300\": \"COMÉRCIO VAREJISTA DE ARTIGOS MÉDICOS E ORTOPÉDICOS\",\n\t\"4774100\": \"COMÉRCIO VAREJISTA DE ARTIGOS DE ÓPTICA\",\n\t\"4781400\": \"COMÉRCIO VAREJISTA DE ARTIGOS DO VESTUÁRIO E ACESSÓRIOS\",\n\t\"4782201\": \"COMÉRCIO VAREJISTA DE CALÇADOS\",\n\t\"4782202\": \"COMÉRCIO VAREJISTA DE ARTIGOS DE VIAGEM\",\n\t\"4783101\": \"COMÉRCIO VAREJISTA DE ARTIGOS DE JOALHERIA\",\n\t\"4783102\": \"COMÉRCIO VAREJISTA DE ARTIGOS DE RELOJOARIA\",\n\t\"4784900\": \"COMÉRCIO VAREJISTA DE GÁS LIQÜEFEITO DE PETRÓLEO (GLP)\",\n\t\"4785701\": \"COMÉRCIO VAREJISTA DE ANTIGÜIDADES\",\n\t\"4785799\": \"COMÉRCIO VAREJISTA DE OUTROS ARTIGOS USADOS\",\n\t\"4789001\": \"COMÉRCIO VAREJISTA DE SUVENIRES, BIJUTERIAS E ARTESANATOS\",\n\t\"4789002\": \"COMÉRCIO VAREJISTA DE PLANTAS E FLORES NATURAIS\",\n\t\"4789003\": \"COMÉRCIO VAREJISTA DE OBJETOS DE ARTE\",\n\t\"4789004\":\n\t\t\"COMÉRCIO VAREJISTA DE ANIMAIS VIVOS E DE ARTIGOS E ALIMENTOS PARA ANIMAIS DE ESTIMAÇÃO\",\n\t\"4789005\": \"COMÉRCIO VAREJISTA DE PRODUTOS SANEANTES DOMISSANITÁRIOS\",\n\t\"4789006\": \"COMÉRCIO VAREJISTA DE FOGOS DE ARTIFÍCIO E ARTIGOS PIROTÉCNICOS\",\n\t\"4789007\": \"COMÉRCIO VAREJISTA DE EQUIPAMENTOS PARA ESCRITÓRIO\",\n\t\"4789008\": \"COMÉRCIO VAREJISTA DE ARTIGOS FOTOGRÁFICOS E PARA FILMAGEM\",\n\t\"4789009\": \"COMÉRCIO VAREJISTA DE ARMAS E MUNIÇÕES\",\n\t\"4789099\": \"COMÉRCIO VAREJISTA DE OUTROS PRODUTOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4911600\": \"TRANSPORTE FERROVIÁRIO DE CARGA\",\n\t\"4912401\": \"TRANSPORTE FERROVIÁRIO DE PASSAGEIROS INTERMUNICIPAL E INTERESTADUAL\",\n\t\"4912402\": \"TRANSPORTE FERROVIÁRIO DE PASSAGEIROS MUNICIPAL E EM REGIÃO METROPOLITANA\",\n\t\"4912403\": \"TRANSPORTE METROVIÁRIO\",\n\t\"4921301\": \"TRANSPORTE RODOVIÁRIO COLETIVO DE PASSAGEIROS, COM ITINERÁRIO FIXO, MUNICIPAL\",\n\t\"4921302\":\n\t\t\"TRANSPORTE RODOVIÁRIO COLETIVO DE PASSAGEIROS, COM ITINERÁRIO FIXO, INTERMUNICIPAL EM REGIÃO METROPOLITANA\",\n\t\"4922101\":\n\t\t\"TRANSPORTE RODOVIÁRIO COLETIVO DE PASSAGEIROS, COM ITINERÁRIO FIXO, INTERMUNICIPAL, EXCETO EM REGIÃO METROPOLITANA\",\n\t\"4922102\": \"TRANSPORTE RODOVIÁRIO COLETIVO DE PASSAGEIROS, COM ITINERÁRIO FIXO, INTERESTADUAL\",\n\t\"4922103\": \"TRANSPORTE RODOVIÁRIO COLETIVO DE PASSAGEIROS, COM ITINERÁRIO FIXO, INTERNACIONAL\",\n\t\"4923001\": \"SERVIÇO DE TÁXI\",\n\t\"4923002\": \"SERVIÇO DE TRANSPORTE DE PASSAGEIROS - LOCAÇÃO DE AUTOMÓVEIS COM MOTORISTA\",\n\t\"4924800\": \"TRANSPORTE ESCOLAR\",\n\t\"4929901\": \"TRANSPORTE RODOVIÁRIO COLETIVO DE PASSAGEIROS, SOB REGIME DE FRETAMENTO, MUNICIPAL\",\n\t\"4929902\":\n\t\t\"TRANSPORTE RODOVIÁRIO COLETIVO DE PASSAGEIROS, SOB REGIME DE FRETAMENTO, INTERMUNICIPAL, INTERESTADUAL E INTERNACIONAL\",\n\t\"4929903\": \"ORGANIZAÇÃO DE EXCURSÕES EM VEÍCULOS RODOVIÁRIOS PRÓPRIOS, MUNICIPAL\",\n\t\"4929904\":\n\t\t\"ORGANIZAÇÃO DE EXCURSÕES EM VEÍCULOS RODOVIÁRIOS PRÓPRIOS, INTERMUNICIPAL, INTERESTADUAL E INTERNACIONAL\",\n\t\"4929999\": \"OUTROS TRANSPORTES RODOVIÁRIOS DE PASSAGEIROS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"4930201\": \"TRANSPORTE RODOVIÁRIO DE CARGA, EXCETO PRODUTOS PERIGOSOS E MUDANÇAS, MUNICIPAL\",\n\t\"4930202\":\n\t\t\"TRANSPORTE RODOVIÁRIO DE CARGA, EXCETO PRODUTOS PERIGOSOS E MUDANÇAS, INTERMUNICIPAL, INTERESTADUAL E INTERNACIONAL\",\n\t\"4930203\": \"TRANSPORTE RODOVIÁRIO DE PRODUTOS PERIGOSOS\",\n\t\"4930204\": \"TRANSPORTE RODOVIÁRIO DE MUDANÇAS\",\n\t\"4940000\": \"TRANSPORTE DUTOVIÁRIO\",\n\t\"4950700\": \"TRENS TURÍSTICOS, TELEFÉRICOS E SIMILARES\",\n\t\"5011401\": \"TRANSPORTE MARÍTIMO DE CABOTAGEM - CARGA\",\n\t\"5011402\": \"TRANSPORTE MARÍTIMO DE CABOTAGEM - PASSAGEIROS\",\n\t\"5012201\": \"TRANSPORTE MARÍTIMO DE LONGO CURSO - CARGA\",\n\t\"5012202\": \"TRANSPORTE MARÍTIMO DE LONGO CURSO - PASSAGEIROS\",\n\t\"5021101\": \"TRANSPORTE POR NAVEGAÇÃO INTERIOR DE CARGA, MUNICIPAL, EXCETO TRAVESSIA\",\n\t\"5021102\":\n\t\t\"TRANSPORTE POR NAVEGAÇÃO INTERIOR DE CARGA, INTERMUNICIPAL, INTERESTADUAL E INTERNACIONAL, EXCETO TRAVESSIA\",\n\t\"5022001\":\n\t\t\"TRANSPORTE POR NAVEGAÇÃO INTERIOR DE PASSAGEIROS EM LINHAS REGULARES, MUNICIPAL, EXCETO TRAVESSIA\",\n\t\"5022002\":\n\t\t\"TRANSPORTE POR NAVEGAÇÃO INTERIOR DE PASSAGEIROS EM LINHAS REGULARES, INTERMUNICIPAL, INTERESTADUAL E INTERNACIONAL, EXCETO TRAVESSIA\",\n\t\"5030101\": \"NAVEGAÇÃO DE APOIO MARÍTIMO\",\n\t\"5030102\": \"NAVEGAÇÃO DE APOIO PORTUÁRIO\",\n\t\"5030103\": \"SERVIÇO DE REBOCADORES E EMPURRADORES\",\n\t\"5091201\": \"TRANSPORTE POR NAVEGAÇÃO DE TRAVESSIA, MUNICIPAL\",\n\t\"5091202\": \"TRANSPORTE POR NAVEGAÇÃO DE TRAVESSIA INTERMUNICIPAL, INTERESTADUAL E INTERNACIONAL\",\n\t\"5099801\": \"TRANSPORTE AQUAVIÁRIO PARA PASSEIOS TURÍSTICOS\",\n\t\"5099899\": \"OUTROS TRANSPORTES AQUAVIÁRIOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"5111100\": \"TRANSPORTE AÉREO DE PASSAGEIROS REGULAR\",\n\t\"5112901\": \"SERVIÇO DE TÁXI AÉREO E LOCAÇÃO DE AERONAVES COM TRIPULAÇÃO\",\n\t\"5112999\": \"OUTROS SERVIÇOS DE TRANSPORTE AÉREO DE PASSAGEIROS NÃO REGULAR\",\n\t\"5120000\": \"TRANSPORTE AÉREO DE CARGA\",\n\t\"5130700\": \"TRANSPORTE ESPACIAL\",\n\t\"5211701\": \"ARMAZÉNS GERAIS - EMISSÃO DE WARRANT\",\n\t\"5211702\": \"GUARDA MÓVEIS\",\n\t\"5211799\": \"DEPÓSITOS DE MERCADORIAS PARA TERCEIROS, EXCETO ARMAZÉNS GERAIS E GUARDA MÓVEIS\",\n\t\"5212500\": \"CARGA E DESCARGA\",\n\t\"5221400\": \"CONCESSIONÁRIAS DE RODOVIAS, PONTES, TÚNEIS E SERVIÇOS RELACIONADOS\",\n\t\"5222200\": \"TERMINAIS RODOVIÁRIOS E FERROVIÁRIOS\",\n\t\"5223100\": \"ESTACIONAMENTO DE VEÍCULOS\",\n\t\"5229001\": \"SERVIÇOS DE APOIO AO TRANSPORTE POR TÁXI, INCLUSIVE CENTRAIS DE CHAMADA\",\n\t\"5229002\": \"SERVIÇOS DE REBOQUE DE VEÍCULOS\",\n\t\"5229099\":\n\t\t\"OUTRAS ATIVIDADES AUXILIARES DOS TRANSPORTES TERRESTRES NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"5231101\": \"ADMINISTRAÇÃO DA INFRAESTRUTURA PORTUÁRIA\",\n\t\"5231102\": \"ATIVIDADES DO OPERADOR PORTUÁRIO\",\n\t\"5231103\": \"GESTÃO DE TERMINAIS AQUAVIÁRIOS\",\n\t\"5232000\": \"ATIVIDADES DE AGENCIAMENTO MARÍTIMO\",\n\t\"5239701\": \"SERVIÇOS DE PRATICAGEM\",\n\t\"5239799\": \"ATIVIDADES AUXILIARES DOS TRANSPORTES AQUAVIÁRIOS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"5240101\": \"OPERAÇÃO DOS AEROPORTOS E CAMPOS DE ATERRISSAGEM\",\n\t\"5240199\":\n\t\t\"ATIVIDADES AUXILIARES DOS TRANSPORTES AÉREOS, EXCETO OPERAÇÃO DOS AEROPORTOS E CAMPOS DE ATERRISSAGEM\",\n\t\"5250801\": \"COMISSARIA DE DESPACHOS\",\n\t\"5250802\": \"ATIVIDADES DE DESPACHANTES ADUANEIROS\",\n\t\"5250803\": \"AGENCIAMENTO DE CARGAS, EXCETO PARA O TRANSPORTE MARÍTIMO\",\n\t\"5250804\": \"ORGANIZAÇÃO LOGÍSTICA DO TRANSPORTE DE CARGA\",\n\t\"5250805\": \"OPERADOR DE TRANSPORTE MULTIMODAL - OTM\",\n\t\"5310501\": \"ATIVIDADES DO CORREIO NACIONAL\",\n\t\"5310502\": \"ATIVIDADES DE FRANQUEADAS DO CORREIO NACIONAL\",\n\t\"5320201\": \"SERVIÇOS DE MALOTE NÃO REALIZADOS PELO CORREIO NACIONAL\",\n\t\"5320202\": \"SERVIÇOS DE ENTREGA RÁPIDA\",\n\t\"5510801\": \"HOTÉIS\",\n\t\"5510802\": \"APART HOTÉIS\",\n\t\"5510803\": \"MOTÉIS\",\n\t\"5590601\": \"ALBERGUES, EXCETO ASSISTENCIAIS\",\n\t\"5590602\": \"CAMPINGS\",\n\t\"5590603\": \"PENSÕES(ALOJAMENTO)\",\n\t\"5590699\": \"OUTROS ALOJAMENTOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"5611201\": \"RESTAURANTES E SIMILARES\",\n\t\"5611203\": \"LANCHONETES, CASAS DE CHÁ, DE SUCOS E SIMILARES\",\n\t\"5611204\": \"BARES E OUTROS ESTABELECIMENTOS ESPECIALIZADOS EM SERVIR BEBIDAS, SEM ENTRETENIMENTO\",\n\t\"5611205\":\n\t\t\"BARES E OUTROS ESTABELECIMENTOS ESPECIALIZADOS EM SERVIR BEBIDAS, COM ENTRETENIMENTO \",\n\t\"5612100\": \"SERVIÇOS AMBULANTES DE ALIMENTAÇÃO\",\n\t\"5620101\": \"FORNECIMENTO DE ALIMENTOS PREPARADOS PREPONDERANTEMENTE PARA EMPRESAS\",\n\t\"5620102\": \"SERVIÇOS DE ALIMENTAÇÃO PARA EVENTOS E RECEPÇÕES - BUFÊ\",\n\t\"5620103\": \"CANTINAS - SERVIÇOS DE ALIMENTAÇÃO PRIVATIVOS\",\n\t\"5620104\": \"FORNECIMENTO DE ALIMENTOS PREPARADOS PREPONDERANTEMENTE PARA CONSUMO DOMICILIAR\",\n\t\"5811500\": \"EDIÇÃO DE LIVROS\",\n\t\"5812301\": \"EDIÇÃO DE JORNAIS DIÁRIOS\",\n\t\"5812302\": \"EDIÇÃO DE JORNAIS NÃO DIÁRIOS\",\n\t\"5813100\": \"EDIÇÃO DE REVISTAS\",\n\t\"5819100\": \"EDIÇÃO DE CADASTROS, LISTAS E DE OUTROS PRODUTOS GRÁFICOS\",\n\t\"5821200\": \"EDIÇÃO INTEGRADA À IMPRESSÃO DE LIVROS\",\n\t\"5822101\": \"EDIÇÃO INTEGRADA À IMPRESSÃO DE JORNAIS DIÁRIOS\",\n\t\"5822102\": \"EDIÇÃO INTEGRADA À IMPRESSÃO DE JORNAIS NÃO DIÁRIOS\",\n\t\"5823900\": \"EDIÇÃO INTEGRADA À IMPRESSÃO DE REVISTAS\",\n\t\"5829800\": \"EDIÇÃO INTEGRADA À IMPRESSÃO DE CADASTROS, LISTAS E DE OUTROS PRODUTOS GRÁFICOS\",\n\t\"5911101\": \"ESTÚDIOS CINEMATOGRÁFICOS\",\n\t\"5911102\": \"PRODUÇÃO DE FILMES PARA PUBLICIDADE\",\n\t\"5911199\":\n\t\t\"ATIVIDADES DE PRODUÇÃO CINEMATOGRÁFICA, DE VÍDEOS E DE PROGRAMAS DE TELEVISÃO NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"5912001\": \"SERVIÇOS DE DUBLAGEM\",\n\t\"5912002\": \"SERVIÇOS DE MIXAGEM SONORA EM PRODUÇÃO AUDIOVISUAL\",\n\t\"5912099\":\n\t\t\"ATIVIDADES DE PÓS PRODUÇÃO CINEMATOGRÁFICA, DE VÍDEOS E DE PROGRAMAS DE TELEVISÃO NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"5913800\": \"DISTRIBUIÇÃO CINEMATOGRÁFICA, DE VÍDEO E DE PROGRAMAS DE TELEVISÃO\",\n\t\"5914600\": \"ATIVIDADES DE EXIBIÇÃO CINEMATOGRÁFICA\",\n\t\"5920100\": \"ATIVIDADES DE GRAVAÇÃO DE SOM E DE EDIÇÃO DE MÚSICA\",\n\t\"6010100\": \"ATIVIDADES DE RÁDIO\",\n\t\"6021700\": \"ATIVIDADES DE TELEVISÃO ABERTA\",\n\t\"6022501\": \"PROGRAMADORAS\",\n\t\"6022502\": \"ATIVIDADES RELACIONADAS À TELEVISÃO POR ASSINATURA, EXCETO PROGRAMADORAS\",\n\t\"6110801\": \"SERVIÇOS DE TELEFONIA FIXA COMUTADA - STFC\",\n\t\"6110802\": \"SERVIÇOS DE REDES DE TRANSPORTES DE TELECOMUNICAÇÕES - SRTT\",\n\t\"6110803\": \"SERVIÇOS DE COMUNICAÇÃO MULTIMÍDIA - SCM\",\n\t\"6110899\": \"SERVIÇOS DE TELECOMUNICAÇÕES POR FIO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"6120501\": \"TELEFONIA MÓVEL CELULAR\",\n\t\"6120502\": \"SERVIÇO MÓVEL ESPECIALIZADO - SME\",\n\t\"6120599\": \"SERVIÇOS DE TELECOMUNICAÇÕES SEM FIO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"6130200\": \"TELECOMUNICAÇÕES POR SATÉLITE\",\n\t\"6141800\": \"OPERADORAS DE TELEVISÃO POR ASSINATURA POR CABO\",\n\t\"6142600\": \"OPERADORAS DE TELEVISÃO POR ASSINATURA POR MICROONDAS\",\n\t\"6143400\": \"OPERADORAS DE TELEVISÃO POR ASSINATURA POR SATÉLITE\",\n\t\"6190601\": \"PROVEDORES DE ACESSO ÀS REDES DE COMUNICAÇÕES\",\n\t\"6190602\": \"PROVEDORES DE VOZ SOBRE PROTOCOLO INTERNET - VOIP\",\n\t\"6190699\": \"OUTRAS ATIVIDADES DE TELECOMUNICAÇÕES NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"6201501\": \"DESENVOLVIMENTO DE PROGRAMAS DE COMPUTADOR SOB ENCOMENDA\",\n\t\"6201502\": \"WEB DESIGN\",\n\t\"6202300\": \"DESENVOLVIMENTO E LICENCIAMENTO DE PROGRAMAS DE COMPUTADOR CUSTOMIZÁVEIS\",\n\t\"6203100\": \"DESENVOLVIMENTO E LICENCIAMENTO DE PROGRAMAS DE COMPUTADOR NÃO CUSTOMIZÁVEIS\",\n\t\"6204000\": \"CONSULTORIA EM TECNOLOGIA DA INFORMAÇÃO\",\n\t\"6209100\": \"SUPORTE TÉCNICO, MANUTENÇÃO E OUTROS SERVIÇOS EM TECNOLOGIA DA INFORMAÇÃO\",\n\t\"6311900\":\n\t\t\"TRATAMENTO DE DADOS, PROVEDORES DE SERVIÇOS DE APLICAÇÃO E SERVIÇOS DE HOSPEDAGEM NA INTERNET\",\n\t\"6319400\": \"PORTAIS, PROVEDORES DE CONTEÚDO E OUTROS SERVIÇOS DE INFORMAÇÃO NA INTERNET\",\n\t\"6391700\": \"AGÊNCIAS DE NOTÍCIAS\",\n\t\"6399200\":\n\t\t\"OUTRAS ATIVIDADES DE PRESTAÇÃO DE SERVIÇOS DE INFORMAÇÃO NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"6410700\": \"BANCO CENTRAL\",\n\t\"6421200\": \"BANCOS COMERCIAIS\",\n\t\"6422100\": \"BANCOS MÚLTIPLOS, COM CARTEIRA COMERCIAL\",\n\t\"6423900\": \"CAIXAS ECONÔMICAS\",\n\t\"6424701\": \"BANCOS COOPERATIVOS\",\n\t\"6424702\": \"COOPERATIVAS CENTRAIS DE CRÉDITO\",\n\t\"6424703\": \"COOPERATIVAS DE CRÉDITO MÚTUO\",\n\t\"6424704\": \"COOPERATIVAS DE CRÉDITO RURAL\",\n\t\"6431000\": \"BANCOS MÚLTIPLOS, SEM CARTEIRA COMERCIAL\",\n\t\"6432800\": \"BANCOS DE INVESTIMENTO\",\n\t\"6433600\": \"BANCOS DE DESENVOLVIMENTO\",\n\t\"6434400\": \"AGÊNCIAS DE FOMENTO\",\n\t\"6435201\": \"SOCIEDADES DE CRÉDITO IMOBILIÁRIO\",\n\t\"6435202\": \"ASSOCIAÇÕES DE POUPANÇA E EMPRÉSTIMO\",\n\t\"6435203\": \"COMPANHIAS HIPOTECÁRIAS\",\n\t\"6436100\": \"SOCIEDADES DE CRÉDITO, FINANCIAMENTO E INVESTIMENTO - FINANCEIRAS\",\n\t\"6437900\": \"SOCIEDADES DE CRÉDITO AO MICROEMPREENDEDOR\",\n\t\"6438701\": \"BANCOS DE CÂMBIO\",\n\t\"6438799\": \"OUTRAS INSTITUIÇÕES DE INTERMEDIAÇÃO NÃO MONETÁRIA\",\n\t\"6440900\": \"ARRENDAMENTO MERCANTIL\",\n\t\"6450600\": \"SOCIEDADES DE CAPITALIZAÇÃO\",\n\t\"6461100\": \"HOLDINGS DE INSTITUIÇÕES FINANCEIRAS\",\n\t\"6462000\": \"HOLDINGS DE INSTITUIÇÕES NÃO FINANCEIRAS\",\n\t\"6463800\": \"OUTRAS SOCIEDADES DE PARTICIPAÇÃO, EXCETO HOLDINGS\",\n\t\"6470101\": \"FUNDOS DE INVESTIMENTO, EXCETO PREVIDENCIÁRIOS E IMOBILIÁRIOS\",\n\t\"6470102\": \"FUNDOS DE INVESTIMENTO PREVIDENCIÁRIOS\",\n\t\"6470103\": \"FUNDOS DE INVESTIMENTO IMOBILIÁRIOS\",\n\t\"6491300\": \"SOCIEDADES DE FOMENTO MERCANTIL - FACTORING\",\n\t\"6492100\": \"SECURITIZAÇÃO DE CRÉDITOS\",\n\t\"6493000\": \"ADMINISTRAÇÃO DE CONSÓRCIOS PARA AQUISIÇÃO DE BENS E DIREITOS\",\n\t\"6499901\": \"CLUBES DE INVESTIMENTO\",\n\t\"6499902\": \"SOCIEDADES DE INVESTIMENTO\",\n\t\"6499903\": \"FUNDO GARANTIDOR DE CRÉDITO\",\n\t\"6499904\": \"CAIXAS DE FINANCIAMENTO DE CORPORAÇÕES\",\n\t\"6499905\": \"CONCESSÃO DE CRÉDITO PELAS OSCIP\",\n\t\"6499999\": \"OUTRAS ATIVIDADES DE SERVIÇOS FINANCEIROS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"6511101\": \"SOCIEDADE SEGURADORA DE SEGUROS VIDA\",\n\t\"6511102\": \"PLANOS DE AUXÍLIO FUNERAL\",\n\t\"6512000\": \"SOCIEDADE SEGURADORA DE SEGUROS NÃO VIDA\",\n\t\"6520100\": \"SOCIEDADE SEGURADORA DE SEGUROS SAÚDE\",\n\t\"6530800\": \"RESSEGUROS\",\n\t\"6541300\": \"PREVIDÊNCIA COMPLEMENTAR FECHADA\",\n\t\"6542100\": \"PREVIDÊNCIA COMPLEMENTAR ABERTA\",\n\t\"6550200\": \"PLANOS DE SAÚDE\",\n\t\"6611801\": \"BOLSA DE VALORES\",\n\t\"6611802\": \"BOLSA DE MERCADORIAS\",\n\t\"6611803\": \"BOLSA DE MERCADORIAS E FUTUROS\",\n\t\"6611804\": \"ADMINISTRAÇÃO DE MERCADOS DE BALCÃO ORGANIZADOS\",\n\t\"6612601\": \"CORRETORAS DE TÍTULOS E VALORES MOBILIÁRIOS\",\n\t\"6612602\": \"DISTRIBUIDORAS DE TÍTULOS E VALORES MOBILIÁRIOS\",\n\t\"6612603\": \"CORRETORAS DE CÂMBIO\",\n\t\"6612604\": \"CORRETORAS DE CONTRATOS DE MERCADORIAS\",\n\t\"6612605\": \"AGENTES DE INVESTIMENTOS EM APLICAÇÕES FINANCEIRAS\",\n\t\"6613400\": \"ADMINISTRAÇÃO DE CARTÕES DE CRÉDITO\",\n\t\"6619301\": \"SERVIÇOS DE LIQUIDAÇÃO E CUSTÓDIA\",\n\t\"6619302\": \"CORRESPONDENTES DE INSTITUIÇÕES FINANCEIRAS\",\n\t\"6619303\": \"REPRESENTAÇÕES DE BANCOS ESTRANGEIROS\",\n\t\"6619304\": \"CAIXAS ELETRÔNICOS\",\n\t\"6619305\": \"OPERADORAS DE CARTÕES DE DÉBITO\",\n\t\"6619399\":\n\t\t\"OUTRAS ATIVIDADES AUXILIARES DOS SERVIÇOS FINANCEIROS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"6621501\": \"PERITOS E AVALIADORES DE SEGUROS\",\n\t\"6621502\": \"AUDITORIA E CONSULTORIA ATUARIAL\",\n\t\"6622300\": \"CORRETORES E AGENTES DE SEGUROS, DE PLANOS DE PREVIDÊNCIA COMPLEMENTAR E DE SAÚDE\",\n\t\"6629100\":\n\t\t\"ATIVIDADES AUXILIARES DOS SEGUROS, DA PREVIDÊNCIA COMPLEMENTAR E DOS PLANOS DE SAÚDE NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"6630400\": \"ATIVIDADES DE ADMINISTRAÇÃO DE FUNDOS POR CONTRATO OU COMISSÃO\",\n\t\"6810201\": \"COMPRA E VENDA DE IMÓVEIS PRÓPRIOS\",\n\t\"6810202\": \"ALUGUEL DE IMÓVEIS PRÓPRIOS\",\n\t\"6810203\": \"LOTEAMENTO DE IMÓVEIS PRÓPRIOS\",\n\t\"6821801\": \"CORRETAGEM NA COMPRA E VENDA E AVALIAÇÃO DE IMÓVEIS\",\n\t\"6821802\": \"CORRETAGEM NO ALUGUEL DE IMÓVEIS\",\n\t\"6822600\": \"GESTÃO E ADMINISTRAÇÃO DA PROPRIEDADE IMOBILIARIA\",\n\t\"6911701\": \"SERVIÇOS ADVOCATÍCIOS\",\n\t\"6911702\": \"ATIVIDADES AUXILIARES DA JUSTIÇA\",\n\t\"6911703\": \"AGENTE DE PROPRIEDADE INDUSTRIAL\",\n\t\"6912500\": \"CARTÓRIOS\",\n\t\"6920601\": \"ATIVIDADES DE CONTABILIDADE\",\n\t\"6920602\": \"ATIVIDADES DE CONSULTORIA E AUDITORIA CONTÁBIL E TRIBUTÁRIA\",\n\t\"7020400\":\n\t\t\"ATIVIDADES DE CONSULTORIA EM GESTÃO EMPRESARIAL, EXCETO CONSULTORIA TÉCNICA ESPECÍFICA\",\n\t\"7111100\": \"SERVIÇOS DE ARQUITETURA\",\n\t\"7112000\": \"SERVIÇOS DE ENGENHARIA\",\n\t\"7119701\": \"SERVIÇOS DE CARTOGRAFIA, TOPOGRAFIA E GEODÉSIA\",\n\t\"7119702\": \"ATIVIDADES DE ESTUDOS GEOLÓGICOS\",\n\t\"7119703\": \"SERVIÇOS DE DESENHO TÉCNICO RELACIONADOS À ARQUITETURA E ENGENHARIA\",\n\t\"7119704\": \"SERVIÇOS DE PERÍCIA TÉCNICA RELACIONADOS À SEGURANÇA DO TRABALHO\",\n\t\"7119799\":\n\t\t\"ATIVIDADES TÉCNICAS RELACIONADAS À ENGENHARIA E ARQUITETURA NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"7120100\": \"TESTES E ANÁLISES TÉCNICAS\",\n\t\"7210000\": \"PESQUISA E DESENVOLVIMENTO EXPERIMENTAL EM CIÊNCIAS FÍSICAS E NATURAIS\",\n\t\"7220700\": \"PESQUISA E DESENVOLVIMENTO EXPERIMENTAL EM CIÊNCIAS SOCIAIS E HUMANAS\",\n\t\"7311400\": \"AGÊNCIAS DE PUBLICIDADE\",\n\t\"7312200\": \"AGENCIAMENTO DE ESPAÇOS PARA PUBLICIDADE, EXCETO EM VEÍCULOS DE COMUNICAÇÃO\",\n\t\"7319001\": \"CRIAÇÃO ESTANDES PARA FEIRAS E EXPOSIÇÕES\",\n\t\"7319002\": \"PROMOÇÃO DE VENDAS\",\n\t\"7319003\": \"MARKETING DIRETO\",\n\t\"7319004\": \"CONSULTORIA EM PUBLICIDADE\",\n\t\"7319099\": \"OUTRAS ATIVIDADES DE PUBLICIDADE NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"7320300\": \"PESQUISAS DE MERCADO E DE OPINIÃO PÚBLICA\",\n\t\"7410202\": \"DESIGN DE INTERIORES\",\n\t\"7410203\": \"DESIGN DE PRODUTO\",\n\t\"7410299\": \"ATIVIDADES DE DESIGN NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"7420001\": \"ATIVIDADES DE PRODUÇÃO DE FOTOGRAFIAS, EXCETO AÉREA E SUBMARINA\",\n\t\"7420002\": \"ATIVIDADES DE PRODUÇÃO DE FOTOGRAFIAS AÉREAS E SUBMARINAS\",\n\t\"7420003\": \"LABORATÓRIOS FOTOGRÁFICOS\",\n\t\"7420004\": \"FILMAGEM DE FESTAS E EVENTOS\",\n\t\"7420005\": \"SERVIÇOS DE MICROFILMAGEM\",\n\t\"7490101\": \"SERVIÇOS DE TRADUÇÃO, INTERPRETAÇÃO E SIMILARES\",\n\t\"7490102\": \"ESCAFANDRIA E MERGULHO\",\n\t\"7490103\": \"SERVIÇOS DE AGRONOMIA E DE CONSULTORIA ÀS ATIVIDADES AGRÍCOLAS E PECUÁRIAS\",\n\t\"7490104\":\n\t\t\"ATIVIDADES DE INTERMEDIAÇÃO E AGENCIAMENTO DE SERVIÇOS E NEGÓCIOS EM GERAL, EXCETO IMOBILIÁRIOS\",\n\t\"7490105\": \"AGENCIAMENTO DE PROFISSIONAIS PARA ATIVIDADES ESPORTIVAS, CULTURAIS E ARTÍSTICAS\",\n\t\"7490199\":\n\t\t\"OUTRAS ATIVIDADES PROFISSIONAIS, CIENTÍFICAS E TÉCNICAS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"7500100\": \"ATIVIDADES VETERINÁRIAS\",\n\t\"7711000\": \"LOCAÇÃO DE AUTOMÓVEIS SEM CONDUTOR\",\n\t\"7719501\": \"LOCAÇÃO DE EMBARCAÇÕES SEM TRIPULAÇÃO, EXCETO PARA FINS RECREATIVOS\",\n\t\"7719502\": \"LOCAÇÃO DE AERONAVES SEM TRIPULAÇÃO\",\n\t\"7719599\": \"LOCAÇÃO DE OUTROS MEIOS DE TRANSPORTE NÃO ESPECIFICADOS ANTERIORMENTE, SEM CONDUTOR\",\n\t\"7721700\": \"ALUGUEL DE EQUIPAMENTOS RECREATIVOS E ESPORTIVOS\",\n\t\"7722500\": \"ALUGUEL DE FITAS DE VÍDEO, DVDS E SIMILARES\",\n\t\"7723300\": \"ALUGUEL DE OBJETOS DO VESTUÁRIO, JÓIAS E ACESSÓRIOS\",\n\t\"7729201\": \"ALUGUEL DE APARELHOS DE JOGOS ELETRÔNICOS\",\n\t\"7729202\":\n\t\t\"ALUGUEL DE MÓVEIS, UTENSÍLIOS E APARELHOS DE USO DOMÉSTICO E PESSOAL; INSTRUMENTOS MUSICAIS\",\n\t\"7729203\": \"ALUGUEL DE MATERIAL MÉDICO\",\n\t\"7729299\": \"ALUGUEL DE OUTROS OBJETOS PESSOAIS E DOMÉSTICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"7731400\": \"ALUGUEL DE MÁQUINAS E EQUIPAMENTOS AGRÍCOLAS SEM OPERADOR\",\n\t\"7732201\": \"ALUGUEL DE MÁQUINAS E EQUIPAMENTOS PARA CONSTRUÇÃO SEM OPERADOR, EXCETO ANDAIMES\",\n\t\"7732202\": \"ALUGUEL DE ANDAIMES\",\n\t\"7733100\": \"ALUGUEL DE MÁQUINAS E EQUIPAMENTOS PARA ESCRITÓRIOS\",\n\t\"7739001\":\n\t\t\"ALUGUEL DE MÁQUINAS E EQUIPAMENTOS PARA EXTRAÇÃO DE MINÉRIOS E PETRÓLEO, SEM OPERADOR\",\n\t\"7739002\": \"ALUGUEL DE EQUIPAMENTOS CIENTÍFICOS, MÉDICOS E HOSPITALARES, SEM OPERADOR\",\n\t\"7739003\": \"ALUGUEL DE PALCOS, COBERTURAS E OUTRAS ESTRUTURAS DE USO TEMPORÁRIO, EXCETO ANDAIMES\",\n\t\"7739099\":\n\t\t\"ALUGUEL DE OUTRAS MÁQUINAS E EQUIPAMENTOS COMERCIAIS E INDUSTRIAIS NÃO ESPECIFICADOS ANTERIORMENTE, SEM OPERADOR\",\n\t\"7740300\": \"GESTÃO DE ATIVOS INTANGÍVEIS NÃO FINANCEIROS\",\n\t\"7810800\": \"SELEÇÃO E AGENCIAMENTO DE MÃO DE OBRA\",\n\t\"7820500\": \"LOCAÇÃO DE MÃO DE OBRA TEMPORÁRIA\",\n\t\"7830200\": \"FORNECIMENTO E GESTÃO DE RECURSOS HUMANOS PARA TERCEIROS\",\n\t\"7911200\": \"AGÊNCIAS DE VIAGENS\",\n\t\"7912100\": \"OPERADORES TURÍSTICOS\",\n\t\"7990200\": \"SERVIÇOS DE RESERVAS E OUTROS SERVIÇOS DE TURISMO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"8011101\": \"ATIVIDADES DE VIGILÂNCIA E SEGURANÇA PRIVADA\",\n\t\"8011102\": \"SERVIÇOS DE ADESTRAMENTO DE CÃES DE GUARDA\",\n\t\"8012900\": \"ATIVIDADES DE TRANSPORTE DE VALORES\",\n\t\"8020001\": \"ATIVIDADES DE MONITORAMENTO DE SISTEMAS DE SEGURANÇA ELETRÔNICO\",\n\t\"8020002\": \"OUTRAS ATIVIDADES DE SERVIÇOS DE SEGURANÇA\",\n\t\"8030700\": \"ATIVIDADES DE INVESTIGAÇÃO PARTICULAR\",\n\t\"8111700\": \"SERVIÇOS COMBINADOS PARA APOIO A EDIFÍCIOS, EXCETO CONDOMÍNIOS PREDIAIS\",\n\t\"8112500\": \"CONDOMÍNIOS PREDIAIS\",\n\t\"8121400\": \"LIMPEZA EM PRÉDIOS E EM DOMICÍLIOS\",\n\t\"8122200\": \"IMUNIZAÇÃO E CONTROLE DE PRAGAS URBANAS\",\n\t\"8129000\": \"ATIVIDADES DE LIMPEZA NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"8130300\": \"ATIVIDADES PAISAGÍSTICAS\",\n\t\"8211300\": \"SERVIÇOS COMBINADOS DE ESCRITÓRIO E APOIO ADMINISTRATIVO\",\n\t\"8219901\": \"FOTOCÓPIAS\",\n\t\"8219999\":\n\t\t\"PREPARAÇÃO DE DOCUMENTOS E SERVIÇOS ESPECIALIZADOS DE APOIO ADMINISTRATIVO NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"8220200\": \"ATIVIDADES DE TELEATENDIMENTO\",\n\t\"8230001\": \"SERVIÇOS DE ORGANIZAÇÃO DE FEIRAS, CONGRESSOS, EXPOSIÇÕES E FESTAS\",\n\t\"8230002\": \"CASAS DE FESTAS E EVENTOS\",\n\t\"8291100\": \"ATIVIDADES DE COBRANÇAS E INFORMAÇÕES CADASTRAIS\",\n\t\"8292000\": \"ENVASAMENTO E EMPACOTAMENTO SOB CONTRATO\",\n\t\"8299701\": \"MEDIÇÃO DE CONSUMO DE ENERGIA ELÉTRICA, GÁS E ÁGUA\",\n\t\"8299702\": \"EMISSÃO DE VALES ALIMENTAÇÃO, VALES TRANSPORTE E SIMILARES\",\n\t\"8299703\": \"SERVIÇOS DE GRAVAÇÃO DE CARIMBOS, EXCETO CONFECÇÃO\",\n\t\"8299704\": \"LEILOEIROS INDEPENDENTES\",\n\t\"8299705\": \"SERVIÇOS DE LEVANTAMENTO DE FUNDOS SOB CONTRATO\",\n\t\"8299706\": \"CASAS LOTÉRICAS\",\n\t\"8299707\": \"SALAS DE ACESSO À INTERNET\",\n\t\"8299799\":\n\t\t\"OUTRAS ATIVIDADES DE SERVIÇOS PRESTADOS PRINCIPALMENTE ÀS EMPRESAS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"8411600\": \"ADMINISTRAÇÃO PÚBLICA EM GERAL\",\n\t\"8412400\":\n\t\t\"REGULAÇÃO DAS ATIVIDADES DE SAÚDE, EDUCAÇÃO, SERVIÇOS CULTURAIS E OUTROS SERVIÇOS SOCIAIS\",\n\t\"8413200\": \"REGULAÇÃO DAS ATIVIDADES ECONÔMICAS\",\n\t\"8421300\": \"RELAÇÕES EXTERIORES\",\n\t\"8422100\": \"DEFESA\",\n\t\"8423000\": \"JUSTIÇA\",\n\t\"8424800\": \"SEGURANÇA E ORDEM PÚBLICA\",\n\t\"8425600\": \"DEFESA CIVIL\",\n\t\"8430200\": \"SEGURIDADE SOCIAL OBRIGATÓRIA\",\n\t\"8511200\": \"EDUCAÇÃO INFANTIL - CRECHE\",\n\t\"8512100\": \"EDUCAÇÃO INFANTIL - PRÉESCOLA\",\n\t\"8513900\": \"ENSINO FUNDAMENTAL\",\n\t\"8520100\": \"ENSINO MÉDIO\",\n\t\"8531700\": \"EDUCAÇÃO SUPERIOR - GRADUAÇÃO\",\n\t\"8532500\": \"EDUCAÇÃO SUPERIOR - GRADUAÇÃO E PÓS GRADUAÇÃO\",\n\t\"8533300\": \"EDUCAÇÃO SUPERIOR - PÓS GRADUAÇÃO E EXTENSÃO\",\n\t\"8541400\": \"EDUCAÇÃO PROFISSIONAL DE NÍVEL TÉCNICO\",\n\t\"8542200\": \"EDUCAÇÃO PROFISSIONAL DE NÍVEL TECNOLÓGICO\",\n\t\"8550301\": \"ADMINISTRAÇÃO DE CAIXAS ESCOLARES\",\n\t\"8550302\": \"ATIVIDADES DE APOIO À EDUCAÇÃO, EXCETO CAIXAS ESCOLARES\",\n\t\"8591100\": \"ENSINO DE ESPORTES\",\n\t\"8592901\": \"ENSINO DE DANÇA\",\n\t\"8592902\": \"ENSINO DE ARTES CÊNICAS, EXCETO DANÇA\",\n\t\"8592903\": \"ENSINO DE MÚSICA\",\n\t\"8592999\": \"ENSINO DE ARTE E CULTURA NÃO ESPECIFICADO ANTERIORMENTE\",\n\t\"8593700\": \"ENSINO DE IDIOMAS\",\n\t\"8599601\": \"FORMAÇÃO DE CONDUTORES\",\n\t\"8599602\": \"CURSOS DE PILOTAGEM\",\n\t\"8599603\": \"TREINAMENTO EM INFORMÁTICA\",\n\t\"8599604\": \"TREINAMENTO EM DESENVOLVIMENTO PROFISSIONAL E GERENCIAL\",\n\t\"8599605\": \"CURSOS PREPARATÓRIOS PARA CONCURSOS\",\n\t\"8599699\": \"OUTRAS ATIVIDADES DE ENSINO NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"8610101\":\n\t\t\"ATIVIDADES DE ATENDIMENTO HOSPITALAR, EXCETO PRONTO SOCORRO E UNIDADES PARA ATENDIMENTO A URGÊNCIAS\",\n\t\"8610102\":\n\t\t\"ATIVIDADES DE ATENDIMENTO EM PRONTO SOCORRO E UNIDADES HOSPITALARES PARA ATENDIMENTO A URGÊNCIAS\",\n\t\"8621601\": \"UTI MÓVEL\",\n\t\"8621602\": \"SERVIÇOS MÓVEIS DE ATENDIMENTO A URGÊNCIAS, EXCETO POR UTI MÓVEL\",\n\t\"8622400\":\n\t\t\"SERVIÇOS DE REMOÇÃO DE PACIENTES, EXCETO OS SERVIÇOS MÓVEIS DE ATENDIMENTO A URGÊNCIAS\",\n\t\"8630501\":\n\t\t\"ATIVIDADE MÉDICA AMBULATORIAL COM RECURSOS PARA REALIZAÇÃO DE PROCEDIMENTOS CIRÚRGICOS\",\n\t\"8630502\": \"ATIVIDADE MÉDICA AMBULATORIAL COM RECURSOS PARA REALIZAÇÃO DE EXAMES COMPLEMENTARES\",\n\t\"8630503\": \"ATIVIDADE MÉDICA AMBULATORIAL RESTRITA A CONSULTAS\",\n\t\"8630504\": \"ATIVIDADE ODONTOLÓGICA\",\n\t\"8630506\": \"SERVIÇOS DE VACINAÇÃO E IMUNIZAÇÃO HUMANA\",\n\t\"8630507\": \"ATIVIDADES DE REPRODUÇÃO HUMANA ASSISTIDA\",\n\t\"8630599\": \"ATIVIDADES DE ATENÇÃO AMBULATORIAL NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"8640201\": \"LABORATÓRIOS DE ANATOMIA PATOLÓGICA E CITOLÓGICA\",\n\t\"8640202\": \"LABORATÓRIOS CLÍNICOS\",\n\t\"8640203\": \"SERVIÇOS DE DIÁLISE E NEFROLOGIA\",\n\t\"8640204\": \"SERVIÇOS DE TOMOGRAFIA\",\n\t\"8640205\": \"SERVIÇOS DE DIAGNÓSTICO POR IMAGEM COM USO DE RADIAÇÃO IONIZANTE, EXCETO TOMOGRAFIA\",\n\t\"8640206\": \"SERVIÇOS DE RESSONÂNCIA MAGNÉTICA\",\n\t\"8640207\":\n\t\t\"SERVIÇOS DE DIAGNÓSTICO POR IMAGEM SEM USO DE RADIAÇÃO IONIZANTE, EXCETO RESSONÂNCIA MAGNÉTICA\",\n\t\"8640208\": \"SERVIÇOS DE DIAGNÓSTICO POR REGISTRO GRÁFICO - ECG, EEG E OUTROS EXAMES ANÁLOGOS\",\n\t\"8640209\": \"SERVIÇOS DE DIAGNÓSTICO POR MÉTODOS ÓPTICOS - ENDOSCOPIA E OUTROS EXAMES ANÁLOGOS\",\n\t\"8640210\": \"SERVIÇOS DE QUIMIOTERAPIA\",\n\t\"8640211\": \"SERVIÇOS DE RADIOTERAPIA\",\n\t\"8640212\": \"SERVIÇOS DE HEMOTERAPIA\",\n\t\"8640213\": \"SERVIÇOS DE LITOTRIPCIA\",\n\t\"8640214\": \"SERVIÇOS DE BANCOS DE CÉLULAS E TECIDOS HUMANOS\",\n\t\"8640299\":\n\t\t\"ATIVIDADES DE SERVIÇOS DE COMPLEMENTAÇÃO DIAGNÓSTICA E TERAPÊUTICA NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"8650001\": \"ATIVIDADES DE ENFERMAGEM\",\n\t\"8650002\": \"ATIVIDADES DE PROFISSIONAIS DA NUTRIÇÃO\",\n\t\"8650003\": \"ATIVIDADES DE PSICOLOGIA E PSICANÁLISE\",\n\t\"8650004\": \"ATIVIDADES DE FISIOTERAPIA\",\n\t\"8650005\": \"ATIVIDADES DE TERAPIA OCUPACIONAL\",\n\t\"8650006\": \"ATIVIDADES DE FONOAUDIOLOGIA\",\n\t\"8650007\": \"ATIVIDADES DE TERAPIA DE NUTRIÇÃO ENTERAL E PARENTERAL\",\n\t\"8650099\": \"ATIVIDADES DE PROFISSIONAIS DA ÁREA DE SAÚDE NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"8660700\": \"ATIVIDADES DE APOIO À GESTÃO DE SAÚDE\",\n\t\"8690901\": \"ATIVIDADES DE PRÁTICAS INTEGRATIVAS E COMPLEMENTARES EM SAÚDE HUMANA\",\n\t\"8690902\": \"ATIVIDADES DE BANCO DE LEITE HUMANO\",\n\t\"8690903\": \"ATIVIDADES DE ACUPUNTURA\",\n\t\"8690904\": \"ATIVIDADES DE PODOLOGIA\",\n\t\"8690999\": \"OUTRAS ATIVIDADES DE ATENÇÃO À SAÚDE HUMANA NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"8711501\": \"CLÍNICAS E RESIDÊNCIAS GERIÁTRICAS\",\n\t\"8711502\": \"INSTITUIÇÕES DE LONGA PERMANÊNCIA PARA IDOSOS\",\n\t\"8711503\": \"ATIVIDADES DE ASSISTÊNCIA A DEFICIENTES FÍSICOS, IMUNODEPRIMIDOS E CONVALESCENTES\",\n\t\"8711504\": \"CENTROS DE APOIO A PACIENTES COM CÂNCER E COM AIDS\",\n\t\"8711505\": \"CONDOMÍNIOS RESIDENCIAIS PARA IDOSOS\",\n\t\"8712300\":\n\t\t\"ATIVIDADES DE FORNECIMENTO DE INFRAESTRUTURA DE APOIO E ASSISTÊNCIA A PACIENTE NO DOMICÍLIO\",\n\t\"8720401\": \"ATIVIDADES DE CENTROS DE ASSISTÊNCIA PSICOSSOCIAL\",\n\t\"8720499\":\n\t\t\"ATIVIDADES DE ASSISTÊNCIA PSICOSSOCIAL E À SAÚDE A PORTADORES DE DISTÚRBIOS PSÍQUICOS, DEFICIÊNCIA MENTAL E DEPENDÊNCIA QUÍMICA E GRUPOS SIMILARES NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"8730101\": \"ORFANATOS\",\n\t\"8730102\": \"ALBERGUES ASSISTENCIAIS\",\n\t\"8730199\":\n\t\t\"ATIVIDADES DE ASSISTÊNCIA SOCIAL PRESTADAS EM RESIDÊNCIAS COLETIVAS E PARTICULARES NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"8800600\": \"SERVIÇOS DE ASSISTÊNCIA SOCIAL SEM ALOJAMENTO\",\n\t\"9001901\": \"PRODUÇÃO TEATRAL\",\n\t\"9001902\": \"PRODUÇÃO MUSICAL\",\n\t\"9001903\": \"PRODUÇÃO DE ESPETÁCULOS DE DANÇA\",\n\t\"9001904\": \"PRODUÇÃO DE ESPETÁCULOS CIRCENSES, DE MARIONETES E SIMILARES\",\n\t\"9001905\": \"PRODUÇÃO DE ESPETÁCULOS DE RODEIOS, VAQUEJADAS E SIMILARES\",\n\t\"9001906\": \"ATIVIDADES DE SONORIZAÇÃO E DE ILUMINAÇÃO\",\n\t\"9001999\":\n\t\t\"ARTES CÊNICAS, ESPETÁCULOS E ATIVIDADES COMPLEMENTARES NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"9002701\": \"ATIVIDADES DE ARTISTAS PLÁSTICOS, JORNALISTAS INDEPENDENTES E ESCRITORES\",\n\t\"9002702\": \"RESTAURAÇÃO DE OBRAS DE ARTE\",\n\t\"9003500\": \"GESTÃO DE ESPAÇOS PARA ARTES CÊNICAS, ESPETÁCULOS E OUTRAS ATIVIDADES ARTÍSTICAS\",\n\t\"9101500\": \"ATIVIDADES DE BIBLIOTECAS E ARQUIVOS\",\n\t\"9102301\":\n\t\t\"ATIVIDADES DE MUSEUS E DE EXPLORAÇÃO DE LUGARES E PRÉDIOS HISTÓRICOS E ATRAÇÕES SIMILARES\",\n\t\"9102302\": \"RESTAURAÇÃO E CONSERVAÇÃO DE LUGARES E PRÉDIOS HISTÓRICOS\",\n\t\"9103100\":\n\t\t\"ATIVIDADES DE JARDINS BOTÂNICOS, ZOOLÓGICOS, PARQUES NACIONAIS, RESERVAS ECOLÓGICAS E ÁREAS DE PROTEÇÃO AMBIENTAL\",\n\t\"9200301\": \"CASAS DE BINGO\",\n\t\"9200302\": \"EXPLORAÇÃO DE APOSTAS EM CORRIDAS DE CAVALOS\",\n\t\"9200399\": \"EXPLORAÇÃO DE JOGOS DE AZAR E APOSTAS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"9311500\": \"GESTÃO DE INSTALAÇÕES DE ESPORTES\",\n\t\"9312300\": \"CLUBES SOCIAIS, ESPORTIVOS E SIMILARES\",\n\t\"9313100\": \"ATIVIDADES DE CONDICIONAMENTO FÍSICO\",\n\t\"9319101\": \"PRODUÇÃO E PROMOÇÃO DE EVENTOS ESPORTIVOS\",\n\t\"9319199\": \"OUTRAS ATIVIDADES ESPORTIVAS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"9321200\": \"PARQUES DE DIVERSÃO E PARQUES TEMÁTICOS\",\n\t\"9329801\": \"DISCOTECAS, DANCETERIAS, SALÕES DE DANÇA E SIMILARES\",\n\t\"9329802\": \"EXPLORAÇÃO DE BOLICHES\",\n\t\"9329803\": \"EXPLORAÇÃO DE JOGOS DE SINUCA, BILHAR E SIMILARES\",\n\t\"9329804\": \"EXPLORAÇÃO DE JOGOS ELETRÔNICOS RECREATIVOS\",\n\t\"9329899\": \"OUTRAS ATIVIDADES DE RECREAÇÃO E LAZER NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"9411100\": \"ATIVIDADES DE ORGANIZAÇÕES ASSOCIATIVAS PATRONAIS E EMPRESARIAIS\",\n\t\"9412001\": \"ATIVIDADES DE FISCALIZAÇÃO PROFISSIONAL\",\n\t\"9412099\": \"OUTRAS ATIVIDADES ASSOCIATIVAS PROFISSIONAIS\",\n\t\"9420100\": \"ATIVIDADES DE ORGANIZAÇÕES SINDICAIS\",\n\t\"9430800\": \"ATIVIDADES DE ASSOCIAÇÕES DE DEFESA DE DIREITOS SOCIAIS\",\n\t\"9491000\": \"ATIVIDADES DE ORGANIZAÇÕES RELIGIOSAS OU FILOSÓFICAS\",\n\t\"9492800\": \"ATIVIDADES DE ORGANIZAÇÕES POLÍTICAS\",\n\t\"9493600\": \"ATIVIDADES DE ORGANIZAÇÕES ASSOCIATIVAS LIGADAS À CULTURA E À ARTE\",\n\t\"9499500\": \"ATIVIDADES ASSOCIATIVAS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"9511800\": \"REPARAÇÃO E MANUTENÇÃO DE COMPUTADORES E DE EQUIPAMENTOS PERIFÉRICOS\",\n\t\"9512600\": \"REPARAÇÃO E MANUTENÇÃO DE EQUIPAMENTOS DE COMUNICAÇÃO\",\n\t\"9521500\": \"REPARAÇÃO E MANUTENÇÃO DE EQUIPAMENTOS ELETROELETRÔNICOS DE USO PESSOAL E DOMÉSTICO\",\n\t\"9529101\": \"REPARAÇÃO DE CALÇADOS, DE BOLSAS E ARTIGOS DE VIAGEM\",\n\t\"9529102\": \"CHAVEIROS\",\n\t\"9529103\": \"REPARAÇÃO DE RELÓGIOS\",\n\t\"9529104\": \"REPARAÇÃO DE BICICLETAS, TRICICLOS E OUTROS VEÍCULOS NÃO MOTORIZADOS\",\n\t\"9529105\": \"REPARAÇÃO DE ARTIGOS DO MOBILIÁRIO\",\n\t\"9529106\": \"REPARAÇÃO DE JÓIAS\",\n\t\"9529199\":\n\t\t\"REPARAÇÃO E MANUTENÇÃO DE OUTROS OBJETOS E EQUIPAMENTOS PESSOAIS E DOMÉSTICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"9601701\": \"LAVANDERIAS\",\n\t\"9601702\": \"TINTURARIAS\",\n\t\"9601703\": \"TOALHEIROS\",\n\t\"9602501\": \"CABELEIREIROS, MANICURE E PEDICURE\",\n\t\"9602502\": \"ATIVIDADES DE ESTÉTICA E OUTROS SERVIÇOS DE CUIDADOS COM A BELEZA\",\n\t\"9603301\": \"GESTÃO E MANUTENÇÃO DE CEMITÉRIOS\",\n\t\"9603302\": \"SERVIÇOS DE CREMAÇÃO\",\n\t\"9603303\": \"SERVIÇOS DE SEPULTAMENTO\",\n\t\"9603304\": \"SERVIÇOS DE FUNERÁRIAS\",\n\t\"9603305\": \"SERVIÇOS DE SOMATOCONSERVAÇÃO\",\n\t\"9603399\": \"ATIVIDADES FUNERÁRIAS E SERVIÇOS RELACIONADOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"9609202\": \"AGÊNCIAS MATRIMONIAIS\",\n\t\"9609204\": \"EXPLORAÇÃO DE MÁQUINAS DE SERVIÇOS PESSOAIS ACIONADAS POR MOEDA\",\n\t\"9609205\": \"ATIVIDADES DE SAUNA E BANHOS\",\n\t\"9609206\": \"SERVIÇOS DE TATUAGEM E COLOCAÇÃO DE PIERCING\",\n\t\"9609207\": \"ALOJAMENTO DE ANIMAIS DOMÉSTICOS\",\n\t\"9609208\": \"HIGIENE E EMBELEZAMENTO DE ANIMAIS DOMÉSTICOS\",\n\t\"9609299\": \"OUTRAS ATIVIDADES DE SERVIÇOS PESSOAIS NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"9700500\": \"SERVIÇOS DOMÉSTICOS\",\n\t\"9900800\": \"ORGANISMOS INTERNACIONAIS E OUTRAS INSTITUIÇÕES EXTRATERRITORIAIS\",\n\t\"0111301\": \"CULTIVO DE ARROZ\",\n\t\"0111302\": \"CULTIVO DE MILHO\",\n\t\"0111303\": \"CULTIVO DE TRIGO\",\n\t\"0111399\": \"CULTIVO DE OUTROS CEREAIS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"0112101\": \"CULTIVO DE ALGODÃO HERBÁCEO\",\n\t\"0112102\": \"CULTIVO DE JUTA\",\n\t\"0112199\": \"CULTIVO DE OUTRAS FIBRAS DE LAVOURA TEMPORÁRIA NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"0113000\": \"CULTIVO DE CANA DE AÇÚCAR\",\n\t\"0114800\": \"CULTIVO DE FUMO\",\n\t\"0115600\": \"CULTIVO DE SOJA\",\n\t\"0116401\": \"CULTIVO DE AMENDOIM\",\n\t\"0116402\": \"CULTIVO DE GIRASSOL\",\n\t\"0116403\": \"CULTIVO DE MAMONA\",\n\t\"0116499\": \"CULTIVO DE OUTRAS OLEAGINOSAS DE LAVOURA TEMPORÁRIA NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"0119901\": \"CULTIVO DE ABACAXI\",\n\t\"0119902\": \"CULTIVO DE ALHO\",\n\t\"0119903\": \"CULTIVO DE BATATA INGLESA\",\n\t\"0119904\": \"CULTIVO DE CEBOLA\",\n\t\"0119905\": \"CULTIVO DE FEIJÃO\",\n\t\"0119906\": \"CULTIVO DE MANDIOCA\",\n\t\"0119907\": \"CULTIVO DE MELÃO\",\n\t\"0119908\": \"CULTIVO DE MELANCIA\",\n\t\"0119909\": \"CULTIVO DE TOMATE RASTEIRO\",\n\t\"0119999\": \"CULTIVO DE OUTRAS PLANTAS DE LAVOURA TEMPORÁRIA NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"0121101\": \"HORTICULTURA, EXCETO MORANGO\",\n\t\"0121102\": \"CULTIVO DE MORANGO\",\n\t\"0122900\": \"CULTIVO DE FLORES E PLANTAS ORNAMENTAIS\",\n\t\"0131800\": \"CULTIVO DE LARANJA\",\n\t\"0132600\": \"CULTIVO DE UVA\",\n\t\"0133401\": \"CULTIVO DE AÇAÍ\",\n\t\"0133402\": \"CULTIVO DE BANANA\",\n\t\"0133403\": \"CULTIVO DE CAJU\",\n\t\"0133404\": \"CULTIVO DE CÍTRICOS, EXCETO LARANJA\",\n\t\"0133405\": \"CULTIVO DE COCO DA BAÍA\",\n\t\"0133406\": \"CULTIVO DE GUARANÁ\",\n\t\"0133407\": \"CULTIVO DE MAÇÃ\",\n\t\"0133408\": \"CULTIVO DE MAMÃO\",\n\t\"0133409\": \"CULTIVO DE MARACUJÁ\",\n\t\"0133410\": \"CULTIVO DE MANGA\",\n\t\"0133411\": \"CULTIVO DE PÊSSEGO\",\n\t\"0133499\": \"CULTIVO DE FRUTAS DE LAVOURA PERMANENTE NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"0134200\": \"CULTIVO DE CAFÉ\",\n\t\"0135100\": \"CULTIVO DE CACAU\",\n\t\"0139301\": \"CULTIVO DE CHÁ DA ÍNDIA\",\n\t\"0139302\": \"CULTIVO DE ERVA MATE\",\n\t\"0139303\": \"CULTIVO DE PIMENTA DO REINO\",\n\t\"0139304\": \"CULTIVO DE PLANTAS PARA CONDIMENTO, EXCETO PIMENTA DO REINO\",\n\t\"0139305\": \"CULTIVO DE DENDÊ\",\n\t\"0139306\": \"CULTIVO DE SERINGUEIRA\",\n\t\"0139399\": \"CULTIVO DE OUTRAS PLANTAS DE LAVOURA PERMANENTE NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"0141501\": \"PRODUÇÃO DE SEMENTES CERTIFICADAS, EXCETO DE FORRAGEIRAS PARA PASTO\",\n\t\"0141502\": \"PRODUÇÃO DE SEMENTES CERTIFICADAS DE FORRAGEIRAS PARA FORMAÇÃO DE PASTO\",\n\t\"0142300\": \"PRODUÇÃO DE MUDAS E OUTRAS FORMAS DE PROPAGAÇÃO VEGETAL, CERTIFICADAS\",\n\t\"0151201\": \"CRIAÇÃO DE BOVINOS PARA CORTE\",\n\t\"0151202\": \"CRIAÇÃO DE BOVINOS PARA LEITE\",\n\t\"0151203\": \"CRIAÇÃO DE BOVINOS, EXCETO PARA CORTE E LEITE\",\n\t\"0152101\": \"CRIAÇÃO DE BUFALINOS\",\n\t\"0152102\": \"CRIAÇÃO DE EQÜINOS\",\n\t\"0152103\": \"CRIAÇÃO DE ASININOS E MUARES\",\n\t\"0153901\": \"CRIAÇÃO DE CAPRINOS\",\n\t\"0153902\": \"CRIAÇÃO DE OVINOS, INCLUSIVE PARA PRODUÇÃO DE LÃ\",\n\t\"0154700\": \"CRIAÇÃO DE SUÍNOS\",\n\t\"0155501\": \"CRIAÇÃO DE FRANGOS PARA CORTE\",\n\t\"0155502\": \"PRODUÇÃO DE PINTOS DE UM DIA\",\n\t\"0155503\": \"CRIAÇÃO DE OUTROS GALINÁCEOS, EXCETO PARA CORTE\",\n\t\"0155504\": \"CRIAÇÃO DE AVES, EXCETO GALINÁCEOS\",\n\t\"0155505\": \"PRODUÇÃO DE OVOS\",\n\t\"0159801\": \"APICULTURA\",\n\t\"0159802\": \"CRIAÇÃO DE ANIMAIS DE ESTIMAÇÃO\",\n\t\"0159803\": \"CRIAÇÃO DE ESCARGÔ\",\n\t\"0159804\": \"CRIAÇÃO DE BICHO DA SEDA\",\n\t\"0159899\": \"CRIAÇÃO DE OUTROS ANIMAIS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"0161001\": \"SERVIÇO DE PULVERIZAÇÃO E CONTROLE DE PRAGAS AGRÍCOLAS\",\n\t\"0161002\": \"SERVIÇO DE PODA DE ÁRVORES PARA LAVOURAS\",\n\t\"0161003\": \"SERVIÇO DE PREPARAÇÃO DE TERRENO, CULTIVO E COLHEITA\",\n\t\"0161099\": \"ATIVIDADES DE APOIO À AGRICULTURA NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"0162801\": \"SERVIÇO DE INSEMINAÇÃO ARTIFICIAL DE ANIMAIS\",\n\t\"0162802\": \"SERVIÇO DE TOSQUIAMENTO DE OVINOS\",\n\t\"0162803\": \"SERVIÇO DE MANEJO DE ANIMAIS\",\n\t\"0162899\": \"ATIVIDADES DE APOIO À PECUÁRIA NÃO ESPECIFICADAS ANTERIORMENTE\",\n\t\"0163600\": \"ATIVIDADES DE PÓS COLHEITA\",\n\t\"0170900\": \"CAÇA E SERVIÇOS RELACIONADOS\",\n\t\"0210101\": \"CULTIVO DE EUCALIPTO\",\n\t\"0210102\": \"CULTIVO DE ACÁCIA NEGRA\",\n\t\"0210103\": \"CULTIVO DE PINUS\",\n\t\"0210104\": \"CULTIVO DE TECA\",\n\t\"0210105\": \"CULTIVO DE ESPÉCIES MADEIREIRAS, EXCETO EUCALIPTO, ACÁCIA NEGRA, PINUS E TECA\",\n\t\"0210106\": \"CULTIVO DE MUDAS EM VIVEIROS FLORESTAIS\",\n\t\"0210107\": \"EXTRAÇÃO DE MADEIRA EM FLORESTAS PLANTADAS\",\n\t\"0210108\": \"PRODUÇÃO DE CARVÃO VEGETAL - FLORESTAS PLANTADAS\",\n\t\"0210109\": \"PRODUÇÃO DE CASCA DE ACÁCIA NEGRA - FLORESTAS PLANTADAS\",\n\t\"0210199\":\n\t\t\"PRODUÇÃO DE PRODUTOS NÃO MADEIREIROS NÃO ESPECIFICADOS ANTERIORMENTE EM FLORESTAS PLANTADAS\",\n\t\"0220901\": \"EXTRAÇÃO DE MADEIRA EM FLORESTAS NATIVAS\",\n\t\"0220902\": \"PRODUÇÃO DE CARVÃO VEGETAL - FLORESTAS NATIVAS\",\n\t\"0220903\": \"COLETA DE CASTANHA DO PARÁ EM FLORESTAS NATIVAS\",\n\t\"0220904\": \"COLETA DE LÁTEX EM FLORESTAS NATIVAS\",\n\t\"0220905\": \"COLETA DE PALMITO EM FLORESTAS NATIVAS\",\n\t\"0220906\": \"CONSERVAÇÃO DE FLORESTAS NATIVAS\",\n\t\"0220999\":\n\t\t\"COLETA DE PRODUTOS NÃO MADEIREIROS NÃO ESPECIFICADOS ANTERIORMENTE EM FLORESTAS NATIVAS\",\n\t\"0230600\": \"ATIVIDADES DE APOIO À PRODUÇÃO FLORESTAL\",\n\t\"0311601\": \"PESCA DE PEIXES EM ÁGUA SALGADA\",\n\t\"0311602\": \"PESCA DE CRUSTÁCEOS E MOLUSCOS EM ÁGUA SALGADA\",\n\t\"0311603\": \"COLETA DE OUTROS PRODUTOS MARINHOS\",\n\t\"0311604\": \"ATIVIDADES DE APOIO À PESCA EM ÁGUA SALGADA\",\n\t\"0312401\": \"PESCA DE PEIXES EM ÁGUA DOCE\",\n\t\"0312402\": \"PESCA DE CRUSTÁCEOS E MOLUSCOS EM ÁGUA DOCE\",\n\t\"0312403\": \"COLETA DE OUTROS PRODUTOS AQUÁTICOS DE ÁGUA DOCE\",\n\t\"0312404\": \"ATIVIDADES DE APOIO À PESCA EM ÁGUA DOCE\",\n\t\"0321301\": \"CRIAÇÃO DE PEIXES EM ÁGUA SALGADA E SALOBRA\",\n\t\"0321302\": \"CRIAÇÃO DE CAMARÕES EM ÁGUA SALGADA E SALOBRA\",\n\t\"0321303\": \"CRIAÇÃO DE OSTRAS E MEXILHÕES EM ÁGUA SALGADA E SALOBRA\",\n\t\"0321304\": \"CRIAÇÃO DE PEIXES ORNAMENTAIS EM ÁGUA SALGADA E SALOBRA\",\n\t\"0321305\": \"ATIVIDADES DE APOIO À AQÜICULTURA EM ÁGUA SALGADA E SALOBRA\",\n\t\"0321399\":\n\t\t\"CULTIVOS E SEMICULTIVOS DA AQÜICULTURA EM ÁGUA SALGADA E SALOBRA NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"0322101\": \"CRIAÇÃO DE PEIXES EM ÁGUA DOCE\",\n\t\"0322102\": \"CRIAÇÃO DE CAMARÕES EM ÁGUA DOCE\",\n\t\"0322103\": \"CRIAÇÃO DE OSTRAS E MEXILHÕES EM ÁGUA DOCE\",\n\t\"0322104\": \"CRIAÇÃO DE PEIXES ORNAMENTAIS EM ÁGUA DOCE\",\n\t\"0322105\": \"RANICULTURA\",\n\t\"0322106\": \"CRIAÇÃO DE JACARÉ\",\n\t\"0322107\": \"ATIVIDADES DE APOIO À AQÜICULTURA EM ÁGUA DOCE\",\n\t\"0322199\": \"CULTIVOS E SEMICULTIVOS DA AQÜICULTURA EM ÁGUA DOCE NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"0500301\": \"EXTRAÇÃO DE CARVÃO MINERAL\",\n\t\"0500302\": \"BENEFICIAMENTO DE CARVÃO MINERAL\",\n\t\"0600001\": \"EXTRAÇÃO DE PETRÓLEO E GÁS NATURAL\",\n\t\"0600002\": \"EXTRAÇÃO E BENEFICIAMENTO DE XISTO\",\n\t\"0600003\": \"EXTRAÇÃO E BENEFICIAMENTO DE AREIAS BETUMINOSAS\",\n\t\"0710301\": \"EXTRAÇÃO DE MINÉRIO DE FERRO\",\n\t\"0710302\": \"PELOTIZAÇÃO, SINTERIZAÇÃO E OUTROS BENEFICIAMENTOS DE MINÉRIO DE FERRO\",\n\t\"0721901\": \"EXTRAÇÃO DE MINÉRIO DE ALUMÍNIO\",\n\t\"0721902\": \"BENEFICIAMENTO DE MINÉRIO DE ALUMÍNIO\",\n\t\"0722701\": \"EXTRAÇÃO DE MINÉRIO DE ESTANHO\",\n\t\"0722702\": \"BENEFICIAMENTO DE MINÉRIO DE ESTANHO\",\n\t\"0723501\": \"EXTRAÇÃO DE MINÉRIO DE MANGANÊS\",\n\t\"0723502\": \"BENEFICIAMENTO DE MINÉRIO DE MANGANÊS\",\n\t\"0724301\": \"EXTRAÇÃO DE MINÉRIO DE METAIS PRECIOSOS\",\n\t\"0724302\": \"BENEFICIAMENTO DE MINÉRIO DE METAIS PRECIOSOS\",\n\t\"0725100\": \"EXTRAÇÃO DE MINERAIS RADIOATIVOS\",\n\t\"0729401\": \"EXTRAÇÃO DE MINÉRIOS DE NIÓBIO E TITÂNIO\",\n\t\"0729402\": \"EXTRAÇÃO DE MINÉRIO DE TUNGSTÊNIO\",\n\t\"0729403\": \"EXTRAÇÃO DE MINÉRIO DE NÍQUEL\",\n\t\"0729404\":\n\t\t\"EXTRAÇÃO DE MINÉRIOS DE COBRE, CHUMBO, ZINCO E OUTROS MINERAIS METÁLICOS NÃO FERROSOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"0729405\":\n\t\t\"BENEFICIAMENTO DE MINÉRIOS DE COBRE, CHUMBO, ZINCO E OUTROS MINERAIS METÁLICOS NÃO FERROSOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"0810001\": \"EXTRAÇÃO DE ARDÓSIA E BENEFICIAMENTO ASSOCIADO\",\n\t\"0810002\": \"EXTRAÇÃO DE GRANITO E BENEFICIAMENTO ASSOCIADO\",\n\t\"0810003\": \"EXTRAÇÃO DE MÁRMORE E BENEFICIAMENTO ASSOCIADO\",\n\t\"0810004\": \"EXTRAÇÃO DE CALCÁRIO E DOLOMITA E BENEFICIAMENTO ASSOCIADO\",\n\t\"0810005\": \"EXTRAÇÃO DE GESSO E CAULIM\",\n\t\"0810006\": \"EXTRAÇÃO DE AREIA, CASCALHO OU PEDREGULHO E BENEFICIAMENTO ASSOCIADO\",\n\t\"0810007\": \"EXTRAÇÃO DE ARGILA E BENEFICIAMENTO ASSOCIADO\",\n\t\"0810008\": \"EXTRAÇÃO DE SAIBRO E BENEFICIAMENTO ASSOCIADO\",\n\t\"0810009\": \"EXTRAÇÃO DE BASALTO E BENEFICIAMENTO ASSOCIADO\",\n\t\"0810010\": \"BENEFICIAMENTO DE GESSO E CAULIM ASSOCIADO À EXTRAÇÃO\",\n\t\"0810099\":\n\t\t\"EXTRAÇÃO E BRITAMENTO DE PEDRAS E OUTROS MATERIAIS PARA CONSTRUÇÃO E BENEFICIAMENTO ASSOCIADO\",\n\t\"0891600\":\n\t\t\"EXTRAÇÃO DE MINERAIS PARA FABRICAÇÃO DE ADUBOS, FERTILIZANTES E OUTROS PRODUTOS QUÍMICOS\",\n\t\"0892401\": \"EXTRAÇÃO DE SAL MARINHO\",\n\t\"0892402\": \"EXTRAÇÃO DE SAL GEMA\",\n\t\"0892403\": \"REFINO E OUTROS TRATAMENTOS DO SAL\",\n\t\"0893200\": \"EXTRAÇÃO DE GEMAS (PEDRAS PRECIOSAS E SEMIPRECIOSAS)\",\n\t\"0899101\": \"EXTRAÇÃO DE GRAFITA\",\n\t\"0899102\": \"EXTRAÇÃO DE QUARTZO\",\n\t\"0899103\": \"EXTRAÇÃO DE AMIANTO\",\n\t\"0899199\": \"EXTRAÇÃO DE OUTROS MINERAIS NÃO METÁLICOS NÃO ESPECIFICADOS ANTERIORMENTE\",\n\t\"0910600\": \"ATIVIDADES DE APOIO À EXTRAÇÃO DE PETRÓLEO E GÁS NATURAL\",\n\t\"0990401\": \"ATIVIDADES DE APOIO À EXTRAÇÃO DE MINÉRIO DE FERRO\",\n\t\"0990402\": \"ATIVIDADES DE APOIO À EXTRAÇÃO DE MINERAIS METÁLICOS NÃO FERROSOS\",\n\t\"0990403\": \"ATIVIDADES DE APOIO À EXTRAÇÃO DE MINERAIS NÃO METÁLICOS\",\n};\n\n/**\n * Shape a CNAE subclass code has to be written in: the 7 digits, optionally split into the\n * printed `NNNN-N/NN` groups by a single whitespace or mask character.\n */\nexport const CNAE_FORMAT_REGEX = /^\\d{4}[\\s.\\-/]?\\d[\\s.\\-/]?\\d{2}$/;\n","import { CNAE_FORMAT_REGEX, CNAE_SUBCLASSES } from \"../_internals/constants/cnae\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { padLookupCode } from \"../_internals/pad-lookup-code/pad-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nconst CNAE_LENGTH = 7;\n\n/**\n * A CNAE (Classificação Nacional de Atividades Econômicas) subclass.\n */\nexport type Cnae = {\n\t/** The 7 digit subclass code, without the mask. Use `formatCnae` for the `NNNN-N/NN` form. */\n\tcode: string;\n\t/** The official subclass description. */\n\tdescription: string;\n};\n\n/**\n * Looks a CNAE (Classificação Nacional de Atividades Econômicas) subclass code up in the\n * official CNAE-Subclasses 2.3 table, the current subclass revision of CNAE 2.0.\n *\n * A string is only read as a code when it is written in one of the documented forms: the 7\n * digits, or the `NNNN-N/NN` mask, with a single separator (space, `.`, `-` or `/`) between the groups and optional\n * surrounding whitespace. Anything else (`\"0111abc301\"`) is rejected instead of having its\n * digits picked out. A number is only read as a code when it is a non-negative safe integer,\n * since a sign, a decimal point or a rounded magnitude would otherwise be read as a code the\n * caller never wrote.\n *\n * A CNAE subclass code is always 7 digits and its leading zeros are part of it, so a value\n * written as bare digits is left padded with zeros to 7 whether it comes as a string or as a\n * number: `111301`, `\"111301\"` and `\"0111301\"` are the same code. A masked value already\n * carries its separators and is read as written.\n *\n * `code` comes back as those 7 bare digits, like every other lookup of this library; pass it to\n * `formatCnae` for the `NNNN-N/NN` form.\n *\n * @param {string|number} value - The CNAE code to look up, with or without the\n * `NNNN-N/NN` mask.\n * @returns {Cnae|null} The matching subclass, or null when the code is unknown or invalid.\n *\n * @example\n * ```typescript\n * getCnae(\"6201-5/01\"); // { code: \"6201501\", description: \"DESENVOLVIMENTO DE PROGRAMAS DE COMPUTADOR SOB ENCOMENDA\" }\n * getCnae(111301); // { code: \"0111301\", description: \"CULTIVO DE ARROZ\" } (padded to 7 digits)\n * getCnae(\"111301\"); // { code: \"0111301\", description: \"CULTIVO DE ARROZ\" } (padded to 7 digits)\n * getCnae(\"0000000\"); // null\n * getCnae(\"0111abc301\"); // null (not a documented form)\n * formatCnae(getCnae(\"6201501\")?.code); // \"6201-5/01\" (the mask is the formatter's job)\n * getCnae(-111301); // null (not a non-negative safe integer)\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/v2/cnae/subclasses\n * @see Official: https://concla.ibge.gov.br/busca-online-cnae.html\n * CONCLA's CNAE search and structure browser, which publishes CNAE-Subclasses 2.3.\n */\nexport const getCnae = (value: string | number): Cnae | null => {\n\tif (!isLookupCode(value)) return null;\n\n\tconst subclass = padLookupCode(value, CNAE_LENGTH);\n\n\tif (!CNAE_FORMAT_REGEX.test(subclass)) return null;\n\n\tconst digits = sanitizeToDigits(subclass);\n\tconst description = CNAE_SUBCLASSES[digits];\n\n\tif (description === undefined) return null;\n\n\treturn { code: digits, description };\n};\n","import { BR_IBAN_REGEX, IBAN_FORMAT_REGEX } from \"../_internals/constants/iban\";\nimport { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\n\nconst LETTER_CODE_A = 65;\nconst LETTER_OFFSET = 55;\n\nconst hasValidCheckDigits = (iban: string): boolean => {\n\tconst rearranged = iban.slice(4) + iban.slice(0, 4);\n\n\tlet numeric = \"\";\n\n\tfor (let i = 0; i < rearranged.length; i++) {\n\t\tconst code = rearranged.charCodeAt(i);\n\t\tnumeric += code >= LETTER_CODE_A ? String(code - LETTER_OFFSET) : rearranged[i];\n\t}\n\n\treturn BigInt(numeric) % 97n === 1n;\n};\n\n/**\n * Validates a Brazilian IBAN (International Bank Account Number).\n *\n * Only Brazilian IBANs (country code `BR`) are recognized: the field layout of the other 90+\n * ISO 13616 countries is out of scope, so any non `BR` IBAN, however well formed, returns\n * `false`. Accepts the usual grouping mask and is case-insensitive.\n *\n * Both accepted forms are the ones an IBAN is written in: compact,\n * `\"BR1500000000000010932840814P2\"`, or the ISO 13616 print format, letters and digits in groups\n * of 4 (the last one shorter), with optional surrounding whitespace either way. The groups may be\n * split by whitespace, `.`, `-` or `/`, the interchangeable mask characters `isValidCpf` and\n * `isValidCnpj` accept, so `\"BR1500000000000010932840814P-2\"` reads as the same IBAN. Only a\n * separator away from a group boundary, a run of separators (ISO 13616 prints a single one) or a\n * character outside letters and digits makes the value something other than an IBAN, so\n * `\"BR15 0000 0000 0000 1093 2840  814P 2\"` and `\"BR15 000 00000 0000 1093 2840 814P 2\"` are\n * rejected instead of having the offending character stripped.\n *\n * The last character is the owner indicator, `1` for the first or only holder up to `9` for the\n * ninth and then `A` to `Z` from the tenth, per Circular BCB nº 3.625/2013 art. 2º § 1º, so a\n * value ending in `0` is rejected.\n *\n * @param {string} value - The IBAN to be validated.\n * @returns {boolean} True when `value` is a structurally valid Brazilian IBAN whose ISO 7064\n * MOD 97-10 check digits match.\n *\n * @example\n * ```typescript\n * isValidIban(\"BR1500000000000010932840814P2\"); // true\n * isValidIban(\"BR15 0000 0000 0000 1093 2840 814P 2\"); // true (grouping spaces)\n * isValidIban(\"BR15-0000-0000-0000-1093-2840-814P-2\"); // true (any of the mask characters)\n * isValidIban(\"br1500000000000010932840814p2\"); // true (case-insensitive)\n * isValidIban(\"BR1500000000000010932840814P3\"); // false (bad check digits)\n * isValidIban(\"BR15 000 00000 0000 1093 2840 814P 2\"); // false (a separator inside a group)\n * isValidIban(\"DE89370400440532013000\"); // false (non Brazilian IBAN)\n * ```\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/circ/2013/pdf/circ_3625_v1_O.pdf\n * Circular BCB nº 3.625/2013\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/Documents/sistema_pagamentos_brasileiro/IBAN-Guidelines_%20port.pdf\n * Diretrizes de Implementação do IBAN no Brasil\n * @see Official: https://www.iso.org/standard/81090.html\n * ISO 13616-1:2020 (IBAN structure)\n * @see Official: https://www.iso.org/standard/31531.html\n * ISO/IEC 7064:2003 (MOD 97-10 check digit algorithm)\n * @see Based on: https://www.iban.com/structure\n * Used to cross check the Brazil IBAN example.\n */\nexport const isValidIban = (value: string): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\tconst printed = value.trim();\n\n\tif (!IBAN_FORMAT_REGEX.test(printed)) return false;\n\n\tconst sanitized = sanitizeToAlphanumeric(printed);\n\n\tif (!BR_IBAN_REGEX.test(sanitized)) return false;\n\n\treturn hasValidCheckDigits(sanitized);\n};\n","import { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { isValidIban } from \"../is-valid-iban/is-valid-iban\";\n\n/** The fields `getIbanInfo` reads out of a Brazilian IBAN. */\nexport type IbanInfo = {\n\t/** ISO 3166-1 alpha-2 country code. Always `\"BR\"`, the only country this parser supports. */\n\tcountryCode: \"BR\";\n\t/** The 2 digit ISO 7064 MOD 97-10 check digits. */\n\tcheckDigits: string;\n\t/** The 8 digit ISPB (Identificador do Sistema de Pagamentos Brasileiro) of the institution. */\n\tbankIspb: string;\n\t/** The 5 digit branch (agência) number, zero-padded. */\n\tbranch: string;\n\t/** The 10 digit account (conta) number, zero-padded. */\n\taccount: string;\n\t/**\n\t * The 1 letter account type, as published in the \"Dicionário de Tipos\" of the Catálogo de\n\t * Mensagens e de Arquivos do SFN. `\"C\"` (conta corrente) and `\"P\"` (conta poupança) are the\n\t * usual values, but any letter is allowed.\n\t */\n\taccountType: string;\n\t/**\n\t * The 1 character owner indicator, distinguishing co-owners of the same account: `\"1\"` for\n\t * the first or only holder up to `\"9\"` for the ninth, then `\"A\"` to `\"Z\"` from the tenth.\n\t */\n\towner: string;\n};\n\nconst COUNTRY_CODE_LENGTH = 2;\nconst CHECK_DIGITS_LENGTH = 2;\nconst ISPB_LENGTH = 8;\nconst BRANCH_LENGTH = 5;\nconst ACCOUNT_LENGTH = 10;\nconst ACCOUNT_TYPE_LENGTH = 1;\n\nconst COUNTRY_CODE_END = COUNTRY_CODE_LENGTH;\nconst CHECK_DIGITS_END = COUNTRY_CODE_END + CHECK_DIGITS_LENGTH;\nconst ISPB_END = CHECK_DIGITS_END + ISPB_LENGTH;\nconst BRANCH_END = ISPB_END + BRANCH_LENGTH;\nconst ACCOUNT_END = BRANCH_END + ACCOUNT_LENGTH;\nconst ACCOUNT_TYPE_END = ACCOUNT_END + ACCOUNT_TYPE_LENGTH;\n\n/**\n * Parses a Brazilian IBAN (International Bank Account Number) into its fields.\n *\n * The 29 character Brazilian IBAN is laid out as 2 (country code, always `BR`) + 2 (ISO 7064\n * MOD 97-10 check digits) + 8 (ISPB) + 5 (branch) + 10 (account) + 1 (account type, any letter,\n * usually `C` for conta corrente or `P` for conta poupança) + 1 (owner indicator, `1` to `9`\n * then `A` to `Z`). Only\n * Brazilian IBANs are supported: the field layout of the other ISO 13616 countries is out of\n * scope, so a well-formed non `BR` IBAN also returns `null`.\n *\n * Accepts the same input forms as `isValidIban`, compact or in the ISO 13616 print format (groups\n * of 4 split by a single whitespace, `.`, `-` or `/`), in either case with optional surrounding\n * whitespace and in any case, and returns `null` whenever `isValidIban` would return `false`,\n * including a value carrying a separator away from a group boundary, a run of separators or any\n * character other than letters and digits.\n *\n * @param {string} value - The IBAN to be parsed.\n * @returns {IbanInfo|null} The parsed IBAN, or `null` when it is not a valid Brazilian IBAN.\n *\n * @example\n * ```typescript\n * getIbanInfo(\"BR1500000000000010932840814P2\");\n * // {\n * //   countryCode: \"BR\",\n * //   checkDigits: \"15\",\n * //   bankIspb: \"00000000\",\n * //   branch: \"00001\",\n * //   account: \"0932840814\",\n * //   accountType: \"P\",\n * //   owner: \"2\",\n * // }\n *\n * getIbanInfo(\"BR15 0000 0000 0000 1093 2840 814P 2\"); // same result (grouping spaces)\n * getIbanInfo(\"BR15-0000-0000-0000-1093-2840-814P-2\"); // same result (any of the mask characters)\n * getIbanInfo(\"DE89370400440532013000\"); // null (non Brazilian IBAN)\n * getIbanInfo(\"BR1500000000000010932840814P3\"); // null (bad check digits)\n * getIbanInfo(\"BR15 000 00000 0000 1093 2840 814P 2\"); // null (a separator inside a group)\n * ```\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/circ/2013/pdf/circ_3625_v1_O.pdf\n * Circular BCB nº 3.625/2013\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/Documents/sistema_pagamentos_brasileiro/IBAN-Guidelines_%20port.pdf\n * Diretrizes de Implementação do IBAN no Brasil\n * @see Official: https://www.iso.org/standard/81090.html\n * ISO 13616-1:2020 (IBAN structure)\n * @see Official: https://www.iso.org/standard/31531.html\n * ISO/IEC 7064:2003 (MOD 97-10 check digit algorithm)\n */\nexport const getIbanInfo = (value: string): IbanInfo | null => {\n\tif (!isValidIban(value)) return null;\n\n\tconst sanitized = sanitizeToAlphanumeric(value);\n\n\treturn {\n\t\tcountryCode: \"BR\",\n\t\tcheckDigits: sanitized.slice(COUNTRY_CODE_END, CHECK_DIGITS_END),\n\t\tbankIspb: sanitized.slice(CHECK_DIGITS_END, ISPB_END),\n\t\tbranch: sanitized.slice(ISPB_END, BRANCH_END),\n\t\taccount: sanitized.slice(BRANCH_END, ACCOUNT_END),\n\t\taccountType: sanitized.charAt(ACCOUNT_END),\n\t\towner: sanitized.slice(ACCOUNT_TYPE_END),\n\t};\n};\n","/** The CONCLA category (natureza jurídica group) a legal nature code belongs to. */\nexport type LegalNatureCategory = {\n\t/** The category code, the first digit shared by every legal nature code in the group. */\n\tcode: \"1\" | \"2\" | \"3\" | \"4\" | \"5\";\n\t/** The official category title in Portuguese, per IBGE/CONCLA. */\n\tdescription: string;\n};\n\n/**\n * The five categories of the Tabela de Natureza Jurídica 2021 (IBGE/CONCLA), indexed by the\n * first digit of the four digit code: the table groups its codes under these headings, so\n * \"2062\" (Sociedade Empresária Limitada) belongs to \"2\" (Entidades Empresariais). The legacy\n * codes a past revision of the table retired, which `LEGAL_NATURE` keeps, follow the same rule.\n *\n * The CONCLA table page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser; the detailed structure PDF next to it is served\n * normally and prints the same five headings.\n *\n * @see Official: https://concla.ibge.gov.br/estrutura/natjur-estrutura/natureza-juridica-2021\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/CONCLA-TNJ2021-EstruturaDetalhada.pdf\n */\nexport const LEGAL_NATURE_CATEGORIES: Record<string, LegalNatureCategory> = {\n\t\"1\": { code: \"1\", description: \"Administração Pública\" },\n\t\"2\": { code: \"2\", description: \"Entidades Empresariais\" },\n\t\"3\": { code: \"3\", description: \"Entidades sem Fins Lucrativos\" },\n\t\"4\": { code: \"4\", description: \"Pessoas Físicas\" },\n\t\"5\": {\n\t\tcode: \"5\",\n\t\tdescription: \"Organizações Internacionais e Outras Instituições Extraterritoriais\",\n\t},\n};\n","import {\n\tLEGAL_NATURE_CATEGORIES,\n\ttype LegalNatureCategory,\n} from \"../_internals/constants/legal-nature-categories\";\nimport { SEPARATORS_REGEX } from \"../_internals/constants/separators\";\nimport { LEGACY_LEGAL_NATURE, LEGAL_NATURE } from \"../is-valid-legal-nature/constants\";\n\nexport type { LegalNatureCategory } from \"../_internals/constants/legal-nature-categories\";\n\n/**\n * A Brazilian legal nature (natureza jurídica) entry.\n *\n * `legacy` discriminates the entry: `false` for the 92 codes of the CONCLA 2021 table, the ones\n * in force, and `true` for the 8 a past revision of the table retired, which carry the extra\n * `currentCode` field.\n */\nexport type LegalNature = {\n\t/** The 4 digit legal nature code, without formatting. */\n\tcode: string;\n\t/** The official description in Portuguese, per IBGE/CONCLA. */\n\tdescription: string;\n\t/** The CONCLA category the code belongs to, given by its first digit. */\n\tcategory: LegalNatureCategory;\n} & (\n\t| {\n\t\t\t/** `false` when the code is one of the 92 the CONCLA 2021 table publishes. */\n\t\t\tlegacy: false;\n\t  }\n\t| {\n\t\t\t/** `true` when a past revision of the CONCLA table retired the code. */\n\t\t\tlegacy: true;\n\t\t\t/**\n\t\t\t * The code this legacy one corresponds to today, per the CONCLA correspondence\n\t\t\t * spreadsheets, or `null` when the revision that retired it published no successor.\n\t\t\t */\n\t\t\tcurrentCode: string | null;\n\t  }\n);\n\n/**\n * Builds the entry of a code known to be in `LEGAL_NATURE`, tagging it as legacy, with the code it\n * corresponds to today, when a past revision of the CONCLA table retired it.\n *\n * @param {string} code - The 4 digit legal nature code, without formatting.\n * @param {string} description - The description `LEGAL_NATURE` holds for the code.\n * @returns {LegalNature} The legal nature entry of the code.\n */\nexport const buildLegalNature = (code: string, description: string): LegalNature => {\n\tconst entry = {\n\t\tcode,\n\t\tdescription,\n\t\tcategory: { ...LEGAL_NATURE_CATEGORIES[code[0]] },\n\t};\n\n\treturn Object.hasOwn(LEGACY_LEGAL_NATURE, code)\n\t\t? { ...entry, legacy: true, currentCode: LEGACY_LEGAL_NATURE[code] }\n\t\t: { ...entry, legacy: false };\n};\n\nconst lookUp = (code: string): LegalNature | null =>\n\tObject.hasOwn(LEGAL_NATURE, code) ? buildLegalNature(code, LEGAL_NATURE[code]) : null;\n\n/**\n * Looks a Brazilian legal nature (natureza jurídica) code up.\n *\n * The usual mask characters (hyphens, dots, whitespace) are stripped before the lookup, from a\n * number as well as from a string, so `getLegalNature(206.2)` resolves like `getLegalNature(\"206.2\")`.\n *\n * No legal nature code starts with a zero, its first digit is the CONCLA category (1 to 5), so\n * nothing is ever padded here: a number and the string of the same digits are read identically,\n * and a value narrower than 4 digits is not a code at all.\n *\n * The entry also carries the CONCLA category of the code, the group the table lists it under,\n * taken from its first digit: 1 Administração Pública, 2 Entidades Empresariais, 3 Entidades\n * sem Fins Lucrativos, 4 Pessoas Físicas and 5 Organizações Internacionais e Outras\n * Instituições Extraterritoriais.\n *\n * A code a past revision of the table retired is still looked up, because it keeps appearing in\n * records filed while it was in force, and comes back with `legacy: true` and the `currentCode`\n * it corresponds to today per the CONCLA correspondence spreadsheets (`null` when the revision\n * that retired it published no successor). The 92 codes in force have `legacy: false` and no\n * `currentCode`.\n *\n * @param {string|number} value - The legal nature code to look up, with or without formatting.\n * @returns {LegalNature|null} The matching legal nature entry, or null when the code is unknown\n * or invalid.\n *\n * The CONCLA table page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser; the detailed structure PDF next to it is served\n * normally.\n *\n * @see Official: https://concla.ibge.gov.br/estrutura/natjur-estrutura/natureza-juridica-2021\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/CONCLA-TNJ2021-EstruturaDetalhada.pdf\n *\n * @example\n * ```typescript\n * getLegalNature(\"2062\");\n * // {\n * //   code: \"2062\",\n * //   description: \"Sociedade Empresária Limitada\",\n * //   category: { code: \"2\", description: \"Entidades Empresariais\" },\n * //   legacy: false,\n * // }\n * getLegalNature(\"2208\");\n * // {\n * //   code: \"2208\",\n * //   description: \"Entidade Binacional Itaipu\",\n * //   category: { code: \"2\", description: \"Entidades Empresariais\" },\n * //   legacy: true,\n * //   currentCode: \"2275\",\n * // }\n * getLegalNature(\"3123\")?.legacy; // true (Partido Político, retired without a successor)\n * getLegalNature(\"206-2\")?.code; // \"2062\"\n * getLegalNature(206.2)?.category.description; // \"Entidades Empresariais\"\n * getLegalNature(\"0000\"); // null\n * ```\n */\nexport const getLegalNature = (value: string | number): LegalNature | null => {\n\tif (typeof value !== \"string\" && typeof value !== \"number\") return null;\n\n\treturn lookUp(String(value).replace(SEPARATORS_REGEX, \"\"));\n};\n","import { isLegacyLegalNature } from \"../_internals/is-legacy-legal-nature/is-legacy-legal-nature\";\nimport { LEGAL_NATURE } from \"../is-valid-legal-nature/constants\";\n\n/** The object form `getLegalNatures` accepts, saying whether the legacy codes are listed too. */\nexport type GetLegalNaturesParams = {\n\t/**\n\t * Whether the 8 codes a past revision of the CONCLA table retired are listed alongside the 92\n\t * in force (default: `false`).\n\t */\n\tincludeLegacy?: boolean;\n};\n\n/**\n * Returns every Brazilian legal nature (natureza jurídica) published by the CONCLA.\n *\n * Only the 92 codes of the Tabela de Natureza Jurídica 2021, the ones in force, are listed by\n * default. Pass `{ includeLegacy: true }` to add the 8 a past revision of the table retired, which\n * `isValidLegalNature` keeps accepting and `getLegalNature` keeps looking up because they still\n * appear in records filed while they were in force.\n *\n * @param {GetLegalNaturesParams} [params] - Optional listing options.\n * @param {boolean} [params.includeLegacy] - Whether to add the retired codes. Defaults to `false`.\n * @returns {Record<string, string>} A fresh object mapping each 4 digit code to its description.\n *\n * @example\n * ```typescript\n * getLegalNatures()[\"2062\"]; // \"Sociedade Empresária Limitada\"\n * Object.keys(getLegalNatures()).length; // 92\n * getLegalNatures()[\"2208\"]; // undefined (retired by a past revision)\n * getLegalNatures({ includeLegacy: true })[\"2208\"]; // \"Entidade Binacional Itaipu\"\n * Object.keys(getLegalNatures({ includeLegacy: true })).length; // 100\n * ```\n *\n * The CONCLA table page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser; the detailed structure PDF next to it is served\n * normally.\n *\n * @see Official: https://concla.ibge.gov.br/estrutura/natjur-estrutura/natureza-juridica-2021\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/CONCLA-TNJ2021-EstruturaDetalhada.pdf\n */\nexport const getLegalNatures = (params?: GetLegalNaturesParams): Record<string, string> => {\n\tif (params?.includeLegacy ?? false) return { ...LEGAL_NATURE };\n\n\tconst legalNatures: Record<string, string> = {};\n\n\tfor (const [code, description] of Object.entries(LEGAL_NATURE)) {\n\t\tif (!isLegacyLegalNature(code)) legalNatures[code] = description;\n\t}\n\n\treturn legalNatures;\n};\n","import { LEGAL_NATURE_CATEGORIES } from \"../_internals/constants/legal-nature-categories\";\nimport { isLegacyLegalNature } from \"../_internals/is-legacy-legal-nature/is-legacy-legal-nature\";\nimport { buildLegalNature, type LegalNature } from \"../get-legal-nature/get-legal-nature\";\nimport { LEGAL_NATURE } from \"../is-valid-legal-nature/constants\";\n\n/**\n * The options `getLegalNaturesByCategory` accepts, saying whether the legacy codes of the category\n * are listed too.\n */\nexport type GetLegalNaturesByCategoryOptions = {\n\t/**\n\t * Whether the codes of the category that a past revision of the CONCLA table retired are listed\n\t * alongside the ones in force (default: `false`).\n\t */\n\tincludeLegacy?: boolean;\n};\n\n/**\n * Retrieves every Brazilian legal nature (natureza jurídica) of a CONCLA category.\n *\n * The category is the first digit of the four digit code, the heading the table lists the code\n * under: 1 Administração Pública, 2 Entidades Empresariais, 3 Entidades sem Fins Lucrativos,\n * 4 Pessoas Físicas and 5 Organizações Internacionais e Outras Instituições Extraterritoriais.\n * It is accepted as a string or as a number, so `\"2\"` and `2` return the same list.\n *\n * Only the codes in force are listed by default. Pass `{ includeLegacy: true }` to add the ones a\n * past revision of the table retired (2076, 2100 and 2208 in category 2, 3042, 3050, 3093 and 3123\n * in category 3, 5002 in category 5), which come back with `legacy: true` and the `currentCode`\n * they correspond to today. The result is in ascending code order, since the table is keyed by the\n * codes themselves, and is a fresh array of fresh entries on every call.\n *\n * @param {string|number} category - The category code, `\"1\"` through `\"5\"` or 1 through 5.\n * @param {GetLegalNaturesByCategoryOptions} [options] - Optional listing options.\n * @param {boolean} [options.includeLegacy] - Whether to add the retired codes. Defaults to `false`.\n * @returns {LegalNature[]} The legal natures of the category, sorted by code, or an empty array\n * when the category is unknown or the input is invalid.\n *\n * The CONCLA table page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser; the detailed structure PDF next to it is served\n * normally.\n *\n * @see Official: https://concla.ibge.gov.br/estrutura/natjur-estrutura/natureza-juridica-2021\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/CONCLA-TNJ2021-EstruturaDetalhada.pdf\n *\n * @example\n * ```typescript\n * getLegalNaturesByCategory(\"4\")[0];\n * // {\n * //   code: \"4014\",\n * //   description: \"Empresa Individual Imobiliária\",\n * //   category: { code: \"4\", description: \"Pessoas Físicas\" },\n * //   legacy: false,\n * // }\n * getLegalNaturesByCategory(4).length; // 6\n * getLegalNaturesByCategory(\"2\").length; // 30\n * getLegalNaturesByCategory(\"2\", { includeLegacy: true }).length; // 33\n * getLegalNaturesByCategory(\"9\"); // []\n * ```\n */\nexport const getLegalNaturesByCategory = (\n\tcategory: string | number,\n\toptions?: GetLegalNaturesByCategoryOptions,\n): LegalNature[] => {\n\tif (typeof category !== \"string\" && typeof category !== \"number\") return [];\n\n\tconst categoryCode = String(category);\n\n\tif (!Object.hasOwn(LEGAL_NATURE_CATEGORIES, categoryCode)) return [];\n\n\tconst includeLegacy = Boolean(options?.includeLegacy);\n\tconst legalNatures: LegalNature[] = [];\n\n\tfor (const [code, description] of Object.entries(LEGAL_NATURE)) {\n\t\tif (!code.startsWith(categoryCode)) continue;\n\t\tif (!includeLegacy && isLegacyLegalNature(code)) continue;\n\n\t\tlegalNatures.push(buildLegalNature(code, description));\n\t}\n\n\treturn legalNatures;\n};\n","import { DATA as CITIES_DATA, type Municipality } from \"../_internals/constants/cities\";\nimport { DATA, type StateCode } from \"../_internals/constants/states\";\n\nexport type { Municipality } from \"../_internals/constants/cities\";\nexport type { StateCode } from \"../_internals/constants/states\";\n\nconst buildMunicipalities = (stateCode: StateCode): Municipality[] =>\n\tCITIES_DATA[stateCode].map(([name, code]) => ({ code, name, stateCode }));\n\n/**\n * Returns Brazilian municipalities published by the IBGE, optionally filtered by state.\n *\n * If `stateCode` is provided, only municipalities of that state are returned. If it is\n * omitted, every municipality of every state is returned, sorted with `localeCompare` in the\n * \"pt-BR\" locale so accented names land where a Brazilian reader expects them. Every per-state\n * list is sorted the same way.\n *\n * Only an omitted (or `undefined`) `stateCode` asks for the full list: any other value that is\n * not a known state code, `null` and `\"\"` included, returns `[]`. The sibling `getCities` is\n * looser and treats every falsy `state` as \"no state given\", so `getCities(null)` returns the\n * full list where `getMunicipalities(null)` returns `[]`.\n *\n * The state code is matched exactly, case included: `getMunicipalities(\"sp\")` returns `[]` where\n * `getMunicipalities(\"SP\")` returns the 645 São Paulo municipalities. `getMunicipalities` and\n * `getCities` are the only state-taking lookups that are case-sensitive; `getStateNameByCode`,\n * `getTimezoneByState`, `getAreaCodesByState` and `getMunicipality` all fold case.\n *\n * @param {StateCode} [stateCode] - The two letter code of the Brazilian state to filter by.\n * @returns {Municipality[]} A fresh array of fresh `Municipality` objects. Empty when\n * `stateCode` is not a known state.\n *\n * @example\n * ```typescript\n * getMunicipalities(\"SP\")[0]; // { code: \"3500105\", name: \"Adamantina\", stateCode: \"SP\" }\n * getMunicipalities().length; // every municipality of every state\n * getMunicipalities(\"ZZ\"); // []\n * getMunicipalities(\"sp\"); // [] (the state code is case-sensitive here)\n * getMunicipalities(null); // [] (only an omitted state code asks for the full list)\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport const getMunicipalities = (stateCode?: StateCode): Municipality[] => {\n\tif (stateCode === undefined) {\n\t\treturn DATA.flatMap((state) => buildMunicipalities(state.code)).sort((a, b) =>\n\t\t\ta.name.localeCompare(b.name, \"pt-BR\"),\n\t\t);\n\t}\n\n\tif (typeof stateCode !== \"string\" || !Object.hasOwn(CITIES_DATA, stateCode)) return [];\n\n\treturn buildMunicipalities(stateCode);\n};\n","import { removeAccents } from \"../../remove-accents/remove-accents\";\n\nconst WHITESPACE_RUN_REGEX = /\\s+/g;\n\n/**\n * Normalizes a municipality name so that two spellings of the same municipality compare equal.\n *\n * Accents are dropped, every run of whitespace collapses into a single space, the surrounding\n * whitespace is trimmed, and the casing is folded to upper case, the direction Unicode expands\n * `\"ß\"` to `\"SS\"` in, so `\"Paßos\"` normalizes to what `\"Passos\"` normalizes to. Only the runs\n * of whitespace that are there collapse, so a name written without a space the dataset carries\n * stays a different name.\n *\n * `removeAccents` already folds a value that is not a string down to `\"\"`, which no real\n * municipality name normalizes to, so a caller may hand this helper an unvalidated value and\n * simply compare the result.\n *\n * @param {string} value - The municipality name to normalize.\n * @returns {string} The normalized name, or `\"\"` when `value` is not a non-empty string.\n *\n * @example\n * ```typescript\n * normalizeMunicipalityName(\"São  Paulo\"); // \"SAO PAULO\"\n * normalizeMunicipalityName(\"  Ceará-Mirim  \"); // \"CEARA-MIRIM\"\n * normalizeMunicipalityName(\"\"); // \"\"\n * ```\n */\nexport const normalizeMunicipalityName = (value: string): string =>\n\tremoveAccents(value).replaceAll(WHITESPACE_RUN_REGEX, \" \").trim().toUpperCase();\n","import { DATA as CITIES_DATA } from \"../_internals/constants/cities\";\nimport { type StateCode } from \"../_internals/constants/states\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { normalizeMunicipalityName } from \"../_internals/normalize-municipality-name/normalize-municipality-name\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/** The `getMunicipality` query by IBGE municipality code. */\nexport type GetMunicipalityByCodeParams = {\n\t/** The 7 digit IBGE municipality code, as a string or a number. */\n\tcode: string | number;\n};\n\n/** The `getMunicipality` query by municipality name and state code. */\nexport type GetMunicipalityByNameParams = {\n\t/** The municipality name, accents and casing ignored. */\n\tmunicipalityName: string;\n\t/** The two letter state code the municipality belongs to, e.g. \"SP\". */\n\tuf: string;\n};\n\n/** The two ways `getMunicipality` can be queried: by IBGE code, or by municipality name and state code. */\nexport type GetMunicipalityParams = GetMunicipalityByCodeParams | GetMunicipalityByNameParams;\n\n/**\n * The `getMunicipality` query by IBGE municipality code, the 2.3.0 name of\n * `GetMunicipalityByCodeParams`.\n *\n * @deprecated Use `GetMunicipalityByCodeParams` instead.\n */\nexport type GetMunicipalityByCodeOptions = GetMunicipalityByCodeParams;\n\n/**\n * The `getMunicipality` query by municipality name and state code, the 2.3.0 name of\n * `GetMunicipalityByNameParams`.\n *\n * @deprecated Use `GetMunicipalityByNameParams` instead.\n */\nexport type GetMunicipalityByNameOptions = GetMunicipalityByNameParams;\n\n/**\n * The two ways `getMunicipality` can be queried, the 2.3.0 name of `GetMunicipalityParams`.\n *\n * @deprecated Use `GetMunicipalityParams` instead.\n */\nexport type GetMunicipalityOptions = GetMunicipalityParams;\n\nlet codeIndex: Map<string, [string, string]> | undefined;\n\nconst getMunicipalityByCode = (code: string | number): [string, string] | null => {\n\tif (!isLookupCode(code)) return null;\n\n\t// Stryker disable next-line ConditionalExpression: this guard only memoizes; CITIES_DATA is a module level constant that is never written to, so rebuilding the index on every call produces the very same entries, and each lookup already returns a fresh copy of the pair, leaving the repeated work unobservable.\n\tif (!codeIndex) {\n\t\tcodeIndex = new Map();\n\n\t\tfor (const [stateCode, municipalities] of Object.entries(CITIES_DATA)) {\n\t\t\tfor (const [name, ibgeCode] of municipalities) {\n\t\t\t\tcodeIndex.set(ibgeCode, [name, stateCode]);\n\t\t\t}\n\t\t}\n\t}\n\n\t// `Map#get` never throws and simply misses for a key of the wrong shape (a malformed, too\n\t// short or too long code), so only the sign and the decimal point of a numeric `code`, which\n\t// `sanitizeToDigits` would silently drop, have to be pre-validated above.\n\tconst entry = codeIndex.get(sanitizeToDigits(code));\n\n\treturn entry ? [...entry] : null;\n};\n\nconst isStateCode = (value: string): value is StateCode => Object.hasOwn(CITIES_DATA, value);\n\nconst getMunicipalityCodeByName = ({\n\tmunicipalityName,\n\tuf,\n}: GetMunicipalityByNameParams): string | null => {\n\tif (typeof uf !== \"string\") return null;\n\n\tconst normalizedUf = uf.trim().toUpperCase();\n\n\t// Every real state code is exactly 2 uppercase letters, so a malformed `normalizedUf` (wrong\n\t// length, digits, ...) simply finds no match below; there is no need to pre-validate its shape.\n\tif (!isStateCode(normalizedUf)) return null;\n\n\t// `removeAccents` (and so `normalizeMunicipalityName`) already folds a non-string or empty\n\t// `municipalityName` down to `\"\"`, which no real municipality name normalizes to, so there is\n\t// no need to pre-validate `municipalityName` here first.\n\tconst normalizedName = normalizeMunicipalityName(municipalityName);\n\tconst match = CITIES_DATA[normalizedUf].find(\n\t\t([name]) => normalizeMunicipalityName(name) === normalizedName,\n\t);\n\n\treturn match ? match[1] : null;\n};\n\n/**\n * Looks a Brazilian municipality up by its IBGE code in the offline IBGE \"localidades\" dataset.\n *\n * A `code` given as a number must be a non-negative integer: a sign and a decimal point are not\n * digits, so `-3550308` and `355030.8` are rejected instead of being read as `3550308`.\n *\n * @deprecated Use `getMunicipalityByCode` instead, which is synchronous and offline; matching a\n * municipality by name is up to the application, over `getMunicipalities`.\n *\n * @param {GetMunicipalityByCodeParams} options - The `{ code }` query.\n * @returns {Promise<[string, string] | null>} A fresh `[name, uf]` pair, which the caller owns\n * and may mutate, or null when the code is malformed or unknown.\n *\n * @example\n * ```typescript\n * await getMunicipality({ code: \"3550308\" }); // [\"São Paulo\", \"SP\"]\n * await getMunicipality({ code: 3550308 }); // [\"São Paulo\", \"SP\"]\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport function getMunicipality(\n\toptions: GetMunicipalityByCodeParams,\n): Promise<[string, string] | null>;\n\n/**\n * Looks a Brazilian municipality's IBGE code up in the offline IBGE \"localidades\" dataset.\n *\n * The name lookup ignores accents and casing, and every run of whitespace collapses into a\n * single space, so `\"sao  paulo\"` matches `\"São Paulo\"`; a name written without the space does\n * not, since only the runs that are there collapse. The casing is folded to upper case, the\n * direction Unicode expands `\"ß\"` to `\"SS\"` in, so `\"Paßos\"` matches `\"Passos\"`.\n *\n * @deprecated Use `getMunicipalityByCode` instead, which is synchronous and offline; matching a\n * municipality by name is up to the application, over `getMunicipalities`.\n *\n * @param {GetMunicipalityByNameParams} options - The `{ municipalityName, uf }` query.\n * @returns {Promise<string | null>} The 7 digit IBGE code, or null when the state code or the\n * municipality is unknown.\n *\n * @example\n * ```typescript\n * await getMunicipality({ municipalityName: \"sao paulo\", uf: \"sp\" }); // \"3550308\"\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport function getMunicipality(options: GetMunicipalityByNameParams): Promise<string | null>;\n\n/**\n * Looks a Brazilian municipality up in the offline IBGE \"localidades\" dataset, from a query\n * whose direction is only known at run time.\n *\n * Given a `code` it resolves the municipality name and its UF; given a `municipalityName` and a\n * `uf` it resolves the IBGE code. Validation failures and unknown municipalities are reported\n * as `null`.\n *\n * @deprecated Use `getMunicipalityByCode` instead, which is synchronous and offline; matching a\n * municipality by name is up to the application, over `getMunicipalities`.\n *\n * @param {GetMunicipalityParams} options - Either `{ code }` or `{ municipalityName, uf }`.\n * @returns {Promise<[string, string] | string | null>} The `[name, uf]` pair when looking up\n * by code, the IBGE code when looking up by name, or null when the municipality is unknown\n * (this includes `options` itself being missing or not an object, e.g. `null`, `undefined`,\n * an array or a primitive).\n *\n * @example\n * ```typescript\n * const lookUp = (options: GetMunicipalityParams) => getMunicipality(options);\n *\n * await lookUp({ code: \"3550308\" }); // [\"São Paulo\", \"SP\"]\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport function getMunicipality(\n\toptions: GetMunicipalityParams,\n): Promise<[string, string] | string | null>;\n\nexport function getMunicipality(\n\toptions: GetMunicipalityParams,\n): Promise<[string, string] | string | null> {\n\tif (isNullish(options) || typeof options !== \"object\" || Array.isArray(options)) {\n\t\treturn Promise.resolve(null);\n\t}\n\n\tif (\"code\" in options) {\n\t\treturn Promise.resolve(getMunicipalityByCode(options.code));\n\t}\n\n\treturn Promise.resolve(getMunicipalityCodeByName(options));\n}\n","import { DATA as CITIES_DATA, type Municipality } from \"../_internals/constants/cities\";\nimport { DATA } from \"../_internals/constants/states\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type { Municipality } from \"../_internals/constants/cities\";\n\n/**\n * Looks up a Brazilian municipality by its 7 digit IBGE code, published by the IBGE.\n *\n * A `code` given as a number must be a non-negative integer: a sign and a decimal point are\n * not digits, so `-3550308` and `355030.8` are rejected instead of being read as `3550308`.\n *\n * @param {string|number} code - The 7 digit IBGE municipality code, as a string or a number.\n * @returns {Municipality|null} A fresh copy of the matching municipality, or `null` when\n * `code` is not a 7 digit code or does not match any known municipality.\n *\n * @example\n * ```typescript\n * getMunicipalityByCode(\"3550308\"); // { code: \"3550308\", name: \"São Paulo\", stateCode: \"SP\" }\n * getMunicipalityByCode(3550308); // { code: \"3550308\", name: \"São Paulo\", stateCode: \"SP\" }\n * getMunicipalityByCode(\"0000000\"); // null\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport const getMunicipalityByCode = (code: string | number): Municipality | null => {\n\tif (!isLookupCode(code)) return null;\n\n\tconst digits = sanitizeToDigits(code);\n\n\t// Every real municipality code is exactly 7 digits, so a `digits` of the wrong length simply\n\t// finds no match in the loop below; there is no need to pre-validate its length here first.\n\tfor (const { code: stateCode } of DATA) {\n\t\tconst match = CITIES_DATA[stateCode].find(\n\t\t\t([, municipalityCode]) => municipalityCode === digits,\n\t\t);\n\n\t\tif (match) return { code: digits, name: match[0], stateCode };\n\t}\n\n\treturn null;\n};\n","import { type StateCode } from \"./states\";\n\n/**\n * IBGE code of the Federative Unit (\"cUF\"), keyed by the 2 digit code found in the first\n * field of every DF-e access key (chave de acesso): NF-e (modelo 55), NFC-e (modelo 65),\n * CT-e (modelo 57) and MDF-e (modelo 58).\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/arquivo-manuais/moc7-visao-geral.pdf\n *   (Manual de Orientação do Contribuinte, \"chave de acesso\" / \"Tabela do IBGE\").\n */\nexport const IBGE_UF_CODES: Record<string, StateCode> = {\n\t\"11\": \"RO\",\n\t\"12\": \"AC\",\n\t\"13\": \"AM\",\n\t\"14\": \"RR\",\n\t\"15\": \"PA\",\n\t\"16\": \"AP\",\n\t\"17\": \"TO\",\n\t\"21\": \"MA\",\n\t\"22\": \"PI\",\n\t\"23\": \"CE\",\n\t\"24\": \"RN\",\n\t\"25\": \"PB\",\n\t\"26\": \"PE\",\n\t\"27\": \"AL\",\n\t\"28\": \"SE\",\n\t\"29\": \"BA\",\n\t\"31\": \"MG\",\n\t\"32\": \"ES\",\n\t\"33\": \"RJ\",\n\t\"35\": \"SP\",\n\t\"41\": \"PR\",\n\t\"42\": \"SC\",\n\t\"43\": \"RS\",\n\t\"50\": \"MS\",\n\t\"51\": \"MT\",\n\t\"52\": \"GO\",\n\t\"53\": \"DF\",\n};\n","/** Digits of a DF-e (NF-e, NFC-e, CT-e or MDF-e) access key (chave de acesso). */\nexport const NFE_KEY_LENGTH = 44;\n\n/**\n * The prefixes the `Id` attribute of a DF-e XML puts in front of the 44 digits, one per\n * document: `NFe`, `CTe`, `MDFe`, `BPe`, `NF3e` and `NFCom`. Stripped before the digits are\n * read, since `NF3e` carries a digit of its own. Shared by `getNfeKeyInfo` and `parseNfeKey`.\n */\nexport const XML_ID_PREFIX_REGEX = /^(?:nfe|cte|mdfe|bpe|nf3e|nfcom)/i;\n","/**\n * The `mod` (modelo do documento) values `getNfeKeyInfo` supports, every one of them a document\n * whose \"chave de acesso\" is the same 44 digit string built the same way: 55 NF-e, 57 CT-e,\n * 58 MDF-e, 62 NFCom, 63 BP-e, 64 GTV-e (the CT-e Guia de Transporte de Valores), 65 NFC-e,\n * 66 NF3e and 67 CT-e OS (Conhecimento de Transporte Eletrônico para Outros Serviços).\n *\n * Model 59, the CF-e-SAT, is deliberately left out: its 44 position \"chave de consulta\" is\n * composed differently, around a 9 digit SAT serial number and with no `tpEmis` field, so the\n * layout below does not describe it.\n */\nexport const VALID_MODELS = [\"55\", \"57\", \"58\", \"62\", \"63\", \"64\", \"65\", \"66\", \"67\"] as const;\n\n/** One of the `mod` values `getNfeKeyInfo` supports. */\ntype ValidModel = (typeof VALID_MODELS)[number];\n\n/**\n * The `tpEmis` (forma de emissão) codes each MOC assigns to its own document, so a code that is\n * meaningful for one document does not make a key of another valid.\n *\n * NF-e and NFC-e (MOC 7.0 Anexo I, field B22): 1 normal, 2 contingência FS-IA, 3 Regime Especial\n * NFF, 4 contingência EPEC, 5 contingência FS-DA, 6 contingência SVC-AN, 7 contingência SVC-RS\n * and 9 contingência off-line da NFC-e. Code 3 used to be \"contingência SCAN\"; NT 2021.002\n * redefined it as the Regime Especial da Nota Fiscal Fácil, leaving the value set unchanged.\n *\n * CT-e (CT-e MOC 4.00 Anexo I, field D19): 1 normal, 3 Regime Especial NFF, 4 EPEC pela SVC,\n * 5 contingência FS-DA, 7 autorização pela SVC-RS and 8 autorização pela SVC-SP. CT-e OS\n * (field D27) drops 3 and 4, and the GTV-e (field D15) uses 1, 2 contingência off-line, 7 and\n * 8. Rule G011 of the same annex, \"(7=SVC-RS e 8=SVC-SP)\", is what makes 8 a real code here,\n * even though the NF-e MOC never assigns it.\n *\n * MDF-e (MDF-e MOC 3.00b Anexo I, domain D7): 1 normal, 2 contingência off-line and 3 Regime\n * Especial NFF. NFCom, BP-e and NF3e (their own Anexo I, domain D7): 1 normal and\n * 2 contingência off-line.\n */\nexport const EMISSION_TYPES_BY_MODEL: Readonly<Record<ValidModel, readonly number[]>> = {\n\t\"55\": [1, 2, 3, 4, 5, 6, 7, 9],\n\t\"57\": [1, 3, 4, 5, 7, 8],\n\t\"58\": [1, 2, 3],\n\t\"62\": [1, 2],\n\t\"63\": [1, 2],\n\t\"64\": [1, 2, 7, 8],\n\t\"65\": [1, 2, 3, 4, 5, 6, 7, 9],\n\t\"66\": [1, 2],\n\t\"67\": [1, 5, 7, 8],\n};\n\n/**\n * The models whose key spends position 36 on `nSiteAutoriz`, the site of the authorizer that\n * received the document, leaving 7 digits for the numeric code: NFCom (MOC 1.00a Visão Geral\n * §2.1.3) and NF3e (MOC 1.00a Visão Geral). Every other model writes an 8 digit code there.\n */\nexport const AUTHORIZATION_SITE_MODELS: readonly string[] = [\"62\", \"66\"];\n\n/**\n * The `cNF` values rule B03-10 of the NF-e MOC turns down: \"cNF não pode ser igual a 00000000,\n * 11111111, 22222222, 33333333, 44444444, 55555555, 66666666, 77777777, 88888888, 99999999,\n * 12345678, 23456789, 34567890, 45678901, 56789012, 67890123, 78901234, 89012345, 90123456,\n * 01234567\".\n */\nexport const FORBIDDEN_CODES: readonly string[] = [\n\t\"00000000\",\n\t\"11111111\",\n\t\"22222222\",\n\t\"33333333\",\n\t\"44444444\",\n\t\"55555555\",\n\t\"66666666\",\n\t\"77777777\",\n\t\"88888888\",\n\t\"99999999\",\n\t\"12345678\",\n\t\"23456789\",\n\t\"34567890\",\n\t\"45678901\",\n\t\"56789012\",\n\t\"67890123\",\n\t\"78901234\",\n\t\"89012345\",\n\t\"90123456\",\n\t\"01234567\",\n];\n\n/**\n * The models rule B03-10 is written for, the only ones whose `cNF` it constrains.\n *\n * The scope is stated inconsistently by the sources: the change log of NT 2019.001 v1.40 says\n * modelo 65 was taken out of the rule, while MOC 7.0 Anexo I still prints its applicability as\n * `55/65`. The MOC being the consolidated text in force, both models are kept here.\n */\nexport const FORBIDDEN_CODE_MODELS: readonly string[] = [\"55\", \"65\"];\n\n/**\n * Shape the key has to be written in once the prefix is stripped: the digits, optionally split\n * into the printed groups of 4 by whitespace or the usual mask characters, a run of them between\n * two groups included, the same rule the CPF, CNPJ, CAEPF and CNS regexes of this library follow.\n * A separator inside a group of 4, or any other character, is rejected instead of being stripped.\n * The group count is left open so the 44 digit length is still checked where the key is read.\n */\nexport const FORMAT_REGEX = /^\\d{4}(?:[\\s.\\-/]*\\d{4})*$/;\n\n/** Start of the document number (nNF) inside the 44 digit key. */\nexport const NUMBER_START = 25;\n\n/** End (exclusive) of the document number (nNF) inside the 44 digit key. */\nexport const NUMBER_END = 34;\n\n/**\n * A document number of all zeros is not a valid nNF: the leiaute types `nNF` as `TNF`, whose\n * pattern is `[1-9]{1}[0-9]{0,8}` in `tiposBasico_v4.00.xsd`, and the Anexo I of every other\n * model repeats the same regex for its own number field.\n */\nexport const ABSENT_NUMBER = \"000000000\";\n","import { IBGE_UF_CODES } from \"../_internals/constants/ibge-uf-codes\";\nimport { NFE_KEY_LENGTH, XML_ID_PREFIX_REGEX } from \"../_internals/constants/nfe-key\";\nimport { type StateCode } from \"../_internals/constants/states\";\nimport { mod11 } from \"../_internals/mod11/mod11\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport {\n\tABSENT_NUMBER,\n\tAUTHORIZATION_SITE_MODELS,\n\tEMISSION_TYPES_BY_MODEL,\n\tFORBIDDEN_CODES,\n\tFORBIDDEN_CODE_MODELS,\n\tFORMAT_REGEX,\n\tNUMBER_END,\n\tNUMBER_START,\n\tVALID_MODELS,\n} from \"./constants\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\n/**\n * The document models a DF-e access key can carry: `\"55\"` NF-e, `\"57\"` CT-e, `\"58\"` MDF-e,\n * `\"62\"` NFCom, `\"63\"` BP-e, `\"64\"` GTV-e, `\"65\"` NFC-e, `\"66\"` NF3e and `\"67\"` CT-e OS.\n * Spelled out instead of derived from `VALID_MODELS` because the allowlist is internal and API\n * Extractor cannot name it in the public report; the type test of `get-nfe-key-info.test.ts` pins\n * the two together so they cannot drift apart.\n */\nexport type NfeKeyModel = \"55\" | \"57\" | \"58\" | \"62\" | \"63\" | \"64\" | \"65\" | \"66\" | \"67\";\n\n/** The fields `getNfeKeyInfo` reads out of a DF-e access key (chave de acesso). */\nexport type NfeKeyInfo = {\n\t/** Two letter code of the issuing state (UF), read from the IBGE UF code. */\n\tstateCode: StateCode;\n\t/** Four digit issue year. */\n\tyear: number;\n\t/** Issue month, 1 to 12. */\n\tmonth: number;\n\t/** The 14 digit CNPJ (or zero padded CPF) of the issuer. */\n\ttaxId: string;\n\t/** Document model: \"55\" NF-e, \"57\" CT-e, \"58\" MDF-e, \"62\" NFCom, \"63\" BP-e, \"64\" GTV-e, \"65\" NFC-e, \"66\" NF3e, \"67\" CT-e OS. */\n\tmodel: NfeKeyModel;\n\t/** Document series, 0 to 999. */\n\tseries: number;\n\t/** Document number, 1 to 999999999. */\n\tnumber: number;\n\t/** Emission type code (tpEmis), one of the codes the MOC of that model assigns. */\n\temissionType: number;\n\t/**\n\t * Site of the authorizer that received the document (`nSiteAutoriz`), 0 to 9. Only NFCom\n\t * (`\"62\"`) and NF3e (`\"66\"`) spend a digit of the key on it.\n\t */\n\tauthorizationSite?: number;\n\t/** The numeric code (cNF) drawn by the issuer: 7 digits for NFCom and NF3e, 8 for the rest. */\n\tcode: string;\n\t/** The modulo 11 check digit of the key. */\n\tcheckDigit: number;\n};\n\nconst EMISSION_TYPE_INDEX = 34;\n\nconst AUTHORIZATION_SITE_INDEX = 35;\n\nconst SHORT_CODE_START = 36;\n\nconst CODE_END = 43;\n\nconst CHECK_DIGIT_INDEX = 43;\n\nconst isForbiddenCode = (model: string, code: string, number: number): boolean =>\n\tFORBIDDEN_CODE_MODELS.includes(model) &&\n\t(FORBIDDEN_CODES.includes(code) || Number(code) === number);\n\n/**\n * Parses a DF-e (Documento Fiscal eletrônico) access key (chave de acesso) into its fields.\n *\n * Covers every document whose access key is the same 44 digit string: NF-e (modelo 55), NFC-e\n * (65), CT-e (57), MDF-e (58), CT-e OS (67), GTV-e (64), BP-e (63), NF3e (66) and NFCom (62).\n * Accepts the same input forms as `isValidNfeKey` (the printed mask of 4 digit groups, split by\n * whitespace, `.`, `-` or `/`, and the `NFe`, `CTe`, `MDFe`, `BPe`, `NF3e` and `NFCom` prefixes\n * of the XML `Id` attribute) and returns `null` when the key is not valid.\n *\n * The emission type (`tpEmis`) is checked against the codes the MOC of that model assigns, so\n * the accepted set changes with the model: 1 to 7 and 9 for NF-e and NFC-e, `{1, 3, 4, 5, 7, 8}`\n * for the CT-e, `{1, 5, 7, 8}` for the CT-e OS and `{1, 2, 7, 8}` for the GTV-e (8 is the\n * authorização pela SVC-SP of the CT-e MOC), `{1, 2, 3}` for the MDF-e and `{1, 2}` for the\n * BP-e, the NF3e and the NFCom.\n *\n * NFCom and NF3e write `nSiteAutoriz` in position 36 and only 7 digits of `cNF` after it, so\n * `authorizationSite` is filled for those two models and `code` is 7 characters long instead of\n * 8; every other model leaves `authorizationSite` out and reads an 8 digit `code`.\n *\n * For NF-e and NFC-e the numeric code is also checked against rule B03-10 of the NF-e MOC,\n * which forbids the twenty repeated and sequential codes it lists and a `cNF` equal to the\n * document number. That rule arrived with NT 2019.001, so it can turn down a key authorised\n * before it, and no other MOC states it, which is why it is not applied to the other models.\n * A document number of all zeros is turned down for every model, following the leiaute rather\n * than a choice of this library: `nNF` is typed `TNF` in `tiposBasico_v4.00.xsd`, whose pattern\n * is `[1-9]{1}[0-9]{0,8}`, and the Anexo I of every other model repeats the same regex for its\n * own number field (`nCT`, `nMDF`, `nBP`, `nNF`).\n *\n * @param {string} value - The access key value to be parsed.\n * @returns {NfeKeyInfo | null} The parsed access key, or `null` when it is not valid.\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/arquivo-manuais/moc7-visao-geral.pdf\n * Manual de Orientação do Contribuinte (MOC) NF-e, \"chave de acesso\".\n * @see Official: https://dfe-portal.svrs.rs.gov.br/NFE/Documentos\n * NF-e schema package (PL_010b, NT2025.002 v1.30): `tiposBasico_v4.00.xsd`, the `TNF` and\n * `TCodUfIBGE` types.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2007/AJ_009_07\n * Ajuste SINIEF 09/07, cláusula primeira, caput: the CT-e, modelo 57.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2019/AJ036_19\n * Ajuste SINIEF 36/19, cláusula primeira: the CT-e OS, modelo 67.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2020/ajuste-sinief-03-20\n * Ajuste SINIEF 03/20, cláusula primeira: the GTV-e, modelo 64.\n * @see Official: https://dfe-portal.svrs.rs.gov.br/CTE/Documentos\n * CT-e MOC 4.00, Anexo I (\"MOC CTe 4.00 Anexo I - Leiaute e Regras de Validação\"): the `tpEmis`\n * domains D19, D27 and D15. Published by the SVRS dfe-portal, like the BP-e, NF3e and NFCom\n * manuals below; the cte.fazenda.gov.br manual index answers \"Sistema temporariamente\n * indisponível\" permanently.\n * @see Official: https://dfe-portal.svrs.rs.gov.br/BPE/Documentos\n * BP-e MOC 1.00b, Visão Geral and Anexo I: modelo 63.\n * @see Official: https://dfe-portal.svrs.rs.gov.br/NF3e/Documentos\n * NF3e MOC 1.00a, Visão Geral and Anexo I: modelo 66 and `nSiteAutoriz`.\n * @see Official: https://dfe-portal.svrs.rs.gov.br/NFCOM/Documentos\n * NFCom MOC 1.00a, Visão Geral and Anexo I: modelo 62 and `nSiteAutoriz`.\n * @see Based on: https://github.com/nfephp-org/sped-common/blob/master/src/Keys.php\n * NFePHP `Keys::build` reference implementation, source of the SP and RS test vectors.\n * @see Based on: https://github.com/vmarchesin/br-validate-dfe-access-key\n * Second reference implementation.\n *\n * @example\n * ```typescript\n * getNfeKeyInfo(\"35170458716523000119550010000000121000123458\");\n * // { stateCode: \"SP\", year: 2017, month: 4, taxId: \"58716523000119\", model: \"55\",\n * //   series: 1, number: 12, emissionType: 1, code: \"00012345\", checkDigit: 8 }\n *\n * getNfeKeyInfo(\"invalid\"); // null\n * ```\n */\nexport const getNfeKeyInfo = (value: string): NfeKeyInfo | null => {\n\tif (typeof value !== \"string\") return null;\n\n\tconst body = value.trim().replace(XML_ID_PREFIX_REGEX, \"\").trimStart();\n\n\tif (!FORMAT_REGEX.test(body)) return null;\n\n\tconst digits = sanitizeToDigits(body);\n\n\tif (digits.length !== NFE_KEY_LENGTH) return null;\n\n\tconst uf = digits.slice(0, 2);\n\n\tconst stateCode = IBGE_UF_CODES[uf];\n\n\tif (stateCode === undefined) return null;\n\n\tconst month = Number(digits.slice(4, 6));\n\n\tif (month < 1 || month > 12) return null;\n\n\tconst modelDigits = digits.slice(20, 22);\n\tconst model = VALID_MODELS.find((candidate) => candidate === modelDigits);\n\n\tif (model === undefined) return null;\n\n\tif (digits.slice(NUMBER_START, NUMBER_END) === ABSENT_NUMBER) return null;\n\n\tconst emissionType = Number(digits[EMISSION_TYPE_INDEX]);\n\n\tif (!EMISSION_TYPES_BY_MODEL[model].includes(emissionType)) return null;\n\n\tconst hasAuthorizationSite = AUTHORIZATION_SITE_MODELS.includes(model);\n\tconst code = digits.slice(\n\t\thasAuthorizationSite ? SHORT_CODE_START : AUTHORIZATION_SITE_INDEX,\n\t\tCODE_END,\n\t);\n\tconst number = Number(digits.slice(NUMBER_START, NUMBER_END));\n\n\tif (isForbiddenCode(model, code, number)) return null;\n\n\tconst checkDigit = Number(digits[CHECK_DIGIT_INDEX]);\n\n\tif (mod11(digits.slice(0, CHECK_DIGIT_INDEX), { variant: \"arrecadacao\" }) !== checkDigit) {\n\t\treturn null;\n\t}\n\n\tconst parsed: NfeKeyInfo = {\n\t\tstateCode,\n\t\tyear: 2000 + Number(digits.slice(2, 4)),\n\t\tmonth,\n\t\ttaxId: digits.slice(6, 20),\n\t\tmodel,\n\t\tseries: Number(digits.slice(22, 25)),\n\t\tnumber,\n\t\temissionType,\n\t\tcode,\n\t\tcheckDigit,\n\t};\n\n\tif (hasAuthorizationSite) parsed.authorizationSite = Number(digits[AUTHORIZATION_SITE_INDEX]);\n\n\treturn parsed;\n};\n","export type TlvFields = Record<string, string | undefined>;\n\nconst SEGMENT_LENGTH = 2;\n\n// Stryker disable next-line Regex: id and length are always sliced to at most SEGMENT_LENGTH (2) characters, so dropping either anchor cannot change whether this matches\nconst SEGMENT_REGEX = /^\\d{2}$/;\n\n/**\n * Parses an EMV® style TLV (tag-length-value) string into its objects.\n *\n * Every object is a 2 digit ID, a 2 digit length and a value of exactly that many characters,\n * laid out back to back. Parsing stops with `null` as soon as the string stops being\n * well-formed, i.e. when an ID or a length is not made of two digits or when a value runs past\n * the end of the string. Repeated IDs are not expected at the root of a BR Code; when they do\n * occur, the last one wins.\n *\n * @param {string} value - The TLV string to parse.\n * @returns {TlvFields|null} The objects keyed by ID, or `null` when the string is malformed.\n *\n * @example\n * ```typescript\n * parseTlv(\"0002015303986\"); // { \"00\": \"01\", \"53\": \"986\" }\n * parseTlv(\"00020153039865802BR\"); // { \"00\": \"01\", \"53\": \"986\", \"58\": \"BR\" }\n * parseTlv(\"0003ab\"); // null, the value is shorter than its declared length\n * ```\n */\nexport const parseTlv = (value: string): TlvFields | null => {\n\tconst fields: TlvFields = {};\n\n\tlet index = 0;\n\n\twhile (index < value.length) {\n\t\tconst id = value.slice(index, index + SEGMENT_LENGTH);\n\t\tconst length = value.slice(index + SEGMENT_LENGTH, index + SEGMENT_LENGTH * 2);\n\n\t\tif (!SEGMENT_REGEX.test(id) || !SEGMENT_REGEX.test(length)) return null;\n\n\t\tconst start = index + SEGMENT_LENGTH * 2;\n\t\tconst end = start + Number(length);\n\n\t\tif (end > value.length) return null;\n\n\t\tfields[id] = value.slice(start, end);\n\t\tindex = end;\n\t}\n\n\treturn fields;\n};\n","import {\n\tPIX_ABSENT_TXID,\n\tPIX_ADDITIONAL_DATA_ID,\n\tPIX_COUNTRY_CODE,\n\tPIX_COUNTRY_CODE_ID,\n\tPIX_CRC_LENGTH,\n\tPIX_CRC_TAG,\n\tPIX_DESCRIPTION_ID,\n\tPIX_DYNAMIC_POINT_OF_INITIATION,\n\tPIX_GUI,\n\tPIX_GUI_ID,\n\tPIX_KEY_ID,\n\tPIX_MERCHANT_ACCOUNT_INFORMATION_FIRST_ID,\n\tPIX_MERCHANT_ACCOUNT_INFORMATION_LAST_ID,\n\tPIX_MERCHANT_CATEGORY_CODE_ID,\n\tPIX_MERCHANT_CITY_ID,\n\tPIX_MERCHANT_NAME_ID,\n\tPIX_PAYLOAD_FORMAT_INDICATOR,\n\tPIX_PAYLOAD_FORMAT_INDICATOR_ID,\n\tPIX_POINT_OF_INITIATION_ID,\n\tPIX_STATIC_POINT_OF_INITIATION,\n\tPIX_TRANSACTION_AMOUNT_ID,\n\tPIX_TRANSACTION_AMOUNT_MAX_LENGTH,\n\tPIX_TRANSACTION_CURRENCY,\n\tPIX_TRANSACTION_CURRENCY_ID,\n\tPIX_TXID_ID,\n\tPIX_URL_ID,\n\tPIX_WITHDRAWAL_FACILITATOR_ID,\n} from \"../_internals/constants/pix\";\nimport { crc16Ccitt } from \"../_internals/crc16-ccitt/crc16-ccitt\";\nimport { isValidPixUrl } from \"../_internals/is-valid-pix-url/is-valid-pix-url\";\nimport { type TlvFields, parseTlv } from \"../_internals/parse-tlv/parse-tlv\";\n\n/**\n * How a Pix BR Code is meant to be presented for payment: `\"dynamic\"` when it carries a PSP\n * location or when the \"Point of Initiation Method\" object (`01`) is `\"12\"`, the value the\n * Manual do BR Code reads as \"só pode ser utilizado uma vez\"; `\"static\"` otherwise.\n */\nexport type PixPointOfInitiation = \"static\" | \"dynamic\";\n\n/** The fields `getPixPayloadInfo` reads out of a Pix BR Code. */\nexport type PixPayloadInfo = {\n\t/** The Pix key of the receiver, present in a static payload. */\n\tkey?: string;\n\t/** URL of the dynamic payload, present instead of `key` in a dynamic one. */\n\turl?: string;\n\t/** Free text the receiver wrote for the payer. */\n\tdescription?: string;\n\t/**\n\t * The 8 digit ISPB of the \"facilitador de serviço de saque\" (`fss`, sub-object 26-03),\n\t * present only in a Pix Saque BR Code.\n\t */\n\twithdrawalFacilitator?: string;\n\t/** Name of the receiver, at most 25 ASCII characters. */\n\tmerchantName: string;\n\t/** City of the receiver, at most 15 ASCII characters. */\n\tmerchantCity: string;\n\t/** Amount in BRL, absent when the payer types it. */\n\tamount?: number;\n\t/** Transaction ID, absent when the payload carries the `***` marker. */\n\ttxid?: string;\n\t/** Whether the payload is presented as a single use one (\"dynamic\") or not (\"static\"). */\n\tpointOfInitiation: PixPointOfInitiation;\n};\n\nconst AMOUNT_REGEX = /^\\d+(?:\\.\\d{1,2})?$/;\n\nconst WITHDRAWAL_FACILITATOR_REGEX = /^\\d{8}$/;\n\nconst CRC_TAG_LENGTH = PIX_CRC_TAG.length + PIX_CRC_LENGTH;\n\nconst findMerchantAccountInformation = (fields: TlvFields): TlvFields | null => {\n\tfor (\n\t\tlet id = PIX_MERCHANT_ACCOUNT_INFORMATION_FIRST_ID;\n\t\tid <= PIX_MERCHANT_ACCOUNT_INFORMATION_LAST_ID;\n\t\tid++\n\t) {\n\t\tconst template = fields[id.toString()];\n\n\t\tif (template === undefined) continue;\n\n\t\tconst objects = parseTlv(template);\n\n\t\tif (objects?.[PIX_GUI_ID]?.toLowerCase() === PIX_GUI) return objects;\n\t}\n\n\treturn null;\n};\n\nconst isValidCrc = (payload: string): boolean => {\n\tconst checksum = payload.slice(-PIX_CRC_LENGTH);\n\n\tif (payload.slice(-CRC_TAG_LENGTH, -PIX_CRC_LENGTH) !== PIX_CRC_TAG) return false;\n\n\t// A checksum that is not four uppercase hexadecimal digits can never equal crc16Ccitt's\n\t// always-hexadecimal output, so the comparison below turns it down on its own.\n\treturn crc16Ccitt(payload.slice(0, -PIX_CRC_LENGTH)) === checksum.toUpperCase();\n};\n\nconst resolvePointOfInitiation = (fields: TlvFields): string | undefined | null => {\n\tconst pointOfInitiation = fields[PIX_POINT_OF_INITIATION_ID];\n\n\tif (\n\t\tpointOfInitiation !== undefined &&\n\t\tpointOfInitiation !== PIX_STATIC_POINT_OF_INITIATION &&\n\t\tpointOfInitiation !== PIX_DYNAMIC_POINT_OF_INITIATION\n\t) {\n\t\treturn null;\n\t}\n\n\treturn pointOfInitiation;\n};\n\nconst isValidAmount = (\n\tamount: string | undefined,\n\t{ url, withdrawalFacilitator }: MerchantKeyInfo,\n): boolean => {\n\tif (amount === undefined) return true;\n\n\tif (!AMOUNT_REGEX.test(amount) || amount.length > PIX_TRANSACTION_AMOUNT_MAX_LENGTH) return false;\n\n\treturn url !== undefined || withdrawalFacilitator !== undefined || Number(amount) > 0;\n};\n\ntype MerchantKeyInfo = {\n\tkey?: string;\n\turl?: string;\n\tdescription?: string;\n\twithdrawalFacilitator?: string;\n};\n\nconst resolveMerchantKeyInfo = (fields: TlvFields): MerchantKeyInfo | null => {\n\tconst merchantAccountInformation = findMerchantAccountInformation(fields);\n\n\tif (!merchantAccountInformation) return null;\n\n\tconst key = merchantAccountInformation[PIX_KEY_ID];\n\tconst url = merchantAccountInformation[PIX_URL_ID];\n\tconst description = merchantAccountInformation[PIX_DESCRIPTION_ID];\n\tconst withdrawalFacilitator = merchantAccountInformation[PIX_WITHDRAWAL_FACILITATOR_ID];\n\n\tif ((key === undefined) === (url === undefined)) return null;\n\tif (key !== undefined && !key) return null;\n\tif (url !== undefined && !isValidPixUrl(url)) return null;\n\tif (withdrawalFacilitator !== undefined && url !== undefined) return null;\n\tif (\n\t\twithdrawalFacilitator !== undefined &&\n\t\t!WITHDRAWAL_FACILITATOR_REGEX.test(withdrawalFacilitator)\n\t) {\n\t\treturn null;\n\t}\n\n\treturn { key, url, description, withdrawalFacilitator };\n};\n\nconst resolveTxid = (fields: TlvFields): string | undefined | null => {\n\tconst additionalData = fields[PIX_ADDITIONAL_DATA_ID];\n\n\tif (additionalData === undefined) return undefined;\n\n\tconst objects = parseTlv(additionalData);\n\n\tif (!objects) return null;\n\n\treturn objects[PIX_TXID_ID];\n};\n\ntype OptionalPixFields = MerchantKeyInfo & {\n\tamount?: string;\n\ttxid?: string;\n\tpointOfInitiation?: string;\n};\n\nconst buildPixPayload = (\n\tmerchantName: string,\n\tmerchantCity: string,\n\toptional: OptionalPixFields,\n): PixPayloadInfo => {\n\tconst { key, url, description, withdrawalFacilitator, amount, txid, pointOfInitiation } =\n\t\toptional;\n\tconst isDynamic = url !== undefined || pointOfInitiation === PIX_DYNAMIC_POINT_OF_INITIATION;\n\tconst pix: PixPayloadInfo = {\n\t\tmerchantName,\n\t\tmerchantCity,\n\t\tpointOfInitiation: isDynamic ? \"dynamic\" : \"static\",\n\t};\n\n\tif (key !== undefined) pix.key = key;\n\tif (url !== undefined) pix.url = url;\n\tif (description !== undefined) pix.description = description;\n\tif (withdrawalFacilitator !== undefined) pix.withdrawalFacilitator = withdrawalFacilitator;\n\n\tif (amount !== undefined && url === undefined) pix.amount = Number(amount);\n\tif (txid !== undefined && txid !== PIX_ABSENT_TXID && url === undefined) pix.txid = txid;\n\n\treturn pix;\n};\n\n/**\n * Parses a Pix BR Code payload, the string behind a Pix QR Code and behind \"Pix copia e cola\".\n *\n * The payload is rejected when its TLV (tag-length-value) structure is malformed, when the CRC\n * does not match, when a mandatory object is missing or malformed, or when none of the\n * \"Merchant Account Information\" templates (IDs 26 to 51) carries the `br.gov.bcb.pix` GUI\n * together with either a key (static) or a URL (dynamic).\n *\n * The Pix key itself is not validated: the manual states a static QR Code can be generated\n * with a key that no longer exists in the DICT, so key ownership is only settled at payment\n * time. The \"Additional Data Field Template\" (ID 62) is mandatory in the BR Code table but\n * optional in the EMV® specification it refers to, so it is accepted when absent. The lengths\n * the manual reserves for the merchant name (25), the merchant city (15) and the `txid` (25)\n * are generator side limits, enforced by `generatePixPayload`; payloads in the wild routinely\n * overrun them, so they are not enforced here, and neither is the 77 character limit of the\n * Pix key field (26-01).\n *\n * Unreserved Templates (IDs 80 to 99) are ignored. The \"QR Code composto\" of Pix Automático\n * (Pix recorrente) writes its recurrence location in one of them: when such a payload also\n * carries a payment location in 26-25, as the composite example of the Pix manual does, it is\n * parsed here as an ordinary dynamic payload and its recurrence location is dropped, so a\n * consumer that has to tell the two apart cannot rely on this parser. Only a payload with no\n * Pix template at all in IDs 26 to 51 returns `null`.\n *\n * The merchant account information must carry exactly one of a Pix key (26-01) or a PSP\n * location (26-25); the location is checked with the same host and path rule\n * `generatePixPayload` applies. The \"Point of Initiation Method\" object (`01`) is advisory, as\n * the Manual do BR Code marks it `Uso: O` and only assigns a meaning to the value `\"12\"`\n * (\"Se o valor 12 estiver presente, significa que o BR Code só pode ser utilizado uma vez\"):\n * it may be absent from either shape, and only a value outside `{\"11\", \"12\"}` is rejected.\n * `pointOfInitiation` is reported as `\"dynamic\"` when the payload carries a PSP location or\n * when `01` is `\"12\"`, and as `\"static\"` otherwise. When the payload carries a PSP location the\n * transaction amount (54) and the `txid` (62-05) are ignored, as the manual mandates, because\n * the PSP location is the source of truth for both.\n *\n * A payload built around a Pix key that carries the transaction amount (54) must state an\n * amount greater than zero, unless it is a Pix Saque BR Code: §2.6 of the Pix manual puts the\n * ISPB of the \"facilitador de serviço de saque\" in sub-object 26-03 (`fss`) of the same\n * template this parser already reads, and states that \"a presença do campo fss, com um ISPB\n * válido […] indica que esse é um QR Code para Pix Saque\", whose amount is settled at payment\n * time. So `54` set to `\"0\"` or `\"0.00\"` is accepted together with `fss` and rejected without\n * it; that rejection is a deliberate restriction of this library, not a rule of the manual,\n * whose field table allows `\"0\"` in any payload. A `fss` that is not 8 digits is rejected, and\n * so is a `fss` written next to a PSP location: §2.7 of the Manual de Padrões para Iniciação do\n * Pix maps the dynamic QR Code to exactly two sub-objects, `00` (GUI) and `25` (URL), while\n * `fss` belongs to the static template of §2.6, whose §2.6.1 states that \"não há funcionalidade\n * de Pix Troco para QR Codes estáticos, apenas para QR Codes dinâmicos\".\n *\n * @param {string} value - The BR Code payload to be parsed.\n * @returns {PixPayloadInfo|null} The Pix data of the payload, or `null` when it is not a valid Pix\n * BR Code.\n *\n * @example\n * ```typescript\n * getPixPayloadInfo(\n *   \"00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-426655440000\" +\n *     \"5204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***63041D3D\",\n * );\n * // {\n * //   key: \"123e4567-e12b-12d1-a456-426655440000\",\n * //   merchantName: \"Fulano de Tal\",\n * //   merchantCity: \"BRASILIA\",\n * //   pointOfInitiation: \"static\",\n * // }\n * ```\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\n * @see Official: https://github.com/bacen/pix-api\n * Pix (SPI) OpenAPI spec.\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/API-DICT.html\n * DICT (Diretório de Identificadores de Contas Transacionais) API specification.\n */\nexport const getPixPayloadInfo = (value: string): PixPayloadInfo | null => {\n\tif (typeof value !== \"string\") return null;\n\n\tconst payload = value.trim();\n\n\t// Stryker disable next-line ConditionalExpression,EqualityOperator: a payload this short has no room left for any of the mandatory fields checked below, so it can never parse to a non-null result even without this guard\n\tif (payload.length <= CRC_TAG_LENGTH || !isValidCrc(payload)) return null;\n\n\tconst fields = parseTlv(payload);\n\n\tif (!fields) return null;\n\n\tif (fields[PIX_PAYLOAD_FORMAT_INDICATOR_ID] !== PIX_PAYLOAD_FORMAT_INDICATOR) return null;\n\n\tconst pointOfInitiation = resolvePointOfInitiation(fields);\n\n\tif (pointOfInitiation === null) return null;\n\n\tif (fields[PIX_MERCHANT_CATEGORY_CODE_ID] === undefined) return null;\n\tif (fields[PIX_TRANSACTION_CURRENCY_ID] !== PIX_TRANSACTION_CURRENCY) return null;\n\tif (fields[PIX_COUNTRY_CODE_ID]?.toUpperCase() !== PIX_COUNTRY_CODE) return null;\n\n\tconst merchantName = fields[PIX_MERCHANT_NAME_ID];\n\n\tif (merchantName === undefined || merchantName === \"\") return null;\n\n\tconst merchantCity = fields[PIX_MERCHANT_CITY_ID];\n\n\tif (merchantCity === undefined || merchantCity === \"\") return null;\n\n\tconst merchantKeyInfo = resolveMerchantKeyInfo(fields);\n\n\tif (!merchantKeyInfo) return null;\n\n\tconst amount = fields[PIX_TRANSACTION_AMOUNT_ID];\n\n\tif (!isValidAmount(amount, merchantKeyInfo)) return null;\n\n\tconst txid = resolveTxid(fields);\n\n\tif (txid === null) return null;\n\n\treturn buildPixPayload(merchantName, merchantCity, {\n\t\t...merchantKeyInfo,\n\t\tamount,\n\t\ttxid,\n\t\tpointOfInitiation,\n\t});\n};\n","import { DATA, type State } from \"../_internals/constants/states\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nexport type { State } from \"../_internals/constants/states\";\n\n/**\n * Retrieves the Brazilian state whose 2-digit IBGE code (\"cUF\", the Código da Unidade da\n * Federação) matches the given value.\n *\n * The IBGE code is the same 2-digit UF code found in the first field of every DF-e access key\n * (chave de acesso) issued for any of the models `isValidNfeKey` covers: NF-e (55), NFC-e\n * (65), CT-e (57), MDF-e (58), CT-e OS (67), GTV-e (64), BP-e (63), NF3e (66) and NFCom (62).\n *\n * A `code` given as a number must be a non-negative integer: a sign and a decimal point are\n * not digits, so `-35` and `3.5` are rejected instead of being read as `35`.\n *\n * @param {string|number} code - The 2-digit IBGE UF code. Accepts a string or a non-negative\n * integer number, with any non-digit characters stripped before matching.\n * @returns {State|null} The matching `State` object, or `null` when `code` is not a known\n * IBGE UF code.\n *\n * @see Official: https://servicodados.ibge.gov.br/api/v1/localidades/estados\n * (IBGE Localidades API, field `id`)\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/arquivo-manuais/moc7-visao-geral.pdf\n *   (Manual de Orientação do Contribuinte, \"chave de acesso\" / \"Tabela do IBGE\")\n *\n * @example\n * ```typescript\n * getStateByIbgeCode(\"35\"); // { code: \"SP\", name: \"São Paulo\", regionCode: \"SE\", regionName: \"Sudeste\", ibgeCode: 35 }\n * getStateByIbgeCode(35); // { code: \"SP\", name: \"São Paulo\", regionCode: \"SE\", regionName: \"Sudeste\", ibgeCode: 35 }\n * getStateByIbgeCode(\"11\"); // { code: \"RO\", name: \"Rondônia\", regionCode: \"N\", regionName: \"Norte\", ibgeCode: 11 }\n * getStateByIbgeCode(\"00\"); // null\n * getStateByIbgeCode(\"\"); // null\n * getStateByIbgeCode(-35); // null\n * ```\n */\nexport const getStateByIbgeCode = (code: string | number): State | null => {\n\tif (!isLookupCode(code)) return null;\n\n\tconst digits = sanitizeToDigits(code);\n\n\tconst numericCode = Number(digits);\n\n\tconst state = DATA.find((entry) => entry.ibgeCode === numericCode);\n\n\treturn state ? { ...state } : null;\n};\n","import { DATA, type StateCode } from \"../_internals/constants/states\";\nimport { removeAccents } from \"../remove-accents/remove-accents\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\nconst normalizeName = (value: string): string =>\n\tremoveAccents(value).replaceAll(/\\s+/g, \" \").trim().toLowerCase();\n\n/**\n * Retrieves the two-letter code (sigla) of a Brazilian state given its full name.\n *\n * The match is accent-insensitive, case-insensitive and ignores leading/trailing whitespace,\n * so `\"  são paulo  \"`, `\"Sao Paulo\"` and `\"SÃO PAULO\"` all resolve to `\"SP\"`. Every run of\n * internal whitespace collapses into a single space too, so `\"Rio  de  Janeiro\"` resolves to\n * `\"RJ\"`, while a name written without the space matches nothing: only the runs that are there\n * collapse, so `\"saopaulo\"` is not `\"São Paulo\"`. The casing is folded to lower case, the\n * direction that leaves `\"ß\"` alone instead of expanding it into `\"SS\"`, so `\"Mato Großo\"` is\n * not `\"Mato Grosso\"` either.\n *\n * @param {string} name - The full name of the state.\n * @returns {StateCode|null} The two-letter state code, or `null` when `name` does not match\n * any Brazilian state.\n *\n * @see Official: https://servicodados.ibge.gov.br/api/v1/localidades/estados\n * (IBGE Localidades API)\n *\n * @example\n * ```typescript\n * getStateCodeByName(\"São Paulo\"); // \"SP\"\n * getStateCodeByName(\"sao paulo\"); // \"SP\"\n * getStateCodeByName(\"  Rio de Janeiro  \"); // \"RJ\"\n * getStateCodeByName(\"Rio  de  Janeiro\"); // \"RJ\"\n * getStateCodeByName(\"Neverland\"); // null\n * ```\n */\nexport const getStateCodeByName = (name: string): StateCode | null => {\n\tconst normalized = normalizeName(name);\n\n\tconst state = DATA.find((entry) => normalizeName(entry.name) === normalized);\n\n\treturn state ? state.code : null;\n};\n","import { DATA, type StateName } from \"../_internals/constants/states\";\n\nexport type { StateName } from \"../_internals/constants/states\";\n\n/**\n * Retrieves the full name of a Brazilian state given its two-letter code (sigla).\n *\n * The match is case-insensitive and ignores leading/trailing whitespace, so `\"sp\"`, `\"SP\"`\n * and `\"  Sp  \"` all resolve to `\"São Paulo\"`.\n *\n * @param {string} code - The two-letter state code.\n * @returns {StateName|null} The full state name, or `null` when `code` does not match any\n * Brazilian state.\n *\n * @see Official: https://servicodados.ibge.gov.br/api/v1/localidades/estados\n * (IBGE Localidades API)\n *\n * @example\n * ```typescript\n * getStateNameByCode(\"SP\"); // \"São Paulo\"\n * getStateNameByCode(\"sp\"); // \"São Paulo\"\n * getStateNameByCode(\"  Rj  \"); // \"Rio de Janeiro\"\n * getStateNameByCode(\"ZZ\"); // null\n * ```\n */\nexport const getStateNameByCode = (code: string): StateName | null => {\n\tif (typeof code !== \"string\") return null;\n\n\tconst normalized = code.trim().toUpperCase();\n\n\tconst state = DATA.find((entry) => entry.code === normalized);\n\n\treturn state ? state.name : null;\n};\n","import { DATA, type State } from \"../_internals/constants/states\";\n\nexport type { State } from \"../_internals/constants/states\";\n\n/**\n * Retrieves a list of all Brazilian states with their codes and names.\n *\n * Returns an array of state objects containing the two-letter state code\n * and the full state name. The list is sorted by state name with `localeCompare`\n * in the \"pt-BR\" locale, so accented names land where a Brazilian reader expects\n * them: Pará, Paraíba, Paraná and Rio de Janeiro, Rio Grande do Norte, Rio Grande do Sul.\n *\n * Each call returns a fresh array of fresh objects, so mutating the result\n * (e.g. `getStates()[0].name = \"X\"`) never affects the underlying data or\n * subsequent calls.\n *\n * @returns {State[]} An array of all Brazilian states sorted by name\n *\n * @example\n * ```typescript\n * getStates()[0]; // { code: \"AC\", name: \"Acre\", regionCode: \"N\", regionName: \"Norte\", ibgeCode: 12 }\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/docs/localidades\n */\nexport const getStates = (): State[] => DATA.map((state) => Object.assign({}, state));\n","/**\n * IANA time zone database (tzdata) name for each Brazilian state, chosen as the zone of the\n * state capital per the official `zone1970.tab` comments (some tzdata zones span more than\n * one state, e.g. `America/Sao_Paulo` also covers DF, GO, MG, ES, RJ, PR, SC and RS, and\n * `America/Fortaleza` also covers MA, PI, RN and PB besides CE). Pará and Amazonas each\n * straddle two IANA zones themselves (`America/Belem`/`America/Santarem` and\n * `America/Manaus`/`America/Eirunepe` respectively); both map here to their capital's zone\n * (Belém and Manaus). Pernambuco maps to `America/Recife`, not `America/Noronha`: Fernando de\n * Noronha is an archipelago district of PE, not a state of its own, and its distinct\n * UTC-02:00 offset is out of scope here.\n *\n * @see Official: https://www.iana.org/time-zones\n * @see Based on: https://raw.githubusercontent.com/eggert/tz/main/zone1970.tab\n * (IANA tz\n * database data file, `BR` rows)\n * @see Based on: https://en.wikipedia.org/wiki/Time_in_Brazil\n * Used to confirm the state\n * coverage of each zone.\n */\nexport const STATE_TIMEZONES: Record<string, string> = {\n\tAC: \"America/Rio_Branco\",\n\tAL: \"America/Maceio\",\n\tAM: \"America/Manaus\",\n\tAP: \"America/Belem\",\n\tBA: \"America/Bahia\",\n\tCE: \"America/Fortaleza\",\n\tDF: \"America/Sao_Paulo\",\n\tES: \"America/Sao_Paulo\",\n\tGO: \"America/Sao_Paulo\",\n\tMA: \"America/Fortaleza\",\n\tMG: \"America/Sao_Paulo\",\n\tMS: \"America/Campo_Grande\",\n\tMT: \"America/Cuiaba\",\n\tPA: \"America/Belem\",\n\tPB: \"America/Fortaleza\",\n\tPE: \"America/Recife\",\n\tPI: \"America/Fortaleza\",\n\tPR: \"America/Sao_Paulo\",\n\tRJ: \"America/Sao_Paulo\",\n\tRN: \"America/Fortaleza\",\n\tRO: \"America/Porto_Velho\",\n\tRR: \"America/Boa_Vista\",\n\tRS: \"America/Sao_Paulo\",\n\tSC: \"America/Sao_Paulo\",\n\tSE: \"America/Maceio\",\n\tSP: \"America/Sao_Paulo\",\n\tTO: \"America/Araguaina\",\n};\n","import { STATE_TIMEZONES } from \"./constants\";\n\n/**\n * Retrieves the IANA time zone database name (tzdata zone) for a Brazilian state, chosen as\n * the zone of the state capital. The match is case-insensitive and ignores leading/trailing\n * whitespace.\n *\n * Some tzdata zones cover more than one state: `America/Sao_Paulo` also covers DF, GO, MG, ES,\n * RJ, PR, SC and RS besides SP, and `America/Fortaleza` also covers MA, PI, RN and PB besides\n * CE. Pará and Amazonas each straddle two IANA zones themselves (`America/Belem`/\n * `America/Santarem` and `America/Manaus`/`America/Eirunepe` respectively); both resolve here\n * to their capital's zone (Belém and Manaus). Pernambuco resolves to `America/Recife`, not\n * `America/Noronha`: Fernando de Noronha is an archipelago district of PE, not a state of its\n * own.\n *\n * @param {string} stateCode - The two-letter state code (sigla).\n * @returns {string|null} The IANA time zone name, or `null` when `stateCode` does not match\n * any Brazilian state.\n *\n * @see Official: https://www.iana.org/time-zones\n * @see Based on: https://raw.githubusercontent.com/eggert/tz/main/zone1970.tab\n * (IANA tz\n * database data file, `BR` rows)\n * @see Based on: https://en.wikipedia.org/wiki/Time_in_Brazil\n * Used to confirm the state\n * coverage of each zone.\n *\n * @example\n * ```typescript\n * getTimezoneByState(\"SP\"); // \"America/Sao_Paulo\"\n * getTimezoneByState(\"am\"); // \"America/Manaus\"\n * getTimezoneByState(\"AC\"); // \"America/Rio_Branco\"\n * getTimezoneByState(\"PE\"); // \"America/Recife\"\n * getTimezoneByState(\"ZZ\"); // null\n * ```\n */\nexport const getTimezoneByState = (stateCode: string): string | null => {\n\tif (typeof stateCode !== \"string\") return null;\n\n\tconst normalized = stateCode.trim().toUpperCase();\n\n\treturn Object.hasOwn(STATE_TIMEZONES, normalized) ? STATE_TIMEZONES[normalized] : null;\n};\n","import { type StateCode } from \"../_internals/constants/states\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { isValidDate } from \"../_internals/is-valid-date/is-valid-date\";\nimport { getHolidays } from \"../get-holidays/get-holidays\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\n/** The parameters `isHoliday` takes: the date to check and, optionally, the state whose holidays also count. */\nexport type IsHolidayParams = {\n\t/** The date to check, read by its local calendar day. */\n\ttargetDate: Date;\n\t/** Two letter state code whose state holidays are also considered (default: national holidays only). */\n\tstateCode?: StateCode;\n};\n\n/**\n * The parameters `isHoliday` takes, the 2.3.0 name of `IsHolidayParams`.\n *\n * @deprecated Use `IsHolidayParams` instead.\n */\nexport type IsHolidayOptions = IsHolidayParams;\n\n/**\n * Checks whether a given date is a Brazilian holiday.\n *\n * The check is based on `targetDate`'s **local calendar date** (its local year/month/day,\n * as read by `Date#getFullYear`/`getMonth`/`getDate`), not its underlying UTC instant.\n * This matters because `new Date(\"2024-12-25\")` (a date-only ISO string) is parsed as UTC\n * midnight, which in timezones behind UTC (e.g. America/Sao_Paulo, UTC-3) represents\n * \"2024-12-24\" in local time, so build `targetDate` from local components\n * (`new Date(2024, 11, 25)`) or from a full ISO datetime when you mean a specific local day.\n *\n * An invalid `stateCode` is treated in two different ways, depending on its type:\n *\n * - a string that is not a known state code is ignored, and only national holidays are\n *   considered, the same behavior as `getHolidays`. The lookup is an own-property one, so a\n *   prototype-chain key such as `\"__proto__\"` or `\"constructor\"` is an unknown state code like\n *   any other;\n * - a `stateCode` that is present and is not a string at all (a number, `null`, an object) is\n *   rejected rather than ignored: `isHoliday` returns `false` without looking at the date, even\n *   when that date is a national holiday. `undefined`, or an absent property, is the only\n *   non-string value that stands for \"no state\" instead.\n *\n * The date a state holiday is checked against is the statutory one, except for Santa Catarina's\n * two holidays, which `getHolidays` moves to the following Sunday when they fall Monday to\n * Friday: 11 August from 2005 on, as Lei SC nº 13.408/2005 introduced, and 25 November from 1999\n * on, as Lei SC nº 11.213/1999 introduced, save for 2004, the year art. 3º of Lei SC nº\n * 12.906/2004 left that date without a transfer clause. Lei SC nº 18.531/2022 now carries both.\n *\n * @param {IsHolidayParams} [options] - Options for the check.\n * @param {Date} options.targetDate - The date to check.\n * @param {StateCode} [options.stateCode] - Optional Brazilian state code to also consider state holidays.\n * @returns {boolean} True when the date is a holiday, false otherwise. Bad input also returns\n * false: missing `options`, a `targetDate` that is not a valid `Date`, or a non-string\n * `stateCode`.\n *\n * @example\n * ```typescript\n * isHoliday({ targetDate: new Date(2024, 0, 1) }); // true (Ano novo)\n * isHoliday({ targetDate: new Date(2024, 5, 10) }); // false\n * isHoliday(); // false\n * ```\n *\n * The underlying national holidays are the ones `getHolidays` computes; see its JSDoc (and\n * `src/get-holidays/constants.ts` for state holidays) for the full set of laws behind them.\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l0662.htm\n * Lei 662/1949, the base national holidays law.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/2002/l10607.htm\n * Lei 10.607/2002, added Finados (2 November) and folded in Tiradentes (21 April), which had\n * been national since art. 3º of the Lei 1.266/1950 it revoked.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l6802.htm\n * Lei 6.802/1980, declared Nossa Senhora Aparecida a national holiday.\n * @see Official: https://www.planalto.gov.br/ccivil_03/_ato2023-2026/2023/lei/l14759.htm\n * Lei 14.759/2023, nationalized Dia da Consciência Negra from 2024.\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l9093.htm\n * Lei 9.093/1995, the framework law authorizing state and municipal holidays.\n * @see Official: https://www.in.gov.br/web/dou/-/portaria-mgi-n-11.460-de-29-de-dezembro-de-2025-678388627\n * Portaria MGI nº 11.460/2025, the federal executive's annual calendar of feriados nacionais and\n * pontos facultativos, the source behind three of the four Easter-derived entries: Sexta-feira\n * Santa, Carnaval and Corpus Christi. Páscoa is not one of them; the portaria never mentions\n * Easter Sunday, whose date `getHolidays` derives arithmetically with the Meeus/Jones/Butcher\n * algorithm. See the `getHolidays` JSDoc for why Sexta-feira Santa is typed `national` without a\n * law of its own.\n */\nexport const isHoliday = (options?: IsHolidayParams): boolean => {\n\tif (isNullish(options) || typeof options !== \"object\") {\n\t\treturn false;\n\t}\n\n\tconst { targetDate, stateCode } = options;\n\n\tif (!isValidDate(targetDate)) return false;\n\n\tif (stateCode !== undefined && typeof stateCode !== \"string\") {\n\t\treturn false;\n\t}\n\n\tconst year = targetDate.getFullYear();\n\treturn getHolidays({ year, stateCode }).some(\n\t\t(holiday) =>\n\t\t\tholiday.date.getMonth() === targetDate.getMonth() &&\n\t\t\tholiday.date.getDate() === targetDate.getDate(),\n\t);\n};\n","import { sanitizeToDigits } from \"../sanitize-to-digits/sanitize-to-digits\";\n\nexport type GenerateChecksumParams = {\n\t/** The digits the checksum is computed over. */\n\tbase: string | number;\n\t/** A starting weight that decreases along the digits, or the explicit weight of each digit. */\n\tweight: number | readonly number[];\n};\n\n/**\n * Sums every digit of a base value multiplied by its weight, the shared first step of the\n * modulus 11 check digits used by CPF, PIS and friends.\n *\n * @param {GenerateChecksumParams} params - The checksum parameters.\n * @param {string|number} params.base - The value whose digits are summed. Non digits are ignored.\n * @param {number|number[]} params.weight - Either the weight of the leftmost digit, decreasing\n * by one towards the right, or one explicit weight per digit.\n * @returns {number} The weighted sum of the digits.\n *\n * @example\n * ```typescript\n * generateChecksum({ base: \"123456789\", weight: 10 }); // 210\n * generateChecksum({ base: \"123\", weight: [1, 2, 3] }); // 14\n * ```\n */\nexport function generateChecksum({ base, weight }: GenerateChecksumParams): number {\n\tconst digits = sanitizeToDigits(base);\n\n\tlet sum = 0;\n\n\tconst len = digits.length;\n\n\tif (typeof weight === \"number\") {\n\t\tlet w = weight;\n\t\tfor (let i = 0; i < len; i++, w--) {\n\t\t\tconst digit = digits.charCodeAt(i) - 48;\n\t\t\tsum += digit * w;\n\t\t}\n\t} else {\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst digit = digits.charCodeAt(i) - 48;\n\t\t\tsum += digit * weight[i];\n\t\t}\n\t}\n\n\treturn sum;\n}\n","/**\n * Weights, lookup tables and bank code lists used by the per bank account check digit rules.\n * The weights come from the \"Regras de Validação de dígito verificador de agência e conta\n * corrente\" compendium and were cross checked against independent open source validators.\n *\n * @see Based on: https://github.com/eduardokum/laravel-boleto/blob/master/manuais/Regras%20Validacao%20Conta%20Corrente%20VI_EPS.pdf\n * Icatu Seguros compendium of per bank agency/account check digit rules, mirrored in this repo.\n * @see Based on: https://github.com/ajmiciano/banktools-br/tree/master/lib/banktools-br/banks\n * @see Based on: https://github.com/luizalabs/heimdall/blob/main/heimdall_valid_bank/calculate_number_account.py\n * @see Based on: https://github.com/Xerpa/bran_checker/tree/master/lib/banks\n */\n\nexport const COMPE_CODES =\n\t\"001003004007010011012014015016017018021023024025033036037040041047060063064065066069070074\" +\n\t\"075076077078079080081082083084085088089093094095096097099100101102104105107111113119120121\" +\n\t\"122124125126127128129130131132133134136138139140141142143144145146149157159173174180183188\" +\n\t\"189190191194195196197208212213217218222224233237241243246249250254259260265266268269271272\" +\n\t\"273274276278280281283288289290292293296298299300301305307310312318319320321322323324326329\" +\n\t\"330331332334335336341342348349350352355358359360362363364365366368370373374376377378379380\" +\n\t\"381382383384385386387389390391393394395396397398399400401402403404406407408410411412413414\" +\n\t\"415416418419421422423425426427428430433435438439440443444445447448449450451452454455456457\" +\n\t\"458460461462463464465467468469470473475476477478479481482484487488495496505506507508509510\" +\n\t\"511512513514516517518519520521522523524525526527528529530531532533534535536537538539540541\" +\n\t\"542543544546547548550551552553554555556557559560561562563564565566567568569571572573574575\" +\n\t\"576577579585586587588589590591592593594595596597598599600604610611612613614615619620623626\" +\n\t\"630632633634636637643644646651653654655659660661662663665668669670671672673674675676677678\" +\n\t\"679680681682683684685686687688690691692693694695696697698699700701703704707708712714719741\" +\n\t\"743745747748751752753754755756757759760761763764765766767768769770771772773774775778780781\" +\n\t\"783785786787788789790791792793794795804\";\n\nexport const SANTANDER_WEIGHTS = [9, 7, 3, 1, 0, 0, 9, 7, 1, 3, 1, 9, 7, 3];\n\nexport const BANRISUL_ACCOUNT_WEIGHTS = [3, 2, 4, 7, 6, 5, 4, 3, 2];\n\nexport const HSBC_AGENCY_ACCOUNT_WEIGHTS = [8, 9, 2, 3, 4, 5, 6, 7, 8, 9];\n\nexport const CITIBANK_ACCOUNT_WEIGHTS = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n\nexport const VERHOEFF_MULTIPLICATION = [\n\t[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n\t[1, 2, 3, 4, 0, 6, 7, 8, 9, 5],\n\t[2, 3, 4, 0, 1, 7, 8, 9, 5, 6],\n\t[3, 4, 0, 1, 2, 8, 9, 5, 6, 7],\n\t[4, 0, 1, 2, 3, 9, 5, 6, 7, 8],\n\t[5, 9, 8, 7, 6, 0, 4, 3, 2, 1],\n\t[6, 5, 9, 8, 7, 1, 0, 4, 3, 2],\n\t[7, 6, 5, 9, 8, 2, 1, 0, 4, 3],\n\t[8, 7, 6, 5, 9, 3, 2, 1, 0, 4],\n\t[9, 8, 7, 6, 5, 4, 3, 2, 1, 0],\n];\n\nexport const VERHOEFF_PERMUTATION = [\n\t[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n\t[1, 5, 7, 6, 2, 8, 3, 0, 9, 4],\n\t[5, 8, 0, 3, 7, 9, 6, 1, 4, 2],\n\t[8, 9, 1, 6, 0, 4, 3, 5, 2, 7],\n\t[9, 4, 5, 3, 1, 2, 6, 8, 7, 0],\n\t[4, 2, 8, 6, 5, 7, 3, 9, 0, 1],\n\t[2, 7, 9, 3, 8, 0, 6, 4, 1, 5],\n\t[7, 0, 4, 6, 9, 1, 3, 2, 5, 8],\n];\n\nexport const VERHOEFF_INVERSE = [0, 4, 3, 2, 1, 5, 6, 7, 8, 9];\n\nexport const STRUCTURE_ONLY_BANK_CODES = [\n\t\"077\",\n\t\"085\",\n\t\"102\",\n\t\"136\",\n\t\"197\",\n\t\"208\",\n\t\"212\",\n\t\"290\",\n\t\"318\",\n\t\"323\",\n\t\"336\",\n\t\"380\",\n\t\"403\",\n\t\"623\",\n\t\"655\",\n\t\"707\",\n\t\"748\",\n\t\"756\",\n];\n","import { generateChecksum } from \"../_internals/generate-checksum/generate-checksum\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { mod10 } from \"../_internals/mod10/mod10\";\nimport { mod11 } from \"../_internals/mod11/mod11\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport {\n\tBANRISUL_ACCOUNT_WEIGHTS,\n\tCITIBANK_ACCOUNT_WEIGHTS,\n\tCOMPE_CODES,\n\tHSBC_AGENCY_ACCOUNT_WEIGHTS,\n\tSANTANDER_WEIGHTS,\n\tSTRUCTURE_ONLY_BANK_CODES,\n\tVERHOEFF_INVERSE,\n\tVERHOEFF_MULTIPLICATION,\n\tVERHOEFF_PERMUTATION,\n} from \"./constants\";\n\n/** The bank account `isValidBankAccount` checks: the bank, the agency and the account with its check digit. */\nexport type IsValidBankAccountParams = {\n\t/** Three digit bank code (COMPE), e.g. \"001\" for Banco do Brasil. */\n\tbankCode: string;\n\t/** Agency number, digits only, without its own check digit. */\n\tagency: string;\n\t/** Account number, digits only, without the check digit. */\n\taccount: string;\n\t/**\n\t * The account check digit: one or two characters, or \"X\" for Banco do Brasil and \"P\" for\n\t * Bradesco. Banks with a published rule take a single character; the generic fallback also\n\t * accepts two, chaining mod10 and mod11 over the account.\n\t */\n\tdigit: string;\n};\n\n/**\n * The bank account `isValidBankAccount` checks: the bank, the agency and the account with its\n * check digit.\n *\n * Kept from 2.3.0: the name violates the naming rule (`Options` is the type of a second,\n * usually optional, argument, and this object is the only argument `isValidBankAccount` takes),\n * but it shipped in 2.3.0 as the canonical name, so it stays as an alias until v3.\n *\n * @deprecated Use `IsValidBankAccountParams` instead.\n */\nexport type IsValidBankAccountOptions = IsValidBankAccountParams;\n\ntype BankAccountDigits = (agency: string, account: string) => string[];\n\ntype BankAccountRule = {\n\tminAgencyLength: number;\n\tmaxAgencyLength: number;\n\tminAccountLength: number;\n\tmaxAccountLength: number;\n\tdigits: BankAccountDigits | null;\n};\n\nconst bancoDoBrasilDigits: BankAccountDigits = (_agency, account) => {\n\tconst digit = mod11(account, { variant: \"bank\" });\n\n\treturn [digit === 10 ? \"X\" : String(digit)];\n};\n\nconst santanderDigits: BankAccountDigits = (agency, account) => {\n\tconst base = `${agency}00${account}`;\n\n\tlet sum = 0;\n\tlet position = 0;\n\n\tfor (const weight of SANTANDER_WEIGHTS) {\n\t\t// Stryker disable next-line ArithmeticOperator: SANTANDER_WEIGHTS sums to 60, a multiple of 10, so replacing -48 with +48 shifts every term's contribution by a multiple of 10 mod 10, leaving the final check digit unchanged for every possible input.\n\t\tsum += ((base.charCodeAt(position) - 48) * weight) % 10;\n\t\tposition++;\n\t}\n\n\treturn [String((10 - (sum % 10)) % 10)];\n};\n\nconst banrisulDigits: BankAccountDigits = (_agency, account) => {\n\tconst remainder = generateChecksum({ base: account, weight: BANRISUL_ACCOUNT_WEIGHTS }) % 11;\n\n\tif (remainder === 0) return [\"0\"];\n\tif (remainder === 1) return [\"6\"];\n\n\treturn [String(11 - remainder)];\n};\n\nconst caixaDigits: BankAccountDigits = (agency, account) => {\n\tconst digit = mod11(agency + account, { variant: \"bank\" });\n\n\treturn [String(digit === 10 ? 0 : digit)];\n};\n\nconst bradescoDigits: BankAccountDigits = (_agency, account) => {\n\tconst digit = mod11(account, { variant: \"bank\", maxWeight: 7 });\n\n\treturn digit === 10 ? [\"P\"] : [String(digit)];\n};\n\nconst nubankDigits: BankAccountDigits = (_agency, account) => {\n\tconst base = account.replace(/^0+(?=\\d)/, \"\");\n\n\tlet checksum = 0;\n\n\tfor (let i = base.length - 1, position = 1; i >= 0; i--, position++) {\n\t\tconst permuted = VERHOEFF_PERMUTATION[position % 8][base.charCodeAt(i) - 48];\n\t\tchecksum = VERHOEFF_MULTIPLICATION[checksum][permuted];\n\t}\n\n\treturn [String(VERHOEFF_INVERSE[checksum])];\n};\n\nconst itauDigits: BankAccountDigits = (agency, account) => [String(mod10(agency + account))];\n\nconst hsbcDigits: BankAccountDigits = (agency, account) => {\n\tconst remainder =\n\t\tgenerateChecksum({ base: agency + account, weight: HSBC_AGENCY_ACCOUNT_WEIGHTS }) % 11;\n\n\treturn [String(remainder === 10 ? 0 : remainder)];\n};\n\nconst citibankDigits: BankAccountDigits = (_agency, account) => {\n\tconst remainder = generateChecksum({ base: account, weight: CITIBANK_ACCOUNT_WEIGHTS }) % 11;\n\n\treturn [String(remainder <= 1 ? 0 : 11 - remainder)];\n};\n\nconst BANK_RULES: Record<string, BankAccountRule> = {\n\t\"001\": {\n\t\tminAgencyLength: 4,\n\t\tmaxAgencyLength: 5,\n\t\tminAccountLength: 8,\n\t\tmaxAccountLength: 10,\n\t\tdigits: bancoDoBrasilDigits,\n\t},\n\t\"033\": {\n\t\tminAgencyLength: 4,\n\t\tmaxAgencyLength: 4,\n\t\tminAccountLength: 8,\n\t\tmaxAccountLength: 8,\n\t\tdigits: santanderDigits,\n\t},\n\t\"041\": {\n\t\tminAgencyLength: 4,\n\t\tmaxAgencyLength: 4,\n\t\tminAccountLength: 9,\n\t\tmaxAccountLength: 9,\n\t\tdigits: banrisulDigits,\n\t},\n\t\"104\": {\n\t\tminAgencyLength: 4,\n\t\tmaxAgencyLength: 4,\n\t\tminAccountLength: 11,\n\t\tmaxAccountLength: 11,\n\t\tdigits: caixaDigits,\n\t},\n\t\"237\": {\n\t\tminAgencyLength: 4,\n\t\tmaxAgencyLength: 4,\n\t\tminAccountLength: 7,\n\t\tmaxAccountLength: 7,\n\t\tdigits: bradescoDigits,\n\t},\n\t\"260\": {\n\t\tminAgencyLength: 4,\n\t\tmaxAgencyLength: 4,\n\t\tminAccountLength: 5,\n\t\tmaxAccountLength: 13,\n\t\tdigits: nubankDigits,\n\t},\n\t\"341\": {\n\t\tminAgencyLength: 4,\n\t\tmaxAgencyLength: 4,\n\t\tminAccountLength: 5,\n\t\tmaxAccountLength: 5,\n\t\tdigits: itauDigits,\n\t},\n\t\"399\": {\n\t\tminAgencyLength: 4,\n\t\tmaxAgencyLength: 4,\n\t\tminAccountLength: 6,\n\t\tmaxAccountLength: 6,\n\t\tdigits: hsbcDigits,\n\t},\n\t\"745\": {\n\t\tminAgencyLength: 4,\n\t\tmaxAgencyLength: 4,\n\t\tminAccountLength: 10,\n\t\tmaxAccountLength: 10,\n\t\tdigits: citibankDigits,\n\t},\n};\n\nconst STRUCTURE_ONLY_RULE: BankAccountRule = {\n\tminAgencyLength: 1,\n\tmaxAgencyLength: 5,\n\tminAccountLength: 1,\n\tmaxAccountLength: 13,\n\tdigits: null,\n};\n\nconst isListedBankCode = (bankCode: string): boolean => {\n\t// Stryker disable next-line EqualityOperator: bankCode always has exactly 3 characters here and COMPE_CODES.length is always a multiple of 3, so the extra out-of-range iteration only tests an empty remainder against a 3-character code, which never matches.\n\tfor (let i = 0; i < COMPE_CODES.length; i += 3) {\n\t\tif (COMPE_CODES.startsWith(bankCode, i)) return true;\n\t}\n\n\treturn false;\n};\n\nconst findRule = (bankCode: string): BankAccountRule | null => {\n\tif (Object.hasOwn(BANK_RULES, bankCode)) return BANK_RULES[bankCode];\n\n\tif (STRUCTURE_ONLY_BANK_CODES.includes(bankCode)) return STRUCTURE_ONLY_RULE;\n\n\treturn null;\n};\n\nconst validateWithRule = (\n\trule: BankAccountRule,\n\tagency: string,\n\taccount: string,\n\tdigit: string,\n): boolean => {\n\tif (agency.length < rule.minAgencyLength || agency.length > rule.maxAgencyLength) return false;\n\tif (account.length < rule.minAccountLength || account.length > rule.maxAccountLength)\n\t\treturn false;\n\tif (digit.length !== 1) return false;\n\n\tif (rule.digits === null) return sanitizeToDigits(digit).length === 1;\n\n\treturn rule.digits(agency, account).includes(digit);\n};\n\nconst validateGeneric = (account: string, digit: string): boolean => {\n\tif (digit.length === 2) {\n\t\tconst first = mod10(account);\n\t\tconst second = mod11(`${account}${first}`, { variant: \"bank\" });\n\n\t\treturn `${first}${second === 10 ? 0 : second}` === digit;\n\t}\n\n\treturn (\n\t\tString(mod10(account)) === digit ||\n\t\tString(mod11(account)) === digit ||\n\t\tString(mod11(account, { variant: \"bank\" })) === digit\n\t);\n};\n\nconst sanitizeCheckDigit = (value: string): string =>\n\tvalue.toUpperCase().replaceAll(/[^\\dPX]/g, \"\");\n\n/**\n * Validates a Brazilian bank account. The bank code must belong to the Banco Central do Brasil\n * STR participants list, otherwise the account is rejected.\n *\n * Banks validated by their published check digit algorithm:\n * Banco do Brasil (001), Santander (033), Banrisul (041), Caixa Econômica Federal (104),\n * Bradesco (237), Nubank (260, Verhoeff), Itaú Unibanco (341), HSBC/Kirton (399) and\n * Citibank (745).\n *\n * Banks validated by structure only, because they publish no check digit rule:\n * Inter (077), Ailos (085), XP (102), Unicred (136), Stone (197), BTG Pactual (208),\n * Original (212), PagBank (290), BMG (318), Mercado Pago (323), C6 (336), PicPay (380),\n * Cora (403), Pan (623), BV (655), Daycoval (707), Sicredi (748) and Sicoob (756).\n * For those the agency and account only need to match the documented digit lengths.\n *\n * Every other bank of the list falls back to a generic modulus 10 and modulus 11 check.\n *\n * @param {IsValidBankAccountParams} params - The bank account parameters.\n * @param {string} params.bankCode - The bank code (3 digits), as published by Banco Central.\n * @param {string} params.agency - The agency number (1-5 digits).\n * @param {string} params.account - The account number (1-13 digits). For Caixa, operação + conta.\n * @param {string} params.digit - The verification digit (1-2 digits, or \"X\" for Banco do Brasil and \"P\" for Bradesco).\n * @returns {boolean} True if the bank account is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidBankAccount({ bankCode: \"001\", agency: \"1584\", account: \"00210169\", digit: \"6\" }); // true\n * isValidBankAccount({ bankCode: \"041\", agency: \"2664\", account: \"358507670\", digit: \"6\" }); // true\n * isValidBankAccount({ bankCode: \"260\", agency: \"0001\", account: \"5216125\", digit: \"0\" }); // true\n * isValidBankAccount({ bankCode: \"999\", agency: \"1234\", account: \"123456\", digit: \"6\" }); // false\n * ```\n *\n * Only bank codes present in the bundled Banco Central participant table are accepted; that table is\n * regenerated weekly by the datasets workflow, so a bank created after the release becomes valid\n * on the next release.\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv\n * @see Based on: https://github.com/eduardokum/laravel-boleto/blob/master/manuais/Regras%20Validacao%20Conta%20Corrente%20VI_EPS.pdf\n * Icatu Seguros compendium of per bank agency/account check digit rules.\n * @see Based on: https://github.com/ajmiciano/banktools-br/tree/master/lib/banktools-br/banks\n * @see Based on: https://github.com/luizalabs/heimdall/blob/main/heimdall_valid_bank/calculate_number_account.py\n * @see Based on: https://github.com/Xerpa/bran_checker/tree/master/lib/banks\n */\nexport const isValidBankAccount = (params: IsValidBankAccountParams): boolean => {\n\tif (isNullish(params) || typeof params !== \"object\") return false;\n\n\tconst { bankCode, agency, account, digit } = params;\n\n\t// An empty field is left to the length checks below, which reject it once sanitized.\n\tif (\n\t\ttypeof bankCode !== \"string\" ||\n\t\ttypeof agency !== \"string\" ||\n\t\ttypeof account !== \"string\" ||\n\t\ttypeof digit !== \"string\"\n\t) {\n\t\treturn false;\n\t}\n\n\tconst bankCodeDigits = sanitizeToDigits(bankCode);\n\tconst agencyDigits = sanitizeToDigits(agency);\n\tconst accountDigits = sanitizeToDigits(account);\n\tconst checkDigit = sanitizeCheckDigit(digit);\n\n\tif (bankCodeDigits.length !== 3) return false;\n\tif (agencyDigits.length === 0 || agencyDigits.length > 5) return false;\n\tif (accountDigits.length === 0 || accountDigits.length > 13) return false;\n\t// Stryker disable next-line ConditionalExpression,LogicalOperator: every path below also rejects a malformed checkDigit on its own — validateWithRule requires digit.length===1 before it ever compares, and validateGeneric compares against 1 or 2 character strings, so a 0, 3+ character checkDigit can never match either way.\n\tif (checkDigit.length === 0 || checkDigit.length > 2) return false;\n\n\tif (!isListedBankCode(bankCodeDigits)) return false;\n\n\tconst rule = findRule(bankCodeDigits);\n\n\tif (rule !== null) return validateWithRule(rule, agencyDigits, accountDigits, checkDigit);\n\n\treturn validateGeneric(accountDigits, checkDigit);\n};\n","/**\n * Layout of the CAEPF (Cadastro de Atividade Econômica da Pessoa Física): 14 digits printed as\n * \"000.000.000/000-00\", the first 9 being the CPF base of the holder, the next 3 the sequence\n * of the holder's registrations and the last 2 the check digits.\n *\n * The weights below are the CNPJ's modulus 11 in the formulation of the cited reference: read\n * from the right they cycle from 9 down to 2, and the check digit is the remainder itself, with\n * a remainder of 10 read as 0 — the same digit the CNPJ's 2-to-9 weights with `11 - remainder`\n * produce.\n *\n * The Receita Federal does not publish the check digit rule of the CAEPF, the shift of 12\n * included, so the calculation follows the reference implementations cited below.\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/caepf\n * The registry's own page at the Receita Federal, which describes the cadastro but publishes\n * neither the 14 digit layout nor the check digit rule.\n * @see Based on: http://ghiorzi.org/DVnew.htm\n * Description of the CAEPF layout and of the\n * shift of 12 applied to the check digit pair.\n * @see Based on: https://github.com/VitorLuizC/brazilian-values/blob/master/src/validators/isCAEPF.ts\n * Reference implementation agreeing on the weights and on the shift.\n */\n\nexport const CAEPF_BASE_LENGTH = 12;\n\nexport const CAEPF_FIRST_WEIGHTS = [6, 7, 8, 9, 2, 3, 4, 5, 6, 7, 8, 9];\n\nexport const CAEPF_SECOND_WEIGHTS = [5, 6, 7, 8, 9, 2, 3, 4, 5, 6, 7, 8, 9];\n\nexport const CAEPF_CHECK_DIGITS_OFFSET = 12;\n\nexport const CAEPF_FORMAT_REGEX = /^\\d{3}[\\s.\\-/]*\\d{3}[\\s.\\-/]*\\d{3}[\\s.\\-/]*\\d{3}[\\s.\\-/]*\\d{2}$/;\n","import { generateChecksum } from \"../_internals/generate-checksum/generate-checksum\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { toStringSafe } from \"../_internals/to-string-safe/to-string-safe\";\nimport {\n\tCAEPF_BASE_LENGTH,\n\tCAEPF_CHECK_DIGITS_OFFSET,\n\tCAEPF_FIRST_WEIGHTS,\n\tCAEPF_FORMAT_REGEX,\n\tCAEPF_SECOND_WEIGHTS,\n} from \"./constants\";\n\nconst getCheckDigit = (base: string, weights: number[]): number =>\n\t(generateChecksum({ base, weight: weights }) % 11) % 10;\n\n/**\n * Validates a CAEPF (Cadastro de Atividade Econômica da Pessoa Física) number.\n *\n * The CAEPF replaced the CEI for individuals who hire employees, such as rural producers and\n * notary officials. It has 14 digits printed as \"000.000.000/000-00\": the 9 digit CPF base of\n * the holder, a 3 digit sequence for the holder's several registrations and 2 check digits.\n * Both check digits are the CNPJ's modulus 11 in the formulation of the cited reference: the\n * weights cycle from 9 down to 2 from the right and the check digit is the remainder itself,\n * with a remainder of 10 read as 0 — the same digit the CNPJ's 2-to-9 weights with\n * `11 - remainder` produce. The pair is then shifted by 12, wrapping around 100, so a CAEPF\n * whose plain modulus 11 digits would be 72 is printed with 84.\n *\n * A base whose 12 digits are all the same is rejected before the check digits are computed, the\n * way `isValidCei` and `isValidCno` reject a repeated CEI/CNO number, so the otherwise\n * well-formed `\"00000000000012\"` is invalid.\n *\n * The Receita Federal does not publish the check digit rule of the CAEPF, the shift of 12 and\n * the repeated-base rejection included, so the calculation follows the reference implementations\n * cited below.\n *\n * @param {string|number} value - The CAEPF value to be validated.\n * @returns {boolean} True if the CAEPF is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCaepf(\"293.118.610/001-84\"); // true\n * isValidCaepf(\"41142260000101\"); // true\n * isValidCaepf(29311861000184); // true\n * isValidCaepf(\"29311861000185\"); // false (invalid check digits)\n * isValidCaepf(\"00000000000000\"); // false (repeated base digits)\n * isValidCaepf(\"00000000000012\"); // false (repeated base digits)\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/caepf\n * The registry's own page at the Receita Federal, which describes the cadastro but publishes\n * neither the 14 digit layout nor the check digit rule.\n * @see Based on: http://ghiorzi.org/DVnew.htm\n * Description of the CAEPF layout and of the\n * shift of 12 applied to the check digit pair.\n * @see Based on: https://github.com/VitorLuizC/brazilian-values/blob/master/src/validators/isCAEPF.ts\n * Reference implementation agreeing on the weights and on the shift.\n * @see Based on: https://github.com/Casilhero/brazilian-validators/blob/main/src/Validators/Caepf.php\n * Third reference implementation.\n */\nexport const isValidCaepf = (value: string | number): boolean => {\n\tconst digits = sanitizeToDigits(value);\n\n\tif (!CAEPF_FORMAT_REGEX.test(toStringSafe(value).trim())) return false;\n\n\tconst base = digits.slice(0, CAEPF_BASE_LENGTH);\n\n\tif (isRepeatedDigits(base)) return false;\n\n\tconst first = getCheckDigit(base, CAEPF_FIRST_WEIGHTS);\n\tconst second = getCheckDigit(`${base}${first}`, CAEPF_SECOND_WEIGHTS);\n\tconst expected = (first * 10 + second + CAEPF_CHECK_DIGITS_OFFSET) % 100;\n\n\treturn Number(digits.slice(CAEPF_BASE_LENGTH)) === expected;\n};\n","import { getCbo } from \"../get-cbo/get-cbo\";\n\n/**\n * Validates if a CBO (Classificação Brasileira de Ocupações) code exists in the official\n * CBO 2002 table.\n *\n * A string is only read as a code when it is written in one of the documented forms: the 6\n * digits, or the `NNNN-NN` mask, with a single separator between the groups and optional\n * surrounding whitespace. A number is only read as a code when it is a non-negative safe\n * integer.\n *\n * A CBO code is always 6 digits and its leading zeros are part of it, so a value written as\n * bare digits is left padded with zeros to 6 whether it comes as a string or as a number:\n * `10205`, `\"10205\"` and `\"010205\"` are the same code.\n *\n * @param {string|number} value - The CBO code to be validated, with or without the hyphen\n * mask, e.g. `\"2124-05\"`, `\"212405\"` or `212405`.\n * @returns {boolean} True when the code is a known 6 digit occupation code, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCbo(\"2124-05\"); // true\n * isValidCbo(\"212405\"); // true\n * isValidCbo(212405); // true\n * isValidCbo(10205); // true (padded to 6 digits, so this is \"010205\")\n * isValidCbo(\"10205\"); // true (padded to 6 digits, so this is \"010205\")\n * isValidCbo(\"999999\"); // false\n * isValidCbo(\"2124abc05\"); // false (not a documented form)\n * isValidCbo(-212405); // false (not a non-negative safe integer)\n * ```\n *\n * @see Official: https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/cbo/servicos/downloads/cbo2002-ocupacao.csv\n * The CBO 2002 occupation table, as published by the Ministério do Trabalho e Emprego.\n * @see Based on: https://raw.githubusercontent.com/lucaashoff/lista-cbo-json/main/cbos.json\n * Community mirror of the same table, the fallback `CBO_TITLES` was built from before the\n * official CSV was used.\n */\nexport const isValidCbo = (value: string | number): boolean => getCbo(value) !== null;\n","import { CEI_WEIGHTS } from \"../constants/cei\";\nimport { generateChecksum } from \"../generate-checksum/generate-checksum\";\n\n/**\n * Calculates the check digit of a CEI (Cadastro Específico do INSS) base, the same digit the\n * CNO (Cadastro Nacional de Obras) kept when it replaced the CEI numbering.\n *\n * The 11 base digits are weighted by 7, 4, 1, 8, 5, 2, 1, 6, 3, 7 and 4 from left to right.\n * The tens part and the units part of that sum are added together and the check digit is the\n * complement of the units digit of the result to 10, with 10 mapped back to 0.\n *\n * The Receita Federal does not publish the check digit rule of the CEI/CNO numbering, so the\n * calculation follows the reference implementations cited below, cross-checked against the CNO\n * open data of the Receita Federal.\n *\n * @param {string} base - The 11 digits that precede the check digit.\n * @returns {number} The check digit, 0 to 9.\n *\n * @example\n * ```typescript\n * calculateCeiCheckDigit(\"11583002498\"); // 5\n * calculateCeiCheckDigit(\"40180009796\"); // 0\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cno\n * The registry's own page at the Receita Federal, which describes the cadastro but publishes\n * neither the mask nor the check digit rule.\n * @see Official: https://dados.gov.br/dados/conjuntos-dados/cadastro-nacional-de-obras-cno\n * Cadastro Nacional de Obras (CNO), dados abertos da Receita Federal: the catalogue entry for the\n * dataset this rule was cross-checked against. The Minas Gerais extract of the downloaded dataset\n * confirms the rule, and the works whose check digit is 0 are what shows that a computed 10 maps\n * back to 0, which neither reference implementation does; the catalogue page itself publishes only\n * the dataset's description and download links (and currently flags it \"Desatualizado\").\n * @see Based on: https://github.com/yiibr/yii2-br-validator/blob/master/src/CeiValidator.php\n * PHP reference implementation of the CEI check digit.\n * @see Based on: https://github.com/marcos-cruz/Documento/blob/master/src/Bigai.Documentos.Brasil/Cei/Cei.cs\n * Second, independent reference implementation agreeing with the first.\n */\nexport const calculateCeiCheckDigit = (base: string): number => {\n\tconst sum = generateChecksum({ base, weight: CEI_WEIGHTS });\n\tconst folded = Math.floor(sum / 10) + (sum % 10);\n\n\treturn (10 - (folded % 10)) % 10;\n};\n","import { calculateCeiCheckDigit } from \"../calculate-cei-check-digit/calculate-cei-check-digit\";\nimport { CEI_BASE_LENGTH, CEI_FORMAT_REGEX } from \"../constants/cei\";\nimport { isRepeatedDigits } from \"../is-repeated-digits/is-repeated-digits\";\nimport { sanitizeToDigits } from \"../sanitize-to-digits/sanitize-to-digits\";\nimport { toStringSafe } from \"../to-string-safe/to-string-safe\";\n\n/**\n * Validates a number that follows the CEI (Cadastro Específico do INSS) numbering, which the\n * CNO (Cadastro Nacional de Obras) kept when it replaced the CEI for construction works.\n *\n * The number has 12 digits printed as \"00.000.00000/00\": 11 base digits and one check digit.\n * The check digit weights the base by 7, 4, 1, 8, 5, 2, 1, 6, 3, 7 and 4, adds the tens part of\n * that sum to its units part and takes the complement of the units digit of the result to 10,\n * mapping 10 back to 0.\n *\n * The value has to be written as the 12 digits, optionally split into the printed groups of 2,\n * 3, 5 and 2 by whitespace or the usual mask characters, a run of them between two groups\n * included; anything else, a letter among the digits included, is rejected instead of being\n * read past.\n *\n * The Receita Federal does not publish the check digit rule of the CEI/CNO numbering, so the\n * calculation follows the reference implementations cited below, cross-checked against the CNO\n * open data of the Receita Federal.\n *\n * @param {string|number} value - The CEI or CNO value to be validated.\n * @returns {boolean} True if the value is a valid CEI or CNO number, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCeiCnoNumber(\"11.583.00249/85\"); // true\n * isValidCeiCnoNumber(\"277297118187\"); // true\n * isValidCeiCnoNumber(249859674386); // true\n * isValidCeiCnoNumber(\"24.985.96743/68\"); // false (invalid check digit)\n * isValidCeiCnoNumber(\"000000000000\"); // false (repeated digits)\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cno\n * The registry's own page at the Receita Federal, which describes the cadastro but publishes\n * neither the mask nor the check digit rule.\n * @see Official: https://dados.gov.br/dados/conjuntos-dados/cadastro-nacional-de-obras-cno\n * Cadastro Nacional de Obras (CNO), dados abertos da Receita Federal: the catalogue entry for the\n * dataset this rule was cross-checked against and where the test vectors come from. The check was\n * run over the Minas Gerais extract of the downloaded dataset, which every registered work passed;\n * the catalogue page itself publishes only the dataset's description and download links (and\n * currently flags it \"Desatualizado\"), not that result.\n * @see Based on: https://github.com/yiibr/yii2-br-validator/blob/master/src/CeiValidator.php\n * PHP reference implementation of the CEI check digit.\n * @see Based on: https://github.com/marcos-cruz/Documento/blob/master/src/Bigai.Documentos.Brasil/Cei/Cei.cs\n * Second, independent reference implementation agreeing with the first.\n */\nexport const isValidCeiCnoNumber = (value: string | number): boolean => {\n\tconst digits = sanitizeToDigits(value);\n\n\tif (!CEI_FORMAT_REGEX.test(toStringSafe(value).trim())) return false;\n\n\tif (isRepeatedDigits(digits)) return false;\n\n\treturn (\n\t\tcalculateCeiCheckDigit(digits.slice(0, CEI_BASE_LENGTH)) ===\n\t\tdigits.charCodeAt(CEI_BASE_LENGTH) - 48\n\t);\n};\n","import { isValidCeiCnoNumber } from \"../_internals/is-valid-cei-cno-number/is-valid-cei-cno-number\";\n\n/**\n * Validates a CEI (Cadastro Específico do INSS) number.\n *\n * The CEI identifies an employer that has no CNPJ, such as a construction work or a rural\n * producer. It has 12 digits printed as \"00.000.00000/00\": 11 base digits and one check digit.\n * The check digit weights the base by 7, 4, 1, 8, 5, 2, 1, 6, 3, 7 and 4, adds the tens part of\n * that sum to its units part and takes the complement of the units digit of the result to 10,\n * mapping 10 back to 0. The CEI was replaced by the CNO for construction works and by the CAEPF\n * for individuals, but numbers already issued keep their meaning and their check digit.\n *\n * The value has to be written as the 12 digits, optionally split into the printed groups of 2,\n * 3, 5 and 2 by whitespace or the usual mask characters, a run of them between two groups\n * included; anything else, a letter among the digits included, is rejected instead of being\n * read past.\n *\n * The Receita Federal does not publish the check digit rule of the CEI/CNO numbering, so the\n * calculation follows the reference implementations cited below, cross-checked against the CNO\n * open data of the Receita Federal.\n *\n * @param {string|number} value - The CEI value to be validated.\n * @returns {boolean} True if the CEI is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCei(\"11.583.00249/85\"); // true\n * isValidCei(\"277297118187\"); // true\n * isValidCei(249859674386); // true\n * isValidCei(\"24.985.96743/68\"); // false (invalid check digit)\n * isValidCei(\"000000000000\"); // false (repeated digits)\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cno\n * The registry's own page at the Receita Federal, which describes the cadastro but publishes\n * neither the mask nor the check digit rule.\n * @see Official: https://dados.gov.br/dados/conjuntos-dados/cadastro-nacional-de-obras-cno\n * Cadastro Nacional de Obras (CNO), dados abertos da Receita Federal: the catalogue entry for the\n * dataset this rule was cross-checked against and where the test vectors come from. The check was\n * run over the Minas Gerais extract of the downloaded dataset, which every registered work passed;\n * the catalogue page itself publishes only the dataset's description and download links (and\n * currently flags it \"Desatualizado\"), not that result.\n * @see Based on: https://github.com/yiibr/yii2-br-validator/blob/master/src/CeiValidator.php\n * PHP reference implementation of the CEI check digit.\n * @see Based on: https://github.com/marcos-cruz/Documento/blob/master/src/Bigai.Documentos.Brasil/Cei/Cei.cs\n * Second, independent reference implementation agreeing with the first.\n */\nexport const isValidCei = (value: string | number): boolean => isValidCeiCnoNumber(value);\n","import { CFOP_FORMAT_REGEX, CFOP_TABLE } from \"../_internals/constants/cfop\";\nimport { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Validates if a CFOP (Código Fiscal de Operações e Prestações) code exists in the\n * official table.\n *\n * The table is the consolidated Anexo II of Convênio SINIEF s/nº 1970, the text in force\n * (current wording given by Ajuste SINIEF 03/24, last amended by Ajuste SINIEF 39/25).\n *\n * Only operable codes count: the group and subgroup headings of the official nomenclature,\n * the codes ending in \"00\" and \"50\" (1000, 1100, 1150, 5350, ...), are section titles rather\n * than codes a document can carry, so they are rejected.\n *\n * A string is only read as a code when it is written in one of the documented forms: the 4\n * digits, or the `N.NNN` form the annex prints, with a single separator between the groups\n * and optional surrounding whitespace. Anything else (`\"abc5102\"`) is rejected instead of\n * having its digits picked out. A number is only read as a code when it is a non-negative\n * safe integer, since a sign, a decimal point or a rounded magnitude would otherwise be read\n * as a code the caller never wrote.\n *\n * No CFOP code starts with a zero, its first digit is the operation group (1 to 7), so nothing\n * is ever padded here: a number and the string of the same digits are read identically, and a\n * value narrower than 4 digits is not a code at all.\n *\n * @param {string|number} value - The CFOP code to be validated, with or without the `N.NNN`\n * mask, e.g. `\"1.101\"`, `\"1101\"` or `1101`.\n * @returns {boolean} True when the code is a known 4 digit CFOP code, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCfop(\"1101\"); // true\n * isValidCfop(\"1.101\"); // true\n * isValidCfop(1101); // true\n * isValidCfop(\"0000\"); // false\n * isValidCfop(\"1150\"); // false (a subgroup heading, not an operable code)\n * isValidCfop(\"abc5102\"); // false (not a documented form)\n * isValidCfop(-5102); // false (not a non-negative safe integer)\n * ```\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cfop_cvsn_1-6.24\n * Anexo II of Convênio SINIEF s/nº 1970, the CFOP table in force.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cvsn_70\n * Convênio SINIEF s/nº 1970, the consolidated text the annex belongs to.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2025/AJ039_25\n * Ajuste SINIEF 39/25, the last amendment the annex carries (CFOP 7.667, from 01.02.26).\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2001/AJ_007_01\n * Ajuste SINIEF 07/01, the historical text that gave the CFOP its 4 digit form.\n */\nexport const isValidCfop = (value: string | number): boolean => {\n\tif (!isLookupCode(value)) return false;\n\n\tconst code = String(value).trim();\n\n\tif (!CFOP_FORMAT_REGEX.test(code)) return false;\n\n\treturn sanitizeToDigits(code) in CFOP_TABLE;\n};\n","import { getCnae } from \"../get-cnae/get-cnae\";\n\n/**\n * Validates if a CNAE (Classificação Nacional de Atividades Econômicas) subclass code\n * exists in the official CNAE-Subclasses 2.3 table, the current subclass revision of CNAE 2.0.\n *\n * A string is only read as a code when it is written in one of the documented forms: the 7\n * digits, or the `NNNN-N/NN` mask, with a single separator (space, `.`, `-` or `/`) between the groups and optional\n * surrounding whitespace. A number is only read as a code when it is a non-negative safe\n * integer.\n *\n * A CNAE subclass code is always 7 digits and its leading zeros are part of it, so a value\n * written as bare digits is left padded with zeros to 7 whether it comes as a string or as a\n * number: `111301`, `\"111301\"` and `\"0111301\"` are the same code.\n *\n * @param {string|number} value - The CNAE code to be validated, with or without the\n * `NNNN-N/NN` mask, e.g. `\"6201-5/01\"`, `\"6201501\"` or `6201501`.\n * @returns {boolean} True when the code is a known 7 digit subclass, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCnae(\"6201-5/01\"); // true\n * isValidCnae(\"6201501\"); // true\n * isValidCnae(6201501); // true\n * isValidCnae(111301); // true (padded to 7 digits, so this is \"0111301\")\n * isValidCnae(\"111301\"); // true (padded to 7 digits, so this is \"0111301\")\n * isValidCnae(\"0000000\"); // false\n * isValidCnae(\"0111abc301\"); // false (not a documented form)\n * isValidCnae(-111301); // false (not a non-negative safe integer)\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/v2/cnae/subclasses\n * @see Official: https://concla.ibge.gov.br/busca-online-cnae.html\n * CONCLA's CNAE search and structure browser, which publishes CNAE-Subclasses 2.3.\n */\nexport const isValidCnae = (value: string | number): boolean => getCnae(value) !== null;\n","import { calculateCnhFirstVerifier } from \"../_internals/calculate-cnh-first-verifier/calculate-cnh-first-verifier\";\nimport { calculateCnhSecondVerifier } from \"../_internals/calculate-cnh-second-verifier/calculate-cnh-second-verifier\";\nimport { SEPARATORS_REGEX } from \"../_internals/constants/separators\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\n\nconst FORMAT_REGEX = /^\\d{11}$/;\n\n/**\n * Validates if a CNH (Carteira Nacional de Habilitação, the Brazilian driver's license number) is valid.\n *\n * Spaces, dots and hyphens are ignored, so every punctuated form of a CNH is accepted, but any\n * other character, a letter in particular, makes the value invalid.\n *\n * @param {string} value - The CNH value to be validated.\n * @returns {boolean} True if the CNH is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCnh(\"00000000119\"); // true\n * isValidCnh(\"000000001-19\"); // true\n * isValidCnh(\"11111111111\"); // false (repeated digits)\n * isValidCnh(\"12345678901\"); // false (invalid checksum)\n * isValidCnh(\"ab00000000119\"); // false (invalid format)\n * ```\n *\n * Resolução CONTRAN nº 886/2021, art. 4º I, defines the CNH registry number as 9 characters plus\n * 2 security check digits, but no official text publishes the check-digit weights; the algorithm\n * below follows the community reference cited as `Based on:`.\n *\n * Art. 4º § 1º of the same resolution states that the check digit is computed by the DSR system\n * with a \"módulo 11\" routine in which a remainder of 0 or 1 yields the digit 0. That rounding is\n * not the rule the registry numbers use in practice: the first verifier keeps the remainder\n * itself, so a remainder of 1 yields the digit 1 (which is why `\"00000000119\"` is accepted). The\n * implementation follows the cited `Based on:` reference, not § 1º.\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/Resolucao8862021F.pdf\n * @see Based on: https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-cnh/\n */\nexport const isValidCnh = (value: string): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\tconst digits = value.replace(SEPARATORS_REGEX, \"\");\n\n\tif (!FORMAT_REGEX.test(digits) || isRepeatedDigits(digits)) return false;\n\n\t// Stryker disable next-line MethodExpression: the verifier helpers only read indices 0-8.\n\tconst base = digits.slice(0, 9);\n\n\tconst { firstVerifier, decrement } = calculateCnhFirstVerifier(base);\n\n\tif (firstVerifier !== digits.charCodeAt(9) - 48) return false;\n\n\tconst secondVerifier = calculateCnhSecondVerifier({ base, decrement });\n\n\treturn secondVerifier === digits.charCodeAt(10) - 48;\n};\n","import { isValidCeiCnoNumber } from \"../_internals/is-valid-cei-cno-number/is-valid-cei-cno-number\";\n\n/**\n * Validates a CNO (Cadastro Nacional de Obras) number, the registration of a construction work\n * with the Receita Federal.\n *\n * The CNO replaced the CEI for construction works and kept its numbering: 12 digits printed as\n * \"00.000.00000/00\", the last one being a check digit calculated over the 11 base digits with\n * the weights 7, 4, 1, 8, 5, 2, 1, 6, 3, 7 and 4. A work registered under a legacy CEI keeps\n * the same number in the CNO, so both registries validate identically.\n *\n * The value has to be written as the 12 digits, optionally split into the printed groups of 2,\n * 3, 5 and 2 by whitespace or the usual mask characters, a run of them between two groups\n * included; anything else, a letter among the digits included, is rejected instead of being\n * read past.\n *\n * The Receita Federal does not publish the check digit rule of the CEI/CNO numbering, so the\n * calculation follows the reference implementations cited below, cross-checked against the CNO\n * open data of the Receita Federal.\n *\n * @param {string|number} value - The CNO value to be validated.\n * @returns {boolean} True if the CNO is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCno(\"11.084.01680/62\"); // true\n * isValidCno(\"111130137368\"); // true\n * isValidCno(401800097960); // true\n * isValidCno(\"110840168063\"); // false (invalid check digit)\n * isValidCno(\"000000000000\"); // false (repeated digits)\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cno\n * The registry's own page at the Receita Federal, which describes the cadastro but publishes\n * neither the mask nor the check digit rule.\n * @see Official: https://dados.gov.br/dados/conjuntos-dados/cadastro-nacional-de-obras-cno\n * Cadastro Nacional de Obras (CNO), dados abertos da Receita Federal: the catalogue entry for the\n * dataset this rule was cross-checked against and where the test vectors come from. The check was\n * run over the Minas Gerais extract of the downloaded dataset, which every registered work passed;\n * the catalogue page itself publishes only the dataset's description and download links (and\n * currently flags it \"Desatualizado\"), not that result.\n * @see Based on: https://github.com/yiibr/yii2-br-validator/blob/master/src/CeiValidator.php\n * PHP reference implementation of the CEI check digit.\n */\nexport const isValidCno = (value: string | number): boolean => isValidCeiCnoNumber(value);\n","/**\n * CNS (Cartão Nacional de Saúde) structural constants, shared by `isValidCns` and `formatCns`.\n *\n * @see Official: https://rni-docs.anvisa.gov.br/docs/regras_gerais/validacoes/validacaoCNS/\n * ANVISA's two validation routines, the ones implemented here. The page sits behind a bot filter\n * and answers HTTP 403 to every non-browser client, so it has to be opened in a browser.\n * @see Based on: https://integracao.esusab.ufsc.br/ledi/documentacao/regras/algoritmo_CNS.html\n * e-SUS APS documentation of the same DATASUS algorithm, reachable without a browser. It applies\n * the provisional routine to numbers starting with 5, 7, 8 or 9; this implementation follows the\n * ANVISA page, which restricts it to 7, 8 and 9, so a 5 prefixed number is rejected even when its\n * weighted sum checks out.\n */\n\n/**\n * Shape a CNS number has to be written in: the 15 digits, optionally split into the printed\n * groups of 3, 4, 4 and 4 by whitespace or the usual mask characters. A run of separators is\n * tolerated between two groups, not just a single one, which is what the CPF, CNPJ, CAEPF and\n * certidão regexes of this library do.\n */\nexport const CNS_FORMAT_REGEX = /^\\d{3}[\\s.\\-/]*\\d{4}[\\s.\\-/]*\\d{4}[\\s.\\-/]*\\d{4}$/;\n\n/** Digits of the PIS/PASEP/NIS derived base embedded in a definitive CNS (starts with 1 or 2). */\nexport const CNS_DEFINITIVE_BASE_LENGTH = 11;\n\n/** Suffix between the base and the check digit of a definitive CNS whose raw check digit is not 10. */\nexport const CNS_DEFINITIVE_SUFFIX = \"000\";\n\n/** Suffix used when the raw check digit is 10: the weighted sum is raised by 2 and the digit recomputed. */\nexport const CNS_DEFINITIVE_ADJUSTED_SUFFIX = \"001\";\n","import {\n\tCNS_DEFINITIVE_ADJUSTED_SUFFIX,\n\tCNS_DEFINITIVE_BASE_LENGTH,\n\tCNS_DEFINITIVE_SUFFIX,\n\tCNS_FORMAT_REGEX,\n} from \"../_internals/constants/cns\";\nimport { generateChecksum } from \"../_internals/generate-checksum/generate-checksum\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\nconst DEFINITIVE_FIRST_DIGIT_REGEX = /^[12]/;\nconst PROVISIONAL_FIRST_DIGIT_REGEX = /^[789]/;\n\nconst isValidDefinitive = (digits: string): boolean => {\n\tconst base = digits.slice(0, CNS_DEFINITIVE_BASE_LENGTH);\n\tconst sum = generateChecksum({ base, weight: 15 });\n\tconst rawCheckDigit = 11 - (sum % 11);\n\n\tif (rawCheckDigit === 10) {\n\t\tconst checkDigit = 11 - ((sum + 2) % 11);\n\n\t\treturn digits === `${base}${CNS_DEFINITIVE_ADJUSTED_SUFFIX}${checkDigit}`;\n\t}\n\n\tconst checkDigit = rawCheckDigit === 11 ? 0 : rawCheckDigit;\n\n\treturn digits === `${base}${CNS_DEFINITIVE_SUFFIX}${checkDigit}`;\n};\n\nconst isValidProvisional = (digits: string): boolean =>\n\tgenerateChecksum({ base: digits, weight: 15 }) % 11 === 0;\n\n/**\n * Validates a CNS (Cartão Nacional de Saúde) number, the unique identifier of a SUS\n * (Sistema Único de Saúde) user, health professional or health facility.\n *\n * Definitive cards (starting with 1 or 2) are laid out as an 11 digit PIS/PASEP/NIS derived\n * base, a 3 digit suffix and a check digit. The check digit is 11 minus the remainder of the\n * base's weighted sum (weights 15 down to 5) divided by 11, with 11 mapped to 0. When that\n * raw digit is 10, DATASUS raises the weighted sum by 2, recomputes the digit and marks the\n * card with the suffix `\"001\"` instead of `\"000\"`. Provisional cards (starting with 7, 8 or 9)\n * are validated by a single weighted sum (weights 15 down to 1 over all 15 digits) that must\n * be a multiple of 11.\n *\n * The value has to be written as the 15 digits, optionally split into the printed groups of 3,\n * 4, 4 and 4 by whitespace, `.`, `-` or `/`, the interchangeable mask characters `isValidCpf`\n * and `isValidCnpj` accept, a run of them between two groups included; anything else, a letter\n * among the digits or a separator inside a group included, is rejected instead of being read\n * past.\n *\n * @param {string|number} value - The CNS value to be validated.\n * @returns {boolean} True if the CNS is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidCns(\"123456789010000\"); // true (definitive, suffix 000)\n * isValidCns(\"100000000060018\"); // true (definitive, raw check digit 10, suffix 001)\n * isValidCns(\"700000000000005\"); // true (provisional)\n * isValidCns(\"123.4567-8901/0000\"); // true (any of the mask characters)\n * isValidCns(\"123456789010001\"); // false (wrong check digit)\n * isValidCns(\"12345678901\"); // false (wrong length)\n * ```\n *\n * @see Official: https://rni-docs.anvisa.gov.br/docs/regras_gerais/validacoes/validacaoCNS/\n * ANVISA's two validation routines, the ones implemented here. The page sits behind a bot filter\n * and answers HTTP 403 to every non-browser client, so it has to be opened in a browser.\n * @see Based on: https://integracao.esusab.ufsc.br/ledi/documentacao/regras/algoritmo_CNS.html\n * e-SUS APS documentation of the same DATASUS algorithm, reachable without a browser. It applies\n * the provisional routine to numbers starting with 5, 7, 8 or 9; this implementation follows the\n * ANVISA page, which restricts it to 7, 8 and 9, so a 5 prefixed number is rejected even when its\n * weighted sum checks out.\n */\nexport const isValidCns = (value: string | number): boolean => {\n\tif (typeof value !== \"string\" && typeof value !== \"number\") return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (!CNS_FORMAT_REGEX.test(String(value).trim())) return false;\n\n\tif (DEFINITIVE_FIRST_DIGIT_REGEX.test(digits)) return isValidDefinitive(digits);\n\n\tif (PROVISIONAL_FIRST_DIGIT_REGEX.test(digits)) return isValidProvisional(digits);\n\n\treturn false;\n};\n","import { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\nimport { mod10 } from \"../_internals/mod10/mod10\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { MAX_LENGTH, MIN_LENGTH } from \"./constants\";\n\nconst FORMAT_REGEX = /^\\d+(?:[\\s.\\-/]+\\d+)*$/;\n\n/**\n * Validates a payment card number (crédito ou débito) using the Luhn algorithm.\n *\n * Accepts the usual mask characters (whitespace, `.`, `-` and `/`, the interchangeable set\n * `isValidCpf` and `isValidCnpj` accept) between digits, a run of them included, so\n * `\"4111 - 1111 - 1111 - 1111\"` reads as the same PAN, and whitespace around the value; any\n * other character makes the value invalid, so `\"4111a1111b1111c1111\"` is rejected instead of\n * being read as `\"4111111111111111\"`. They are accepted between any two digits rather than at\n * fixed positions: the printed grouping of a PAN changes with the brand (4-4-4-4 for Visa and\n * Mastercard, 4-6-5 for American Express, 4-6-4 for Diners Club), so there is no single layout\n * to pin them to. Only checks the digit count (12 to 19: 12 is\n * the de-facto industry minimum PAN length, e.g. Maestro, and ISO/IEC 7812-1 caps the PAN at 19)\n * and the Luhn check digit; it performs no brand detection (Visa, Mastercard, Amex...), issuer\n * range lookup or expiration/CVV checks.\n *\n * A value whose digits are all the same (`\"0000000000000000\"`) is rejected even when it passes\n * the Luhn check, as every other validator of this package rejects a repeated-digit document\n * (`isValidCpf(\"00000000000\")`, `isValidCns`, `isValidCaepf`, `isValidCei`): no issuer hands out\n * such a PAN, and it is what a placeholder or a zero-filled field looks like.\n *\n * A number is only accepted when it is a non-negative safe integer: a card number above\n * `Number.MAX_SAFE_INTEGER` (2^53 - 1, 16 digits) has already been rounded to a different\n * number by the time it arrives, and a negative one is not a PAN, so both are rejected rather\n * than validated as digits the caller never wrote. Pass a longer PAN as a string.\n *\n * @param {string|number} value - The card number to be validated.\n * @returns {boolean} True when `value` sanitizes to 12-19 digits ending in a valid Luhn check digit.\n *\n * @example\n * ```typescript\n * isValidCreditCard(\"4111111111111111\"); // true (Visa test number)\n * isValidCreditCard(\"5555555555554444\"); // true (Mastercard test number)\n * isValidCreditCard(\"378282246310005\"); // true (American Express test number)\n * isValidCreditCard(\"4111 1111 1111 1111\"); // true (spaced mask)\n * isValidCreditCard(\"4111 - 1111 - 1111 - 1111\"); // true (a run of separators between the digits)\n * isValidCreditCard(\"4111.1111/1111-1111\"); // true (any of the mask characters)\n * isValidCreditCard(\"4111111111111112\"); // false (bad check digit)\n * isValidCreditCard(\"0000000000000000\"); // false (every digit the same, though the Luhn check passes)\n * isValidCreditCard(\"4111a1111b1111c1111\"); // false (letters between the digits)\n * isValidCreditCard(\"123456789\"); // false (too short)\n * isValidCreditCard(4111111111111111111); // false (above 2^53 - 1, pass it as a string)\n * ```\n *\n * ISO/IEC 7812-1 (issuer identification numbers) caps the PAN at 19 digits but sets no\n * minimum; the 12-digit floor here is the de-facto industry minimum (e.g. Maestro). The ISO\n * catalogue page sits behind a bot filter and answers HTTP 403 to every non-browser client, so\n * it has to be opened in a browser, where it renders the standard's paywalled abstract rather\n * than its text.\n *\n * @see Official: https://www.iso.org/standard/70484.html\n */\nexport const isValidCreditCard = (value: string | number): boolean => {\n\tif (!isLookupCode(value)) return false;\n\n\tif (!FORMAT_REGEX.test(value.toString().trim())) return false;\n\n\tconst digits = sanitizeToDigits(value);\n\n\tif (digits.length < MIN_LENGTH || digits.length > MAX_LENGTH) return false;\n\n\tif (isRepeatedDigits(digits)) return false;\n\n\tconst checkDigit = digits.charCodeAt(digits.length - 1) - 48;\n\n\treturn mod10(digits.slice(0, -1)) === checkDigit;\n};\n","/**\n * CSOSN (Código de Situação da Operação no Simples Nacional) codes, as the consolidated Anexo\n * III-A of Convênio SINIEF s/nº 1970 carries them (added by Ajuste SINIEF 39/23, effective\n * from 01.10.24). Ajuste SINIEF 03/2010 instituted the table and is kept as the historical\n * citation.\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cvsn_70\n * Convênio SINIEF s/nº 1970, whose Anexo III-A carries the CSOSN table in force.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2010/aj_003_10\n * Ajuste SINIEF 03/2010, which instituted the CSOSN table.\n */\nexport const CSOSN_CODES = [\n\t\"101\",\n\t\"102\",\n\t\"103\",\n\t\"201\",\n\t\"202\",\n\t\"203\",\n\t\"300\",\n\t\"400\",\n\t\"500\",\n\t\"900\",\n] as const;\n\n/**\n * Shape a CSOSN code has to be written in: the bare 3 digits. Unlike the ICMS CST, whose origin\n * digit is printed apart from the Tabela B pair, a CSOSN has no internal grouping anywhere it is\n * printed (the NF-e carries the origin in its own `orig` field), so no separator is accepted.\n */\nexport const CSOSN_FORMAT_REGEX = /^\\d{3}$/;\n","import { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { CSOSN_CODES, CSOSN_FORMAT_REGEX } from \"./constants\";\n\n/**\n * Validates if a CSOSN (Código de Situação da Operação no Simples Nacional) code is valid.\n *\n * Accepted codes are `101, 102, 103, 201, 202, 203, 300, 400, 500, 900`, the table the\n * consolidated Anexo III-A of Convênio SINIEF s/nº 1970 carries.\n *\n * A string is only read as a code when it is written as the bare 3 digits with optional\n * surrounding whitespace. A CSOSN has no printed grouping (the NF-e carries the origin digit in\n * its own `orig` field), so a separator inside it (`\"1-01\"`) is rejected, and so is anything\n * else (`\"abc101\"`) instead of having its digits picked out. A number is only read\n * as a code when it is a non-negative safe integer, since a sign, a decimal point or a rounded\n * magnitude would otherwise be read as a code the caller never wrote.\n *\n * No CSOSN code starts with a zero, the table runs from `101` to `900`, so nothing is ever\n * padded here: a number and the string of the same digits are read identically, and a value\n * narrower than 3 digits is not a code at all.\n *\n * @param {string|number} value - The CSOSN code to be validated, e.g. `\"101\"` or `101`.\n * @returns {boolean} True when the code is a known CSOSN code, false otherwise.\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cvsn_70\n * Convênio SINIEF s/nº 1970, whose Anexo III-A carries the CSOSN table in force.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2010/aj_003_10\n * Ajuste SINIEF 03/2010, which instituted the CSOSN table.\n *\n * @example\n * ```typescript\n * isValidCsosn(\"101\"); // true\n * isValidCsosn(900); // true\n * isValidCsosn(\"999\"); // false\n * isValidCsosn(\"abc101\"); // false (not a documented form)\n * isValidCsosn(-101); // false (not a non-negative safe integer)\n * ```\n */\nexport const isValidCsosn = (value: string | number): boolean => {\n\tif (!isLookupCode(value)) return false;\n\n\tconst code = String(value).trim();\n\n\tif (!CSOSN_FORMAT_REGEX.test(code)) return false;\n\n\treturn (CSOSN_CODES as readonly string[]).includes(sanitizeToDigits(code));\n};\n","/**\n * CST (Código de Situação Tributária) code tables per tax: the consolidated Anexo I of\n * Convênio SINIEF s/nº 1970 for ICMS (Tabela A given by Ajuste SINIEF 20/2012 and 15/2013,\n * Tabela B given by Ajuste SINIEF 39/23 and amended by Ajuste SINIEF 20/24), and Instrução\n * Normativa RFB nº 1.009/2010 (Tabelas I to III) for IPI, PIS and COFINS.\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cvsn_70\n * Convênio SINIEF s/nº 1970, whose Anexo I carries the CST tables in force.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2023/ajuste-sinief-39-23\n * Ajuste SINIEF 39/23, which gave Tabela B its current wording with effect from 01.12.23.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2024/AJ020_24\n * Ajuste SINIEF 20/24, which struck items 12, 13, 52, 72 and 74 from Tabela B (effects from\n * 09.07.24) before they ever took effect: those items sat in the inciso III of its cláusula\n * segunda, whose effect the alínea \"b\" of the inciso I of the cláusula terceira of Ajuste SINIEF\n * 39/23 had deferred to 1º de outubro de 2024, so the revocation reached them first and the codes\n * were never in force. Neither ajuste uses the phrase \"sem efeitos\"; this is the reading of the\n * two clauses, not a quotation.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/1994/aj_003_94\n * Ajuste SINIEF 03/1994, which instituted the ICMS CST as the two digit code AB.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2000/AJ_006_00\n * Ajuste SINIEF 06/2000, the historical Tabela B superseded by Ajuste SINIEF 39/23.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2012/aj_020_12\n * Ajuste SINIEF 20/2012, which gives Tabela A (origem da mercadoria, 0 to 7).\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2013/aj_015_13\n * Ajuste SINIEF 15/2013, which added origem 8 to Tabela A.\n * @see Official: https://normas.receita.fazenda.gov.br/sijut2consulta/link.action?idAto=15974\n * Instrução Normativa RFB nº 1.009/2010, Tabelas I to III (CST-IPI, CST-PIS and CST-COFINS).\n */\nexport const ICMS_CST_CODES = [\n\t\"00\",\n\t\"02\",\n\t\"10\",\n\t\"15\",\n\t\"20\",\n\t\"30\",\n\t\"40\",\n\t\"41\",\n\t\"50\",\n\t\"51\",\n\t\"53\",\n\t\"60\",\n\t\"61\",\n\t\"70\",\n\t\"90\",\n] as const;\n\nexport const IPI_CST_CODES = [\n\t\"00\",\n\t\"01\",\n\t\"02\",\n\t\"03\",\n\t\"04\",\n\t\"05\",\n\t\"49\",\n\t\"50\",\n\t\"51\",\n\t\"52\",\n\t\"53\",\n\t\"54\",\n\t\"55\",\n\t\"99\",\n] as const;\n\nexport const PIS_COFINS_CST_CODES = [\n\t\"01\",\n\t\"02\",\n\t\"03\",\n\t\"04\",\n\t\"05\",\n\t\"06\",\n\t\"07\",\n\t\"08\",\n\t\"09\",\n\t\"49\",\n\t\"50\",\n\t\"51\",\n\t\"52\",\n\t\"53\",\n\t\"54\",\n\t\"55\",\n\t\"56\",\n\t\"60\",\n\t\"61\",\n\t\"62\",\n\t\"63\",\n\t\"64\",\n\t\"65\",\n\t\"66\",\n\t\"67\",\n\t\"70\",\n\t\"71\",\n\t\"72\",\n\t\"73\",\n\t\"74\",\n\t\"75\",\n\t\"98\",\n\t\"99\",\n] as const;\n\n/**\n * Shape a CST code has to be written in: the 2 digits of the IPI, PIS and COFINS tables, or\n * the 3 digits of the ICMS form (origin digit + Tabela B code) with an optional single\n * whitespace or mask character after the origin digit, the way documents print the origin\n * apart (\"0 10\"). That is the only boundary a printed CST has: the Tabela B code is a single\n * two digit code, so a separator inside it, or a trailing one, is not a CST.\n */\nexport const CST_FORMAT_REGEX = /^(?:\\d{2}|\\d[\\s.\\-/]?\\d{2})$/;\n","import { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { padLookupCode } from \"../_internals/pad-lookup-code/pad-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { CST_FORMAT_REGEX, ICMS_CST_CODES, IPI_CST_CODES, PIS_COFINS_CST_CODES } from \"./constants\";\n\n/** Width of the ICMS form, the widest a CST is printed with: 1 origin digit plus a Tabela B code. */\nconst CST_LENGTH = 3;\n\n/** Width of a bare Tabela B code, the narrowest documented form a CST is written in. */\nconst TABELA_B_LENGTH = 2;\n\n/**\n * Options for `isValidCst`.\n */\nexport type IsValidCstOptions = {\n\t/**\n\t * The tax whose CST (Código de Situação Tributária) table the value is checked against.\n\t * Omit it to accept a code that exists in any of the four tables (`icms`, `ipi`, `pis`,\n\t * `cofins`); a value outside those four falls back to that same default at runtime.\n\t */\n\ttax?: \"icms\" | \"ipi\" | \"pis\" | \"cofins\";\n};\n\ntype CstTax = NonNullable<IsValidCstOptions[\"tax\"]>;\n\nconst isValidIcmsCst = (digits: string): boolean =>\n\tdigits.charAt(0) <= \"8\" && (ICMS_CST_CODES as readonly string[]).includes(digits.slice(1));\n\nconst isValidIpiCst = (digits: string): boolean =>\n\t(IPI_CST_CODES as readonly string[]).includes(digits);\n\nconst isValidPisCofinsCst = (digits: string): boolean =>\n\t(PIS_COFINS_CST_CODES as readonly string[]).includes(digits);\n\nconst isKnownTax = (tax: unknown): tax is CstTax =>\n\ttax === \"icms\" || tax === \"ipi\" || tax === \"pis\" || tax === \"cofins\";\n\nconst isValidForTax = (digits: string, tax: CstTax): boolean => {\n\tif (tax === \"icms\") return isValidIcmsCst(digits);\n\tif (tax === \"ipi\") return isValidIpiCst(digits);\n\n\treturn isValidPisCofinsCst(digits);\n};\n\n/**\n * Validates if a CST (Código de Situação Tributária) code is valid for a given tax.\n *\n * `icms` accepts the 3 digit form used on tax documents (1 origin digit from `0` to `8`\n * followed by 1 of the 15 codes `00, 02, 10, 15, 20, 30, 40, 41, 50, 51, 53, 60, 61, 70, 90`\n * of the Tabela B in force, the one Ajuste SINIEF 39/23 gave and Ajuste SINIEF 20/24 amended;\n * `02`, `15`, `53` and `61` are the monofasia de combustíveis codes it added).\n *\n * `ipi` accepts 1 of the 14 codes `00, 01, 02, 03, 04, 05, 49, 50, 51, 52, 53, 54, 55, 99`.\n *\n * `pis` and `cofins` accept 1 of the 33 codes `01, 02, 03, 04, 05, 06, 07, 08, 09, 49, 50, 51,\n * 52, 53, 54, 55, 56, 60, 61, 62, 63, 64, 65, 66, 67, 70, 71, 72, 73, 74, 75, 98, 99`.\n *\n * `options.tax` is optional. When it is omitted, the code is valid as long as it exists in any\n * one of the four tables above; when it is given, only that table is consulted. A `tax` outside\n * the four documented values falls back to that default instead of turning the code down, the\n * way every other scalar option of this library (`version`, `type`, `style`) treats a value it\n * does not know.\n *\n * A string is only read as a code when it is written in one of the documented forms: the 2\n * digits of a Tabela B code, or the 3 digits of the ICMS form with an optional single\n * separator after the origin digit, plus optional surrounding whitespace. The origin digit is\n * the only boundary a printed CST has, so `\"0 10\"` and `\"1-10\"` are read while `\"0-0\"`,\n * `\"11-0\"` and `\"00-\"` are not. Anything else (`\"abc110\"`) is rejected instead of having its\n * digits picked out. A number is\n * only read as a code when it is a non-negative safe integer, since a sign, a decimal point or\n * a rounded magnitude would otherwise be read as a code the caller never wrote.\n *\n * A single digit is narrower than either documented form, so it is left padded with zeros to\n * the 3 digits of the ICMS form, whether it comes as a string or as a number: `0`, `\"0\"` and\n * `\"000\"` are all the ICMS code `000`. A 2 digit value is already a documented form, a Tabela B\n * code, and is read as written, so `isValidCst(\"00\", { tax: \"ipi\" })` stays a CST-IPI check and\n * a Tabela B code keeps its own two digits: `\"07\"`, not `7`, which is the ICMS code `007`.\n *\n * @param {string|number} value - The CST code to be validated, e.g. `\"110\"`, `\"0 10\"` or `110`.\n * @param {IsValidCstOptions} [options] - The tax whose table the value is checked against.\n * Checks every table when omitted or when the tax is not one of the four documented values.\n * @returns {boolean} True when the code is valid for the given tax (or for any tax, when\n * `options.tax` is omitted), false otherwise.\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cvsn_70\n * Convênio SINIEF s/nº 1970, whose Anexo I carries the CST tables in force.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2023/ajuste-sinief-39-23\n * Ajuste SINIEF 39/23, which gave Tabela B its current wording with effect from 01.12.23.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2024/AJ020_24\n * Ajuste SINIEF 20/24, which struck items 12, 13, 52, 72 and 74 from Tabela B (effects from\n * 09.07.24) before they ever took effect: those items sat in the inciso III of its cláusula\n * segunda, whose effect the alínea \"b\" of the inciso I of the cláusula terceira of Ajuste SINIEF\n * 39/23 had deferred to 1º de outubro de 2024, so the revocation reached them first and the codes\n * were never in force. Neither ajuste uses the phrase \"sem efeitos\"; this is the reading of the\n * two clauses, not a quotation.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/1994/aj_003_94\n * Ajuste SINIEF 03/1994, which instituted the ICMS CST as the two digit code AB.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2000/AJ_006_00\n * Ajuste SINIEF 06/2000, the historical Tabela B superseded by Ajuste SINIEF 39/23.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2012/aj_020_12\n * Ajuste SINIEF 20/2012, which gives Tabela A (origem da mercadoria, 0 to 7).\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2013/aj_015_13\n * Ajuste SINIEF 15/2013, which added origem 8 to Tabela A.\n * @see Official: https://normas.receita.fazenda.gov.br/sijut2consulta/link.action?idAto=15974\n * Instrução Normativa RFB nº 1.009/2010, Tabelas I to III (CST-IPI, CST-PIS and CST-COFINS).\n *\n * @example\n * ```typescript\n * isValidCst(\"110\", { tax: \"icms\" }); // true\n * isValidCst(\"002\", { tax: \"icms\" }); // true (monofasia de combustíveis)\n * isValidCst(\"00\", { tax: \"ipi\" }); // true\n * isValidCst(\"49\", { tax: \"pis\" }); // true\n * isValidCst(\"07\", { tax: \"cofins\" }); // true\n * isValidCst(\"99\", { tax: \"icms\" }); // false\n * isValidCst(0, { tax: \"icms\" }); // true (a single digit is padded to the 3 digit form, \"000\")\n * isValidCst(\"0\", { tax: \"icms\" }); // true (padded the same way a number is)\n * isValidCst(\"110\"); // true (found in the icms table)\n * isValidCst(\"49\"); // true (found in the ipi table)\n * isValidCst(\"000\", { tax: \"nope\" }); // true (an unknown tax falls back to checking every table)\n * isValidCst(\"999\"); // false (not in any table)\n * isValidCst(\"abc110\"); // false (not a documented form)\n * isValidCst(-110); // false (not a non-negative safe integer)\n * ```\n */\nexport const isValidCst = (value: string | number, options?: IsValidCstOptions): boolean => {\n\tif (!isLookupCode(value)) return false;\n\tif (options !== undefined && (options === null || typeof options !== \"object\")) return false;\n\n\tconst trimmed = String(value).trim();\n\tconst code = trimmed.length < TABELA_B_LENGTH ? padLookupCode(trimmed, CST_LENGTH) : trimmed;\n\n\tif (!CST_FORMAT_REGEX.test(code)) return false;\n\n\tconst digits = sanitizeToDigits(code);\n\tconst tax = options?.tax;\n\n\tif (isKnownTax(tax)) return isValidForTax(digits, tax);\n\n\treturn isValidIcmsCst(digits) || isValidIpiCst(digits) || isValidPisCofinsCst(digits);\n};\n","import { SEPARATORS_REGEX } from \"../_internals/constants/separators\";\nimport { LEGAL_NATURE } from \"./constants\";\n\n/**\n * Validates if a Brazilian legal nature (natureza jurídica) code exists.\n *\n * Only the usual mask characters (hyphens, dots, whitespace) are tolerated around the 4\n * digits. Any other character makes the value invalid, so `\"2062a\"` is rejected instead of\n * being read as `\"2062\"`.\n *\n * The 8 codes a past revision of the CONCLA table retired are accepted alongside the 92 in force,\n * because they still appear in records filed while they were in force. Use `getLegalNature` to\n * tell the two apart: a retired code comes back with `legacy: true` and the `currentCode` it\n * corresponds to today.\n *\n * @param {string} code - The legal nature code to be validated, with or without formatting.\n * @returns {boolean} True when the code is a known 4 digit legal nature, false otherwise.\n *\n * @example\n * ```typescript\n * isValidLegalNature(\"2062\"); // true\n * isValidLegalNature(\"206-2\"); // true\n * isValidLegalNature(\"2208\"); // true (retired by a past revision, still accepted)\n * isValidLegalNature(\"2062a\"); // false\n * isValidLegalNature(\"0000\"); // false\n * ```\n *\n * The CONCLA table page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser; the detailed structure PDF next to it is served\n * normally.\n *\n * @see Official: https://concla.ibge.gov.br/estrutura/natjur-estrutura/natureza-juridica-2021\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/CONCLA-TNJ2021-EstruturaDetalhada.pdf\n */\nexport const isValidLegalNature = (code: string): boolean => {\n\tif (typeof code !== \"string\") return false;\n\n\tconst normalized = code.replace(SEPARATORS_REGEX, \"\");\n\n\treturn Object.hasOwn(LEGAL_NATURE, normalized);\n};\n","import { getFormatLicensePlate } from \"../get-format-license-plate/get-format-license-plate\";\n\n/**\n * Validates if a Brazilian license plate (placa de carro ou moto) is valid.\n *\n * Supports the old Brazilian format (ABC-1234) and the Mercosul format (ABC1D23), the single\n * sequence Resolução CONTRAN nº 969/2022 defines for every vehicle, motorcycles included.\n * Accepts the usual mask characters (hyphens, spaces) and is case-insensitive, mirroring\n * `getFormatLicensePlate`/`parseLicensePlate` (single source of truth for the supported\n * formats).\n *\n * @param {string} value - The license plate value to be validated.\n * @returns {boolean} True if the license plate is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidLicensePlate(\"abc1234\"); // true (Brazilian format)\n * isValidLicensePlate(\"ABC-1234\"); // true (Brazilian format with hyphen)\n * isValidLicensePlate(\"ABC 1234\"); // true (whitespace mask)\n * isValidLicensePlate(\"abc1d23\"); // true (Mercosul format)\n * isValidLicensePlate(\"ABC12D3\"); // false (not a Mercosul sequence)\n * isValidLicensePlate(\"ABC1234EXTRA\"); // false (too many characters)\n * isValidLicensePlate(\"invalid\"); // false\n * ```\n *\n * The resolution's own text does not spell the sequence out: art. 2º § 2º delegates the\n * technical specification to Anexo I, whose item 1.2 reads \"O padrão de estampagem é composto de\n * 7 (sete) caracteres alfanuméricos, em alto relevo, na sequência LLLNLNN\" and whose item 1.2.1\n * reads `L` as a letter and `N` as a numeral. Art. 2º § 1º puts a single rear plate of that same\n * standard on motorcycles and similar vehicles, and art. 2º § 3º describes the old `AAA-1111`\n * PNU it coexists with. The annexes are published in a PDF of their own, cited below alongside\n * the resolution's text.\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022.pdf\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9692022anexos.pdf\n */\nexport const isValidLicensePlate = (value: string): boolean =>\n\tgetFormatLicensePlate(value) !== null;\n","/**\n * NCM (Nomenclatura Comum do Mercosul) 8 digit codes in force on the generation date, sorted\n * ascending. A code is included when the generation date falls within its Siscomex\n * `Data_Inicio`/`Data_Fim` range (both inclusive) — this also keeps codes that are valid\n * today but carry a scheduled future end date, not only the ones with no end date\n * (`Data_Fim: \"31/12/9999\"`).\n *\n * Generated by `node ./scripts/ncm.ts`. Do not edit by hand.\n *\n * @see Official: https://portalunico.siscomex.gov.br/classif/api/publico/nomenclatura/download/json\n */\nexport const NCM_CODES: readonly string[] = [\n\t\"01012100\",\n\t\"01012900\",\n\t\"01013000\",\n\t\"01019000\",\n\t\"01022110\",\n\t\"01022190\",\n\t\"01022911\",\n\t\"01022919\",\n\t\"01022990\",\n\t\"01023110\",\n\t\"01023190\",\n\t\"01023911\",\n\t\"01023919\",\n\t\"01023990\",\n\t\"01029000\",\n\t\"01031000\",\n\t\"01039100\",\n\t\"01039200\",\n\t\"01041011\",\n\t\"01041019\",\n\t\"01041090\",\n\t\"01042010\",\n\t\"01042090\",\n\t\"01051110\",\n\t\"01051190\",\n\t\"01051200\",\n\t\"01051300\",\n\t\"01051400\",\n\t\"01051500\",\n\t\"01059400\",\n\t\"01059900\",\n\t\"01061100\",\n\t\"01061200\",\n\t\"01061300\",\n\t\"01061400\",\n\t\"01061900\",\n\t\"01062000\",\n\t\"01063100\",\n\t\"01063200\",\n\t\"01063310\",\n\t\"01063390\",\n\t\"01063900\",\n\t\"01064100\",\n\t\"01064900\",\n\t\"01069000\",\n\t\"02011000\",\n\t\"02012010\",\n\t\"02012020\",\n\t\"02012090\",\n\t\"02013000\",\n\t\"02021000\",\n\t\"02022010\",\n\t\"02022020\",\n\t\"02022090\",\n\t\"02023000\",\n\t\"02031100\",\n\t\"02031200\",\n\t\"02031900\",\n\t\"02032100\",\n\t\"02032200\",\n\t\"02032900\",\n\t\"02041000\",\n\t\"02042100\",\n\t\"02042200\",\n\t\"02042300\",\n\t\"02043000\",\n\t\"02044100\",\n\t\"02044200\",\n\t\"02044300\",\n\t\"02045000\",\n\t\"02050000\",\n\t\"02061000\",\n\t\"02062100\",\n\t\"02062200\",\n\t\"02062910\",\n\t\"02062990\",\n\t\"02063000\",\n\t\"02064100\",\n\t\"02064900\",\n\t\"02068000\",\n\t\"02069000\",\n\t\"02071100\",\n\t\"02071210\",\n\t\"02071220\",\n\t\"02071300\",\n\t\"02071411\",\n\t\"02071412\",\n\t\"02071413\",\n\t\"02071419\",\n\t\"02071421\",\n\t\"02071422\",\n\t\"02071423\",\n\t\"02071424\",\n\t\"02071429\",\n\t\"02071431\",\n\t\"02071432\",\n\t\"02071433\",\n\t\"02071434\",\n\t\"02071439\",\n\t\"02072400\",\n\t\"02072500\",\n\t\"02072600\",\n\t\"02072700\",\n\t\"02074100\",\n\t\"02074200\",\n\t\"02074300\",\n\t\"02074400\",\n\t\"02074500\",\n\t\"02075100\",\n\t\"02075200\",\n\t\"02075300\",\n\t\"02075400\",\n\t\"02075500\",\n\t\"02076000\",\n\t\"02081000\",\n\t\"02083000\",\n\t\"02084000\",\n\t\"02085000\",\n\t\"02086000\",\n\t\"02089000\",\n\t\"02091011\",\n\t\"02091019\",\n\t\"02091021\",\n\t\"02091029\",\n\t\"02099000\",\n\t\"02101100\",\n\t\"02101200\",\n\t\"02101900\",\n\t\"02102000\",\n\t\"02109100\",\n\t\"02109200\",\n\t\"02109300\",\n\t\"02109911\",\n\t\"02109919\",\n\t\"02109920\",\n\t\"02109930\",\n\t\"02109940\",\n\t\"02109990\",\n\t\"03011110\",\n\t\"03011190\",\n\t\"03011900\",\n\t\"03019110\",\n\t\"03019190\",\n\t\"03019210\",\n\t\"03019290\",\n\t\"03019310\",\n\t\"03019390\",\n\t\"03019410\",\n\t\"03019490\",\n\t\"03019510\",\n\t\"03019590\",\n\t\"03019911\",\n\t\"03019912\",\n\t\"03019919\",\n\t\"03019991\",\n\t\"03019992\",\n\t\"03019999\",\n\t\"03021100\",\n\t\"03021300\",\n\t\"03021400\",\n\t\"03021900\",\n\t\"03022100\",\n\t\"03022200\",\n\t\"03022300\",\n\t\"03022400\",\n\t\"03022900\",\n\t\"03023100\",\n\t\"03023200\",\n\t\"03023300\",\n\t\"03023400\",\n\t\"03023500\",\n\t\"03023600\",\n\t\"03023900\",\n\t\"03024100\",\n\t\"03024210\",\n\t\"03024290\",\n\t\"03024300\",\n\t\"03024400\",\n\t\"03024500\",\n\t\"03024600\",\n\t\"03024700\",\n\t\"03024910\",\n\t\"03024990\",\n\t\"03025100\",\n\t\"03025200\",\n\t\"03025300\",\n\t\"03025400\",\n\t\"03025500\",\n\t\"03025600\",\n\t\"03025900\",\n\t\"03027100\",\n\t\"03027210\",\n\t\"03027290\",\n\t\"03027300\",\n\t\"03027400\",\n\t\"03027900\",\n\t\"03028100\",\n\t\"03028200\",\n\t\"03028310\",\n\t\"03028320\",\n\t\"03028400\",\n\t\"03028500\",\n\t\"03028910\",\n\t\"03028921\",\n\t\"03028922\",\n\t\"03028923\",\n\t\"03028924\",\n\t\"03028931\",\n\t\"03028932\",\n\t\"03028933\",\n\t\"03028934\",\n\t\"03028935\",\n\t\"03028936\",\n\t\"03028937\",\n\t\"03028938\",\n\t\"03028941\",\n\t\"03028942\",\n\t\"03028943\",\n\t\"03028944\",\n\t\"03028945\",\n\t\"03028990\",\n\t\"03029110\",\n\t\"03029190\",\n\t\"03029200\",\n\t\"03029900\",\n\t\"03031100\",\n\t\"03031200\",\n\t\"03031300\",\n\t\"03031400\",\n\t\"03031900\",\n\t\"03032300\",\n\t\"03032410\",\n\t\"03032490\",\n\t\"03032500\",\n\t\"03032600\",\n\t\"03032900\",\n\t\"03033100\",\n\t\"03033200\",\n\t\"03033300\",\n\t\"03033400\",\n\t\"03033900\",\n\t\"03034100\",\n\t\"03034200\",\n\t\"03034300\",\n\t\"03034400\",\n\t\"03034500\",\n\t\"03034600\",\n\t\"03034900\",\n\t\"03035100\",\n\t\"03035300\",\n\t\"03035400\",\n\t\"03035500\",\n\t\"03035600\",\n\t\"03035700\",\n\t\"03035910\",\n\t\"03035920\",\n\t\"03035990\",\n\t\"03036300\",\n\t\"03036400\",\n\t\"03036500\",\n\t\"03036600\",\n\t\"03036700\",\n\t\"03036800\",\n\t\"03036910\",\n\t\"03036990\",\n\t\"03038111\",\n\t\"03038112\",\n\t\"03038113\",\n\t\"03038114\",\n\t\"03038119\",\n\t\"03038190\",\n\t\"03038200\",\n\t\"03038311\",\n\t\"03038319\",\n\t\"03038321\",\n\t\"03038329\",\n\t\"03038400\",\n\t\"03038910\",\n\t\"03038920\",\n\t\"03038932\",\n\t\"03038933\",\n\t\"03038941\",\n\t\"03038942\",\n\t\"03038943\",\n\t\"03038944\",\n\t\"03038945\",\n\t\"03038946\",\n\t\"03038951\",\n\t\"03038952\",\n\t\"03038953\",\n\t\"03038954\",\n\t\"03038955\",\n\t\"03038956\",\n\t\"03038961\",\n\t\"03038962\",\n\t\"03038963\",\n\t\"03038964\",\n\t\"03038965\",\n\t\"03038990\",\n\t\"03039110\",\n\t\"03039190\",\n\t\"03039200\",\n\t\"03039910\",\n\t\"03039920\",\n\t\"03039990\",\n\t\"03043100\",\n\t\"03043210\",\n\t\"03043290\",\n\t\"03043300\",\n\t\"03043900\",\n\t\"03044100\",\n\t\"03044200\",\n\t\"03044300\",\n\t\"03044400\",\n\t\"03044500\",\n\t\"03044600\",\n\t\"03044700\",\n\t\"03044800\",\n\t\"03044910\",\n\t\"03044920\",\n\t\"03044990\",\n\t\"03045100\",\n\t\"03045200\",\n\t\"03045300\",\n\t\"03045400\",\n\t\"03045500\",\n\t\"03045600\",\n\t\"03045700\",\n\t\"03045900\",\n\t\"03046100\",\n\t\"03046210\",\n\t\"03046290\",\n\t\"03046300\",\n\t\"03046900\",\n\t\"03047100\",\n\t\"03047200\",\n\t\"03047300\",\n\t\"03047400\",\n\t\"03047500\",\n\t\"03047900\",\n\t\"03048100\",\n\t\"03048200\",\n\t\"03048300\",\n\t\"03048400\",\n\t\"03048510\",\n\t\"03048520\",\n\t\"03048600\",\n\t\"03048700\",\n\t\"03048810\",\n\t\"03048890\",\n\t\"03048910\",\n\t\"03048920\",\n\t\"03048930\",\n\t\"03048990\",\n\t\"03049100\",\n\t\"03049211\",\n\t\"03049212\",\n\t\"03049219\",\n\t\"03049221\",\n\t\"03049222\",\n\t\"03049229\",\n\t\"03049300\",\n\t\"03049400\",\n\t\"03049500\",\n\t\"03049600\",\n\t\"03049700\",\n\t\"03049900\",\n\t\"03052010\",\n\t\"03052090\",\n\t\"03053100\",\n\t\"03053210\",\n\t\"03053220\",\n\t\"03053230\",\n\t\"03053290\",\n\t\"03053900\",\n\t\"03054100\",\n\t\"03054200\",\n\t\"03054300\",\n\t\"03054400\",\n\t\"03054910\",\n\t\"03054920\",\n\t\"03054990\",\n\t\"03055100\",\n\t\"03055200\",\n\t\"03055310\",\n\t\"03055390\",\n\t\"03055400\",\n\t\"03055900\",\n\t\"03056100\",\n\t\"03056200\",\n\t\"03056300\",\n\t\"03056400\",\n\t\"03056910\",\n\t\"03056990\",\n\t\"03057100\",\n\t\"03057200\",\n\t\"03057900\",\n\t\"03061110\",\n\t\"03061190\",\n\t\"03061200\",\n\t\"03061400\",\n\t\"03061500\",\n\t\"03061610\",\n\t\"03061690\",\n\t\"03061710\",\n\t\"03061790\",\n\t\"03061910\",\n\t\"03061990\",\n\t\"03063100\",\n\t\"03063200\",\n\t\"03063300\",\n\t\"03063400\",\n\t\"03063500\",\n\t\"03063600\",\n\t\"03063910\",\n\t\"03063990\",\n\t\"03069100\",\n\t\"03069200\",\n\t\"03069300\",\n\t\"03069400\",\n\t\"03069500\",\n\t\"03069910\",\n\t\"03069990\",\n\t\"03071100\",\n\t\"03071200\",\n\t\"03071900\",\n\t\"03072100\",\n\t\"03072200\",\n\t\"03072900\",\n\t\"03073100\",\n\t\"03073200\",\n\t\"03073900\",\n\t\"03074200\",\n\t\"03074310\",\n\t\"03074320\",\n\t\"03074900\",\n\t\"03075100\",\n\t\"03075200\",\n\t\"03075900\",\n\t\"03076000\",\n\t\"03077100\",\n\t\"03077200\",\n\t\"03077900\",\n\t\"03078100\",\n\t\"03078200\",\n\t\"03078300\",\n\t\"03078400\",\n\t\"03078700\",\n\t\"03078800\",\n\t\"03079100\",\n\t\"03079200\",\n\t\"03079900\",\n\t\"03081100\",\n\t\"03081200\",\n\t\"03081900\",\n\t\"03082100\",\n\t\"03082200\",\n\t\"03082900\",\n\t\"03083000\",\n\t\"03089000\",\n\t\"03091000\",\n\t\"03099000\",\n\t\"04011010\",\n\t\"04011090\",\n\t\"04012010\",\n\t\"04012090\",\n\t\"04014010\",\n\t\"04014021\",\n\t\"04014029\",\n\t\"04015010\",\n\t\"04015021\",\n\t\"04015029\",\n\t\"04021010\",\n\t\"04021090\",\n\t\"04022110\",\n\t\"04022120\",\n\t\"04022130\",\n\t\"04022910\",\n\t\"04022920\",\n\t\"04022930\",\n\t\"04029100\",\n\t\"04029900\",\n\t\"04032000\",\n\t\"04039000\",\n\t\"04041000\",\n\t\"04049000\",\n\t\"04051000\",\n\t\"04052000\",\n\t\"04059010\",\n\t\"04059090\",\n\t\"04061010\",\n\t\"04061090\",\n\t\"04062000\",\n\t\"04063000\",\n\t\"04064000\",\n\t\"04069010\",\n\t\"04069020\",\n\t\"04069030\",\n\t\"04069090\",\n\t\"04071100\",\n\t\"04071900\",\n\t\"04072100\",\n\t\"04072900\",\n\t\"04079000\",\n\t\"04081100\",\n\t\"04081900\",\n\t\"04089100\",\n\t\"04089900\",\n\t\"04090000\",\n\t\"04101000\",\n\t\"04109000\",\n\t\"05010000\",\n\t\"05021011\",\n\t\"05021019\",\n\t\"05021090\",\n\t\"05029010\",\n\t\"05029020\",\n\t\"05040011\",\n\t\"05040012\",\n\t\"05040013\",\n\t\"05040019\",\n\t\"05040090\",\n\t\"05051000\",\n\t\"05059000\",\n\t\"05061000\",\n\t\"05069000\",\n\t\"05071000\",\n\t\"05079000\",\n\t\"05080000\",\n\t\"05100010\",\n\t\"05100090\",\n\t\"05111000\",\n\t\"05119110\",\n\t\"05119190\",\n\t\"05119910\",\n\t\"05119920\",\n\t\"05119930\",\n\t\"05119991\",\n\t\"05119999\",\n\t\"06011000\",\n\t\"06012000\",\n\t\"06021000\",\n\t\"06022000\",\n\t\"06023000\",\n\t\"06024000\",\n\t\"06029010\",\n\t\"06029021\",\n\t\"06029029\",\n\t\"06029081\",\n\t\"06029082\",\n\t\"06029083\",\n\t\"06029089\",\n\t\"06029090\",\n\t\"06031100\",\n\t\"06031200\",\n\t\"06031300\",\n\t\"06031400\",\n\t\"06031500\",\n\t\"06031900\",\n\t\"06039000\",\n\t\"06042000\",\n\t\"06049000\",\n\t\"07011000\",\n\t\"07019000\",\n\t\"07020000\",\n\t\"07031011\",\n\t\"07031019\",\n\t\"07031021\",\n\t\"07031029\",\n\t\"07032010\",\n\t\"07032090\",\n\t\"07039010\",\n\t\"07039090\",\n\t\"07041000\",\n\t\"07042000\",\n\t\"07049000\",\n\t\"07051100\",\n\t\"07051900\",\n\t\"07052100\",\n\t\"07052900\",\n\t\"07061000\",\n\t\"07069000\",\n\t\"07070000\",\n\t\"07081000\",\n\t\"07082000\",\n\t\"07089000\",\n\t\"07092000\",\n\t\"07093000\",\n\t\"07094000\",\n\t\"07095100\",\n\t\"07095200\",\n\t\"07095300\",\n\t\"07095400\",\n\t\"07095500\",\n\t\"07095600\",\n\t\"07095900\",\n\t\"07096000\",\n\t\"07097000\",\n\t\"07099100\",\n\t\"07099200\",\n\t\"07099300\",\n\t\"07099911\",\n\t\"07099919\",\n\t\"07099990\",\n\t\"07101000\",\n\t\"07102100\",\n\t\"07102200\",\n\t\"07102900\",\n\t\"07103000\",\n\t\"07104000\",\n\t\"07108000\",\n\t\"07109000\",\n\t\"07112010\",\n\t\"07112020\",\n\t\"07112090\",\n\t\"07114000\",\n\t\"07115100\",\n\t\"07115900\",\n\t\"07119000\",\n\t\"07122000\",\n\t\"07123100\",\n\t\"07123200\",\n\t\"07123300\",\n\t\"07123400\",\n\t\"07123900\",\n\t\"07129020\",\n\t\"07129090\",\n\t\"07131010\",\n\t\"07131090\",\n\t\"07132010\",\n\t\"07132090\",\n\t\"07133110\",\n\t\"07133190\",\n\t\"07133210\",\n\t\"07133290\",\n\t\"07133311\",\n\t\"07133319\",\n\t\"07133321\",\n\t\"07133329\",\n\t\"07133391\",\n\t\"07133399\",\n\t\"07133410\",\n\t\"07133490\",\n\t\"07133510\",\n\t\"07133590\",\n\t\"07133910\",\n\t\"07133990\",\n\t\"07134010\",\n\t\"07134090\",\n\t\"07135010\",\n\t\"07135090\",\n\t\"07136010\",\n\t\"07136090\",\n\t\"07139010\",\n\t\"07139090\",\n\t\"07141000\",\n\t\"07142000\",\n\t\"07143000\",\n\t\"07144000\",\n\t\"07145000\",\n\t\"07149000\",\n\t\"08011100\",\n\t\"08011200\",\n\t\"08011900\",\n\t\"08012100\",\n\t\"08012200\",\n\t\"08013100\",\n\t\"08013200\",\n\t\"08021100\",\n\t\"08021200\",\n\t\"08022100\",\n\t\"08022200\",\n\t\"08023100\",\n\t\"08023200\",\n\t\"08024100\",\n\t\"08024200\",\n\t\"08025100\",\n\t\"08025200\",\n\t\"08026100\",\n\t\"08026200\",\n\t\"08027000\",\n\t\"08028000\",\n\t\"08029100\",\n\t\"08029200\",\n\t\"08029900\",\n\t\"08031000\",\n\t\"08039000\",\n\t\"08041010\",\n\t\"08041020\",\n\t\"08042010\",\n\t\"08042020\",\n\t\"08043000\",\n\t\"08044000\",\n\t\"08045010\",\n\t\"08045020\",\n\t\"08045030\",\n\t\"08051000\",\n\t\"08052100\",\n\t\"08052200\",\n\t\"08052900\",\n\t\"08054000\",\n\t\"08055000\",\n\t\"08059000\",\n\t\"08061000\",\n\t\"08062000\",\n\t\"08071100\",\n\t\"08071900\",\n\t\"08072000\",\n\t\"08081000\",\n\t\"08083000\",\n\t\"08084000\",\n\t\"08091000\",\n\t\"08092100\",\n\t\"08092900\",\n\t\"08093010\",\n\t\"08093020\",\n\t\"08094000\",\n\t\"08101000\",\n\t\"08102000\",\n\t\"08103000\",\n\t\"08104000\",\n\t\"08105000\",\n\t\"08106000\",\n\t\"08107000\",\n\t\"08109011\",\n\t\"08109012\",\n\t\"08109013\",\n\t\"08109014\",\n\t\"08109015\",\n\t\"08109016\",\n\t\"08109017\",\n\t\"08109090\",\n\t\"08111000\",\n\t\"08112000\",\n\t\"08119000\",\n\t\"08121000\",\n\t\"08129000\",\n\t\"08131000\",\n\t\"08132010\",\n\t\"08132020\",\n\t\"08133000\",\n\t\"08134010\",\n\t\"08134090\",\n\t\"08135000\",\n\t\"08140000\",\n\t\"09011110\",\n\t\"09011190\",\n\t\"09011200\",\n\t\"09012100\",\n\t\"09012200\",\n\t\"09019000\",\n\t\"09021000\",\n\t\"09022000\",\n\t\"09023000\",\n\t\"09024000\",\n\t\"09030010\",\n\t\"09030090\",\n\t\"09041100\",\n\t\"09041200\",\n\t\"09042100\",\n\t\"09042200\",\n\t\"09051000\",\n\t\"09052000\",\n\t\"09061100\",\n\t\"09061900\",\n\t\"09062000\",\n\t\"09071000\",\n\t\"09072000\",\n\t\"09081100\",\n\t\"09081200\",\n\t\"09082100\",\n\t\"09082200\",\n\t\"09083100\",\n\t\"09083200\",\n\t\"09092100\",\n\t\"09092200\",\n\t\"09093100\",\n\t\"09093200\",\n\t\"09096110\",\n\t\"09096120\",\n\t\"09096190\",\n\t\"09096210\",\n\t\"09096220\",\n\t\"09096290\",\n\t\"09101100\",\n\t\"09101200\",\n\t\"09102000\",\n\t\"09103000\",\n\t\"09109100\",\n\t\"09109900\",\n\t\"10011100\",\n\t\"10011900\",\n\t\"10019100\",\n\t\"10019900\",\n\t\"10021000\",\n\t\"10029000\",\n\t\"10031000\",\n\t\"10039010\",\n\t\"10039080\",\n\t\"10039090\",\n\t\"10041000\",\n\t\"10049000\",\n\t\"10051000\",\n\t\"10059010\",\n\t\"10059090\",\n\t\"10061010\",\n\t\"10061091\",\n\t\"10061092\",\n\t\"10062010\",\n\t\"10062020\",\n\t\"10063011\",\n\t\"10063019\",\n\t\"10063021\",\n\t\"10063029\",\n\t\"10064000\",\n\t\"10071000\",\n\t\"10079000\",\n\t\"10081010\",\n\t\"10081090\",\n\t\"10082110\",\n\t\"10082190\",\n\t\"10082910\",\n\t\"10082990\",\n\t\"10083010\",\n\t\"10083090\",\n\t\"10084010\",\n\t\"10084090\",\n\t\"10085010\",\n\t\"10085090\",\n\t\"10086010\",\n\t\"10086090\",\n\t\"10089010\",\n\t\"10089090\",\n\t\"11010010\",\n\t\"11010020\",\n\t\"11022000\",\n\t\"11029000\",\n\t\"11031100\",\n\t\"11031300\",\n\t\"11031900\",\n\t\"11032000\",\n\t\"11041200\",\n\t\"11041900\",\n\t\"11042200\",\n\t\"11042300\",\n\t\"11042900\",\n\t\"11043000\",\n\t\"11051000\",\n\t\"11052000\",\n\t\"11061000\",\n\t\"11062000\",\n\t\"11063000\",\n\t\"11071010\",\n\t\"11071020\",\n\t\"11072010\",\n\t\"11072020\",\n\t\"11081100\",\n\t\"11081200\",\n\t\"11081300\",\n\t\"11081400\",\n\t\"11081900\",\n\t\"11082000\",\n\t\"11090000\",\n\t\"12011000\",\n\t\"12019000\",\n\t\"12023000\",\n\t\"12024100\",\n\t\"12024200\",\n\t\"12030000\",\n\t\"12040010\",\n\t\"12040090\",\n\t\"12051010\",\n\t\"12051090\",\n\t\"12059010\",\n\t\"12059090\",\n\t\"12060010\",\n\t\"12060090\",\n\t\"12071010\",\n\t\"12071090\",\n\t\"12072100\",\n\t\"12072900\",\n\t\"12073010\",\n\t\"12073090\",\n\t\"12074010\",\n\t\"12074090\",\n\t\"12075010\",\n\t\"12075090\",\n\t\"12076010\",\n\t\"12076090\",\n\t\"12077010\",\n\t\"12077090\",\n\t\"12079110\",\n\t\"12079190\",\n\t\"12079910\",\n\t\"12079990\",\n\t\"12081000\",\n\t\"12089000\",\n\t\"12091000\",\n\t\"12092100\",\n\t\"12092200\",\n\t\"12092300\",\n\t\"12092400\",\n\t\"12092500\",\n\t\"12092900\",\n\t\"12093000\",\n\t\"12099100\",\n\t\"12099900\",\n\t\"12101000\",\n\t\"12102010\",\n\t\"12102020\",\n\t\"12112000\",\n\t\"12113000\",\n\t\"12114000\",\n\t\"12115000\",\n\t\"12116000\",\n\t\"12119010\",\n\t\"12119090\",\n\t\"12122100\",\n\t\"12122900\",\n\t\"12129100\",\n\t\"12129200\",\n\t\"12129300\",\n\t\"12129400\",\n\t\"12129910\",\n\t\"12129990\",\n\t\"12130000\",\n\t\"12141000\",\n\t\"12149000\",\n\t\"13012000\",\n\t\"13019010\",\n\t\"13019090\",\n\t\"13021110\",\n\t\"13021190\",\n\t\"13021200\",\n\t\"13021300\",\n\t\"13021400\",\n\t\"13021910\",\n\t\"13021920\",\n\t\"13021930\",\n\t\"13021940\",\n\t\"13021950\",\n\t\"13021960\",\n\t\"13021991\",\n\t\"13021999\",\n\t\"13022010\",\n\t\"13022090\",\n\t\"13023100\",\n\t\"13023211\",\n\t\"13023219\",\n\t\"13023220\",\n\t\"13023910\",\n\t\"13023990\",\n\t\"14011000\",\n\t\"14012000\",\n\t\"14019000\",\n\t\"14042010\",\n\t\"14042090\",\n\t\"14049010\",\n\t\"14049090\",\n\t\"15011000\",\n\t\"15012000\",\n\t\"15019000\",\n\t\"15021011\",\n\t\"15021012\",\n\t\"15021019\",\n\t\"15021090\",\n\t\"15029000\",\n\t\"15030000\",\n\t\"15041011\",\n\t\"15041019\",\n\t\"15041090\",\n\t\"15042000\",\n\t\"15043000\",\n\t\"15050010\",\n\t\"15050090\",\n\t\"15060000\",\n\t\"15071000\",\n\t\"15079011\",\n\t\"15079019\",\n\t\"15079090\",\n\t\"15081000\",\n\t\"15089000\",\n\t\"15092000\",\n\t\"15093000\",\n\t\"15094000\",\n\t\"15099010\",\n\t\"15099090\",\n\t\"15101000\",\n\t\"15109000\",\n\t\"15111000\",\n\t\"15119000\",\n\t\"15121110\",\n\t\"15121120\",\n\t\"15121911\",\n\t\"15121919\",\n\t\"15121920\",\n\t\"15122100\",\n\t\"15122910\",\n\t\"15122990\",\n\t\"15131100\",\n\t\"15131900\",\n\t\"15132111\",\n\t\"15132119\",\n\t\"15132120\",\n\t\"15132911\",\n\t\"15132919\",\n\t\"15132920\",\n\t\"15141100\",\n\t\"15141910\",\n\t\"15141990\",\n\t\"15149100\",\n\t\"15149910\",\n\t\"15149990\",\n\t\"15151100\",\n\t\"15151900\",\n\t\"15152100\",\n\t\"15152910\",\n\t\"15152990\",\n\t\"15153000\",\n\t\"15155000\",\n\t\"15156000\",\n\t\"15159010\",\n\t\"15159021\",\n\t\"15159022\",\n\t\"15159090\",\n\t\"15161000\",\n\t\"15162000\",\n\t\"15163000\",\n\t\"15171000\",\n\t\"15179010\",\n\t\"15179090\",\n\t\"15180010\",\n\t\"15180090\",\n\t\"15200010\",\n\t\"15200020\",\n\t\"15211000\",\n\t\"15219011\",\n\t\"15219019\",\n\t\"15219090\",\n\t\"15220000\",\n\t\"16010000\",\n\t\"16021000\",\n\t\"16022000\",\n\t\"16023100\",\n\t\"16023210\",\n\t\"16023220\",\n\t\"16023230\",\n\t\"16023290\",\n\t\"16023900\",\n\t\"16024100\",\n\t\"16024200\",\n\t\"16024900\",\n\t\"16025000\",\n\t\"16029000\",\n\t\"16030000\",\n\t\"16041100\",\n\t\"16041200\",\n\t\"16041310\",\n\t\"16041390\",\n\t\"16041410\",\n\t\"16041420\",\n\t\"16041430\",\n\t\"16041500\",\n\t\"16041600\",\n\t\"16041700\",\n\t\"16041800\",\n\t\"16041900\",\n\t\"16042010\",\n\t\"16042020\",\n\t\"16042030\",\n\t\"16042090\",\n\t\"16043100\",\n\t\"16043200\",\n\t\"16051000\",\n\t\"16052100\",\n\t\"16052900\",\n\t\"16053000\",\n\t\"16054000\",\n\t\"16055100\",\n\t\"16055200\",\n\t\"16055300\",\n\t\"16055400\",\n\t\"16055500\",\n\t\"16055600\",\n\t\"16055700\",\n\t\"16055800\",\n\t\"16055900\",\n\t\"16056100\",\n\t\"16056200\",\n\t\"16056300\",\n\t\"16056900\",\n\t\"17011200\",\n\t\"17011300\",\n\t\"17011400\",\n\t\"17019100\",\n\t\"17019900\",\n\t\"17021100\",\n\t\"17021900\",\n\t\"17022000\",\n\t\"17023011\",\n\t\"17023019\",\n\t\"17023020\",\n\t\"17024010\",\n\t\"17024020\",\n\t\"17025000\",\n\t\"17026010\",\n\t\"17026020\",\n\t\"17029000\",\n\t\"17031000\",\n\t\"17039000\",\n\t\"17041000\",\n\t\"17049010\",\n\t\"17049020\",\n\t\"17049090\",\n\t\"18010000\",\n\t\"18020000\",\n\t\"18031000\",\n\t\"18032000\",\n\t\"18040000\",\n\t\"18050000\",\n\t\"18061000\",\n\t\"18062000\",\n\t\"18063110\",\n\t\"18063120\",\n\t\"18063210\",\n\t\"18063220\",\n\t\"18069000\",\n\t\"19011010\",\n\t\"19011020\",\n\t\"19011030\",\n\t\"19011090\",\n\t\"19012010\",\n\t\"19012020\",\n\t\"19012090\",\n\t\"19019010\",\n\t\"19019020\",\n\t\"19019090\",\n\t\"19021100\",\n\t\"19021900\",\n\t\"19022000\",\n\t\"19023000\",\n\t\"19024000\",\n\t\"19030000\",\n\t\"19041000\",\n\t\"19042000\",\n\t\"19043000\",\n\t\"19049000\",\n\t\"19051000\",\n\t\"19052010\",\n\t\"19052090\",\n\t\"19053100\",\n\t\"19053200\",\n\t\"19054000\",\n\t\"19059010\",\n\t\"19059020\",\n\t\"19059090\",\n\t\"20011000\",\n\t\"20019000\",\n\t\"20021000\",\n\t\"20029000\",\n\t\"20031000\",\n\t\"20039000\",\n\t\"20041000\",\n\t\"20049000\",\n\t\"20051000\",\n\t\"20052000\",\n\t\"20054000\",\n\t\"20055100\",\n\t\"20055900\",\n\t\"20056000\",\n\t\"20057000\",\n\t\"20058000\",\n\t\"20059100\",\n\t\"20059900\",\n\t\"20060000\",\n\t\"20071000\",\n\t\"20079100\",\n\t\"20079910\",\n\t\"20079921\",\n\t\"20079922\",\n\t\"20079923\",\n\t\"20079924\",\n\t\"20079925\",\n\t\"20079926\",\n\t\"20079927\",\n\t\"20079929\",\n\t\"20079990\",\n\t\"20081100\",\n\t\"20081900\",\n\t\"20082010\",\n\t\"20082090\",\n\t\"20083000\",\n\t\"20084010\",\n\t\"20084090\",\n\t\"20085000\",\n\t\"20086010\",\n\t\"20086090\",\n\t\"20087010\",\n\t\"20087020\",\n\t\"20087090\",\n\t\"20088000\",\n\t\"20089100\",\n\t\"20089300\",\n\t\"20089710\",\n\t\"20089790\",\n\t\"20089900\",\n\t\"20091100\",\n\t\"20091200\",\n\t\"20091900\",\n\t\"20092100\",\n\t\"20092900\",\n\t\"20093100\",\n\t\"20093900\",\n\t\"20094100\",\n\t\"20094900\",\n\t\"20095000\",\n\t\"20096100\",\n\t\"20096900\",\n\t\"20097100\",\n\t\"20097900\",\n\t\"20098100\",\n\t\"20098911\",\n\t\"20098912\",\n\t\"20098913\",\n\t\"20098919\",\n\t\"20098921\",\n\t\"20098922\",\n\t\"20098990\",\n\t\"20099000\",\n\t\"21011110\",\n\t\"21011190\",\n\t\"21011200\",\n\t\"21012010\",\n\t\"21012020\",\n\t\"21013000\",\n\t\"21021010\",\n\t\"21021090\",\n\t\"21022000\",\n\t\"21023000\",\n\t\"21031010\",\n\t\"21031090\",\n\t\"21032010\",\n\t\"21032090\",\n\t\"21033010\",\n\t\"21033021\",\n\t\"21033029\",\n\t\"21039011\",\n\t\"21039019\",\n\t\"21039021\",\n\t\"21039029\",\n\t\"21039091\",\n\t\"21039099\",\n\t\"21041011\",\n\t\"21041019\",\n\t\"21041021\",\n\t\"21041029\",\n\t\"21042000\",\n\t\"21050010\",\n\t\"21050090\",\n\t\"21061000\",\n\t\"21069010\",\n\t\"21069021\",\n\t\"21069029\",\n\t\"21069030\",\n\t\"21069040\",\n\t\"21069050\",\n\t\"21069060\",\n\t\"21069090\",\n\t\"22011000\",\n\t\"22019000\",\n\t\"22021000\",\n\t\"22029100\",\n\t\"22029900\",\n\t\"22030000\",\n\t\"22041010\",\n\t\"22041090\",\n\t\"22042100\",\n\t\"22042211\",\n\t\"22042219\",\n\t\"22042220\",\n\t\"22042910\",\n\t\"22042920\",\n\t\"22043000\",\n\t\"22051000\",\n\t\"22059000\",\n\t\"22060010\",\n\t\"22060090\",\n\t\"22071010\",\n\t\"22071090\",\n\t\"22072011\",\n\t\"22072019\",\n\t\"22072020\",\n\t\"22082000\",\n\t\"22083010\",\n\t\"22083020\",\n\t\"22083090\",\n\t\"22084000\",\n\t\"22085000\",\n\t\"22086000\",\n\t\"22087000\",\n\t\"22089000\",\n\t\"22090000\",\n\t\"23011010\",\n\t\"23011090\",\n\t\"23012010\",\n\t\"23012090\",\n\t\"23021000\",\n\t\"23023010\",\n\t\"23023090\",\n\t\"23024000\",\n\t\"23025000\",\n\t\"23031000\",\n\t\"23032000\",\n\t\"23033000\",\n\t\"23040010\",\n\t\"23040090\",\n\t\"23050000\",\n\t\"23061000\",\n\t\"23062000\",\n\t\"23063010\",\n\t\"23063090\",\n\t\"23064100\",\n\t\"23064900\",\n\t\"23065000\",\n\t\"23066000\",\n\t\"23069010\",\n\t\"23069090\",\n\t\"23070000\",\n\t\"23080000\",\n\t\"23091000\",\n\t\"23099010\",\n\t\"23099020\",\n\t\"23099030\",\n\t\"23099040\",\n\t\"23099050\",\n\t\"23099060\",\n\t\"23099070\",\n\t\"23099090\",\n\t\"24011010\",\n\t\"24011020\",\n\t\"24011030\",\n\t\"24011040\",\n\t\"24011090\",\n\t\"24012010\",\n\t\"24012020\",\n\t\"24012030\",\n\t\"24012040\",\n\t\"24012090\",\n\t\"24013000\",\n\t\"24021000\",\n\t\"24022000\",\n\t\"24029000\",\n\t\"24031100\",\n\t\"24031900\",\n\t\"24039100\",\n\t\"24039910\",\n\t\"24039990\",\n\t\"24041100\",\n\t\"24041200\",\n\t\"24041900\",\n\t\"24049100\",\n\t\"24049200\",\n\t\"24049900\",\n\t\"25010011\",\n\t\"25010019\",\n\t\"25010020\",\n\t\"25010090\",\n\t\"25020000\",\n\t\"25030010\",\n\t\"25030090\",\n\t\"25041000\",\n\t\"25049000\",\n\t\"25051000\",\n\t\"25059000\",\n\t\"25061000\",\n\t\"25062000\",\n\t\"25070010\",\n\t\"25070090\",\n\t\"25081000\",\n\t\"25083000\",\n\t\"25084010\",\n\t\"25084090\",\n\t\"25085000\",\n\t\"25086000\",\n\t\"25087000\",\n\t\"25090000\",\n\t\"25101010\",\n\t\"25101090\",\n\t\"25102010\",\n\t\"25102090\",\n\t\"25111000\",\n\t\"25112000\",\n\t\"25120000\",\n\t\"25131000\",\n\t\"25132000\",\n\t\"25140000\",\n\t\"25151100\",\n\t\"25151210\",\n\t\"25151220\",\n\t\"25152000\",\n\t\"25161100\",\n\t\"25161200\",\n\t\"25162000\",\n\t\"25169000\",\n\t\"25171000\",\n\t\"25172000\",\n\t\"25173000\",\n\t\"25174100\",\n\t\"25174900\",\n\t\"25181000\",\n\t\"25182000\",\n\t\"25191000\",\n\t\"25199010\",\n\t\"25199090\",\n\t\"25201011\",\n\t\"25201019\",\n\t\"25201020\",\n\t\"25202010\",\n\t\"25202090\",\n\t\"25210000\",\n\t\"25221000\",\n\t\"25222000\",\n\t\"25223000\",\n\t\"25231000\",\n\t\"25232100\",\n\t\"25232910\",\n\t\"25232990\",\n\t\"25233000\",\n\t\"25239000\",\n\t\"25241000\",\n\t\"25249000\",\n\t\"25251000\",\n\t\"25252000\",\n\t\"25253000\",\n\t\"25261000\",\n\t\"25262000\",\n\t\"25280000\",\n\t\"25291000\",\n\t\"25292100\",\n\t\"25292200\",\n\t\"25293000\",\n\t\"25301010\",\n\t\"25301090\",\n\t\"25302000\",\n\t\"25309010\",\n\t\"25309020\",\n\t\"25309030\",\n\t\"25309040\",\n\t\"25309090\",\n\t\"26011100\",\n\t\"26011210\",\n\t\"26011220\",\n\t\"26011290\",\n\t\"26012000\",\n\t\"26020010\",\n\t\"26020090\",\n\t\"26030010\",\n\t\"26030090\",\n\t\"26040000\",\n\t\"26050000\",\n\t\"26060011\",\n\t\"26060012\",\n\t\"26060090\",\n\t\"26070000\",\n\t\"26080010\",\n\t\"26080090\",\n\t\"26090000\",\n\t\"26100010\",\n\t\"26100090\",\n\t\"26110000\",\n\t\"26121000\",\n\t\"26122000\",\n\t\"26131010\",\n\t\"26131090\",\n\t\"26139010\",\n\t\"26139090\",\n\t\"26140010\",\n\t\"26140090\",\n\t\"26151010\",\n\t\"26151020\",\n\t\"26151090\",\n\t\"26159000\",\n\t\"26161000\",\n\t\"26169000\",\n\t\"26171000\",\n\t\"26179000\",\n\t\"26180000\",\n\t\"26190000\",\n\t\"26201100\",\n\t\"26201900\",\n\t\"26202100\",\n\t\"26202900\",\n\t\"26203000\",\n\t\"26204000\",\n\t\"26206000\",\n\t\"26209100\",\n\t\"26209910\",\n\t\"26209990\",\n\t\"26211000\",\n\t\"26219010\",\n\t\"26219090\",\n\t\"27011100\",\n\t\"27011200\",\n\t\"27011900\",\n\t\"27012000\",\n\t\"27021000\",\n\t\"27022000\",\n\t\"27030000\",\n\t\"27040011\",\n\t\"27040012\",\n\t\"27040090\",\n\t\"27050000\",\n\t\"27060000\",\n\t\"27071000\",\n\t\"27072000\",\n\t\"27073000\",\n\t\"27074000\",\n\t\"27075010\",\n\t\"27075090\",\n\t\"27079100\",\n\t\"27079910\",\n\t\"27079990\",\n\t\"27081000\",\n\t\"27082000\",\n\t\"27090010\",\n\t\"27090090\",\n\t\"27101210\",\n\t\"27101221\",\n\t\"27101229\",\n\t\"27101230\",\n\t\"27101241\",\n\t\"27101249\",\n\t\"27101251\",\n\t\"27101259\",\n\t\"27101260\",\n\t\"27101290\",\n\t\"27101911\",\n\t\"27101919\",\n\t\"27101921\",\n\t\"27101922\",\n\t\"27101929\",\n\t\"27101931\",\n\t\"27101932\",\n\t\"27101991\",\n\t\"27101992\",\n\t\"27101993\",\n\t\"27101994\",\n\t\"27101999\",\n\t\"27102000\",\n\t\"27109110\",\n\t\"27109120\",\n\t\"27109190\",\n\t\"27109900\",\n\t\"27111100\",\n\t\"27111210\",\n\t\"27111290\",\n\t\"27111300\",\n\t\"27111400\",\n\t\"27111910\",\n\t\"27111990\",\n\t\"27112100\",\n\t\"27112910\",\n\t\"27112990\",\n\t\"27121000\",\n\t\"27122000\",\n\t\"27129000\",\n\t\"27131100\",\n\t\"27131200\",\n\t\"27132000\",\n\t\"27139000\",\n\t\"27141000\",\n\t\"27149000\",\n\t\"27150000\",\n\t\"27160000\",\n\t\"28011000\",\n\t\"28012010\",\n\t\"28012090\",\n\t\"28013000\",\n\t\"28020000\",\n\t\"28030011\",\n\t\"28030019\",\n\t\"28030090\",\n\t\"28041000\",\n\t\"28042100\",\n\t\"28042910\",\n\t\"28042990\",\n\t\"28043000\",\n\t\"28044000\",\n\t\"28045000\",\n\t\"28046100\",\n\t\"28046900\",\n\t\"28047010\",\n\t\"28047020\",\n\t\"28047030\",\n\t\"28048000\",\n\t\"28049000\",\n\t\"28051100\",\n\t\"28051200\",\n\t\"28051910\",\n\t\"28051920\",\n\t\"28051990\",\n\t\"28053010\",\n\t\"28053090\",\n\t\"28054000\",\n\t\"28061010\",\n\t\"28061020\",\n\t\"28062000\",\n\t\"28070010\",\n\t\"28070020\",\n\t\"28080010\",\n\t\"28080020\",\n\t\"28091000\",\n\t\"28092011\",\n\t\"28092019\",\n\t\"28092020\",\n\t\"28092030\",\n\t\"28092090\",\n\t\"28100010\",\n\t\"28100090\",\n\t\"28111100\",\n\t\"28111200\",\n\t\"28111910\",\n\t\"28111920\",\n\t\"28111930\",\n\t\"28111940\",\n\t\"28111990\",\n\t\"28112100\",\n\t\"28112210\",\n\t\"28112220\",\n\t\"28112230\",\n\t\"28112290\",\n\t\"28112910\",\n\t\"28112990\",\n\t\"28121100\",\n\t\"28121200\",\n\t\"28121300\",\n\t\"28121400\",\n\t\"28121500\",\n\t\"28121600\",\n\t\"28121700\",\n\t\"28121911\",\n\t\"28121919\",\n\t\"28121920\",\n\t\"28129000\",\n\t\"28131000\",\n\t\"28139010\",\n\t\"28139090\",\n\t\"28141000\",\n\t\"28142000\",\n\t\"28151100\",\n\t\"28151200\",\n\t\"28152000\",\n\t\"28153000\",\n\t\"28161010\",\n\t\"28161020\",\n\t\"28164010\",\n\t\"28164090\",\n\t\"28170010\",\n\t\"28170020\",\n\t\"28181010\",\n\t\"28181090\",\n\t\"28182010\",\n\t\"28182090\",\n\t\"28183000\",\n\t\"28191000\",\n\t\"28199010\",\n\t\"28199020\",\n\t\"28201010\",\n\t\"28201090\",\n\t\"28209010\",\n\t\"28209020\",\n\t\"28209030\",\n\t\"28209040\",\n\t\"28211011\",\n\t\"28211019\",\n\t\"28211020\",\n\t\"28211030\",\n\t\"28211090\",\n\t\"28212000\",\n\t\"28220010\",\n\t\"28220090\",\n\t\"28230010\",\n\t\"28230090\",\n\t\"28241000\",\n\t\"28249010\",\n\t\"28249090\",\n\t\"28251010\",\n\t\"28251020\",\n\t\"28252010\",\n\t\"28252020\",\n\t\"28253010\",\n\t\"28253090\",\n\t\"28254010\",\n\t\"28254090\",\n\t\"28255010\",\n\t\"28255090\",\n\t\"28256010\",\n\t\"28256020\",\n\t\"28257010\",\n\t\"28257090\",\n\t\"28258010\",\n\t\"28258090\",\n\t\"28259010\",\n\t\"28259020\",\n\t\"28259090\",\n\t\"28261200\",\n\t\"28261910\",\n\t\"28261920\",\n\t\"28261990\",\n\t\"28263000\",\n\t\"28269010\",\n\t\"28269020\",\n\t\"28269090\",\n\t\"28271000\",\n\t\"28272010\",\n\t\"28272090\",\n\t\"28273110\",\n\t\"28273190\",\n\t\"28273200\",\n\t\"28273500\",\n\t\"28273910\",\n\t\"28273920\",\n\t\"28273931\",\n\t\"28273939\",\n\t\"28273940\",\n\t\"28273950\",\n\t\"28273960\",\n\t\"28273970\",\n\t\"28273991\",\n\t\"28273992\",\n\t\"28273993\",\n\t\"28273994\",\n\t\"28273995\",\n\t\"28273996\",\n\t\"28273997\",\n\t\"28273999\",\n\t\"28274110\",\n\t\"28274120\",\n\t\"28274911\",\n\t\"28274912\",\n\t\"28274919\",\n\t\"28274921\",\n\t\"28274929\",\n\t\"28275100\",\n\t\"28275900\",\n\t\"28276011\",\n\t\"28276012\",\n\t\"28276019\",\n\t\"28276021\",\n\t\"28276029\",\n\t\"28281000\",\n\t\"28289011\",\n\t\"28289019\",\n\t\"28289020\",\n\t\"28289090\",\n\t\"28291100\",\n\t\"28291910\",\n\t\"28291920\",\n\t\"28291990\",\n\t\"28299011\",\n\t\"28299012\",\n\t\"28299019\",\n\t\"28299021\",\n\t\"28299022\",\n\t\"28299029\",\n\t\"28299031\",\n\t\"28299032\",\n\t\"28299039\",\n\t\"28299040\",\n\t\"28299050\",\n\t\"28301010\",\n\t\"28301020\",\n\t\"28309011\",\n\t\"28309012\",\n\t\"28309013\",\n\t\"28309014\",\n\t\"28309015\",\n\t\"28309016\",\n\t\"28309019\",\n\t\"28309020\",\n\t\"28311011\",\n\t\"28311019\",\n\t\"28311021\",\n\t\"28311029\",\n\t\"28319010\",\n\t\"28319090\",\n\t\"28321010\",\n\t\"28321090\",\n\t\"28322000\",\n\t\"28323010\",\n\t\"28323020\",\n\t\"28323090\",\n\t\"28331110\",\n\t\"28331190\",\n\t\"28331900\",\n\t\"28332100\",\n\t\"28332200\",\n\t\"28332400\",\n\t\"28332510\",\n\t\"28332520\",\n\t\"28332710\",\n\t\"28332790\",\n\t\"28332910\",\n\t\"28332920\",\n\t\"28332930\",\n\t\"28332940\",\n\t\"28332950\",\n\t\"28332960\",\n\t\"28332970\",\n\t\"28332990\",\n\t\"28333000\",\n\t\"28334010\",\n\t\"28334020\",\n\t\"28334090\",\n\t\"28341010\",\n\t\"28341090\",\n\t\"28342110\",\n\t\"28342190\",\n\t\"28342910\",\n\t\"28342930\",\n\t\"28342940\",\n\t\"28342990\",\n\t\"28351011\",\n\t\"28351019\",\n\t\"28351021\",\n\t\"28351029\",\n\t\"28352200\",\n\t\"28352400\",\n\t\"28352500\",\n\t\"28352600\",\n\t\"28352910\",\n\t\"28352920\",\n\t\"28352930\",\n\t\"28352940\",\n\t\"28352950\",\n\t\"28352960\",\n\t\"28352970\",\n\t\"28352980\",\n\t\"28352990\",\n\t\"28353110\",\n\t\"28353190\",\n\t\"28353910\",\n\t\"28353920\",\n\t\"28353930\",\n\t\"28353990\",\n\t\"28362010\",\n\t\"28362090\",\n\t\"28363000\",\n\t\"28364000\",\n\t\"28365000\",\n\t\"28366010\",\n\t\"28366090\",\n\t\"28369100\",\n\t\"28369200\",\n\t\"28369911\",\n\t\"28369912\",\n\t\"28369913\",\n\t\"28369919\",\n\t\"28369920\",\n\t\"28371100\",\n\t\"28371911\",\n\t\"28371912\",\n\t\"28371914\",\n\t\"28371915\",\n\t\"28371919\",\n\t\"28371920\",\n\t\"28372011\",\n\t\"28372012\",\n\t\"28372019\",\n\t\"28372021\",\n\t\"28372022\",\n\t\"28372023\",\n\t\"28372029\",\n\t\"28372090\",\n\t\"28391100\",\n\t\"28391900\",\n\t\"28399010\",\n\t\"28399020\",\n\t\"28399030\",\n\t\"28399040\",\n\t\"28399050\",\n\t\"28399090\",\n\t\"28401100\",\n\t\"28401900\",\n\t\"28402000\",\n\t\"28403000\",\n\t\"28413000\",\n\t\"28415011\",\n\t\"28415012\",\n\t\"28415013\",\n\t\"28415014\",\n\t\"28415015\",\n\t\"28415016\",\n\t\"28415019\",\n\t\"28415020\",\n\t\"28416100\",\n\t\"28416910\",\n\t\"28416920\",\n\t\"28416930\",\n\t\"28417010\",\n\t\"28417020\",\n\t\"28417090\",\n\t\"28418010\",\n\t\"28418020\",\n\t\"28418090\",\n\t\"28419011\",\n\t\"28419012\",\n\t\"28419013\",\n\t\"28419014\",\n\t\"28419015\",\n\t\"28419019\",\n\t\"28419021\",\n\t\"28419022\",\n\t\"28419029\",\n\t\"28419030\",\n\t\"28419041\",\n\t\"28419042\",\n\t\"28419043\",\n\t\"28419049\",\n\t\"28419050\",\n\t\"28419060\",\n\t\"28419070\",\n\t\"28419081\",\n\t\"28419082\",\n\t\"28419083\",\n\t\"28419089\",\n\t\"28419090\",\n\t\"28421010\",\n\t\"28421090\",\n\t\"28429000\",\n\t\"28431000\",\n\t\"28432100\",\n\t\"28432910\",\n\t\"28432990\",\n\t\"28433010\",\n\t\"28433090\",\n\t\"28439011\",\n\t\"28439019\",\n\t\"28439020\",\n\t\"28439030\",\n\t\"28439040\",\n\t\"28439090\",\n\t\"28441000\",\n\t\"28442000\",\n\t\"28443000\",\n\t\"28444100\",\n\t\"28444200\",\n\t\"28444310\",\n\t\"28444320\",\n\t\"28444330\",\n\t\"28444390\",\n\t\"28444400\",\n\t\"28445000\",\n\t\"28451000\",\n\t\"28452000\",\n\t\"28453000\",\n\t\"28454000\",\n\t\"28459000\",\n\t\"28461010\",\n\t\"28461090\",\n\t\"28469010\",\n\t\"28469020\",\n\t\"28469030\",\n\t\"28469090\",\n\t\"28470000\",\n\t\"28491000\",\n\t\"28492000\",\n\t\"28499010\",\n\t\"28499020\",\n\t\"28499030\",\n\t\"28499090\",\n\t\"28500010\",\n\t\"28500020\",\n\t\"28500090\",\n\t\"28521011\",\n\t\"28521012\",\n\t\"28521013\",\n\t\"28521014\",\n\t\"28521019\",\n\t\"28521021\",\n\t\"28521022\",\n\t\"28521023\",\n\t\"28521024\",\n\t\"28521025\",\n\t\"28521029\",\n\t\"28529000\",\n\t\"28531000\",\n\t\"28539011\",\n\t\"28539012\",\n\t\"28539013\",\n\t\"28539019\",\n\t\"28539020\",\n\t\"28539030\",\n\t\"28539090\",\n\t\"29011000\",\n\t\"29012100\",\n\t\"29012200\",\n\t\"29012300\",\n\t\"29012410\",\n\t\"29012420\",\n\t\"29012900\",\n\t\"29021100\",\n\t\"29021910\",\n\t\"29021990\",\n\t\"29022000\",\n\t\"29023000\",\n\t\"29024100\",\n\t\"29024200\",\n\t\"29024300\",\n\t\"29024400\",\n\t\"29025000\",\n\t\"29026000\",\n\t\"29027000\",\n\t\"29029010\",\n\t\"29029020\",\n\t\"29029030\",\n\t\"29029040\",\n\t\"29029090\",\n\t\"29031110\",\n\t\"29031120\",\n\t\"29031200\",\n\t\"29031300\",\n\t\"29031400\",\n\t\"29031500\",\n\t\"29031910\",\n\t\"29031920\",\n\t\"29031990\",\n\t\"29032100\",\n\t\"29032200\",\n\t\"29032300\",\n\t\"29032910\",\n\t\"29032990\",\n\t\"29034100\",\n\t\"29034200\",\n\t\"29034300\",\n\t\"29034400\",\n\t\"29034510\",\n\t\"29034520\",\n\t\"29034600\",\n\t\"29034700\",\n\t\"29034800\",\n\t\"29034900\",\n\t\"29035100\",\n\t\"29035910\",\n\t\"29035990\",\n\t\"29036100\",\n\t\"29036200\",\n\t\"29036910\",\n\t\"29036920\",\n\t\"29036990\",\n\t\"29037100\",\n\t\"29037200\",\n\t\"29037300\",\n\t\"29037400\",\n\t\"29037500\",\n\t\"29037600\",\n\t\"29037711\",\n\t\"29037712\",\n\t\"29037713\",\n\t\"29037721\",\n\t\"29037722\",\n\t\"29037723\",\n\t\"29037724\",\n\t\"29037731\",\n\t\"29037732\",\n\t\"29037733\",\n\t\"29037734\",\n\t\"29037735\",\n\t\"29037736\",\n\t\"29037737\",\n\t\"29037790\",\n\t\"29037800\",\n\t\"29037911\",\n\t\"29037912\",\n\t\"29037919\",\n\t\"29037920\",\n\t\"29037931\",\n\t\"29037939\",\n\t\"29037990\",\n\t\"29038110\",\n\t\"29038120\",\n\t\"29038130\",\n\t\"29038190\",\n\t\"29038210\",\n\t\"29038220\",\n\t\"29038230\",\n\t\"29038300\",\n\t\"29038910\",\n\t\"29038990\",\n\t\"29039110\",\n\t\"29039120\",\n\t\"29039130\",\n\t\"29039210\",\n\t\"29039220\",\n\t\"29039300\",\n\t\"29039400\",\n\t\"29039911\",\n\t\"29039912\",\n\t\"29039913\",\n\t\"29039914\",\n\t\"29039915\",\n\t\"29039916\",\n\t\"29039917\",\n\t\"29039918\",\n\t\"29039919\",\n\t\"29039921\",\n\t\"29039922\",\n\t\"29039923\",\n\t\"29039924\",\n\t\"29039929\",\n\t\"29039931\",\n\t\"29039939\",\n\t\"29039990\",\n\t\"29041011\",\n\t\"29041012\",\n\t\"29041013\",\n\t\"29041019\",\n\t\"29041020\",\n\t\"29041030\",\n\t\"29041040\",\n\t\"29041051\",\n\t\"29041052\",\n\t\"29041053\",\n\t\"29041059\",\n\t\"29041060\",\n\t\"29041090\",\n\t\"29042010\",\n\t\"29042020\",\n\t\"29042030\",\n\t\"29042041\",\n\t\"29042049\",\n\t\"29042051\",\n\t\"29042052\",\n\t\"29042059\",\n\t\"29042060\",\n\t\"29042070\",\n\t\"29042090\",\n\t\"29043100\",\n\t\"29043200\",\n\t\"29043300\",\n\t\"29043400\",\n\t\"29043500\",\n\t\"29043600\",\n\t\"29049100\",\n\t\"29049911\",\n\t\"29049912\",\n\t\"29049913\",\n\t\"29049914\",\n\t\"29049915\",\n\t\"29049916\",\n\t\"29049919\",\n\t\"29049921\",\n\t\"29049929\",\n\t\"29049930\",\n\t\"29049940\",\n\t\"29049990\",\n\t\"29051100\",\n\t\"29051210\",\n\t\"29051220\",\n\t\"29051300\",\n\t\"29051410\",\n\t\"29051420\",\n\t\"29051430\",\n\t\"29051600\",\n\t\"29051710\",\n\t\"29051720\",\n\t\"29051730\",\n\t\"29051911\",\n\t\"29051912\",\n\t\"29051919\",\n\t\"29051921\",\n\t\"29051922\",\n\t\"29051923\",\n\t\"29051929\",\n\t\"29051991\",\n\t\"29051992\",\n\t\"29051993\",\n\t\"29051994\",\n\t\"29051995\",\n\t\"29051996\",\n\t\"29051999\",\n\t\"29052210\",\n\t\"29052220\",\n\t\"29052230\",\n\t\"29052290\",\n\t\"29052910\",\n\t\"29052990\",\n\t\"29053100\",\n\t\"29053200\",\n\t\"29053910\",\n\t\"29053920\",\n\t\"29053930\",\n\t\"29053990\",\n\t\"29054100\",\n\t\"29054200\",\n\t\"29054300\",\n\t\"29054400\",\n\t\"29054500\",\n\t\"29054900\",\n\t\"29055100\",\n\t\"29055910\",\n\t\"29055990\",\n\t\"29061100\",\n\t\"29061200\",\n\t\"29061300\",\n\t\"29061910\",\n\t\"29061920\",\n\t\"29061930\",\n\t\"29061940\",\n\t\"29061950\",\n\t\"29061990\",\n\t\"29062100\",\n\t\"29062910\",\n\t\"29062920\",\n\t\"29062990\",\n\t\"29071100\",\n\t\"29071200\",\n\t\"29071300\",\n\t\"29071510\",\n\t\"29071590\",\n\t\"29071910\",\n\t\"29071920\",\n\t\"29071930\",\n\t\"29071940\",\n\t\"29071990\",\n\t\"29072100\",\n\t\"29072200\",\n\t\"29072300\",\n\t\"29072900\",\n\t\"29081100\",\n\t\"29081911\",\n\t\"29081912\",\n\t\"29081913\",\n\t\"29081914\",\n\t\"29081915\",\n\t\"29081916\",\n\t\"29081919\",\n\t\"29081921\",\n\t\"29081929\",\n\t\"29081990\",\n\t\"29089100\",\n\t\"29089200\",\n\t\"29089912\",\n\t\"29089913\",\n\t\"29089919\",\n\t\"29089921\",\n\t\"29089929\",\n\t\"29089930\",\n\t\"29089990\",\n\t\"29091100\",\n\t\"29091910\",\n\t\"29091920\",\n\t\"29091990\",\n\t\"29092000\",\n\t\"29093011\",\n\t\"29093012\",\n\t\"29093013\",\n\t\"29093014\",\n\t\"29093019\",\n\t\"29093021\",\n\t\"29093022\",\n\t\"29093023\",\n\t\"29093024\",\n\t\"29093025\",\n\t\"29093029\",\n\t\"29094100\",\n\t\"29094310\",\n\t\"29094320\",\n\t\"29094411\",\n\t\"29094412\",\n\t\"29094413\",\n\t\"29094419\",\n\t\"29094421\",\n\t\"29094429\",\n\t\"29094910\",\n\t\"29094921\",\n\t\"29094922\",\n\t\"29094923\",\n\t\"29094924\",\n\t\"29094929\",\n\t\"29094931\",\n\t\"29094932\",\n\t\"29094939\",\n\t\"29094941\",\n\t\"29094949\",\n\t\"29094950\",\n\t\"29094990\",\n\t\"29095011\",\n\t\"29095012\",\n\t\"29095013\",\n\t\"29095019\",\n\t\"29095090\",\n\t\"29096011\",\n\t\"29096012\",\n\t\"29096013\",\n\t\"29096019\",\n\t\"29096090\",\n\t\"29101000\",\n\t\"29102000\",\n\t\"29103000\",\n\t\"29104000\",\n\t\"29105000\",\n\t\"29109010\",\n\t\"29109090\",\n\t\"29110010\",\n\t\"29110090\",\n\t\"29121100\",\n\t\"29121200\",\n\t\"29121911\",\n\t\"29121912\",\n\t\"29121919\",\n\t\"29121921\",\n\t\"29121922\",\n\t\"29121923\",\n\t\"29121929\",\n\t\"29121991\",\n\t\"29121999\",\n\t\"29122100\",\n\t\"29122910\",\n\t\"29122920\",\n\t\"29122990\",\n\t\"29124100\",\n\t\"29124200\",\n\t\"29124910\",\n\t\"29124920\",\n\t\"29124930\",\n\t\"29124941\",\n\t\"29124949\",\n\t\"29124990\",\n\t\"29125000\",\n\t\"29126000\",\n\t\"29130010\",\n\t\"29130090\",\n\t\"29141100\",\n\t\"29141200\",\n\t\"29141300\",\n\t\"29141910\",\n\t\"29141921\",\n\t\"29141922\",\n\t\"29141923\",\n\t\"29141929\",\n\t\"29141930\",\n\t\"29141940\",\n\t\"29141950\",\n\t\"29141990\",\n\t\"29142210\",\n\t\"29142220\",\n\t\"29142310\",\n\t\"29142320\",\n\t\"29142910\",\n\t\"29142920\",\n\t\"29142990\",\n\t\"29143100\",\n\t\"29143910\",\n\t\"29143990\",\n\t\"29144010\",\n\t\"29144091\",\n\t\"29144099\",\n\t\"29145010\",\n\t\"29145020\",\n\t\"29145090\",\n\t\"29146100\",\n\t\"29146200\",\n\t\"29146910\",\n\t\"29146920\",\n\t\"29146990\",\n\t\"29147100\",\n\t\"29147911\",\n\t\"29147919\",\n\t\"29147921\",\n\t\"29147922\",\n\t\"29147929\",\n\t\"29147990\",\n\t\"29151100\",\n\t\"29151210\",\n\t\"29151290\",\n\t\"29151310\",\n\t\"29151390\",\n\t\"29152100\",\n\t\"29152400\",\n\t\"29152910\",\n\t\"29152920\",\n\t\"29152990\",\n\t\"29153100\",\n\t\"29153200\",\n\t\"29153300\",\n\t\"29153600\",\n\t\"29153910\",\n\t\"29153921\",\n\t\"29153929\",\n\t\"29153931\",\n\t\"29153932\",\n\t\"29153939\",\n\t\"29153941\",\n\t\"29153942\",\n\t\"29153951\",\n\t\"29153952\",\n\t\"29153953\",\n\t\"29153954\",\n\t\"29153955\",\n\t\"29153961\",\n\t\"29153962\",\n\t\"29153963\",\n\t\"29153991\",\n\t\"29153992\",\n\t\"29153993\",\n\t\"29153994\",\n\t\"29153999\",\n\t\"29154010\",\n\t\"29154020\",\n\t\"29154090\",\n\t\"29155010\",\n\t\"29155020\",\n\t\"29155030\",\n\t\"29156011\",\n\t\"29156012\",\n\t\"29156019\",\n\t\"29156021\",\n\t\"29156029\",\n\t\"29157011\",\n\t\"29157019\",\n\t\"29157020\",\n\t\"29157031\",\n\t\"29157039\",\n\t\"29157040\",\n\t\"29159010\",\n\t\"29159021\",\n\t\"29159022\",\n\t\"29159023\",\n\t\"29159024\",\n\t\"29159029\",\n\t\"29159031\",\n\t\"29159032\",\n\t\"29159033\",\n\t\"29159039\",\n\t\"29159041\",\n\t\"29159043\",\n\t\"29159049\",\n\t\"29159050\",\n\t\"29159060\",\n\t\"29159070\",\n\t\"29159090\",\n\t\"29161110\",\n\t\"29161120\",\n\t\"29161210\",\n\t\"29161220\",\n\t\"29161230\",\n\t\"29161240\",\n\t\"29161290\",\n\t\"29161310\",\n\t\"29161320\",\n\t\"29161410\",\n\t\"29161420\",\n\t\"29161430\",\n\t\"29161490\",\n\t\"29161511\",\n\t\"29161519\",\n\t\"29161520\",\n\t\"29161600\",\n\t\"29161911\",\n\t\"29161919\",\n\t\"29161921\",\n\t\"29161922\",\n\t\"29161923\",\n\t\"29161929\",\n\t\"29161990\",\n\t\"29162011\",\n\t\"29162012\",\n\t\"29162013\",\n\t\"29162014\",\n\t\"29162015\",\n\t\"29162019\",\n\t\"29162090\",\n\t\"29163110\",\n\t\"29163121\",\n\t\"29163122\",\n\t\"29163129\",\n\t\"29163131\",\n\t\"29163132\",\n\t\"29163139\",\n\t\"29163210\",\n\t\"29163220\",\n\t\"29163400\",\n\t\"29163910\",\n\t\"29163920\",\n\t\"29163930\",\n\t\"29163940\",\n\t\"29163990\",\n\t\"29171110\",\n\t\"29171120\",\n\t\"29171210\",\n\t\"29171220\",\n\t\"29171310\",\n\t\"29171321\",\n\t\"29171322\",\n\t\"29171323\",\n\t\"29171329\",\n\t\"29171400\",\n\t\"29171910\",\n\t\"29171921\",\n\t\"29171922\",\n\t\"29171930\",\n\t\"29171990\",\n\t\"29172000\",\n\t\"29173200\",\n\t\"29173300\",\n\t\"29173400\",\n\t\"29173500\",\n\t\"29173600\",\n\t\"29173700\",\n\t\"29173911\",\n\t\"29173919\",\n\t\"29173920\",\n\t\"29173931\",\n\t\"29173939\",\n\t\"29173940\",\n\t\"29173950\",\n\t\"29173990\",\n\t\"29181100\",\n\t\"29181200\",\n\t\"29181310\",\n\t\"29181320\",\n\t\"29181400\",\n\t\"29181500\",\n\t\"29181610\",\n\t\"29181690\",\n\t\"29181700\",\n\t\"29181800\",\n\t\"29181910\",\n\t\"29181921\",\n\t\"29181922\",\n\t\"29181929\",\n\t\"29181930\",\n\t\"29181942\",\n\t\"29181943\",\n\t\"29181990\",\n\t\"29182110\",\n\t\"29182120\",\n\t\"29182211\",\n\t\"29182212\",\n\t\"29182219\",\n\t\"29182220\",\n\t\"29182300\",\n\t\"29182910\",\n\t\"29182921\",\n\t\"29182922\",\n\t\"29182923\",\n\t\"29182929\",\n\t\"29182930\",\n\t\"29182940\",\n\t\"29182950\",\n\t\"29182990\",\n\t\"29183010\",\n\t\"29183020\",\n\t\"29183031\",\n\t\"29183032\",\n\t\"29183033\",\n\t\"29183039\",\n\t\"29183040\",\n\t\"29183090\",\n\t\"29189100\",\n\t\"29189911\",\n\t\"29189912\",\n\t\"29189919\",\n\t\"29189921\",\n\t\"29189929\",\n\t\"29189930\",\n\t\"29189940\",\n\t\"29189950\",\n\t\"29189960\",\n\t\"29189991\",\n\t\"29189992\",\n\t\"29189993\",\n\t\"29189994\",\n\t\"29189999\",\n\t\"29191000\",\n\t\"29199010\",\n\t\"29199020\",\n\t\"29199030\",\n\t\"29199040\",\n\t\"29199050\",\n\t\"29199060\",\n\t\"29199090\",\n\t\"29201110\",\n\t\"29201120\",\n\t\"29201910\",\n\t\"29201920\",\n\t\"29201990\",\n\t\"29202100\",\n\t\"29202200\",\n\t\"29202300\",\n\t\"29202400\",\n\t\"29202910\",\n\t\"29202920\",\n\t\"29202930\",\n\t\"29202940\",\n\t\"29202950\",\n\t\"29202990\",\n\t\"29203000\",\n\t\"29209022\",\n\t\"29209029\",\n\t\"29209031\",\n\t\"29209032\",\n\t\"29209033\",\n\t\"29209039\",\n\t\"29209041\",\n\t\"29209042\",\n\t\"29209049\",\n\t\"29209051\",\n\t\"29209059\",\n\t\"29209090\",\n\t\"29211111\",\n\t\"29211112\",\n\t\"29211121\",\n\t\"29211122\",\n\t\"29211123\",\n\t\"29211129\",\n\t\"29211131\",\n\t\"29211132\",\n\t\"29211139\",\n\t\"29211200\",\n\t\"29211300\",\n\t\"29211400\",\n\t\"29211911\",\n\t\"29211912\",\n\t\"29211913\",\n\t\"29211914\",\n\t\"29211915\",\n\t\"29211919\",\n\t\"29211921\",\n\t\"29211922\",\n\t\"29211923\",\n\t\"29211924\",\n\t\"29211929\",\n\t\"29211931\",\n\t\"29211939\",\n\t\"29211941\",\n\t\"29211949\",\n\t\"29211991\",\n\t\"29211992\",\n\t\"29211993\",\n\t\"29211994\",\n\t\"29211999\",\n\t\"29212100\",\n\t\"29212200\",\n\t\"29212910\",\n\t\"29212920\",\n\t\"29212990\",\n\t\"29213011\",\n\t\"29213012\",\n\t\"29213019\",\n\t\"29213020\",\n\t\"29213090\",\n\t\"29214100\",\n\t\"29214211\",\n\t\"29214219\",\n\t\"29214221\",\n\t\"29214229\",\n\t\"29214231\",\n\t\"29214239\",\n\t\"29214241\",\n\t\"29214249\",\n\t\"29214290\",\n\t\"29214311\",\n\t\"29214319\",\n\t\"29214321\",\n\t\"29214322\",\n\t\"29214323\",\n\t\"29214329\",\n\t\"29214410\",\n\t\"29214421\",\n\t\"29214422\",\n\t\"29214429\",\n\t\"29214500\",\n\t\"29214610\",\n\t\"29214620\",\n\t\"29214630\",\n\t\"29214640\",\n\t\"29214650\",\n\t\"29214660\",\n\t\"29214670\",\n\t\"29214680\",\n\t\"29214690\",\n\t\"29214910\",\n\t\"29214921\",\n\t\"29214922\",\n\t\"29214929\",\n\t\"29214931\",\n\t\"29214939\",\n\t\"29214990\",\n\t\"29215111\",\n\t\"29215112\",\n\t\"29215119\",\n\t\"29215120\",\n\t\"29215131\",\n\t\"29215132\",\n\t\"29215133\",\n\t\"29215134\",\n\t\"29215135\",\n\t\"29215139\",\n\t\"29215190\",\n\t\"29215911\",\n\t\"29215919\",\n\t\"29215921\",\n\t\"29215929\",\n\t\"29215931\",\n\t\"29215932\",\n\t\"29215939\",\n\t\"29215990\",\n\t\"29221100\",\n\t\"29221200\",\n\t\"29221400\",\n\t\"29221500\",\n\t\"29221600\",\n\t\"29221700\",\n\t\"29221800\",\n\t\"29221911\",\n\t\"29221912\",\n\t\"29221913\",\n\t\"29221919\",\n\t\"29221921\",\n\t\"29221929\",\n\t\"29221931\",\n\t\"29221939\",\n\t\"29221941\",\n\t\"29221949\",\n\t\"29221951\",\n\t\"29221952\",\n\t\"29221959\",\n\t\"29221971\",\n\t\"29221979\",\n\t\"29221981\",\n\t\"29221989\",\n\t\"29221991\",\n\t\"29221992\",\n\t\"29221993\",\n\t\"29221994\",\n\t\"29221995\",\n\t\"29221996\",\n\t\"29221999\",\n\t\"29222100\",\n\t\"29222911\",\n\t\"29222919\",\n\t\"29222920\",\n\t\"29222990\",\n\t\"29223111\",\n\t\"29223112\",\n\t\"29223120\",\n\t\"29223130\",\n\t\"29223910\",\n\t\"29223921\",\n\t\"29223929\",\n\t\"29223990\",\n\t\"29224110\",\n\t\"29224190\",\n\t\"29224210\",\n\t\"29224220\",\n\t\"29224300\",\n\t\"29224410\",\n\t\"29224420\",\n\t\"29224910\",\n\t\"29224920\",\n\t\"29224931\",\n\t\"29224932\",\n\t\"29224940\",\n\t\"29224951\",\n\t\"29224952\",\n\t\"29224959\",\n\t\"29224961\",\n\t\"29224962\",\n\t\"29224963\",\n\t\"29224964\",\n\t\"29224969\",\n\t\"29224990\",\n\t\"29225011\",\n\t\"29225019\",\n\t\"29225031\",\n\t\"29225032\",\n\t\"29225039\",\n\t\"29225091\",\n\t\"29225099\",\n\t\"29231000\",\n\t\"29232000\",\n\t\"29233000\",\n\t\"29234000\",\n\t\"29239010\",\n\t\"29239020\",\n\t\"29239030\",\n\t\"29239040\",\n\t\"29239050\",\n\t\"29239060\",\n\t\"29239090\",\n\t\"29241100\",\n\t\"29241210\",\n\t\"29241220\",\n\t\"29241230\",\n\t\"29241911\",\n\t\"29241919\",\n\t\"29241921\",\n\t\"29241922\",\n\t\"29241929\",\n\t\"29241931\",\n\t\"29241932\",\n\t\"29241939\",\n\t\"29241942\",\n\t\"29241949\",\n\t\"29241991\",\n\t\"29241992\",\n\t\"29241993\",\n\t\"29241994\",\n\t\"29241999\",\n\t\"29242111\",\n\t\"29242119\",\n\t\"29242120\",\n\t\"29242190\",\n\t\"29242300\",\n\t\"29242400\",\n\t\"29242500\",\n\t\"29242911\",\n\t\"29242912\",\n\t\"29242913\",\n\t\"29242914\",\n\t\"29242915\",\n\t\"29242919\",\n\t\"29242920\",\n\t\"29242931\",\n\t\"29242932\",\n\t\"29242939\",\n\t\"29242941\",\n\t\"29242943\",\n\t\"29242944\",\n\t\"29242945\",\n\t\"29242946\",\n\t\"29242947\",\n\t\"29242949\",\n\t\"29242951\",\n\t\"29242952\",\n\t\"29242959\",\n\t\"29242961\",\n\t\"29242962\",\n\t\"29242963\",\n\t\"29242964\",\n\t\"29242969\",\n\t\"29242991\",\n\t\"29242992\",\n\t\"29242993\",\n\t\"29242994\",\n\t\"29242995\",\n\t\"29242996\",\n\t\"29242999\",\n\t\"29251100\",\n\t\"29251200\",\n\t\"29251910\",\n\t\"29251990\",\n\t\"29252100\",\n\t\"29252911\",\n\t\"29252919\",\n\t\"29252921\",\n\t\"29252922\",\n\t\"29252923\",\n\t\"29252929\",\n\t\"29252930\",\n\t\"29252940\",\n\t\"29252950\",\n\t\"29252990\",\n\t\"29261000\",\n\t\"29262000\",\n\t\"29263011\",\n\t\"29263012\",\n\t\"29263020\",\n\t\"29264000\",\n\t\"29269011\",\n\t\"29269012\",\n\t\"29269019\",\n\t\"29269021\",\n\t\"29269022\",\n\t\"29269023\",\n\t\"29269024\",\n\t\"29269025\",\n\t\"29269026\",\n\t\"29269029\",\n\t\"29269030\",\n\t\"29269091\",\n\t\"29269092\",\n\t\"29269093\",\n\t\"29269095\",\n\t\"29269096\",\n\t\"29269099\",\n\t\"29270010\",\n\t\"29270021\",\n\t\"29270029\",\n\t\"29270030\",\n\t\"29280011\",\n\t\"29280019\",\n\t\"29280020\",\n\t\"29280030\",\n\t\"29280041\",\n\t\"29280042\",\n\t\"29280090\",\n\t\"29291010\",\n\t\"29291021\",\n\t\"29291029\",\n\t\"29291030\",\n\t\"29291090\",\n\t\"29299011\",\n\t\"29299012\",\n\t\"29299019\",\n\t\"29299031\",\n\t\"29299039\",\n\t\"29299040\",\n\t\"29299050\",\n\t\"29299060\",\n\t\"29299090\",\n\t\"29301000\",\n\t\"29302011\",\n\t\"29302012\",\n\t\"29302013\",\n\t\"29302019\",\n\t\"29302021\",\n\t\"29302022\",\n\t\"29302023\",\n\t\"29302024\",\n\t\"29302029\",\n\t\"29303011\",\n\t\"29303012\",\n\t\"29303019\",\n\t\"29303021\",\n\t\"29303022\",\n\t\"29303029\",\n\t\"29303090\",\n\t\"29304010\",\n\t\"29304090\",\n\t\"29306000\",\n\t\"29307000\",\n\t\"29308010\",\n\t\"29308020\",\n\t\"29308030\",\n\t\"29309011\",\n\t\"29309012\",\n\t\"29309013\",\n\t\"29309019\",\n\t\"29309021\",\n\t\"29309022\",\n\t\"29309023\",\n\t\"29309029\",\n\t\"29309031\",\n\t\"29309032\",\n\t\"29309033\",\n\t\"29309034\",\n\t\"29309035\",\n\t\"29309036\",\n\t\"29309037\",\n\t\"29309039\",\n\t\"29309041\",\n\t\"29309042\",\n\t\"29309043\",\n\t\"29309049\",\n\t\"29309051\",\n\t\"29309052\",\n\t\"29309053\",\n\t\"29309054\",\n\t\"29309057\",\n\t\"29309059\",\n\t\"29309061\",\n\t\"29309069\",\n\t\"29309071\",\n\t\"29309072\",\n\t\"29309079\",\n\t\"29309081\",\n\t\"29309082\",\n\t\"29309083\",\n\t\"29309084\",\n\t\"29309085\",\n\t\"29309086\",\n\t\"29309087\",\n\t\"29309088\",\n\t\"29309089\",\n\t\"29309091\",\n\t\"29309093\",\n\t\"29309094\",\n\t\"29309095\",\n\t\"29309096\",\n\t\"29309097\",\n\t\"29309098\",\n\t\"29309099\",\n\t\"29311000\",\n\t\"29312000\",\n\t\"29314100\",\n\t\"29314200\",\n\t\"29314300\",\n\t\"29314400\",\n\t\"29314500\",\n\t\"29314600\",\n\t\"29314700\",\n\t\"29314800\",\n\t\"29314911\",\n\t\"29314912\",\n\t\"29314913\",\n\t\"29314914\",\n\t\"29314915\",\n\t\"29314916\",\n\t\"29314920\",\n\t\"29314931\",\n\t\"29314932\",\n\t\"29314939\",\n\t\"29314940\",\n\t\"29314990\",\n\t\"29315100\",\n\t\"29315200\",\n\t\"29315300\",\n\t\"29315400\",\n\t\"29315911\",\n\t\"29315912\",\n\t\"29315913\",\n\t\"29315991\",\n\t\"29315992\",\n\t\"29315993\",\n\t\"29315994\",\n\t\"29315995\",\n\t\"29315996\",\n\t\"29315998\",\n\t\"29315999\",\n\t\"29319021\",\n\t\"29319029\",\n\t\"29319041\",\n\t\"29319042\",\n\t\"29319043\",\n\t\"29319044\",\n\t\"29319045\",\n\t\"29319046\",\n\t\"29319049\",\n\t\"29319051\",\n\t\"29319052\",\n\t\"29319053\",\n\t\"29319054\",\n\t\"29319059\",\n\t\"29319061\",\n\t\"29319062\",\n\t\"29319069\",\n\t\"29319090\",\n\t\"29321100\",\n\t\"29321200\",\n\t\"29321310\",\n\t\"29321320\",\n\t\"29321400\",\n\t\"29321910\",\n\t\"29321920\",\n\t\"29321930\",\n\t\"29321940\",\n\t\"29321950\",\n\t\"29321990\",\n\t\"29322000\",\n\t\"29329100\",\n\t\"29329200\",\n\t\"29329300\",\n\t\"29329400\",\n\t\"29329500\",\n\t\"29329600\",\n\t\"29329911\",\n\t\"29329912\",\n\t\"29329913\",\n\t\"29329991\",\n\t\"29329992\",\n\t\"29329993\",\n\t\"29329994\",\n\t\"29329999\",\n\t\"29331111\",\n\t\"29331112\",\n\t\"29331119\",\n\t\"29331120\",\n\t\"29331190\",\n\t\"29331911\",\n\t\"29331919\",\n\t\"29331990\",\n\t\"29332110\",\n\t\"29332121\",\n\t\"29332129\",\n\t\"29332190\",\n\t\"29332911\",\n\t\"29332912\",\n\t\"29332913\",\n\t\"29332919\",\n\t\"29332921\",\n\t\"29332922\",\n\t\"29332923\",\n\t\"29332924\",\n\t\"29332925\",\n\t\"29332929\",\n\t\"29332930\",\n\t\"29332940\",\n\t\"29332991\",\n\t\"29332992\",\n\t\"29332993\",\n\t\"29332994\",\n\t\"29332995\",\n\t\"29332999\",\n\t\"29333110\",\n\t\"29333120\",\n\t\"29333200\",\n\t\"29333311\",\n\t\"29333312\",\n\t\"29333319\",\n\t\"29333321\",\n\t\"29333322\",\n\t\"29333329\",\n\t\"29333331\",\n\t\"29333332\",\n\t\"29333339\",\n\t\"29333341\",\n\t\"29333342\",\n\t\"29333349\",\n\t\"29333351\",\n\t\"29333352\",\n\t\"29333359\",\n\t\"29333361\",\n\t\"29333362\",\n\t\"29333363\",\n\t\"29333369\",\n\t\"29333371\",\n\t\"29333372\",\n\t\"29333379\",\n\t\"29333381\",\n\t\"29333382\",\n\t\"29333383\",\n\t\"29333384\",\n\t\"29333389\",\n\t\"29333391\",\n\t\"29333392\",\n\t\"29333393\",\n\t\"29333394\",\n\t\"29333399\",\n\t\"29333400\",\n\t\"29333500\",\n\t\"29333600\",\n\t\"29333700\",\n\t\"29333912\",\n\t\"29333913\",\n\t\"29333914\",\n\t\"29333915\",\n\t\"29333919\",\n\t\"29333921\",\n\t\"29333922\",\n\t\"29333923\",\n\t\"29333924\",\n\t\"29333925\",\n\t\"29333929\",\n\t\"29333931\",\n\t\"29333932\",\n\t\"29333933\",\n\t\"29333934\",\n\t\"29333935\",\n\t\"29333936\",\n\t\"29333937\",\n\t\"29333939\",\n\t\"29333941\",\n\t\"29333942\",\n\t\"29333943\",\n\t\"29333944\",\n\t\"29333945\",\n\t\"29333946\",\n\t\"29333948\",\n\t\"29333949\",\n\t\"29333981\",\n\t\"29333982\",\n\t\"29333983\",\n\t\"29333984\",\n\t\"29333989\",\n\t\"29333991\",\n\t\"29333992\",\n\t\"29333993\",\n\t\"29333994\",\n\t\"29333999\",\n\t\"29334110\",\n\t\"29334120\",\n\t\"29334911\",\n\t\"29334912\",\n\t\"29334913\",\n\t\"29334919\",\n\t\"29334920\",\n\t\"29334930\",\n\t\"29334940\",\n\t\"29334990\",\n\t\"29335200\",\n\t\"29335311\",\n\t\"29335312\",\n\t\"29335321\",\n\t\"29335322\",\n\t\"29335323\",\n\t\"29335330\",\n\t\"29335340\",\n\t\"29335350\",\n\t\"29335360\",\n\t\"29335371\",\n\t\"29335372\",\n\t\"29335380\",\n\t\"29335400\",\n\t\"29335510\",\n\t\"29335520\",\n\t\"29335530\",\n\t\"29335540\",\n\t\"29335911\",\n\t\"29335912\",\n\t\"29335913\",\n\t\"29335914\",\n\t\"29335915\",\n\t\"29335916\",\n\t\"29335919\",\n\t\"29335921\",\n\t\"29335922\",\n\t\"29335923\",\n\t\"29335929\",\n\t\"29335931\",\n\t\"29335932\",\n\t\"29335933\",\n\t\"29335934\",\n\t\"29335935\",\n\t\"29335939\",\n\t\"29335941\",\n\t\"29335942\",\n\t\"29335943\",\n\t\"29335944\",\n\t\"29335945\",\n\t\"29335949\",\n\t\"29335991\",\n\t\"29335992\",\n\t\"29335999\",\n\t\"29336100\",\n\t\"29336911\",\n\t\"29336912\",\n\t\"29336913\",\n\t\"29336914\",\n\t\"29336915\",\n\t\"29336916\",\n\t\"29336919\",\n\t\"29336921\",\n\t\"29336922\",\n\t\"29336923\",\n\t\"29336929\",\n\t\"29336991\",\n\t\"29336992\",\n\t\"29336999\",\n\t\"29337100\",\n\t\"29337210\",\n\t\"29337220\",\n\t\"29337910\",\n\t\"29337990\",\n\t\"29339111\",\n\t\"29339112\",\n\t\"29339113\",\n\t\"29339114\",\n\t\"29339115\",\n\t\"29339119\",\n\t\"29339121\",\n\t\"29339122\",\n\t\"29339123\",\n\t\"29339129\",\n\t\"29339131\",\n\t\"29339132\",\n\t\"29339133\",\n\t\"29339134\",\n\t\"29339139\",\n\t\"29339141\",\n\t\"29339142\",\n\t\"29339143\",\n\t\"29339149\",\n\t\"29339151\",\n\t\"29339152\",\n\t\"29339153\",\n\t\"29339159\",\n\t\"29339161\",\n\t\"29339162\",\n\t\"29339163\",\n\t\"29339164\",\n\t\"29339169\",\n\t\"29339171\",\n\t\"29339172\",\n\t\"29339173\",\n\t\"29339179\",\n\t\"29339181\",\n\t\"29339182\",\n\t\"29339183\",\n\t\"29339189\",\n\t\"29339200\",\n\t\"29339911\",\n\t\"29339912\",\n\t\"29339913\",\n\t\"29339919\",\n\t\"29339920\",\n\t\"29339931\",\n\t\"29339932\",\n\t\"29339933\",\n\t\"29339934\",\n\t\"29339935\",\n\t\"29339939\",\n\t\"29339941\",\n\t\"29339942\",\n\t\"29339943\",\n\t\"29339944\",\n\t\"29339945\",\n\t\"29339946\",\n\t\"29339947\",\n\t\"29339949\",\n\t\"29339951\",\n\t\"29339952\",\n\t\"29339953\",\n\t\"29339954\",\n\t\"29339955\",\n\t\"29339956\",\n\t\"29339959\",\n\t\"29339961\",\n\t\"29339962\",\n\t\"29339963\",\n\t\"29339969\",\n\t\"29339991\",\n\t\"29339992\",\n\t\"29339993\",\n\t\"29339995\",\n\t\"29339996\",\n\t\"29339999\",\n\t\"29341010\",\n\t\"29341020\",\n\t\"29341030\",\n\t\"29341090\",\n\t\"29342010\",\n\t\"29342020\",\n\t\"29342031\",\n\t\"29342032\",\n\t\"29342033\",\n\t\"29342034\",\n\t\"29342039\",\n\t\"29342040\",\n\t\"29342090\",\n\t\"29343010\",\n\t\"29343020\",\n\t\"29343030\",\n\t\"29343090\",\n\t\"29349111\",\n\t\"29349112\",\n\t\"29349121\",\n\t\"29349122\",\n\t\"29349123\",\n\t\"29349129\",\n\t\"29349131\",\n\t\"29349132\",\n\t\"29349133\",\n\t\"29349141\",\n\t\"29349142\",\n\t\"29349149\",\n\t\"29349150\",\n\t\"29349160\",\n\t\"29349170\",\n\t\"29349200\",\n\t\"29349911\",\n\t\"29349912\",\n\t\"29349913\",\n\t\"29349914\",\n\t\"29349915\",\n\t\"29349919\",\n\t\"29349922\",\n\t\"29349923\",\n\t\"29349924\",\n\t\"29349925\",\n\t\"29349926\",\n\t\"29349927\",\n\t\"29349929\",\n\t\"29349931\",\n\t\"29349932\",\n\t\"29349933\",\n\t\"29349934\",\n\t\"29349935\",\n\t\"29349939\",\n\t\"29349941\",\n\t\"29349942\",\n\t\"29349943\",\n\t\"29349944\",\n\t\"29349945\",\n\t\"29349946\",\n\t\"29349949\",\n\t\"29349951\",\n\t\"29349952\",\n\t\"29349953\",\n\t\"29349954\",\n\t\"29349959\",\n\t\"29349961\",\n\t\"29349969\",\n\t\"29349991\",\n\t\"29349992\",\n\t\"29349993\",\n\t\"29349999\",\n\t\"29351000\",\n\t\"29352000\",\n\t\"29353000\",\n\t\"29354000\",\n\t\"29355000\",\n\t\"29359011\",\n\t\"29359012\",\n\t\"29359013\",\n\t\"29359014\",\n\t\"29359015\",\n\t\"29359019\",\n\t\"29359021\",\n\t\"29359022\",\n\t\"29359023\",\n\t\"29359024\",\n\t\"29359025\",\n\t\"29359029\",\n\t\"29359091\",\n\t\"29359092\",\n\t\"29359093\",\n\t\"29359094\",\n\t\"29359095\",\n\t\"29359096\",\n\t\"29359099\",\n\t\"29362111\",\n\t\"29362112\",\n\t\"29362113\",\n\t\"29362119\",\n\t\"29362190\",\n\t\"29362210\",\n\t\"29362220\",\n\t\"29362290\",\n\t\"29362310\",\n\t\"29362320\",\n\t\"29362390\",\n\t\"29362410\",\n\t\"29362490\",\n\t\"29362510\",\n\t\"29362520\",\n\t\"29362590\",\n\t\"29362610\",\n\t\"29362620\",\n\t\"29362630\",\n\t\"29362690\",\n\t\"29362710\",\n\t\"29362720\",\n\t\"29362790\",\n\t\"29362811\",\n\t\"29362812\",\n\t\"29362819\",\n\t\"29362890\",\n\t\"29362911\",\n\t\"29362919\",\n\t\"29362921\",\n\t\"29362929\",\n\t\"29362931\",\n\t\"29362939\",\n\t\"29362940\",\n\t\"29362951\",\n\t\"29362952\",\n\t\"29362953\",\n\t\"29362959\",\n\t\"29362990\",\n\t\"29369000\",\n\t\"29371100\",\n\t\"29371200\",\n\t\"29371910\",\n\t\"29371920\",\n\t\"29371930\",\n\t\"29371940\",\n\t\"29371950\",\n\t\"29371990\",\n\t\"29372110\",\n\t\"29372120\",\n\t\"29372130\",\n\t\"29372140\",\n\t\"29372210\",\n\t\"29372221\",\n\t\"29372229\",\n\t\"29372231\",\n\t\"29372239\",\n\t\"29372290\",\n\t\"29372310\",\n\t\"29372321\",\n\t\"29372322\",\n\t\"29372329\",\n\t\"29372331\",\n\t\"29372339\",\n\t\"29372341\",\n\t\"29372342\",\n\t\"29372349\",\n\t\"29372351\",\n\t\"29372359\",\n\t\"29372360\",\n\t\"29372370\",\n\t\"29372391\",\n\t\"29372392\",\n\t\"29372399\",\n\t\"29372910\",\n\t\"29372920\",\n\t\"29372931\",\n\t\"29372939\",\n\t\"29372940\",\n\t\"29372950\",\n\t\"29372960\",\n\t\"29372990\",\n\t\"29375000\",\n\t\"29379010\",\n\t\"29379030\",\n\t\"29379040\",\n\t\"29379090\",\n\t\"29381000\",\n\t\"29389010\",\n\t\"29389020\",\n\t\"29389090\",\n\t\"29391110\",\n\t\"29391121\",\n\t\"29391122\",\n\t\"29391123\",\n\t\"29391131\",\n\t\"29391132\",\n\t\"29391140\",\n\t\"29391151\",\n\t\"29391152\",\n\t\"29391153\",\n\t\"29391161\",\n\t\"29391162\",\n\t\"29391169\",\n\t\"29391170\",\n\t\"29391181\",\n\t\"29391182\",\n\t\"29391191\",\n\t\"29391192\",\n\t\"29391900\",\n\t\"29392000\",\n\t\"29393010\",\n\t\"29393020\",\n\t\"29394100\",\n\t\"29394200\",\n\t\"29394300\",\n\t\"29394400\",\n\t\"29394510\",\n\t\"29394520\",\n\t\"29394530\",\n\t\"29394900\",\n\t\"29395100\",\n\t\"29395910\",\n\t\"29395920\",\n\t\"29395990\",\n\t\"29396100\",\n\t\"29396200\",\n\t\"29396300\",\n\t\"29396911\",\n\t\"29396919\",\n\t\"29396921\",\n\t\"29396929\",\n\t\"29396931\",\n\t\"29396939\",\n\t\"29396941\",\n\t\"29396942\",\n\t\"29396949\",\n\t\"29396951\",\n\t\"29396952\",\n\t\"29396959\",\n\t\"29396990\",\n\t\"29397210\",\n\t\"29397220\",\n\t\"29397290\",\n\t\"29397911\",\n\t\"29397919\",\n\t\"29397920\",\n\t\"29397931\",\n\t\"29397939\",\n\t\"29397940\",\n\t\"29397990\",\n\t\"29398010\",\n\t\"29398090\",\n\t\"29400011\",\n\t\"29400012\",\n\t\"29400013\",\n\t\"29400019\",\n\t\"29400021\",\n\t\"29400022\",\n\t\"29400023\",\n\t\"29400029\",\n\t\"29400092\",\n\t\"29400093\",\n\t\"29400094\",\n\t\"29400099\",\n\t\"29411010\",\n\t\"29411020\",\n\t\"29411031\",\n\t\"29411039\",\n\t\"29411041\",\n\t\"29411042\",\n\t\"29411043\",\n\t\"29411049\",\n\t\"29411090\",\n\t\"29412010\",\n\t\"29412090\",\n\t\"29413010\",\n\t\"29413020\",\n\t\"29413031\",\n\t\"29413032\",\n\t\"29413090\",\n\t\"29414011\",\n\t\"29414019\",\n\t\"29414020\",\n\t\"29414090\",\n\t\"29415010\",\n\t\"29415020\",\n\t\"29415090\",\n\t\"29419011\",\n\t\"29419012\",\n\t\"29419013\",\n\t\"29419019\",\n\t\"29419021\",\n\t\"29419022\",\n\t\"29419029\",\n\t\"29419031\",\n\t\"29419032\",\n\t\"29419033\",\n\t\"29419034\",\n\t\"29419035\",\n\t\"29419036\",\n\t\"29419037\",\n\t\"29419039\",\n\t\"29419041\",\n\t\"29419042\",\n\t\"29419043\",\n\t\"29419049\",\n\t\"29419051\",\n\t\"29419059\",\n\t\"29419061\",\n\t\"29419062\",\n\t\"29419069\",\n\t\"29419071\",\n\t\"29419072\",\n\t\"29419073\",\n\t\"29419079\",\n\t\"29419081\",\n\t\"29419082\",\n\t\"29419083\",\n\t\"29419089\",\n\t\"29419091\",\n\t\"29419092\",\n\t\"29419099\",\n\t\"29420000\",\n\t\"30012010\",\n\t\"30012090\",\n\t\"30019010\",\n\t\"30019020\",\n\t\"30019031\",\n\t\"30019039\",\n\t\"30019090\",\n\t\"30021211\",\n\t\"30021212\",\n\t\"30021213\",\n\t\"30021214\",\n\t\"30021215\",\n\t\"30021216\",\n\t\"30021219\",\n\t\"30021221\",\n\t\"30021222\",\n\t\"30021223\",\n\t\"30021224\",\n\t\"30021229\",\n\t\"30021231\",\n\t\"30021232\",\n\t\"30021233\",\n\t\"30021234\",\n\t\"30021235\",\n\t\"30021236\",\n\t\"30021239\",\n\t\"30021300\",\n\t\"30021400\",\n\t\"30021510\",\n\t\"30021520\",\n\t\"30021590\",\n\t\"30024111\",\n\t\"30024112\",\n\t\"30024113\",\n\t\"30024114\",\n\t\"30024115\",\n\t\"30024116\",\n\t\"30024117\",\n\t\"30024118\",\n\t\"30024119\",\n\t\"30024121\",\n\t\"30024122\",\n\t\"30024123\",\n\t\"30024124\",\n\t\"30024125\",\n\t\"30024126\",\n\t\"30024127\",\n\t\"30024128\",\n\t\"30024129\",\n\t\"30024210\",\n\t\"30024220\",\n\t\"30024230\",\n\t\"30024240\",\n\t\"30024250\",\n\t\"30024260\",\n\t\"30024270\",\n\t\"30024280\",\n\t\"30024290\",\n\t\"30024910\",\n\t\"30024920\",\n\t\"30024991\",\n\t\"30024992\",\n\t\"30024994\",\n\t\"30024999\",\n\t\"30025100\",\n\t\"30025900\",\n\t\"30029000\",\n\t\"30031011\",\n\t\"30031012\",\n\t\"30031013\",\n\t\"30031014\",\n\t\"30031015\",\n\t\"30031019\",\n\t\"30031020\",\n\t\"30032011\",\n\t\"30032019\",\n\t\"30032021\",\n\t\"30032029\",\n\t\"30032031\",\n\t\"30032032\",\n\t\"30032039\",\n\t\"30032041\",\n\t\"30032049\",\n\t\"30032051\",\n\t\"30032052\",\n\t\"30032059\",\n\t\"30032061\",\n\t\"30032062\",\n\t\"30032063\",\n\t\"30032069\",\n\t\"30032071\",\n\t\"30032072\",\n\t\"30032073\",\n\t\"30032079\",\n\t\"30032091\",\n\t\"30032092\",\n\t\"30032093\",\n\t\"30032094\",\n\t\"30032095\",\n\t\"30032099\",\n\t\"30033100\",\n\t\"30033911\",\n\t\"30033912\",\n\t\"30033913\",\n\t\"30033914\",\n\t\"30033915\",\n\t\"30033916\",\n\t\"30033917\",\n\t\"30033918\",\n\t\"30033919\",\n\t\"30033921\",\n\t\"30033922\",\n\t\"30033923\",\n\t\"30033924\",\n\t\"30033925\",\n\t\"30033926\",\n\t\"30033927\",\n\t\"30033929\",\n\t\"30033931\",\n\t\"30033932\",\n\t\"30033933\",\n\t\"30033934\",\n\t\"30033935\",\n\t\"30033936\",\n\t\"30033937\",\n\t\"30033939\",\n\t\"30033981\",\n\t\"30033982\",\n\t\"30033991\",\n\t\"30033992\",\n\t\"30033994\",\n\t\"30033995\",\n\t\"30033999\",\n\t\"30034100\",\n\t\"30034200\",\n\t\"30034300\",\n\t\"30034910\",\n\t\"30034920\",\n\t\"30034930\",\n\t\"30034940\",\n\t\"30034950\",\n\t\"30034990\",\n\t\"30036000\",\n\t\"30039011\",\n\t\"30039012\",\n\t\"30039013\",\n\t\"30039014\",\n\t\"30039015\",\n\t\"30039016\",\n\t\"30039017\",\n\t\"30039019\",\n\t\"30039021\",\n\t\"30039022\",\n\t\"30039023\",\n\t\"30039024\",\n\t\"30039025\",\n\t\"30039029\",\n\t\"30039031\",\n\t\"30039032\",\n\t\"30039033\",\n\t\"30039034\",\n\t\"30039035\",\n\t\"30039036\",\n\t\"30039037\",\n\t\"30039038\",\n\t\"30039039\",\n\t\"30039041\",\n\t\"30039042\",\n\t\"30039043\",\n\t\"30039044\",\n\t\"30039045\",\n\t\"30039046\",\n\t\"30039047\",\n\t\"30039048\",\n\t\"30039049\",\n\t\"30039051\",\n\t\"30039052\",\n\t\"30039053\",\n\t\"30039054\",\n\t\"30039055\",\n\t\"30039056\",\n\t\"30039057\",\n\t\"30039058\",\n\t\"30039059\",\n\t\"30039061\",\n\t\"30039062\",\n\t\"30039063\",\n\t\"30039064\",\n\t\"30039065\",\n\t\"30039066\",\n\t\"30039067\",\n\t\"30039069\",\n\t\"30039071\",\n\t\"30039072\",\n\t\"30039073\",\n\t\"30039074\",\n\t\"30039075\",\n\t\"30039076\",\n\t\"30039077\",\n\t\"30039078\",\n\t\"30039079\",\n\t\"30039081\",\n\t\"30039082\",\n\t\"30039083\",\n\t\"30039084\",\n\t\"30039085\",\n\t\"30039086\",\n\t\"30039087\",\n\t\"30039088\",\n\t\"30039089\",\n\t\"30039091\",\n\t\"30039092\",\n\t\"30039093\",\n\t\"30039094\",\n\t\"30039095\",\n\t\"30039096\",\n\t\"30039097\",\n\t\"30039099\",\n\t\"30041011\",\n\t\"30041012\",\n\t\"30041013\",\n\t\"30041014\",\n\t\"30041015\",\n\t\"30041019\",\n\t\"30041020\",\n\t\"30042011\",\n\t\"30042019\",\n\t\"30042021\",\n\t\"30042029\",\n\t\"30042031\",\n\t\"30042032\",\n\t\"30042039\",\n\t\"30042041\",\n\t\"30042049\",\n\t\"30042051\",\n\t\"30042052\",\n\t\"30042059\",\n\t\"30042061\",\n\t\"30042062\",\n\t\"30042063\",\n\t\"30042069\",\n\t\"30042071\",\n\t\"30042072\",\n\t\"30042073\",\n\t\"30042079\",\n\t\"30042091\",\n\t\"30042092\",\n\t\"30042093\",\n\t\"30042094\",\n\t\"30042095\",\n\t\"30042099\",\n\t\"30043100\",\n\t\"30043210\",\n\t\"30043220\",\n\t\"30043290\",\n\t\"30043911\",\n\t\"30043912\",\n\t\"30043913\",\n\t\"30043914\",\n\t\"30043915\",\n\t\"30043916\",\n\t\"30043917\",\n\t\"30043918\",\n\t\"30043919\",\n\t\"30043921\",\n\t\"30043922\",\n\t\"30043923\",\n\t\"30043924\",\n\t\"30043925\",\n\t\"30043926\",\n\t\"30043927\",\n\t\"30043928\",\n\t\"30043929\",\n\t\"30043931\",\n\t\"30043932\",\n\t\"30043933\",\n\t\"30043934\",\n\t\"30043935\",\n\t\"30043936\",\n\t\"30043937\",\n\t\"30043939\",\n\t\"30043981\",\n\t\"30043982\",\n\t\"30043991\",\n\t\"30043992\",\n\t\"30043994\",\n\t\"30043999\",\n\t\"30044100\",\n\t\"30044200\",\n\t\"30044300\",\n\t\"30044910\",\n\t\"30044920\",\n\t\"30044930\",\n\t\"30044940\",\n\t\"30044950\",\n\t\"30044990\",\n\t\"30045010\",\n\t\"30045020\",\n\t\"30045030\",\n\t\"30045040\",\n\t\"30045050\",\n\t\"30045060\",\n\t\"30045090\",\n\t\"30046000\",\n\t\"30049011\",\n\t\"30049012\",\n\t\"30049013\",\n\t\"30049014\",\n\t\"30049015\",\n\t\"30049019\",\n\t\"30049021\",\n\t\"30049022\",\n\t\"30049023\",\n\t\"30049024\",\n\t\"30049025\",\n\t\"30049026\",\n\t\"30049027\",\n\t\"30049028\",\n\t\"30049029\",\n\t\"30049031\",\n\t\"30049032\",\n\t\"30049033\",\n\t\"30049034\",\n\t\"30049035\",\n\t\"30049036\",\n\t\"30049037\",\n\t\"30049038\",\n\t\"30049039\",\n\t\"30049041\",\n\t\"30049042\",\n\t\"30049043\",\n\t\"30049044\",\n\t\"30049045\",\n\t\"30049046\",\n\t\"30049047\",\n\t\"30049048\",\n\t\"30049049\",\n\t\"30049051\",\n\t\"30049052\",\n\t\"30049053\",\n\t\"30049054\",\n\t\"30049055\",\n\t\"30049057\",\n\t\"30049058\",\n\t\"30049059\",\n\t\"30049061\",\n\t\"30049062\",\n\t\"30049063\",\n\t\"30049064\",\n\t\"30049065\",\n\t\"30049066\",\n\t\"30049067\",\n\t\"30049068\",\n\t\"30049069\",\n\t\"30049071\",\n\t\"30049072\",\n\t\"30049073\",\n\t\"30049074\",\n\t\"30049075\",\n\t\"30049076\",\n\t\"30049077\",\n\t\"30049078\",\n\t\"30049079\",\n\t\"30049091\",\n\t\"30049092\",\n\t\"30049093\",\n\t\"30049094\",\n\t\"30049095\",\n\t\"30049096\",\n\t\"30049097\",\n\t\"30049098\",\n\t\"30049099\",\n\t\"30051010\",\n\t\"30051020\",\n\t\"30051030\",\n\t\"30051040\",\n\t\"30051050\",\n\t\"30051090\",\n\t\"30059011\",\n\t\"30059012\",\n\t\"30059019\",\n\t\"30059020\",\n\t\"30059090\",\n\t\"30061010\",\n\t\"30061020\",\n\t\"30061090\",\n\t\"30063011\",\n\t\"30063012\",\n\t\"30063013\",\n\t\"30063015\",\n\t\"30063016\",\n\t\"30063017\",\n\t\"30063018\",\n\t\"30063019\",\n\t\"30063021\",\n\t\"30063029\",\n\t\"30064011\",\n\t\"30064012\",\n\t\"30064020\",\n\t\"30065000\",\n\t\"30066000\",\n\t\"30067000\",\n\t\"30069110\",\n\t\"30069190\",\n\t\"30069200\",\n\t\"30069300\",\n\t\"31010000\",\n\t\"31021010\",\n\t\"31021090\",\n\t\"31022100\",\n\t\"31022910\",\n\t\"31022990\",\n\t\"31023000\",\n\t\"31024000\",\n\t\"31025011\",\n\t\"31025019\",\n\t\"31025090\",\n\t\"31026000\",\n\t\"31028000\",\n\t\"31029000\",\n\t\"31031100\",\n\t\"31031900\",\n\t\"31039011\",\n\t\"31039019\",\n\t\"31039090\",\n\t\"31042010\",\n\t\"31042090\",\n\t\"31043010\",\n\t\"31043090\",\n\t\"31049010\",\n\t\"31049090\",\n\t\"31051000\",\n\t\"31052000\",\n\t\"31053000\",\n\t\"31054000\",\n\t\"31055100\",\n\t\"31055900\",\n\t\"31056000\",\n\t\"31059011\",\n\t\"31059019\",\n\t\"31059090\",\n\t\"32011000\",\n\t\"32012000\",\n\t\"32019011\",\n\t\"32019012\",\n\t\"32019019\",\n\t\"32019020\",\n\t\"32019090\",\n\t\"32021000\",\n\t\"32029011\",\n\t\"32029012\",\n\t\"32029013\",\n\t\"32029019\",\n\t\"32029021\",\n\t\"32029029\",\n\t\"32029030\",\n\t\"32030011\",\n\t\"32030012\",\n\t\"32030013\",\n\t\"32030019\",\n\t\"32030021\",\n\t\"32030029\",\n\t\"32030030\",\n\t\"32041100\",\n\t\"32041210\",\n\t\"32041220\",\n\t\"32041300\",\n\t\"32041400\",\n\t\"32041510\",\n\t\"32041520\",\n\t\"32041530\",\n\t\"32041590\",\n\t\"32041600\",\n\t\"32041700\",\n\t\"32041810\",\n\t\"32041820\",\n\t\"32041830\",\n\t\"32041890\",\n\t\"32041920\",\n\t\"32041930\",\n\t\"32041990\",\n\t\"32042011\",\n\t\"32042019\",\n\t\"32042090\",\n\t\"32049000\",\n\t\"32050000\",\n\t\"32061110\",\n\t\"32061120\",\n\t\"32061130\",\n\t\"32061910\",\n\t\"32061990\",\n\t\"32062000\",\n\t\"32064100\",\n\t\"32064210\",\n\t\"32064290\",\n\t\"32064910\",\n\t\"32064920\",\n\t\"32064990\",\n\t\"32065011\",\n\t\"32065019\",\n\t\"32065021\",\n\t\"32065029\",\n\t\"32071020\",\n\t\"32071030\",\n\t\"32071090\",\n\t\"32072010\",\n\t\"32072091\",\n\t\"32072099\",\n\t\"32073000\",\n\t\"32074010\",\n\t\"32074090\",\n\t\"32081010\",\n\t\"32081020\",\n\t\"32081030\",\n\t\"32082011\",\n\t\"32082019\",\n\t\"32082020\",\n\t\"32082030\",\n\t\"32089010\",\n\t\"32089021\",\n\t\"32089029\",\n\t\"32089031\",\n\t\"32089039\",\n\t\"32091010\",\n\t\"32091020\",\n\t\"32099011\",\n\t\"32099019\",\n\t\"32099020\",\n\t\"32100010\",\n\t\"32100020\",\n\t\"32100030\",\n\t\"32110000\",\n\t\"32121000\",\n\t\"32129010\",\n\t\"32129090\",\n\t\"32131000\",\n\t\"32139000\",\n\t\"32141010\",\n\t\"32141020\",\n\t\"32149000\",\n\t\"32151100\",\n\t\"32151900\",\n\t\"32159000\",\n\t\"33011210\",\n\t\"33011290\",\n\t\"33011300\",\n\t\"33011910\",\n\t\"33011990\",\n\t\"33012400\",\n\t\"33012510\",\n\t\"33012520\",\n\t\"33012590\",\n\t\"33012911\",\n\t\"33012912\",\n\t\"33012913\",\n\t\"33012914\",\n\t\"33012915\",\n\t\"33012916\",\n\t\"33012917\",\n\t\"33012918\",\n\t\"33012919\",\n\t\"33012921\",\n\t\"33012922\",\n\t\"33012990\",\n\t\"33013000\",\n\t\"33019010\",\n\t\"33019020\",\n\t\"33019030\",\n\t\"33019040\",\n\t\"33021000\",\n\t\"33029011\",\n\t\"33029019\",\n\t\"33029091\",\n\t\"33029099\",\n\t\"33030010\",\n\t\"33030020\",\n\t\"33041000\",\n\t\"33042010\",\n\t\"33042090\",\n\t\"33043000\",\n\t\"33049100\",\n\t\"33049910\",\n\t\"33049990\",\n\t\"33051000\",\n\t\"33052000\",\n\t\"33053000\",\n\t\"33059000\",\n\t\"33061000\",\n\t\"33062000\",\n\t\"33069000\",\n\t\"33071000\",\n\t\"33072010\",\n\t\"33072090\",\n\t\"33073000\",\n\t\"33074100\",\n\t\"33074900\",\n\t\"33079000\",\n\t\"34011110\",\n\t\"34011190\",\n\t\"34011900\",\n\t\"34012010\",\n\t\"34012090\",\n\t\"34013000\",\n\t\"34023100\",\n\t\"34023910\",\n\t\"34023920\",\n\t\"34023930\",\n\t\"34023990\",\n\t\"34024110\",\n\t\"34024190\",\n\t\"34024200\",\n\t\"34024900\",\n\t\"34025000\",\n\t\"34029011\",\n\t\"34029019\",\n\t\"34029021\",\n\t\"34029022\",\n\t\"34029023\",\n\t\"34029029\",\n\t\"34029031\",\n\t\"34029039\",\n\t\"34029090\",\n\t\"34031110\",\n\t\"34031120\",\n\t\"34031190\",\n\t\"34031900\",\n\t\"34039110\",\n\t\"34039120\",\n\t\"34039190\",\n\t\"34039900\",\n\t\"34042010\",\n\t\"34042020\",\n\t\"34049011\",\n\t\"34049012\",\n\t\"34049013\",\n\t\"34049014\",\n\t\"34049019\",\n\t\"34049021\",\n\t\"34049022\",\n\t\"34049029\",\n\t\"34051000\",\n\t\"34052000\",\n\t\"34053000\",\n\t\"34054000\",\n\t\"34059000\",\n\t\"34060000\",\n\t\"34070010\",\n\t\"34070020\",\n\t\"34070090\",\n\t\"35011000\",\n\t\"35019011\",\n\t\"35019019\",\n\t\"35019020\",\n\t\"35021100\",\n\t\"35021900\",\n\t\"35022000\",\n\t\"35029010\",\n\t\"35029090\",\n\t\"35030011\",\n\t\"35030012\",\n\t\"35030019\",\n\t\"35030090\",\n\t\"35040011\",\n\t\"35040019\",\n\t\"35040020\",\n\t\"35040030\",\n\t\"35040090\",\n\t\"35051000\",\n\t\"35052000\",\n\t\"35061010\",\n\t\"35061090\",\n\t\"35069110\",\n\t\"35069120\",\n\t\"35069190\",\n\t\"35069900\",\n\t\"35071000\",\n\t\"35079011\",\n\t\"35079019\",\n\t\"35079021\",\n\t\"35079022\",\n\t\"35079023\",\n\t\"35079024\",\n\t\"35079025\",\n\t\"35079026\",\n\t\"35079029\",\n\t\"35079031\",\n\t\"35079032\",\n\t\"35079039\",\n\t\"35079041\",\n\t\"35079042\",\n\t\"35079049\",\n\t\"36010000\",\n\t\"36020000\",\n\t\"36031000\",\n\t\"36032000\",\n\t\"36033000\",\n\t\"36034000\",\n\t\"36035000\",\n\t\"36036000\",\n\t\"36041000\",\n\t\"36049010\",\n\t\"36049090\",\n\t\"36050000\",\n\t\"36061000\",\n\t\"36069000\",\n\t\"37011010\",\n\t\"37011021\",\n\t\"37011029\",\n\t\"37012010\",\n\t\"37012020\",\n\t\"37013010\",\n\t\"37013021\",\n\t\"37013022\",\n\t\"37013029\",\n\t\"37013031\",\n\t\"37013039\",\n\t\"37013040\",\n\t\"37013050\",\n\t\"37013090\",\n\t\"37019100\",\n\t\"37019900\",\n\t\"37021010\",\n\t\"37021020\",\n\t\"37023100\",\n\t\"37023200\",\n\t\"37023900\",\n\t\"37024100\",\n\t\"37024210\",\n\t\"37024290\",\n\t\"37024310\",\n\t\"37024320\",\n\t\"37024390\",\n\t\"37024410\",\n\t\"37024421\",\n\t\"37024422\",\n\t\"37024429\",\n\t\"37025200\",\n\t\"37025300\",\n\t\"37025411\",\n\t\"37025412\",\n\t\"37025419\",\n\t\"37025491\",\n\t\"37025499\",\n\t\"37025510\",\n\t\"37025590\",\n\t\"37025600\",\n\t\"37029600\",\n\t\"37029700\",\n\t\"37029800\",\n\t\"37031010\",\n\t\"37031021\",\n\t\"37031029\",\n\t\"37032000\",\n\t\"37039010\",\n\t\"37039090\",\n\t\"37040000\",\n\t\"37050010\",\n\t\"37050090\",\n\t\"37061000\",\n\t\"37069000\",\n\t\"37071000\",\n\t\"37079010\",\n\t\"37079021\",\n\t\"37079029\",\n\t\"37079030\",\n\t\"37079090\",\n\t\"38011000\",\n\t\"38012010\",\n\t\"38012090\",\n\t\"38013010\",\n\t\"38013090\",\n\t\"38019000\",\n\t\"38021000\",\n\t\"38029010\",\n\t\"38029020\",\n\t\"38029030\",\n\t\"38029040\",\n\t\"38029050\",\n\t\"38029090\",\n\t\"38030010\",\n\t\"38030090\",\n\t\"38040011\",\n\t\"38040012\",\n\t\"38040020\",\n\t\"38051000\",\n\t\"38059010\",\n\t\"38059090\",\n\t\"38061000\",\n\t\"38062000\",\n\t\"38063000\",\n\t\"38069011\",\n\t\"38069012\",\n\t\"38069019\",\n\t\"38069090\",\n\t\"38070000\",\n\t\"38085200\",\n\t\"38085910\",\n\t\"38085921\",\n\t\"38085922\",\n\t\"38085923\",\n\t\"38085924\",\n\t\"38085925\",\n\t\"38085926\",\n\t\"38085929\",\n\t\"38086100\",\n\t\"38086210\",\n\t\"38086290\",\n\t\"38086910\",\n\t\"38086990\",\n\t\"38089111\",\n\t\"38089119\",\n\t\"38089120\",\n\t\"38089191\",\n\t\"38089192\",\n\t\"38089193\",\n\t\"38089194\",\n\t\"38089195\",\n\t\"38089196\",\n\t\"38089197\",\n\t\"38089199\",\n\t\"38089211\",\n\t\"38089219\",\n\t\"38089220\",\n\t\"38089291\",\n\t\"38089292\",\n\t\"38089293\",\n\t\"38089294\",\n\t\"38089295\",\n\t\"38089296\",\n\t\"38089297\",\n\t\"38089299\",\n\t\"38089311\",\n\t\"38089319\",\n\t\"38089321\",\n\t\"38089322\",\n\t\"38089323\",\n\t\"38089324\",\n\t\"38089325\",\n\t\"38089326\",\n\t\"38089327\",\n\t\"38089328\",\n\t\"38089329\",\n\t\"38089331\",\n\t\"38089332\",\n\t\"38089333\",\n\t\"38089341\",\n\t\"38089349\",\n\t\"38089351\",\n\t\"38089352\",\n\t\"38089359\",\n\t\"38089411\",\n\t\"38089419\",\n\t\"38089421\",\n\t\"38089422\",\n\t\"38089429\",\n\t\"38089911\",\n\t\"38089919\",\n\t\"38089920\",\n\t\"38089991\",\n\t\"38089992\",\n\t\"38089993\",\n\t\"38089994\",\n\t\"38089995\",\n\t\"38089996\",\n\t\"38089999\",\n\t\"38091010\",\n\t\"38091090\",\n\t\"38099110\",\n\t\"38099120\",\n\t\"38099130\",\n\t\"38099141\",\n\t\"38099149\",\n\t\"38099190\",\n\t\"38099211\",\n\t\"38099219\",\n\t\"38099290\",\n\t\"38099311\",\n\t\"38099319\",\n\t\"38099390\",\n\t\"38101010\",\n\t\"38101020\",\n\t\"38109000\",\n\t\"38111100\",\n\t\"38111900\",\n\t\"38112110\",\n\t\"38112120\",\n\t\"38112130\",\n\t\"38112140\",\n\t\"38112150\",\n\t\"38112190\",\n\t\"38112910\",\n\t\"38112920\",\n\t\"38112990\",\n\t\"38119010\",\n\t\"38119090\",\n\t\"38121000\",\n\t\"38122000\",\n\t\"38123100\",\n\t\"38123911\",\n\t\"38123912\",\n\t\"38123919\",\n\t\"38123921\",\n\t\"38123929\",\n\t\"38130010\",\n\t\"38130020\",\n\t\"38130030\",\n\t\"38130040\",\n\t\"38130090\",\n\t\"38140010\",\n\t\"38140020\",\n\t\"38140030\",\n\t\"38140090\",\n\t\"38151100\",\n\t\"38151210\",\n\t\"38151220\",\n\t\"38151290\",\n\t\"38151900\",\n\t\"38159010\",\n\t\"38159091\",\n\t\"38159092\",\n\t\"38159093\",\n\t\"38159099\",\n\t\"38160011\",\n\t\"38160012\",\n\t\"38160019\",\n\t\"38160021\",\n\t\"38160029\",\n\t\"38160090\",\n\t\"38170010\",\n\t\"38170020\",\n\t\"38180010\",\n\t\"38180090\",\n\t\"38190000\",\n\t\"38200000\",\n\t\"38210000\",\n\t\"38221100\",\n\t\"38221200\",\n\t\"38221300\",\n\t\"38221910\",\n\t\"38221920\",\n\t\"38221930\",\n\t\"38221940\",\n\t\"38221990\",\n\t\"38229000\",\n\t\"38231100\",\n\t\"38231200\",\n\t\"38231300\",\n\t\"38231910\",\n\t\"38231990\",\n\t\"38237010\",\n\t\"38237020\",\n\t\"38237040\",\n\t\"38237090\",\n\t\"38241000\",\n\t\"38243000\",\n\t\"38244000\",\n\t\"38245000\",\n\t\"38246000\",\n\t\"38248110\",\n\t\"38248190\",\n\t\"38248210\",\n\t\"38248290\",\n\t\"38248300\",\n\t\"38248400\",\n\t\"38248500\",\n\t\"38248600\",\n\t\"38248700\",\n\t\"38248810\",\n\t\"38248820\",\n\t\"38248900\",\n\t\"38249100\",\n\t\"38249200\",\n\t\"38249911\",\n\t\"38249912\",\n\t\"38249913\",\n\t\"38249914\",\n\t\"38249915\",\n\t\"38249919\",\n\t\"38249921\",\n\t\"38249922\",\n\t\"38249923\",\n\t\"38249924\",\n\t\"38249925\",\n\t\"38249929\",\n\t\"38249931\",\n\t\"38249932\",\n\t\"38249933\",\n\t\"38249934\",\n\t\"38249935\",\n\t\"38249936\",\n\t\"38249939\",\n\t\"38249941\",\n\t\"38249942\",\n\t\"38249943\",\n\t\"38249949\",\n\t\"38249951\",\n\t\"38249952\",\n\t\"38249953\",\n\t\"38249954\",\n\t\"38249959\",\n\t\"38249961\",\n\t\"38249962\",\n\t\"38249969\",\n\t\"38249971\",\n\t\"38249972\",\n\t\"38249973\",\n\t\"38249974\",\n\t\"38249975\",\n\t\"38249976\",\n\t\"38249977\",\n\t\"38249978\",\n\t\"38249979\",\n\t\"38249981\",\n\t\"38249982\",\n\t\"38249983\",\n\t\"38249984\",\n\t\"38249985\",\n\t\"38249986\",\n\t\"38249987\",\n\t\"38249988\",\n\t\"38249989\",\n\t\"38251000\",\n\t\"38252000\",\n\t\"38253000\",\n\t\"38254100\",\n\t\"38254900\",\n\t\"38255000\",\n\t\"38256100\",\n\t\"38256900\",\n\t\"38259000\",\n\t\"38260000\",\n\t\"38271110\",\n\t\"38271190\",\n\t\"38271200\",\n\t\"38271300\",\n\t\"38271400\",\n\t\"38272000\",\n\t\"38273110\",\n\t\"38273190\",\n\t\"38273210\",\n\t\"38273290\",\n\t\"38273900\",\n\t\"38274000\",\n\t\"38275100\",\n\t\"38275900\",\n\t\"38276100\",\n\t\"38276200\",\n\t\"38276300\",\n\t\"38276400\",\n\t\"38276500\",\n\t\"38276800\",\n\t\"38276900\",\n\t\"38279000\",\n\t\"39011020\",\n\t\"39011030\",\n\t\"39012011\",\n\t\"39012019\",\n\t\"39012021\",\n\t\"39012029\",\n\t\"39013010\",\n\t\"39013090\",\n\t\"39014000\",\n\t\"39019010\",\n\t\"39019020\",\n\t\"39019030\",\n\t\"39019040\",\n\t\"39019050\",\n\t\"39019090\",\n\t\"39021010\",\n\t\"39021020\",\n\t\"39022000\",\n\t\"39023000\",\n\t\"39029000\",\n\t\"39031110\",\n\t\"39031120\",\n\t\"39031900\",\n\t\"39032000\",\n\t\"39033010\",\n\t\"39033020\",\n\t\"39039010\",\n\t\"39039020\",\n\t\"39039090\",\n\t\"39041010\",\n\t\"39041020\",\n\t\"39041090\",\n\t\"39042100\",\n\t\"39042200\",\n\t\"39043000\",\n\t\"39044010\",\n\t\"39044090\",\n\t\"39045010\",\n\t\"39045090\",\n\t\"39046110\",\n\t\"39046190\",\n\t\"39046910\",\n\t\"39046990\",\n\t\"39049010\",\n\t\"39049090\",\n\t\"39051200\",\n\t\"39051910\",\n\t\"39051990\",\n\t\"39052100\",\n\t\"39052900\",\n\t\"39053000\",\n\t\"39059130\",\n\t\"39059190\",\n\t\"39059910\",\n\t\"39059920\",\n\t\"39059930\",\n\t\"39059990\",\n\t\"39061000\",\n\t\"39069011\",\n\t\"39069012\",\n\t\"39069019\",\n\t\"39069021\",\n\t\"39069022\",\n\t\"39069029\",\n\t\"39069031\",\n\t\"39069032\",\n\t\"39069039\",\n\t\"39069051\",\n\t\"39069052\",\n\t\"39069053\",\n\t\"39069054\",\n\t\"39069059\",\n\t\"39069061\",\n\t\"39069062\",\n\t\"39069063\",\n\t\"39069064\",\n\t\"39069065\",\n\t\"39069069\",\n\t\"39071010\",\n\t\"39071020\",\n\t\"39071031\",\n\t\"39071039\",\n\t\"39071041\",\n\t\"39071042\",\n\t\"39071049\",\n\t\"39071091\",\n\t\"39071099\",\n\t\"39072100\",\n\t\"39072911\",\n\t\"39072912\",\n\t\"39072920\",\n\t\"39072931\",\n\t\"39072939\",\n\t\"39072941\",\n\t\"39072942\",\n\t\"39072949\",\n\t\"39072991\",\n\t\"39072992\",\n\t\"39072999\",\n\t\"39073011\",\n\t\"39073019\",\n\t\"39073021\",\n\t\"39073022\",\n\t\"39073029\",\n\t\"39074010\",\n\t\"39074020\",\n\t\"39074090\",\n\t\"39075010\",\n\t\"39075090\",\n\t\"39076100\",\n\t\"39076900\",\n\t\"39077000\",\n\t\"39079100\",\n\t\"39079911\",\n\t\"39079912\",\n\t\"39079919\",\n\t\"39079991\",\n\t\"39079992\",\n\t\"39079993\",\n\t\"39079994\",\n\t\"39079995\",\n\t\"39079999\",\n\t\"39081011\",\n\t\"39081012\",\n\t\"39081013\",\n\t\"39081014\",\n\t\"39081019\",\n\t\"39081021\",\n\t\"39081022\",\n\t\"39081023\",\n\t\"39081025\",\n\t\"39081026\",\n\t\"39081029\",\n\t\"39089010\",\n\t\"39089020\",\n\t\"39089090\",\n\t\"39091000\",\n\t\"39092011\",\n\t\"39092019\",\n\t\"39092021\",\n\t\"39092029\",\n\t\"39093100\",\n\t\"39093900\",\n\t\"39094011\",\n\t\"39094019\",\n\t\"39094091\",\n\t\"39094099\",\n\t\"39095011\",\n\t\"39095012\",\n\t\"39095019\",\n\t\"39095021\",\n\t\"39095029\",\n\t\"39100011\",\n\t\"39100012\",\n\t\"39100013\",\n\t\"39100019\",\n\t\"39100021\",\n\t\"39100029\",\n\t\"39100030\",\n\t\"39100090\",\n\t\"39111010\",\n\t\"39111021\",\n\t\"39111029\",\n\t\"39112000\",\n\t\"39119011\",\n\t\"39119012\",\n\t\"39119013\",\n\t\"39119014\",\n\t\"39119019\",\n\t\"39119021\",\n\t\"39119022\",\n\t\"39119023\",\n\t\"39119024\",\n\t\"39119025\",\n\t\"39119026\",\n\t\"39119027\",\n\t\"39119029\",\n\t\"39121110\",\n\t\"39121120\",\n\t\"39121200\",\n\t\"39122010\",\n\t\"39122021\",\n\t\"39122029\",\n\t\"39123111\",\n\t\"39123119\",\n\t\"39123121\",\n\t\"39123129\",\n\t\"39123910\",\n\t\"39123920\",\n\t\"39123930\",\n\t\"39123990\",\n\t\"39129010\",\n\t\"39129020\",\n\t\"39129031\",\n\t\"39129039\",\n\t\"39129040\",\n\t\"39129090\",\n\t\"39131000\",\n\t\"39139011\",\n\t\"39139012\",\n\t\"39139019\",\n\t\"39139020\",\n\t\"39139030\",\n\t\"39139040\",\n\t\"39139050\",\n\t\"39139060\",\n\t\"39139090\",\n\t\"39140011\",\n\t\"39140019\",\n\t\"39140090\",\n\t\"39151000\",\n\t\"39152000\",\n\t\"39153000\",\n\t\"39159000\",\n\t\"39161000\",\n\t\"39162000\",\n\t\"39169010\",\n\t\"39169090\",\n\t\"39171010\",\n\t\"39171021\",\n\t\"39171029\",\n\t\"39172100\",\n\t\"39172210\",\n\t\"39172290\",\n\t\"39172300\",\n\t\"39172900\",\n\t\"39173100\",\n\t\"39173210\",\n\t\"39173221\",\n\t\"39173229\",\n\t\"39173230\",\n\t\"39173240\",\n\t\"39173251\",\n\t\"39173259\",\n\t\"39173290\",\n\t\"39173300\",\n\t\"39173900\",\n\t\"39174010\",\n\t\"39174090\",\n\t\"39181000\",\n\t\"39189000\",\n\t\"39191010\",\n\t\"39191020\",\n\t\"39191090\",\n\t\"39199010\",\n\t\"39199020\",\n\t\"39199090\",\n\t\"39201010\",\n\t\"39201091\",\n\t\"39201099\",\n\t\"39202011\",\n\t\"39202012\",\n\t\"39202019\",\n\t\"39202090\",\n\t\"39203000\",\n\t\"39204310\",\n\t\"39204390\",\n\t\"39204900\",\n\t\"39205100\",\n\t\"39205900\",\n\t\"39206100\",\n\t\"39206211\",\n\t\"39206219\",\n\t\"39206291\",\n\t\"39206299\",\n\t\"39206300\",\n\t\"39206900\",\n\t\"39207100\",\n\t\"39207310\",\n\t\"39207390\",\n\t\"39207910\",\n\t\"39207990\",\n\t\"39209100\",\n\t\"39209200\",\n\t\"39209300\",\n\t\"39209400\",\n\t\"39209910\",\n\t\"39209920\",\n\t\"39209930\",\n\t\"39209940\",\n\t\"39209950\",\n\t\"39209990\",\n\t\"39211100\",\n\t\"39211200\",\n\t\"39211310\",\n\t\"39211390\",\n\t\"39211400\",\n\t\"39211900\",\n\t\"39219011\",\n\t\"39219012\",\n\t\"39219013\",\n\t\"39219019\",\n\t\"39219020\",\n\t\"39219090\",\n\t\"39221000\",\n\t\"39222000\",\n\t\"39229000\",\n\t\"39231010\",\n\t\"39231090\",\n\t\"39232110\",\n\t\"39232190\",\n\t\"39232910\",\n\t\"39232990\",\n\t\"39233010\",\n\t\"39233090\",\n\t\"39234000\",\n\t\"39235000\",\n\t\"39239010\",\n\t\"39239090\",\n\t\"39241000\",\n\t\"39249000\",\n\t\"39251000\",\n\t\"39252000\",\n\t\"39253000\",\n\t\"39259010\",\n\t\"39259090\",\n\t\"39261000\",\n\t\"39262000\",\n\t\"39263000\",\n\t\"39264000\",\n\t\"39269010\",\n\t\"39269021\",\n\t\"39269022\",\n\t\"39269030\",\n\t\"39269040\",\n\t\"39269050\",\n\t\"39269061\",\n\t\"39269069\",\n\t\"39269090\",\n\t\"40011000\",\n\t\"40012100\",\n\t\"40012200\",\n\t\"40012910\",\n\t\"40012920\",\n\t\"40012990\",\n\t\"40013000\",\n\t\"40021110\",\n\t\"40021120\",\n\t\"40021911\",\n\t\"40021912\",\n\t\"40021919\",\n\t\"40021920\",\n\t\"40022010\",\n\t\"40022091\",\n\t\"40022099\",\n\t\"40023100\",\n\t\"40023900\",\n\t\"40024100\",\n\t\"40024900\",\n\t\"40025100\",\n\t\"40025900\",\n\t\"40026000\",\n\t\"40027000\",\n\t\"40028000\",\n\t\"40029100\",\n\t\"40029910\",\n\t\"40029920\",\n\t\"40029930\",\n\t\"40029990\",\n\t\"40030000\",\n\t\"40040000\",\n\t\"40051010\",\n\t\"40051090\",\n\t\"40052000\",\n\t\"40059110\",\n\t\"40059190\",\n\t\"40059910\",\n\t\"40059990\",\n\t\"40061000\",\n\t\"40069000\",\n\t\"40070011\",\n\t\"40070019\",\n\t\"40070020\",\n\t\"40081100\",\n\t\"40081900\",\n\t\"40082100\",\n\t\"40082900\",\n\t\"40091100\",\n\t\"40091210\",\n\t\"40091290\",\n\t\"40092110\",\n\t\"40092190\",\n\t\"40092210\",\n\t\"40092290\",\n\t\"40093100\",\n\t\"40093210\",\n\t\"40093290\",\n\t\"40094100\",\n\t\"40094210\",\n\t\"40094290\",\n\t\"40101100\",\n\t\"40101200\",\n\t\"40101900\",\n\t\"40103100\",\n\t\"40103200\",\n\t\"40103300\",\n\t\"40103400\",\n\t\"40103500\",\n\t\"40103600\",\n\t\"40103900\",\n\t\"40111000\",\n\t\"40112010\",\n\t\"40112090\",\n\t\"40113000\",\n\t\"40114000\",\n\t\"40115000\",\n\t\"40117010\",\n\t\"40117090\",\n\t\"40118010\",\n\t\"40118020\",\n\t\"40118090\",\n\t\"40119010\",\n\t\"40119090\",\n\t\"40121100\",\n\t\"40121200\",\n\t\"40121300\",\n\t\"40121900\",\n\t\"40122000\",\n\t\"40129010\",\n\t\"40129090\",\n\t\"40131010\",\n\t\"40131090\",\n\t\"40132000\",\n\t\"40139000\",\n\t\"40141000\",\n\t\"40149010\",\n\t\"40149090\",\n\t\"40151200\",\n\t\"40151900\",\n\t\"40159000\",\n\t\"40161010\",\n\t\"40161090\",\n\t\"40169100\",\n\t\"40169200\",\n\t\"40169300\",\n\t\"40169400\",\n\t\"40169510\",\n\t\"40169590\",\n\t\"40169910\",\n\t\"40169990\",\n\t\"40170000\",\n\t\"41012000\",\n\t\"41015010\",\n\t\"41015020\",\n\t\"41015030\",\n\t\"41019010\",\n\t\"41019020\",\n\t\"41019030\",\n\t\"41021000\",\n\t\"41022100\",\n\t\"41022900\",\n\t\"41032000\",\n\t\"41033000\",\n\t\"41039000\",\n\t\"41041111\",\n\t\"41041112\",\n\t\"41041113\",\n\t\"41041114\",\n\t\"41041119\",\n\t\"41041121\",\n\t\"41041122\",\n\t\"41041123\",\n\t\"41041124\",\n\t\"41041129\",\n\t\"41041910\",\n\t\"41041920\",\n\t\"41041930\",\n\t\"41041940\",\n\t\"41041990\",\n\t\"41044110\",\n\t\"41044120\",\n\t\"41044130\",\n\t\"41044190\",\n\t\"41044910\",\n\t\"41044920\",\n\t\"41044990\",\n\t\"41051010\",\n\t\"41051021\",\n\t\"41051029\",\n\t\"41051090\",\n\t\"41053000\",\n\t\"41062110\",\n\t\"41062121\",\n\t\"41062129\",\n\t\"41062190\",\n\t\"41062200\",\n\t\"41063110\",\n\t\"41063190\",\n\t\"41063200\",\n\t\"41064000\",\n\t\"41069100\",\n\t\"41069200\",\n\t\"41071110\",\n\t\"41071120\",\n\t\"41071190\",\n\t\"41071210\",\n\t\"41071220\",\n\t\"41071290\",\n\t\"41071910\",\n\t\"41071920\",\n\t\"41071990\",\n\t\"41079110\",\n\t\"41079190\",\n\t\"41079210\",\n\t\"41079290\",\n\t\"41079910\",\n\t\"41079990\",\n\t\"41120000\",\n\t\"41131010\",\n\t\"41131090\",\n\t\"41132000\",\n\t\"41133000\",\n\t\"41139000\",\n\t\"41141000\",\n\t\"41142010\",\n\t\"41142020\",\n\t\"41151000\",\n\t\"41152000\",\n\t\"42010010\",\n\t\"42010090\",\n\t\"42021100\",\n\t\"42021210\",\n\t\"42021220\",\n\t\"42021900\",\n\t\"42022100\",\n\t\"42022210\",\n\t\"42022220\",\n\t\"42022900\",\n\t\"42023100\",\n\t\"42023200\",\n\t\"42023900\",\n\t\"42029100\",\n\t\"42029200\",\n\t\"42029900\",\n\t\"42031000\",\n\t\"42032100\",\n\t\"42032900\",\n\t\"42033000\",\n\t\"42034000\",\n\t\"42050000\",\n\t\"42060000\",\n\t\"43011000\",\n\t\"43013000\",\n\t\"43016000\",\n\t\"43018000\",\n\t\"43019000\",\n\t\"43021100\",\n\t\"43021910\",\n\t\"43021990\",\n\t\"43022000\",\n\t\"43023000\",\n\t\"43031000\",\n\t\"43039000\",\n\t\"43040000\",\n\t\"44011100\",\n\t\"44011200\",\n\t\"44012100\",\n\t\"44012200\",\n\t\"44013100\",\n\t\"44013200\",\n\t\"44013900\",\n\t\"44014100\",\n\t\"44014900\",\n\t\"44021000\",\n\t\"44022000\",\n\t\"44029000\",\n\t\"44031100\",\n\t\"44031200\",\n\t\"44032100\",\n\t\"44032200\",\n\t\"44032300\",\n\t\"44032400\",\n\t\"44032500\",\n\t\"44032600\",\n\t\"44034100\",\n\t\"44034200\",\n\t\"44034900\",\n\t\"44039100\",\n\t\"44039300\",\n\t\"44039400\",\n\t\"44039500\",\n\t\"44039600\",\n\t\"44039700\",\n\t\"44039800\",\n\t\"44039900\",\n\t\"44041000\",\n\t\"44042000\",\n\t\"44050000\",\n\t\"44061100\",\n\t\"44061200\",\n\t\"44069100\",\n\t\"44069200\",\n\t\"44071100\",\n\t\"44071200\",\n\t\"44071300\",\n\t\"44071400\",\n\t\"44071900\",\n\t\"44072100\",\n\t\"44072200\",\n\t\"44072300\",\n\t\"44072500\",\n\t\"44072600\",\n\t\"44072700\",\n\t\"44072800\",\n\t\"44072910\",\n\t\"44072920\",\n\t\"44072930\",\n\t\"44072940\",\n\t\"44072950\",\n\t\"44072960\",\n\t\"44072970\",\n\t\"44072990\",\n\t\"44079100\",\n\t\"44079200\",\n\t\"44079300\",\n\t\"44079400\",\n\t\"44079500\",\n\t\"44079600\",\n\t\"44079700\",\n\t\"44079920\",\n\t\"44079930\",\n\t\"44079960\",\n\t\"44079970\",\n\t\"44079990\",\n\t\"44081010\",\n\t\"44081091\",\n\t\"44081099\",\n\t\"44083110\",\n\t\"44083190\",\n\t\"44083910\",\n\t\"44083991\",\n\t\"44083992\",\n\t\"44083999\",\n\t\"44089010\",\n\t\"44089090\",\n\t\"44091000\",\n\t\"44092100\",\n\t\"44092200\",\n\t\"44092900\",\n\t\"44101110\",\n\t\"44101121\",\n\t\"44101129\",\n\t\"44101190\",\n\t\"44101210\",\n\t\"44101290\",\n\t\"44101911\",\n\t\"44101919\",\n\t\"44101991\",\n\t\"44101992\",\n\t\"44101999\",\n\t\"44109000\",\n\t\"44111210\",\n\t\"44111290\",\n\t\"44111310\",\n\t\"44111391\",\n\t\"44111399\",\n\t\"44111410\",\n\t\"44111490\",\n\t\"44119210\",\n\t\"44119290\",\n\t\"44119310\",\n\t\"44119390\",\n\t\"44119410\",\n\t\"44119490\",\n\t\"44121000\",\n\t\"44123100\",\n\t\"44123300\",\n\t\"44123400\",\n\t\"44123900\",\n\t\"44124100\",\n\t\"44124200\",\n\t\"44124900\",\n\t\"44125100\",\n\t\"44125200\",\n\t\"44125900\",\n\t\"44129100\",\n\t\"44129200\",\n\t\"44129900\",\n\t\"44130000\",\n\t\"44141000\",\n\t\"44149000\",\n\t\"44151000\",\n\t\"44152000\",\n\t\"44160010\",\n\t\"44160090\",\n\t\"44170010\",\n\t\"44170020\",\n\t\"44170090\",\n\t\"44181100\",\n\t\"44181900\",\n\t\"44182100\",\n\t\"44182900\",\n\t\"44183000\",\n\t\"44184000\",\n\t\"44185000\",\n\t\"44187300\",\n\t\"44187400\",\n\t\"44187500\",\n\t\"44187900\",\n\t\"44188100\",\n\t\"44188200\",\n\t\"44188300\",\n\t\"44188900\",\n\t\"44189100\",\n\t\"44189200\",\n\t\"44189900\",\n\t\"44191100\",\n\t\"44191200\",\n\t\"44191900\",\n\t\"44192000\",\n\t\"44199000\",\n\t\"44201100\",\n\t\"44201900\",\n\t\"44209000\",\n\t\"44211000\",\n\t\"44212000\",\n\t\"44219100\",\n\t\"44219900\",\n\t\"45011000\",\n\t\"45019000\",\n\t\"45020000\",\n\t\"45031000\",\n\t\"45039000\",\n\t\"45041000\",\n\t\"45049000\",\n\t\"46012100\",\n\t\"46012200\",\n\t\"46012900\",\n\t\"46019200\",\n\t\"46019300\",\n\t\"46019400\",\n\t\"46019900\",\n\t\"46021100\",\n\t\"46021200\",\n\t\"46021900\",\n\t\"46029000\",\n\t\"47010000\",\n\t\"47020000\",\n\t\"47031100\",\n\t\"47031900\",\n\t\"47032110\",\n\t\"47032190\",\n\t\"47032900\",\n\t\"47041100\",\n\t\"47041900\",\n\t\"47042100\",\n\t\"47042900\",\n\t\"47050000\",\n\t\"47061000\",\n\t\"47062000\",\n\t\"47063000\",\n\t\"47069100\",\n\t\"47069200\",\n\t\"47069300\",\n\t\"47071000\",\n\t\"47072000\",\n\t\"47073000\",\n\t\"47079000\",\n\t\"48010020\",\n\t\"48010030\",\n\t\"48010090\",\n\t\"48021000\",\n\t\"48022010\",\n\t\"48022090\",\n\t\"48024010\",\n\t\"48024090\",\n\t\"48025410\",\n\t\"48025491\",\n\t\"48025499\",\n\t\"48025510\",\n\t\"48025591\",\n\t\"48025592\",\n\t\"48025599\",\n\t\"48025610\",\n\t\"48025691\",\n\t\"48025692\",\n\t\"48025693\",\n\t\"48025699\",\n\t\"48025710\",\n\t\"48025791\",\n\t\"48025792\",\n\t\"48025793\",\n\t\"48025799\",\n\t\"48025810\",\n\t\"48025891\",\n\t\"48025892\",\n\t\"48025899\",\n\t\"48026110\",\n\t\"48026191\",\n\t\"48026192\",\n\t\"48026199\",\n\t\"48026210\",\n\t\"48026291\",\n\t\"48026292\",\n\t\"48026299\",\n\t\"48026910\",\n\t\"48026991\",\n\t\"48026992\",\n\t\"48026999\",\n\t\"48030010\",\n\t\"48030090\",\n\t\"48041100\",\n\t\"48041900\",\n\t\"48042100\",\n\t\"48042900\",\n\t\"48043110\",\n\t\"48043190\",\n\t\"48043910\",\n\t\"48043990\",\n\t\"48044100\",\n\t\"48044200\",\n\t\"48044900\",\n\t\"48045100\",\n\t\"48045200\",\n\t\"48045910\",\n\t\"48045990\",\n\t\"48051100\",\n\t\"48051200\",\n\t\"48051900\",\n\t\"48052400\",\n\t\"48052500\",\n\t\"48053000\",\n\t\"48054010\",\n\t\"48054090\",\n\t\"48055000\",\n\t\"48059100\",\n\t\"48059210\",\n\t\"48059290\",\n\t\"48059300\",\n\t\"48061000\",\n\t\"48062000\",\n\t\"48063000\",\n\t\"48064000\",\n\t\"48070000\",\n\t\"48081000\",\n\t\"48084000\",\n\t\"48089000\",\n\t\"48092000\",\n\t\"48099000\",\n\t\"48101310\",\n\t\"48101381\",\n\t\"48101382\",\n\t\"48101389\",\n\t\"48101391\",\n\t\"48101399\",\n\t\"48101410\",\n\t\"48101481\",\n\t\"48101482\",\n\t\"48101489\",\n\t\"48101490\",\n\t\"48101910\",\n\t\"48101981\",\n\t\"48101982\",\n\t\"48101989\",\n\t\"48101991\",\n\t\"48101999\",\n\t\"48102210\",\n\t\"48102290\",\n\t\"48102910\",\n\t\"48102990\",\n\t\"48103110\",\n\t\"48103190\",\n\t\"48103210\",\n\t\"48103290\",\n\t\"48103910\",\n\t\"48103990\",\n\t\"48109210\",\n\t\"48109290\",\n\t\"48109910\",\n\t\"48109990\",\n\t\"48111010\",\n\t\"48111090\",\n\t\"48114110\",\n\t\"48114190\",\n\t\"48114910\",\n\t\"48114990\",\n\t\"48115110\",\n\t\"48115121\",\n\t\"48115122\",\n\t\"48115123\",\n\t\"48115128\",\n\t\"48115129\",\n\t\"48115130\",\n\t\"48115910\",\n\t\"48115921\",\n\t\"48115922\",\n\t\"48115923\",\n\t\"48115929\",\n\t\"48115930\",\n\t\"48116010\",\n\t\"48116090\",\n\t\"48119011\",\n\t\"48119019\",\n\t\"48119020\",\n\t\"48119090\",\n\t\"48120000\",\n\t\"48131000\",\n\t\"48132000\",\n\t\"48139000\",\n\t\"48142000\",\n\t\"48149000\",\n\t\"48162000\",\n\t\"48169010\",\n\t\"48169090\",\n\t\"48171000\",\n\t\"48172000\",\n\t\"48173000\",\n\t\"48181000\",\n\t\"48182000\",\n\t\"48183000\",\n\t\"48185000\",\n\t\"48189010\",\n\t\"48189090\",\n\t\"48191000\",\n\t\"48192000\",\n\t\"48193000\",\n\t\"48194000\",\n\t\"48195000\",\n\t\"48196000\",\n\t\"48201000\",\n\t\"48202000\",\n\t\"48203000\",\n\t\"48204000\",\n\t\"48205000\",\n\t\"48209000\",\n\t\"48211000\",\n\t\"48219000\",\n\t\"48221000\",\n\t\"48229000\",\n\t\"48232010\",\n\t\"48232091\",\n\t\"48232099\",\n\t\"48234000\",\n\t\"48236100\",\n\t\"48236900\",\n\t\"48237000\",\n\t\"48239010\",\n\t\"48239020\",\n\t\"48239091\",\n\t\"48239099\",\n\t\"49011000\",\n\t\"49019100\",\n\t\"49019900\",\n\t\"49021000\",\n\t\"49029000\",\n\t\"49030000\",\n\t\"49040000\",\n\t\"49052000\",\n\t\"49059000\",\n\t\"49060000\",\n\t\"49070010\",\n\t\"49070020\",\n\t\"49070030\",\n\t\"49070090\",\n\t\"49081000\",\n\t\"49089000\",\n\t\"49090000\",\n\t\"49100000\",\n\t\"49111010\",\n\t\"49111090\",\n\t\"49119100\",\n\t\"49119900\",\n\t\"50010000\",\n\t\"50020000\",\n\t\"50030010\",\n\t\"50030090\",\n\t\"50040000\",\n\t\"50050000\",\n\t\"50060000\",\n\t\"50071010\",\n\t\"50071090\",\n\t\"50072010\",\n\t\"50072090\",\n\t\"50079000\",\n\t\"51011110\",\n\t\"51011190\",\n\t\"51011900\",\n\t\"51012100\",\n\t\"51012900\",\n\t\"51013000\",\n\t\"51021100\",\n\t\"51021900\",\n\t\"51022000\",\n\t\"51031000\",\n\t\"51032000\",\n\t\"51033000\",\n\t\"51040000\",\n\t\"51051000\",\n\t\"51052100\",\n\t\"51052910\",\n\t\"51052991\",\n\t\"51052999\",\n\t\"51053100\",\n\t\"51053900\",\n\t\"51054000\",\n\t\"51061000\",\n\t\"51062000\",\n\t\"51071011\",\n\t\"51071019\",\n\t\"51071090\",\n\t\"51072000\",\n\t\"51081000\",\n\t\"51082000\",\n\t\"51091000\",\n\t\"51099000\",\n\t\"51100000\",\n\t\"51111110\",\n\t\"51111120\",\n\t\"51111900\",\n\t\"51112000\",\n\t\"51113010\",\n\t\"51113090\",\n\t\"51119000\",\n\t\"51121100\",\n\t\"51121910\",\n\t\"51121920\",\n\t\"51122010\",\n\t\"51122020\",\n\t\"51123010\",\n\t\"51123020\",\n\t\"51129000\",\n\t\"51130011\",\n\t\"51130012\",\n\t\"51130013\",\n\t\"51130020\",\n\t\"52010010\",\n\t\"52010020\",\n\t\"52010090\",\n\t\"52021000\",\n\t\"52029100\",\n\t\"52029900\",\n\t\"52030000\",\n\t\"52041111\",\n\t\"52041112\",\n\t\"52041120\",\n\t\"52041131\",\n\t\"52041132\",\n\t\"52041140\",\n\t\"52041911\",\n\t\"52041912\",\n\t\"52041920\",\n\t\"52041931\",\n\t\"52041932\",\n\t\"52041940\",\n\t\"52042000\",\n\t\"52051100\",\n\t\"52051200\",\n\t\"52051310\",\n\t\"52051390\",\n\t\"52051400\",\n\t\"52051500\",\n\t\"52052100\",\n\t\"52052200\",\n\t\"52052310\",\n\t\"52052390\",\n\t\"52052400\",\n\t\"52052600\",\n\t\"52052700\",\n\t\"52052800\",\n\t\"52053100\",\n\t\"52053200\",\n\t\"52053300\",\n\t\"52053400\",\n\t\"52053500\",\n\t\"52054100\",\n\t\"52054200\",\n\t\"52054300\",\n\t\"52054400\",\n\t\"52054600\",\n\t\"52054700\",\n\t\"52054800\",\n\t\"52061100\",\n\t\"52061200\",\n\t\"52061300\",\n\t\"52061400\",\n\t\"52061500\",\n\t\"52062100\",\n\t\"52062200\",\n\t\"52062300\",\n\t\"52062400\",\n\t\"52062500\",\n\t\"52063100\",\n\t\"52063200\",\n\t\"52063300\",\n\t\"52063400\",\n\t\"52063500\",\n\t\"52064100\",\n\t\"52064200\",\n\t\"52064300\",\n\t\"52064400\",\n\t\"52064500\",\n\t\"52071000\",\n\t\"52079000\",\n\t\"52081100\",\n\t\"52081200\",\n\t\"52081300\",\n\t\"52081900\",\n\t\"52082100\",\n\t\"52082200\",\n\t\"52082300\",\n\t\"52082900\",\n\t\"52083100\",\n\t\"52083200\",\n\t\"52083300\",\n\t\"52083900\",\n\t\"52084100\",\n\t\"52084200\",\n\t\"52084300\",\n\t\"52084900\",\n\t\"52085100\",\n\t\"52085200\",\n\t\"52085910\",\n\t\"52085990\",\n\t\"52091100\",\n\t\"52091200\",\n\t\"52091900\",\n\t\"52092100\",\n\t\"52092200\",\n\t\"52092900\",\n\t\"52093100\",\n\t\"52093200\",\n\t\"52093900\",\n\t\"52094100\",\n\t\"52094210\",\n\t\"52094290\",\n\t\"52094300\",\n\t\"52094900\",\n\t\"52095100\",\n\t\"52095200\",\n\t\"52095900\",\n\t\"52101100\",\n\t\"52101910\",\n\t\"52101990\",\n\t\"52102100\",\n\t\"52102910\",\n\t\"52102990\",\n\t\"52103100\",\n\t\"52103200\",\n\t\"52103900\",\n\t\"52104100\",\n\t\"52104910\",\n\t\"52104990\",\n\t\"52105100\",\n\t\"52105910\",\n\t\"52105990\",\n\t\"52111100\",\n\t\"52111200\",\n\t\"52111900\",\n\t\"52112010\",\n\t\"52112020\",\n\t\"52112090\",\n\t\"52113100\",\n\t\"52113200\",\n\t\"52113900\",\n\t\"52114100\",\n\t\"52114210\",\n\t\"52114290\",\n\t\"52114300\",\n\t\"52114900\",\n\t\"52115100\",\n\t\"52115200\",\n\t\"52115900\",\n\t\"52121100\",\n\t\"52121200\",\n\t\"52121300\",\n\t\"52121400\",\n\t\"52121500\",\n\t\"52122100\",\n\t\"52122200\",\n\t\"52122300\",\n\t\"52122400\",\n\t\"52122500\",\n\t\"53011000\",\n\t\"53012110\",\n\t\"53012120\",\n\t\"53012910\",\n\t\"53012990\",\n\t\"53013000\",\n\t\"53021000\",\n\t\"53029000\",\n\t\"53031010\",\n\t\"53031090\",\n\t\"53039010\",\n\t\"53039090\",\n\t\"53050010\",\n\t\"53050090\",\n\t\"53061000\",\n\t\"53062000\",\n\t\"53071010\",\n\t\"53071090\",\n\t\"53072010\",\n\t\"53072090\",\n\t\"53081000\",\n\t\"53082000\",\n\t\"53089000\",\n\t\"53091100\",\n\t\"53091900\",\n\t\"53092100\",\n\t\"53092900\",\n\t\"53101010\",\n\t\"53101090\",\n\t\"53109000\",\n\t\"53110000\",\n\t\"54011011\",\n\t\"54011012\",\n\t\"54011090\",\n\t\"54012011\",\n\t\"54012012\",\n\t\"54012090\",\n\t\"54021100\",\n\t\"54021910\",\n\t\"54021990\",\n\t\"54022010\",\n\t\"54022090\",\n\t\"54023111\",\n\t\"54023119\",\n\t\"54023190\",\n\t\"54023211\",\n\t\"54023219\",\n\t\"54023290\",\n\t\"54023310\",\n\t\"54023320\",\n\t\"54023390\",\n\t\"54023400\",\n\t\"54023900\",\n\t\"54024400\",\n\t\"54024510\",\n\t\"54024520\",\n\t\"54024590\",\n\t\"54024600\",\n\t\"54024710\",\n\t\"54024720\",\n\t\"54024790\",\n\t\"54024800\",\n\t\"54024910\",\n\t\"54024990\",\n\t\"54025110\",\n\t\"54025190\",\n\t\"54025200\",\n\t\"54025300\",\n\t\"54025900\",\n\t\"54026110\",\n\t\"54026190\",\n\t\"54026200\",\n\t\"54026300\",\n\t\"54026900\",\n\t\"54031000\",\n\t\"54033110\",\n\t\"54033190\",\n\t\"54033200\",\n\t\"54033300\",\n\t\"54033900\",\n\t\"54034100\",\n\t\"54034200\",\n\t\"54034900\",\n\t\"54041100\",\n\t\"54041200\",\n\t\"54041911\",\n\t\"54041919\",\n\t\"54041990\",\n\t\"54049000\",\n\t\"54050000\",\n\t\"54060010\",\n\t\"54060020\",\n\t\"54071011\",\n\t\"54071019\",\n\t\"54071021\",\n\t\"54071029\",\n\t\"54072000\",\n\t\"54073000\",\n\t\"54074100\",\n\t\"54074200\",\n\t\"54074300\",\n\t\"54074400\",\n\t\"54075100\",\n\t\"54075210\",\n\t\"54075220\",\n\t\"54075300\",\n\t\"54075400\",\n\t\"54076100\",\n\t\"54076900\",\n\t\"54077100\",\n\t\"54077200\",\n\t\"54077300\",\n\t\"54077400\",\n\t\"54078100\",\n\t\"54078200\",\n\t\"54078300\",\n\t\"54078400\",\n\t\"54079100\",\n\t\"54079200\",\n\t\"54079300\",\n\t\"54079400\",\n\t\"54081000\",\n\t\"54082100\",\n\t\"54082200\",\n\t\"54082300\",\n\t\"54082400\",\n\t\"54083100\",\n\t\"54083200\",\n\t\"54083300\",\n\t\"54083400\",\n\t\"55011100\",\n\t\"55011900\",\n\t\"55012000\",\n\t\"55013000\",\n\t\"55014000\",\n\t\"55019000\",\n\t\"55021000\",\n\t\"55029010\",\n\t\"55029090\",\n\t\"55031100\",\n\t\"55031910\",\n\t\"55031990\",\n\t\"55032010\",\n\t\"55032090\",\n\t\"55033000\",\n\t\"55034000\",\n\t\"55039010\",\n\t\"55039020\",\n\t\"55039090\",\n\t\"55041000\",\n\t\"55049010\",\n\t\"55049090\",\n\t\"55051000\",\n\t\"55052000\",\n\t\"55061000\",\n\t\"55062000\",\n\t\"55063000\",\n\t\"55064000\",\n\t\"55069000\",\n\t\"55070000\",\n\t\"55081000\",\n\t\"55082000\",\n\t\"55091100\",\n\t\"55091210\",\n\t\"55091290\",\n\t\"55092100\",\n\t\"55092200\",\n\t\"55093100\",\n\t\"55093200\",\n\t\"55094100\",\n\t\"55094200\",\n\t\"55095100\",\n\t\"55095200\",\n\t\"55095300\",\n\t\"55095900\",\n\t\"55096100\",\n\t\"55096200\",\n\t\"55096900\",\n\t\"55099100\",\n\t\"55099200\",\n\t\"55099900\",\n\t\"55101111\",\n\t\"55101112\",\n\t\"55101113\",\n\t\"55101119\",\n\t\"55101190\",\n\t\"55101211\",\n\t\"55101212\",\n\t\"55101213\",\n\t\"55101219\",\n\t\"55101290\",\n\t\"55102011\",\n\t\"55102012\",\n\t\"55102013\",\n\t\"55102019\",\n\t\"55102090\",\n\t\"55103011\",\n\t\"55103012\",\n\t\"55103013\",\n\t\"55103019\",\n\t\"55103090\",\n\t\"55109011\",\n\t\"55109012\",\n\t\"55109013\",\n\t\"55109019\",\n\t\"55109090\",\n\t\"55111000\",\n\t\"55112000\",\n\t\"55113000\",\n\t\"55121100\",\n\t\"55121900\",\n\t\"55122100\",\n\t\"55122900\",\n\t\"55129110\",\n\t\"55129190\",\n\t\"55129910\",\n\t\"55129990\",\n\t\"55131100\",\n\t\"55131200\",\n\t\"55131300\",\n\t\"55131900\",\n\t\"55132100\",\n\t\"55132310\",\n\t\"55132390\",\n\t\"55132900\",\n\t\"55133100\",\n\t\"55133911\",\n\t\"55133919\",\n\t\"55133990\",\n\t\"55134100\",\n\t\"55134911\",\n\t\"55134919\",\n\t\"55134990\",\n\t\"55141100\",\n\t\"55141200\",\n\t\"55141910\",\n\t\"55141990\",\n\t\"55142100\",\n\t\"55142200\",\n\t\"55142300\",\n\t\"55142900\",\n\t\"55143011\",\n\t\"55143012\",\n\t\"55143019\",\n\t\"55143090\",\n\t\"55144100\",\n\t\"55144200\",\n\t\"55144300\",\n\t\"55144900\",\n\t\"55151100\",\n\t\"55151200\",\n\t\"55151300\",\n\t\"55151900\",\n\t\"55152100\",\n\t\"55152200\",\n\t\"55152900\",\n\t\"55159100\",\n\t\"55159910\",\n\t\"55159990\",\n\t\"55161100\",\n\t\"55161200\",\n\t\"55161300\",\n\t\"55161400\",\n\t\"55162100\",\n\t\"55162200\",\n\t\"55162300\",\n\t\"55162400\",\n\t\"55163100\",\n\t\"55163200\",\n\t\"55163300\",\n\t\"55163400\",\n\t\"55164100\",\n\t\"55164200\",\n\t\"55164300\",\n\t\"55164400\",\n\t\"55169100\",\n\t\"55169200\",\n\t\"55169300\",\n\t\"55169400\",\n\t\"56012110\",\n\t\"56012190\",\n\t\"56012211\",\n\t\"56012219\",\n\t\"56012291\",\n\t\"56012299\",\n\t\"56012900\",\n\t\"56013010\",\n\t\"56013090\",\n\t\"56021000\",\n\t\"56022100\",\n\t\"56022900\",\n\t\"56029000\",\n\t\"56031110\",\n\t\"56031120\",\n\t\"56031130\",\n\t\"56031140\",\n\t\"56031190\",\n\t\"56031210\",\n\t\"56031220\",\n\t\"56031230\",\n\t\"56031240\",\n\t\"56031250\",\n\t\"56031290\",\n\t\"56031310\",\n\t\"56031320\",\n\t\"56031330\",\n\t\"56031340\",\n\t\"56031350\",\n\t\"56031390\",\n\t\"56031410\",\n\t\"56031420\",\n\t\"56031430\",\n\t\"56031440\",\n\t\"56031490\",\n\t\"56039110\",\n\t\"56039120\",\n\t\"56039130\",\n\t\"56039190\",\n\t\"56039210\",\n\t\"56039220\",\n\t\"56039230\",\n\t\"56039240\",\n\t\"56039290\",\n\t\"56039310\",\n\t\"56039320\",\n\t\"56039330\",\n\t\"56039340\",\n\t\"56039390\",\n\t\"56039410\",\n\t\"56039420\",\n\t\"56039430\",\n\t\"56039490\",\n\t\"56041000\",\n\t\"56049010\",\n\t\"56049021\",\n\t\"56049022\",\n\t\"56049090\",\n\t\"56050010\",\n\t\"56050020\",\n\t\"56050090\",\n\t\"56060000\",\n\t\"56072100\",\n\t\"56072900\",\n\t\"56074100\",\n\t\"56074900\",\n\t\"56075011\",\n\t\"56075019\",\n\t\"56075090\",\n\t\"56079010\",\n\t\"56079020\",\n\t\"56079090\",\n\t\"56081100\",\n\t\"56081900\",\n\t\"56089000\",\n\t\"56090010\",\n\t\"56090090\",\n\t\"57011011\",\n\t\"57011012\",\n\t\"57011020\",\n\t\"57019000\",\n\t\"57021000\",\n\t\"57022000\",\n\t\"57023100\",\n\t\"57023200\",\n\t\"57023900\",\n\t\"57024100\",\n\t\"57024200\",\n\t\"57024900\",\n\t\"57025010\",\n\t\"57025020\",\n\t\"57025090\",\n\t\"57029100\",\n\t\"57029200\",\n\t\"57029900\",\n\t\"57031000\",\n\t\"57032100\",\n\t\"57032900\",\n\t\"57033100\",\n\t\"57033900\",\n\t\"57039000\",\n\t\"57041000\",\n\t\"57042000\",\n\t\"57049000\",\n\t\"57050000\",\n\t\"58011000\",\n\t\"58012100\",\n\t\"58012200\",\n\t\"58012300\",\n\t\"58012600\",\n\t\"58012700\",\n\t\"58013100\",\n\t\"58013200\",\n\t\"58013300\",\n\t\"58013600\",\n\t\"58013700\",\n\t\"58019000\",\n\t\"58021000\",\n\t\"58022000\",\n\t\"58023000\",\n\t\"58030010\",\n\t\"58030090\",\n\t\"58041010\",\n\t\"58041090\",\n\t\"58042100\",\n\t\"58042910\",\n\t\"58042990\",\n\t\"58043010\",\n\t\"58043090\",\n\t\"58050010\",\n\t\"58050020\",\n\t\"58050090\",\n\t\"58061000\",\n\t\"58062000\",\n\t\"58063100\",\n\t\"58063200\",\n\t\"58063900\",\n\t\"58064000\",\n\t\"58071000\",\n\t\"58079000\",\n\t\"58081000\",\n\t\"58089000\",\n\t\"58090000\",\n\t\"58101000\",\n\t\"58109100\",\n\t\"58109200\",\n\t\"58109900\",\n\t\"58110000\",\n\t\"59011000\",\n\t\"59019000\",\n\t\"59021010\",\n\t\"59021090\",\n\t\"59022000\",\n\t\"59029000\",\n\t\"59031000\",\n\t\"59032000\",\n\t\"59039010\",\n\t\"59039090\",\n\t\"59041000\",\n\t\"59049000\",\n\t\"59050000\",\n\t\"59061000\",\n\t\"59069100\",\n\t\"59069900\",\n\t\"59070000\",\n\t\"59080000\",\n\t\"59090000\",\n\t\"59100000\",\n\t\"59111000\",\n\t\"59112010\",\n\t\"59112090\",\n\t\"59113100\",\n\t\"59113200\",\n\t\"59114000\",\n\t\"59119000\",\n\t\"60011010\",\n\t\"60011020\",\n\t\"60011090\",\n\t\"60012100\",\n\t\"60012200\",\n\t\"60012900\",\n\t\"60019100\",\n\t\"60019200\",\n\t\"60019900\",\n\t\"60024010\",\n\t\"60024020\",\n\t\"60024090\",\n\t\"60029010\",\n\t\"60029020\",\n\t\"60029090\",\n\t\"60031000\",\n\t\"60032000\",\n\t\"60033000\",\n\t\"60034000\",\n\t\"60039000\",\n\t\"60041011\",\n\t\"60041012\",\n\t\"60041013\",\n\t\"60041014\",\n\t\"60041031\",\n\t\"60041032\",\n\t\"60041033\",\n\t\"60041034\",\n\t\"60041041\",\n\t\"60041042\",\n\t\"60041043\",\n\t\"60041044\",\n\t\"60041091\",\n\t\"60041092\",\n\t\"60041093\",\n\t\"60041094\",\n\t\"60049010\",\n\t\"60049030\",\n\t\"60049040\",\n\t\"60049090\",\n\t\"60052100\",\n\t\"60052200\",\n\t\"60052300\",\n\t\"60052400\",\n\t\"60053500\",\n\t\"60053600\",\n\t\"60053700\",\n\t\"60053800\",\n\t\"60053900\",\n\t\"60054100\",\n\t\"60054200\",\n\t\"60054300\",\n\t\"60054400\",\n\t\"60059010\",\n\t\"60059090\",\n\t\"60061000\",\n\t\"60062100\",\n\t\"60062200\",\n\t\"60062300\",\n\t\"60062400\",\n\t\"60063110\",\n\t\"60063120\",\n\t\"60063130\",\n\t\"60063190\",\n\t\"60063210\",\n\t\"60063220\",\n\t\"60063230\",\n\t\"60063290\",\n\t\"60063310\",\n\t\"60063320\",\n\t\"60063330\",\n\t\"60063390\",\n\t\"60063410\",\n\t\"60063420\",\n\t\"60063430\",\n\t\"60063490\",\n\t\"60064100\",\n\t\"60064200\",\n\t\"60064300\",\n\t\"60064400\",\n\t\"60069000\",\n\t\"61012000\",\n\t\"61013000\",\n\t\"61019010\",\n\t\"61019090\",\n\t\"61021000\",\n\t\"61022000\",\n\t\"61023000\",\n\t\"61029000\",\n\t\"61031010\",\n\t\"61031020\",\n\t\"61031090\",\n\t\"61032200\",\n\t\"61032300\",\n\t\"61032910\",\n\t\"61032990\",\n\t\"61033100\",\n\t\"61033200\",\n\t\"61033300\",\n\t\"61033900\",\n\t\"61034100\",\n\t\"61034200\",\n\t\"61034300\",\n\t\"61034900\",\n\t\"61041300\",\n\t\"61041910\",\n\t\"61041920\",\n\t\"61041990\",\n\t\"61042200\",\n\t\"61042300\",\n\t\"61042910\",\n\t\"61042990\",\n\t\"61043100\",\n\t\"61043200\",\n\t\"61043300\",\n\t\"61043900\",\n\t\"61044100\",\n\t\"61044200\",\n\t\"61044300\",\n\t\"61044400\",\n\t\"61044900\",\n\t\"61045100\",\n\t\"61045200\",\n\t\"61045300\",\n\t\"61045900\",\n\t\"61046100\",\n\t\"61046200\",\n\t\"61046300\",\n\t\"61046900\",\n\t\"61051000\",\n\t\"61052000\",\n\t\"61059000\",\n\t\"61061000\",\n\t\"61062000\",\n\t\"61069000\",\n\t\"61071100\",\n\t\"61071200\",\n\t\"61071900\",\n\t\"61072100\",\n\t\"61072200\",\n\t\"61072900\",\n\t\"61079100\",\n\t\"61079910\",\n\t\"61079990\",\n\t\"61081100\",\n\t\"61081900\",\n\t\"61082100\",\n\t\"61082200\",\n\t\"61082900\",\n\t\"61083100\",\n\t\"61083200\",\n\t\"61083900\",\n\t\"61089100\",\n\t\"61089200\",\n\t\"61089900\",\n\t\"61091000\",\n\t\"61099000\",\n\t\"61101100\",\n\t\"61101200\",\n\t\"61101900\",\n\t\"61102000\",\n\t\"61103000\",\n\t\"61109000\",\n\t\"61112000\",\n\t\"61113000\",\n\t\"61119010\",\n\t\"61119090\",\n\t\"61121100\",\n\t\"61121200\",\n\t\"61121900\",\n\t\"61122000\",\n\t\"61123100\",\n\t\"61123900\",\n\t\"61124100\",\n\t\"61124900\",\n\t\"61130000\",\n\t\"61142000\",\n\t\"61143000\",\n\t\"61149010\",\n\t\"61149090\",\n\t\"61151011\",\n\t\"61151012\",\n\t\"61151013\",\n\t\"61151014\",\n\t\"61151019\",\n\t\"61151021\",\n\t\"61151022\",\n\t\"61151029\",\n\t\"61151091\",\n\t\"61151092\",\n\t\"61151093\",\n\t\"61151099\",\n\t\"61152100\",\n\t\"61152200\",\n\t\"61152910\",\n\t\"61152920\",\n\t\"61152990\",\n\t\"61153010\",\n\t\"61153020\",\n\t\"61153090\",\n\t\"61159400\",\n\t\"61159500\",\n\t\"61159600\",\n\t\"61159900\",\n\t\"61161000\",\n\t\"61169100\",\n\t\"61169200\",\n\t\"61169300\",\n\t\"61169900\",\n\t\"61171000\",\n\t\"61178010\",\n\t\"61178090\",\n\t\"61179000\",\n\t\"62012000\",\n\t\"62013000\",\n\t\"62014000\",\n\t\"62019000\",\n\t\"62022000\",\n\t\"62023000\",\n\t\"62024000\",\n\t\"62029000\",\n\t\"62031100\",\n\t\"62031200\",\n\t\"62031900\",\n\t\"62032200\",\n\t\"62032300\",\n\t\"62032910\",\n\t\"62032990\",\n\t\"62033100\",\n\t\"62033200\",\n\t\"62033300\",\n\t\"62033900\",\n\t\"62034100\",\n\t\"62034200\",\n\t\"62034300\",\n\t\"62034900\",\n\t\"62041100\",\n\t\"62041200\",\n\t\"62041300\",\n\t\"62041900\",\n\t\"62042100\",\n\t\"62042200\",\n\t\"62042300\",\n\t\"62042900\",\n\t\"62043100\",\n\t\"62043200\",\n\t\"62043300\",\n\t\"62043900\",\n\t\"62044100\",\n\t\"62044200\",\n\t\"62044300\",\n\t\"62044400\",\n\t\"62044900\",\n\t\"62045100\",\n\t\"62045200\",\n\t\"62045300\",\n\t\"62045900\",\n\t\"62046100\",\n\t\"62046200\",\n\t\"62046300\",\n\t\"62046900\",\n\t\"62052000\",\n\t\"62053000\",\n\t\"62059010\",\n\t\"62059090\",\n\t\"62061000\",\n\t\"62062000\",\n\t\"62063000\",\n\t\"62064000\",\n\t\"62069000\",\n\t\"62071100\",\n\t\"62071900\",\n\t\"62072100\",\n\t\"62072200\",\n\t\"62072900\",\n\t\"62079100\",\n\t\"62079910\",\n\t\"62079990\",\n\t\"62081100\",\n\t\"62081900\",\n\t\"62082100\",\n\t\"62082200\",\n\t\"62082900\",\n\t\"62089100\",\n\t\"62089200\",\n\t\"62089900\",\n\t\"62092000\",\n\t\"62093000\",\n\t\"62099010\",\n\t\"62099090\",\n\t\"62101000\",\n\t\"62102000\",\n\t\"62103000\",\n\t\"62104000\",\n\t\"62105000\",\n\t\"62111100\",\n\t\"62111200\",\n\t\"62112000\",\n\t\"62113200\",\n\t\"62113300\",\n\t\"62113910\",\n\t\"62113990\",\n\t\"62114200\",\n\t\"62114300\",\n\t\"62114900\",\n\t\"62121000\",\n\t\"62122000\",\n\t\"62123000\",\n\t\"62129000\",\n\t\"62132000\",\n\t\"62139010\",\n\t\"62139090\",\n\t\"62141000\",\n\t\"62142000\",\n\t\"62143000\",\n\t\"62144000\",\n\t\"62149010\",\n\t\"62149090\",\n\t\"62151000\",\n\t\"62152000\",\n\t\"62159000\",\n\t\"62160000\",\n\t\"62171000\",\n\t\"62179000\",\n\t\"63011000\",\n\t\"63012000\",\n\t\"63013000\",\n\t\"63014000\",\n\t\"63019000\",\n\t\"63021000\",\n\t\"63022100\",\n\t\"63022200\",\n\t\"63022900\",\n\t\"63023100\",\n\t\"63023200\",\n\t\"63023900\",\n\t\"63024000\",\n\t\"63025100\",\n\t\"63025300\",\n\t\"63025910\",\n\t\"63025990\",\n\t\"63026000\",\n\t\"63029100\",\n\t\"63029300\",\n\t\"63029910\",\n\t\"63029990\",\n\t\"63031200\",\n\t\"63031910\",\n\t\"63031990\",\n\t\"63039100\",\n\t\"63039200\",\n\t\"63039900\",\n\t\"63041100\",\n\t\"63041910\",\n\t\"63041990\",\n\t\"63042000\",\n\t\"63049100\",\n\t\"63049200\",\n\t\"63049300\",\n\t\"63049900\",\n\t\"63051000\",\n\t\"63052000\",\n\t\"63053200\",\n\t\"63053310\",\n\t\"63053390\",\n\t\"63053900\",\n\t\"63059000\",\n\t\"63061200\",\n\t\"63061910\",\n\t\"63061990\",\n\t\"63062200\",\n\t\"63062910\",\n\t\"63062990\",\n\t\"63063010\",\n\t\"63063090\",\n\t\"63064010\",\n\t\"63064090\",\n\t\"63069000\",\n\t\"63071000\",\n\t\"63072000\",\n\t\"63079010\",\n\t\"63079020\",\n\t\"63079090\",\n\t\"63080000\",\n\t\"63090010\",\n\t\"63090090\",\n\t\"63101000\",\n\t\"63109000\",\n\t\"64011000\",\n\t\"64019200\",\n\t\"64019910\",\n\t\"64019990\",\n\t\"64021200\",\n\t\"64021900\",\n\t\"64022000\",\n\t\"64029110\",\n\t\"64029190\",\n\t\"64029910\",\n\t\"64029990\",\n\t\"64031200\",\n\t\"64031900\",\n\t\"64032000\",\n\t\"64034000\",\n\t\"64035110\",\n\t\"64035190\",\n\t\"64035910\",\n\t\"64035990\",\n\t\"64039110\",\n\t\"64039190\",\n\t\"64039910\",\n\t\"64039990\",\n\t\"64041100\",\n\t\"64041900\",\n\t\"64042000\",\n\t\"64051010\",\n\t\"64051020\",\n\t\"64051090\",\n\t\"64052000\",\n\t\"64059000\",\n\t\"64061000\",\n\t\"64062000\",\n\t\"64069010\",\n\t\"64069020\",\n\t\"64069090\",\n\t\"65010000\",\n\t\"65020010\",\n\t\"65020090\",\n\t\"65040010\",\n\t\"65040090\",\n\t\"65050011\",\n\t\"65050012\",\n\t\"65050019\",\n\t\"65050021\",\n\t\"65050022\",\n\t\"65050029\",\n\t\"65050031\",\n\t\"65050032\",\n\t\"65050039\",\n\t\"65050090\",\n\t\"65061010\",\n\t\"65061090\",\n\t\"65069100\",\n\t\"65069900\",\n\t\"65070000\",\n\t\"66011000\",\n\t\"66019110\",\n\t\"66019190\",\n\t\"66019900\",\n\t\"66020000\",\n\t\"66032000\",\n\t\"66039000\",\n\t\"67010000\",\n\t\"67021000\",\n\t\"67029000\",\n\t\"67030000\",\n\t\"67041100\",\n\t\"67041900\",\n\t\"67042000\",\n\t\"67049000\",\n\t\"68010000\",\n\t\"68021000\",\n\t\"68022100\",\n\t\"68022300\",\n\t\"68022900\",\n\t\"68029100\",\n\t\"68029200\",\n\t\"68029310\",\n\t\"68029390\",\n\t\"68029910\",\n\t\"68029990\",\n\t\"68030000\",\n\t\"68041000\",\n\t\"68042111\",\n\t\"68042119\",\n\t\"68042190\",\n\t\"68042211\",\n\t\"68042219\",\n\t\"68042290\",\n\t\"68042300\",\n\t\"68043000\",\n\t\"68051000\",\n\t\"68052000\",\n\t\"68053010\",\n\t\"68053020\",\n\t\"68053090\",\n\t\"68061000\",\n\t\"68062000\",\n\t\"68069010\",\n\t\"68069090\",\n\t\"68071000\",\n\t\"68079000\",\n\t\"68080000\",\n\t\"68091100\",\n\t\"68091900\",\n\t\"68099000\",\n\t\"68101100\",\n\t\"68101900\",\n\t\"68109100\",\n\t\"68109900\",\n\t\"68114000\",\n\t\"68118100\",\n\t\"68118200\",\n\t\"68118900\",\n\t\"68128000\",\n\t\"68129100\",\n\t\"68129910\",\n\t\"68129920\",\n\t\"68129930\",\n\t\"68129990\",\n\t\"68132000\",\n\t\"68138110\",\n\t\"68138190\",\n\t\"68138910\",\n\t\"68138990\",\n\t\"68141000\",\n\t\"68149000\",\n\t\"68151100\",\n\t\"68151200\",\n\t\"68151300\",\n\t\"68151900\",\n\t\"68152000\",\n\t\"68159110\",\n\t\"68159190\",\n\t\"68159911\",\n\t\"68159912\",\n\t\"68159913\",\n\t\"68159914\",\n\t\"68159919\",\n\t\"68159990\",\n\t\"69010000\",\n\t\"69021011\",\n\t\"69021018\",\n\t\"69021019\",\n\t\"69021090\",\n\t\"69022010\",\n\t\"69022091\",\n\t\"69022092\",\n\t\"69022093\",\n\t\"69022099\",\n\t\"69029010\",\n\t\"69029020\",\n\t\"69029030\",\n\t\"69029040\",\n\t\"69029090\",\n\t\"69031011\",\n\t\"69031012\",\n\t\"69031019\",\n\t\"69031020\",\n\t\"69031030\",\n\t\"69031040\",\n\t\"69031090\",\n\t\"69032010\",\n\t\"69032020\",\n\t\"69032030\",\n\t\"69032090\",\n\t\"69039011\",\n\t\"69039012\",\n\t\"69039019\",\n\t\"69039091\",\n\t\"69039092\",\n\t\"69039099\",\n\t\"69041000\",\n\t\"69049000\",\n\t\"69051000\",\n\t\"69059000\",\n\t\"69060000\",\n\t\"69072100\",\n\t\"69072200\",\n\t\"69072300\",\n\t\"69073000\",\n\t\"69074000\",\n\t\"69091100\",\n\t\"69091210\",\n\t\"69091220\",\n\t\"69091230\",\n\t\"69091290\",\n\t\"69091910\",\n\t\"69091920\",\n\t\"69091930\",\n\t\"69091990\",\n\t\"69099000\",\n\t\"69101000\",\n\t\"69109000\",\n\t\"69111010\",\n\t\"69111090\",\n\t\"69119000\",\n\t\"69120000\",\n\t\"69131000\",\n\t\"69139000\",\n\t\"69141000\",\n\t\"69149000\",\n\t\"70010000\",\n\t\"70021000\",\n\t\"70022000\",\n\t\"70023100\",\n\t\"70023200\",\n\t\"70023900\",\n\t\"70031200\",\n\t\"70031900\",\n\t\"70032000\",\n\t\"70033000\",\n\t\"70042000\",\n\t\"70049000\",\n\t\"70051000\",\n\t\"70052100\",\n\t\"70052900\",\n\t\"70053000\",\n\t\"70060000\",\n\t\"70071100\",\n\t\"70071900\",\n\t\"70072100\",\n\t\"70072900\",\n\t\"70080000\",\n\t\"70091000\",\n\t\"70099100\",\n\t\"70099200\",\n\t\"70101000\",\n\t\"70102000\",\n\t\"70109011\",\n\t\"70109012\",\n\t\"70109021\",\n\t\"70109022\",\n\t\"70109090\",\n\t\"70111010\",\n\t\"70111021\",\n\t\"70111029\",\n\t\"70111090\",\n\t\"70112000\",\n\t\"70119000\",\n\t\"70131000\",\n\t\"70132200\",\n\t\"70132800\",\n\t\"70133300\",\n\t\"70133700\",\n\t\"70134100\",\n\t\"70134210\",\n\t\"70134290\",\n\t\"70134900\",\n\t\"70139110\",\n\t\"70139190\",\n\t\"70139900\",\n\t\"70140000\",\n\t\"70151010\",\n\t\"70151091\",\n\t\"70151092\",\n\t\"70159010\",\n\t\"70159020\",\n\t\"70159030\",\n\t\"70159090\",\n\t\"70161000\",\n\t\"70169000\",\n\t\"70171000\",\n\t\"70172000\",\n\t\"70179000\",\n\t\"70181010\",\n\t\"70181020\",\n\t\"70181090\",\n\t\"70182000\",\n\t\"70189000\",\n\t\"70191100\",\n\t\"70191210\",\n\t\"70191290\",\n\t\"70191300\",\n\t\"70191400\",\n\t\"70191500\",\n\t\"70191900\",\n\t\"70196100\",\n\t\"70196200\",\n\t\"70196300\",\n\t\"70196400\",\n\t\"70196500\",\n\t\"70196600\",\n\t\"70196900\",\n\t\"70197100\",\n\t\"70197200\",\n\t\"70197310\",\n\t\"70197390\",\n\t\"70198000\",\n\t\"70199000\",\n\t\"70200010\",\n\t\"70200090\",\n\t\"71011000\",\n\t\"71012100\",\n\t\"71012200\",\n\t\"71021000\",\n\t\"71022100\",\n\t\"71022900\",\n\t\"71023100\",\n\t\"71023900\",\n\t\"71031000\",\n\t\"71039100\",\n\t\"71039900\",\n\t\"71041000\",\n\t\"71042100\",\n\t\"71042900\",\n\t\"71049100\",\n\t\"71049900\",\n\t\"71051000\",\n\t\"71059000\",\n\t\"71061000\",\n\t\"71069100\",\n\t\"71069210\",\n\t\"71069220\",\n\t\"71069290\",\n\t\"71070000\",\n\t\"71081100\",\n\t\"71081210\",\n\t\"71081290\",\n\t\"71081310\",\n\t\"71081390\",\n\t\"71082000\",\n\t\"71090000\",\n\t\"71101100\",\n\t\"71101910\",\n\t\"71101990\",\n\t\"71102100\",\n\t\"71102900\",\n\t\"71103100\",\n\t\"71103900\",\n\t\"71104100\",\n\t\"71104900\",\n\t\"71110000\",\n\t\"71123010\",\n\t\"71123020\",\n\t\"71123090\",\n\t\"71129100\",\n\t\"71129200\",\n\t\"71129900\",\n\t\"71131100\",\n\t\"71131900\",\n\t\"71132000\",\n\t\"71141100\",\n\t\"71141900\",\n\t\"71142000\",\n\t\"71151000\",\n\t\"71159000\",\n\t\"71161000\",\n\t\"71162010\",\n\t\"71162020\",\n\t\"71162090\",\n\t\"71171100\",\n\t\"71171900\",\n\t\"71179000\",\n\t\"71181010\",\n\t\"71181090\",\n\t\"71189000\",\n\t\"72011000\",\n\t\"72012000\",\n\t\"72015000\",\n\t\"72021100\",\n\t\"72021900\",\n\t\"72022100\",\n\t\"72022900\",\n\t\"72023000\",\n\t\"72024100\",\n\t\"72024900\",\n\t\"72025000\",\n\t\"72026000\",\n\t\"72027000\",\n\t\"72028000\",\n\t\"72029100\",\n\t\"72029200\",\n\t\"72029300\",\n\t\"72029910\",\n\t\"72029990\",\n\t\"72031000\",\n\t\"72039000\",\n\t\"72041000\",\n\t\"72042100\",\n\t\"72042900\",\n\t\"72043000\",\n\t\"72044100\",\n\t\"72044900\",\n\t\"72045000\",\n\t\"72051000\",\n\t\"72052100\",\n\t\"72052910\",\n\t\"72052920\",\n\t\"72052990\",\n\t\"72061000\",\n\t\"72069000\",\n\t\"72071110\",\n\t\"72071190\",\n\t\"72071200\",\n\t\"72071900\",\n\t\"72072000\",\n\t\"72081000\",\n\t\"72082500\",\n\t\"72082610\",\n\t\"72082690\",\n\t\"72082710\",\n\t\"72082790\",\n\t\"72083610\",\n\t\"72083690\",\n\t\"72083700\",\n\t\"72083810\",\n\t\"72083890\",\n\t\"72083910\",\n\t\"72083990\",\n\t\"72084000\",\n\t\"72085100\",\n\t\"72085200\",\n\t\"72085300\",\n\t\"72085400\",\n\t\"72089000\",\n\t\"72091500\",\n\t\"72091600\",\n\t\"72091700\",\n\t\"72091800\",\n\t\"72092500\",\n\t\"72092600\",\n\t\"72092700\",\n\t\"72092800\",\n\t\"72099000\",\n\t\"72101100\",\n\t\"72101200\",\n\t\"72102000\",\n\t\"72103010\",\n\t\"72103090\",\n\t\"72104110\",\n\t\"72104190\",\n\t\"72104910\",\n\t\"72104990\",\n\t\"72105000\",\n\t\"72106100\",\n\t\"72106911\",\n\t\"72106919\",\n\t\"72106990\",\n\t\"72107010\",\n\t\"72107020\",\n\t\"72109000\",\n\t\"72111300\",\n\t\"72111400\",\n\t\"72111900\",\n\t\"72112300\",\n\t\"72112910\",\n\t\"72112920\",\n\t\"72119010\",\n\t\"72119090\",\n\t\"72121000\",\n\t\"72122010\",\n\t\"72122090\",\n\t\"72123000\",\n\t\"72124010\",\n\t\"72124021\",\n\t\"72124029\",\n\t\"72125010\",\n\t\"72125090\",\n\t\"72126000\",\n\t\"72131000\",\n\t\"72132000\",\n\t\"72139110\",\n\t\"72139190\",\n\t\"72139910\",\n\t\"72139990\",\n\t\"72141010\",\n\t\"72141090\",\n\t\"72142000\",\n\t\"72143000\",\n\t\"72149100\",\n\t\"72149910\",\n\t\"72149990\",\n\t\"72151000\",\n\t\"72155000\",\n\t\"72159010\",\n\t\"72159090\",\n\t\"72161000\",\n\t\"72162100\",\n\t\"72162200\",\n\t\"72163100\",\n\t\"72163200\",\n\t\"72163300\",\n\t\"72164010\",\n\t\"72164090\",\n\t\"72165000\",\n\t\"72166110\",\n\t\"72166190\",\n\t\"72166910\",\n\t\"72166990\",\n\t\"72169100\",\n\t\"72169900\",\n\t\"72171011\",\n\t\"72171019\",\n\t\"72171090\",\n\t\"72172010\",\n\t\"72172090\",\n\t\"72173010\",\n\t\"72173090\",\n\t\"72179000\",\n\t\"72181000\",\n\t\"72189100\",\n\t\"72189900\",\n\t\"72191100\",\n\t\"72191200\",\n\t\"72191300\",\n\t\"72191400\",\n\t\"72192100\",\n\t\"72192200\",\n\t\"72192300\",\n\t\"72192400\",\n\t\"72193100\",\n\t\"72193200\",\n\t\"72193300\",\n\t\"72193400\",\n\t\"72193500\",\n\t\"72199010\",\n\t\"72199090\",\n\t\"72201100\",\n\t\"72201210\",\n\t\"72201220\",\n\t\"72201290\",\n\t\"72202010\",\n\t\"72202090\",\n\t\"72209000\",\n\t\"72210000\",\n\t\"72221100\",\n\t\"72221910\",\n\t\"72221990\",\n\t\"72222000\",\n\t\"72223000\",\n\t\"72224010\",\n\t\"72224090\",\n\t\"72230000\",\n\t\"72241000\",\n\t\"72249000\",\n\t\"72251100\",\n\t\"72251900\",\n\t\"72253000\",\n\t\"72254010\",\n\t\"72254020\",\n\t\"72254090\",\n\t\"72255010\",\n\t\"72255090\",\n\t\"72259100\",\n\t\"72259200\",\n\t\"72259910\",\n\t\"72259990\",\n\t\"72261100\",\n\t\"72261900\",\n\t\"72262010\",\n\t\"72262090\",\n\t\"72269100\",\n\t\"72269200\",\n\t\"72269900\",\n\t\"72271000\",\n\t\"72272000\",\n\t\"72279000\",\n\t\"72281010\",\n\t\"72281090\",\n\t\"72282000\",\n\t\"72283000\",\n\t\"72284000\",\n\t\"72285000\",\n\t\"72286000\",\n\t\"72287000\",\n\t\"72288000\",\n\t\"72292000\",\n\t\"72299000\",\n\t\"73011000\",\n\t\"73012000\",\n\t\"73021010\",\n\t\"73021090\",\n\t\"73023000\",\n\t\"73024000\",\n\t\"73029000\",\n\t\"73030000\",\n\t\"73041100\",\n\t\"73041900\",\n\t\"73042200\",\n\t\"73042310\",\n\t\"73042390\",\n\t\"73042400\",\n\t\"73042910\",\n\t\"73042931\",\n\t\"73042939\",\n\t\"73042990\",\n\t\"73043110\",\n\t\"73043190\",\n\t\"73043910\",\n\t\"73043920\",\n\t\"73043990\",\n\t\"73044110\",\n\t\"73044190\",\n\t\"73044900\",\n\t\"73045111\",\n\t\"73045119\",\n\t\"73045190\",\n\t\"73045910\",\n\t\"73045990\",\n\t\"73049011\",\n\t\"73049019\",\n\t\"73049090\",\n\t\"73051100\",\n\t\"73051200\",\n\t\"73051900\",\n\t\"73052000\",\n\t\"73053100\",\n\t\"73053900\",\n\t\"73059000\",\n\t\"73061100\",\n\t\"73061900\",\n\t\"73062100\",\n\t\"73062900\",\n\t\"73063010\",\n\t\"73063090\",\n\t\"73064000\",\n\t\"73065000\",\n\t\"73066100\",\n\t\"73066900\",\n\t\"73069010\",\n\t\"73069020\",\n\t\"73069090\",\n\t\"73071100\",\n\t\"73071910\",\n\t\"73071920\",\n\t\"73071990\",\n\t\"73072100\",\n\t\"73072200\",\n\t\"73072300\",\n\t\"73072900\",\n\t\"73079100\",\n\t\"73079200\",\n\t\"73079300\",\n\t\"73079900\",\n\t\"73081000\",\n\t\"73082000\",\n\t\"73083000\",\n\t\"73084000\",\n\t\"73089010\",\n\t\"73089090\",\n\t\"73090010\",\n\t\"73090020\",\n\t\"73090090\",\n\t\"73101010\",\n\t\"73101090\",\n\t\"73102110\",\n\t\"73102190\",\n\t\"73102910\",\n\t\"73102920\",\n\t\"73102990\",\n\t\"73110000\",\n\t\"73121010\",\n\t\"73121090\",\n\t\"73129000\",\n\t\"73130000\",\n\t\"73141200\",\n\t\"73141400\",\n\t\"73141900\",\n\t\"73142000\",\n\t\"73143100\",\n\t\"73143900\",\n\t\"73144100\",\n\t\"73144200\",\n\t\"73144900\",\n\t\"73145000\",\n\t\"73151110\",\n\t\"73151190\",\n\t\"73151210\",\n\t\"73151290\",\n\t\"73151900\",\n\t\"73152000\",\n\t\"73158100\",\n\t\"73158200\",\n\t\"73158900\",\n\t\"73159000\",\n\t\"73160000\",\n\t\"73170010\",\n\t\"73170020\",\n\t\"73170030\",\n\t\"73170090\",\n\t\"73181100\",\n\t\"73181200\",\n\t\"73181300\",\n\t\"73181400\",\n\t\"73181500\",\n\t\"73181600\",\n\t\"73181900\",\n\t\"73182100\",\n\t\"73182200\",\n\t\"73182300\",\n\t\"73182400\",\n\t\"73182900\",\n\t\"73194000\",\n\t\"73199000\",\n\t\"73201000\",\n\t\"73202010\",\n\t\"73202090\",\n\t\"73209000\",\n\t\"73211100\",\n\t\"73211200\",\n\t\"73211900\",\n\t\"73218100\",\n\t\"73218200\",\n\t\"73218900\",\n\t\"73219000\",\n\t\"73221100\",\n\t\"73221900\",\n\t\"73229010\",\n\t\"73229090\",\n\t\"73231000\",\n\t\"73239100\",\n\t\"73239200\",\n\t\"73239300\",\n\t\"73239400\",\n\t\"73239900\",\n\t\"73241000\",\n\t\"73242100\",\n\t\"73242900\",\n\t\"73249000\",\n\t\"73251000\",\n\t\"73259100\",\n\t\"73259910\",\n\t\"73259990\",\n\t\"73261100\",\n\t\"73261900\",\n\t\"73262000\",\n\t\"73269010\",\n\t\"73269020\",\n\t\"73269090\",\n\t\"74010000\",\n\t\"74020000\",\n\t\"74031100\",\n\t\"74031200\",\n\t\"74031300\",\n\t\"74031900\",\n\t\"74032100\",\n\t\"74032200\",\n\t\"74032900\",\n\t\"74040000\",\n\t\"74050000\",\n\t\"74061010\",\n\t\"74061020\",\n\t\"74061090\",\n\t\"74062000\",\n\t\"74071010\",\n\t\"74071021\",\n\t\"74071029\",\n\t\"74072110\",\n\t\"74072120\",\n\t\"74072910\",\n\t\"74072921\",\n\t\"74072929\",\n\t\"74081100\",\n\t\"74081900\",\n\t\"74082100\",\n\t\"74082200\",\n\t\"74082912\",\n\t\"74082913\",\n\t\"74082919\",\n\t\"74082990\",\n\t\"74091100\",\n\t\"74091900\",\n\t\"74092100\",\n\t\"74092900\",\n\t\"74093111\",\n\t\"74093119\",\n\t\"74093190\",\n\t\"74093900\",\n\t\"74094011\",\n\t\"74094019\",\n\t\"74094090\",\n\t\"74099000\",\n\t\"74101112\",\n\t\"74101113\",\n\t\"74101119\",\n\t\"74101190\",\n\t\"74101200\",\n\t\"74102110\",\n\t\"74102120\",\n\t\"74102130\",\n\t\"74102190\",\n\t\"74102200\",\n\t\"74111010\",\n\t\"74111090\",\n\t\"74112110\",\n\t\"74112190\",\n\t\"74112210\",\n\t\"74112290\",\n\t\"74112910\",\n\t\"74112990\",\n\t\"74121000\",\n\t\"74122000\",\n\t\"74130000\",\n\t\"74151000\",\n\t\"74152100\",\n\t\"74152900\",\n\t\"74153300\",\n\t\"74153900\",\n\t\"74181000\",\n\t\"74182000\",\n\t\"74192000\",\n\t\"74198010\",\n\t\"74198020\",\n\t\"74198030\",\n\t\"74198040\",\n\t\"74198090\",\n\t\"75011000\",\n\t\"75012000\",\n\t\"75021010\",\n\t\"75021090\",\n\t\"75022000\",\n\t\"75030000\",\n\t\"75040010\",\n\t\"75040090\",\n\t\"75051110\",\n\t\"75051121\",\n\t\"75051129\",\n\t\"75051210\",\n\t\"75051221\",\n\t\"75051229\",\n\t\"75052100\",\n\t\"75052210\",\n\t\"75052290\",\n\t\"75061000\",\n\t\"75062000\",\n\t\"75071100\",\n\t\"75071200\",\n\t\"75072000\",\n\t\"75081000\",\n\t\"75089010\",\n\t\"75089090\",\n\t\"76011000\",\n\t\"76012000\",\n\t\"76020000\",\n\t\"76031000\",\n\t\"76032000\",\n\t\"76041010\",\n\t\"76041021\",\n\t\"76041029\",\n\t\"76042100\",\n\t\"76042911\",\n\t\"76042919\",\n\t\"76042920\",\n\t\"76051110\",\n\t\"76051190\",\n\t\"76051910\",\n\t\"76051990\",\n\t\"76052110\",\n\t\"76052190\",\n\t\"76052910\",\n\t\"76052990\",\n\t\"76061110\",\n\t\"76061190\",\n\t\"76061210\",\n\t\"76061220\",\n\t\"76061230\",\n\t\"76061290\",\n\t\"76069100\",\n\t\"76069200\",\n\t\"76071110\",\n\t\"76071120\",\n\t\"76071190\",\n\t\"76071910\",\n\t\"76071990\",\n\t\"76072000\",\n\t\"76081000\",\n\t\"76082010\",\n\t\"76082090\",\n\t\"76090000\",\n\t\"76101000\",\n\t\"76109000\",\n\t\"76110000\",\n\t\"76121000\",\n\t\"76129011\",\n\t\"76129012\",\n\t\"76129019\",\n\t\"76129020\",\n\t\"76129090\",\n\t\"76130000\",\n\t\"76141010\",\n\t\"76141090\",\n\t\"76149010\",\n\t\"76149090\",\n\t\"76151000\",\n\t\"76152000\",\n\t\"76161000\",\n\t\"76169100\",\n\t\"76169900\",\n\t\"78011011\",\n\t\"78011019\",\n\t\"78011090\",\n\t\"78019100\",\n\t\"78019900\",\n\t\"78020000\",\n\t\"78041100\",\n\t\"78041900\",\n\t\"78042000\",\n\t\"78060010\",\n\t\"78060020\",\n\t\"78060090\",\n\t\"79011111\",\n\t\"79011119\",\n\t\"79011191\",\n\t\"79011199\",\n\t\"79011210\",\n\t\"79011290\",\n\t\"79012010\",\n\t\"79012090\",\n\t\"79020000\",\n\t\"79031000\",\n\t\"79039000\",\n\t\"79040000\",\n\t\"79050000\",\n\t\"79070010\",\n\t\"79070090\",\n\t\"80011000\",\n\t\"80012000\",\n\t\"80020000\",\n\t\"80030000\",\n\t\"80070010\",\n\t\"80070020\",\n\t\"80070030\",\n\t\"80070090\",\n\t\"81011000\",\n\t\"81019400\",\n\t\"81019600\",\n\t\"81019700\",\n\t\"81019910\",\n\t\"81019990\",\n\t\"81021000\",\n\t\"81029400\",\n\t\"81029500\",\n\t\"81029600\",\n\t\"81029700\",\n\t\"81029900\",\n\t\"81032000\",\n\t\"81033000\",\n\t\"81039100\",\n\t\"81039900\",\n\t\"81041100\",\n\t\"81041900\",\n\t\"81042000\",\n\t\"81043000\",\n\t\"81049000\",\n\t\"81052010\",\n\t\"81052021\",\n\t\"81052029\",\n\t\"81052090\",\n\t\"81053000\",\n\t\"81059010\",\n\t\"81059090\",\n\t\"81061000\",\n\t\"81069000\",\n\t\"81082000\",\n\t\"81083000\",\n\t\"81089000\",\n\t\"81092100\",\n\t\"81092900\",\n\t\"81093100\",\n\t\"81093900\",\n\t\"81099100\",\n\t\"81099900\",\n\t\"81101010\",\n\t\"81101020\",\n\t\"81102000\",\n\t\"81109000\",\n\t\"81110010\",\n\t\"81110020\",\n\t\"81110090\",\n\t\"81121200\",\n\t\"81121300\",\n\t\"81121900\",\n\t\"81122110\",\n\t\"81122120\",\n\t\"81122200\",\n\t\"81122900\",\n\t\"81123100\",\n\t\"81123900\",\n\t\"81124100\",\n\t\"81124900\",\n\t\"81125100\",\n\t\"81125200\",\n\t\"81125900\",\n\t\"81126100\",\n\t\"81126900\",\n\t\"81129200\",\n\t\"81129900\",\n\t\"81130010\",\n\t\"81130090\",\n\t\"82011000\",\n\t\"82013000\",\n\t\"82014000\",\n\t\"82015000\",\n\t\"82016000\",\n\t\"82019000\",\n\t\"82021000\",\n\t\"82022000\",\n\t\"82023100\",\n\t\"82023900\",\n\t\"82024000\",\n\t\"82029100\",\n\t\"82029910\",\n\t\"82029990\",\n\t\"82031010\",\n\t\"82031090\",\n\t\"82032010\",\n\t\"82032090\",\n\t\"82033000\",\n\t\"82034000\",\n\t\"82041100\",\n\t\"82041200\",\n\t\"82042000\",\n\t\"82051000\",\n\t\"82052000\",\n\t\"82053000\",\n\t\"82054000\",\n\t\"82055100\",\n\t\"82055900\",\n\t\"82056000\",\n\t\"82057000\",\n\t\"82059000\",\n\t\"82060000\",\n\t\"82071300\",\n\t\"82071910\",\n\t\"82071990\",\n\t\"82072000\",\n\t\"82073000\",\n\t\"82074010\",\n\t\"82074020\",\n\t\"82075011\",\n\t\"82075019\",\n\t\"82075090\",\n\t\"82076000\",\n\t\"82077010\",\n\t\"82077020\",\n\t\"82077090\",\n\t\"82078000\",\n\t\"82079000\",\n\t\"82081000\",\n\t\"82082000\",\n\t\"82083000\",\n\t\"82084000\",\n\t\"82089000\",\n\t\"82090011\",\n\t\"82090019\",\n\t\"82090090\",\n\t\"82100010\",\n\t\"82100090\",\n\t\"82111000\",\n\t\"82119100\",\n\t\"82119210\",\n\t\"82119220\",\n\t\"82119290\",\n\t\"82119310\",\n\t\"82119320\",\n\t\"82119390\",\n\t\"82119400\",\n\t\"82119500\",\n\t\"82121010\",\n\t\"82121020\",\n\t\"82122010\",\n\t\"82122020\",\n\t\"82129000\",\n\t\"82130000\",\n\t\"82141000\",\n\t\"82142000\",\n\t\"82149010\",\n\t\"82149090\",\n\t\"82151000\",\n\t\"82152000\",\n\t\"82159100\",\n\t\"82159910\",\n\t\"82159990\",\n\t\"83011000\",\n\t\"83012000\",\n\t\"83013000\",\n\t\"83014000\",\n\t\"83015000\",\n\t\"83016000\",\n\t\"83017000\",\n\t\"83021000\",\n\t\"83022000\",\n\t\"83023000\",\n\t\"83024100\",\n\t\"83024200\",\n\t\"83024900\",\n\t\"83025000\",\n\t\"83026000\",\n\t\"83030000\",\n\t\"83040000\",\n\t\"83051000\",\n\t\"83052000\",\n\t\"83059000\",\n\t\"83061000\",\n\t\"83062100\",\n\t\"83062900\",\n\t\"83063000\",\n\t\"83071010\",\n\t\"83071090\",\n\t\"83079000\",\n\t\"83081000\",\n\t\"83082000\",\n\t\"83089010\",\n\t\"83089020\",\n\t\"83089090\",\n\t\"83091000\",\n\t\"83099000\",\n\t\"83100000\",\n\t\"83111000\",\n\t\"83112000\",\n\t\"83113000\",\n\t\"83119000\",\n\t\"84011000\",\n\t\"84012000\",\n\t\"84013000\",\n\t\"84014000\",\n\t\"84021100\",\n\t\"84021200\",\n\t\"84021900\",\n\t\"84022000\",\n\t\"84029000\",\n\t\"84031010\",\n\t\"84031090\",\n\t\"84039000\",\n\t\"84041010\",\n\t\"84041020\",\n\t\"84042000\",\n\t\"84049010\",\n\t\"84049090\",\n\t\"84051000\",\n\t\"84059000\",\n\t\"84061000\",\n\t\"84068100\",\n\t\"84068200\",\n\t\"84069011\",\n\t\"84069019\",\n\t\"84069021\",\n\t\"84069029\",\n\t\"84069090\",\n\t\"84071000\",\n\t\"84072110\",\n\t\"84072190\",\n\t\"84072910\",\n\t\"84072990\",\n\t\"84073110\",\n\t\"84073190\",\n\t\"84073200\",\n\t\"84073310\",\n\t\"84073390\",\n\t\"84073410\",\n\t\"84073490\",\n\t\"84079000\",\n\t\"84081010\",\n\t\"84081090\",\n\t\"84082010\",\n\t\"84082020\",\n\t\"84082030\",\n\t\"84082090\",\n\t\"84089010\",\n\t\"84089090\",\n\t\"84091000\",\n\t\"84099111\",\n\t\"84099112\",\n\t\"84099113\",\n\t\"84099114\",\n\t\"84099115\",\n\t\"84099116\",\n\t\"84099117\",\n\t\"84099118\",\n\t\"84099120\",\n\t\"84099130\",\n\t\"84099140\",\n\t\"84099190\",\n\t\"84099912\",\n\t\"84099914\",\n\t\"84099915\",\n\t\"84099917\",\n\t\"84099921\",\n\t\"84099929\",\n\t\"84099930\",\n\t\"84099941\",\n\t\"84099949\",\n\t\"84099951\",\n\t\"84099959\",\n\t\"84099961\",\n\t\"84099969\",\n\t\"84099971\",\n\t\"84099979\",\n\t\"84099991\",\n\t\"84099999\",\n\t\"84101100\",\n\t\"84101200\",\n\t\"84101300\",\n\t\"84109000\",\n\t\"84111100\",\n\t\"84111200\",\n\t\"84112100\",\n\t\"84112200\",\n\t\"84118100\",\n\t\"84118200\",\n\t\"84119100\",\n\t\"84119900\",\n\t\"84121000\",\n\t\"84122110\",\n\t\"84122190\",\n\t\"84122900\",\n\t\"84123110\",\n\t\"84123190\",\n\t\"84123900\",\n\t\"84128000\",\n\t\"84129010\",\n\t\"84129080\",\n\t\"84129090\",\n\t\"84131100\",\n\t\"84131900\",\n\t\"84132000\",\n\t\"84133010\",\n\t\"84133020\",\n\t\"84133030\",\n\t\"84133090\",\n\t\"84134000\",\n\t\"84135010\",\n\t\"84135090\",\n\t\"84136011\",\n\t\"84136019\",\n\t\"84136090\",\n\t\"84137010\",\n\t\"84137080\",\n\t\"84137090\",\n\t\"84138100\",\n\t\"84138200\",\n\t\"84139110\",\n\t\"84139190\",\n\t\"84139200\",\n\t\"84141000\",\n\t\"84142000\",\n\t\"84143011\",\n\t\"84143019\",\n\t\"84143091\",\n\t\"84143099\",\n\t\"84144010\",\n\t\"84144020\",\n\t\"84144090\",\n\t\"84145110\",\n\t\"84145120\",\n\t\"84145190\",\n\t\"84145910\",\n\t\"84145990\",\n\t\"84146000\",\n\t\"84147000\",\n\t\"84148011\",\n\t\"84148012\",\n\t\"84148013\",\n\t\"84148019\",\n\t\"84148021\",\n\t\"84148022\",\n\t\"84148029\",\n\t\"84148031\",\n\t\"84148032\",\n\t\"84148033\",\n\t\"84148038\",\n\t\"84148039\",\n\t\"84148090\",\n\t\"84149010\",\n\t\"84149020\",\n\t\"84149031\",\n\t\"84149032\",\n\t\"84149033\",\n\t\"84149034\",\n\t\"84149039\",\n\t\"84149040\",\n\t\"84151011\",\n\t\"84151019\",\n\t\"84151090\",\n\t\"84152010\",\n\t\"84152090\",\n\t\"84158110\",\n\t\"84158190\",\n\t\"84158210\",\n\t\"84158290\",\n\t\"84158300\",\n\t\"84159010\",\n\t\"84159020\",\n\t\"84159090\",\n\t\"84161000\",\n\t\"84162010\",\n\t\"84162090\",\n\t\"84163000\",\n\t\"84169000\",\n\t\"84171010\",\n\t\"84171020\",\n\t\"84171090\",\n\t\"84172000\",\n\t\"84178010\",\n\t\"84178020\",\n\t\"84178090\",\n\t\"84179000\",\n\t\"84181000\",\n\t\"84182100\",\n\t\"84182900\",\n\t\"84183000\",\n\t\"84184000\",\n\t\"84185010\",\n\t\"84185090\",\n\t\"84186100\",\n\t\"84186910\",\n\t\"84186920\",\n\t\"84186931\",\n\t\"84186932\",\n\t\"84186940\",\n\t\"84186991\",\n\t\"84186999\",\n\t\"84189100\",\n\t\"84189900\",\n\t\"84191100\",\n\t\"84191200\",\n\t\"84191900\",\n\t\"84192000\",\n\t\"84193300\",\n\t\"84193400\",\n\t\"84193500\",\n\t\"84193900\",\n\t\"84194010\",\n\t\"84194020\",\n\t\"84194090\",\n\t\"84195010\",\n\t\"84195021\",\n\t\"84195022\",\n\t\"84195029\",\n\t\"84195090\",\n\t\"84196000\",\n\t\"84198110\",\n\t\"84198190\",\n\t\"84198911\",\n\t\"84198919\",\n\t\"84198920\",\n\t\"84198930\",\n\t\"84198940\",\n\t\"84198991\",\n\t\"84198999\",\n\t\"84199010\",\n\t\"84199020\",\n\t\"84199031\",\n\t\"84199039\",\n\t\"84199040\",\n\t\"84199090\",\n\t\"84201010\",\n\t\"84201090\",\n\t\"84209100\",\n\t\"84209900\",\n\t\"84211110\",\n\t\"84211190\",\n\t\"84211210\",\n\t\"84211290\",\n\t\"84211910\",\n\t\"84211990\",\n\t\"84212100\",\n\t\"84212200\",\n\t\"84212300\",\n\t\"84212911\",\n\t\"84212919\",\n\t\"84212920\",\n\t\"84212930\",\n\t\"84212990\",\n\t\"84213100\",\n\t\"84213200\",\n\t\"84213910\",\n\t\"84213930\",\n\t\"84213990\",\n\t\"84219110\",\n\t\"84219191\",\n\t\"84219199\",\n\t\"84219910\",\n\t\"84219920\",\n\t\"84219991\",\n\t\"84219999\",\n\t\"84221100\",\n\t\"84221900\",\n\t\"84222000\",\n\t\"84223010\",\n\t\"84223021\",\n\t\"84223022\",\n\t\"84223023\",\n\t\"84223029\",\n\t\"84223030\",\n\t\"84224010\",\n\t\"84224020\",\n\t\"84224030\",\n\t\"84224090\",\n\t\"84229010\",\n\t\"84229090\",\n\t\"84231000\",\n\t\"84232000\",\n\t\"84233011\",\n\t\"84233019\",\n\t\"84233090\",\n\t\"84238110\",\n\t\"84238190\",\n\t\"84238200\",\n\t\"84238900\",\n\t\"84239010\",\n\t\"84239021\",\n\t\"84239029\",\n\t\"84241000\",\n\t\"84242000\",\n\t\"84243010\",\n\t\"84243020\",\n\t\"84243030\",\n\t\"84243090\",\n\t\"84244100\",\n\t\"84244900\",\n\t\"84248221\",\n\t\"84248229\",\n\t\"84248290\",\n\t\"84248910\",\n\t\"84248920\",\n\t\"84248990\",\n\t\"84249010\",\n\t\"84249090\",\n\t\"84251100\",\n\t\"84251910\",\n\t\"84251990\",\n\t\"84253110\",\n\t\"84253190\",\n\t\"84253910\",\n\t\"84253990\",\n\t\"84254100\",\n\t\"84254200\",\n\t\"84254910\",\n\t\"84254990\",\n\t\"84261100\",\n\t\"84261200\",\n\t\"84261900\",\n\t\"84262000\",\n\t\"84263000\",\n\t\"84264110\",\n\t\"84264190\",\n\t\"84264910\",\n\t\"84264990\",\n\t\"84269100\",\n\t\"84269900\",\n\t\"84271011\",\n\t\"84271019\",\n\t\"84271090\",\n\t\"84272010\",\n\t\"84272090\",\n\t\"84279000\",\n\t\"84281000\",\n\t\"84282010\",\n\t\"84282090\",\n\t\"84283100\",\n\t\"84283200\",\n\t\"84283300\",\n\t\"84283910\",\n\t\"84283920\",\n\t\"84283930\",\n\t\"84283990\",\n\t\"84284000\",\n\t\"84286000\",\n\t\"84287000\",\n\t\"84289010\",\n\t\"84289020\",\n\t\"84289030\",\n\t\"84289090\",\n\t\"84291110\",\n\t\"84291190\",\n\t\"84291910\",\n\t\"84291990\",\n\t\"84292010\",\n\t\"84292090\",\n\t\"84293000\",\n\t\"84294000\",\n\t\"84295111\",\n\t\"84295119\",\n\t\"84295121\",\n\t\"84295129\",\n\t\"84295191\",\n\t\"84295192\",\n\t\"84295199\",\n\t\"84295211\",\n\t\"84295212\",\n\t\"84295219\",\n\t\"84295220\",\n\t\"84295290\",\n\t\"84295900\",\n\t\"84301000\",\n\t\"84302000\",\n\t\"84303110\",\n\t\"84303190\",\n\t\"84303910\",\n\t\"84303990\",\n\t\"84304110\",\n\t\"84304120\",\n\t\"84304130\",\n\t\"84304190\",\n\t\"84304910\",\n\t\"84304920\",\n\t\"84304990\",\n\t\"84305000\",\n\t\"84306100\",\n\t\"84306911\",\n\t\"84306919\",\n\t\"84306990\",\n\t\"84311010\",\n\t\"84311090\",\n\t\"84312011\",\n\t\"84312019\",\n\t\"84312090\",\n\t\"84313110\",\n\t\"84313190\",\n\t\"84313900\",\n\t\"84314100\",\n\t\"84314200\",\n\t\"84314310\",\n\t\"84314390\",\n\t\"84314910\",\n\t\"84314921\",\n\t\"84314922\",\n\t\"84314923\",\n\t\"84314929\",\n\t\"84321000\",\n\t\"84322100\",\n\t\"84322900\",\n\t\"84323110\",\n\t\"84323190\",\n\t\"84323910\",\n\t\"84323990\",\n\t\"84324100\",\n\t\"84324200\",\n\t\"84328000\",\n\t\"84329000\",\n\t\"84331100\",\n\t\"84331900\",\n\t\"84332010\",\n\t\"84332090\",\n\t\"84333000\",\n\t\"84334000\",\n\t\"84335100\",\n\t\"84335200\",\n\t\"84335300\",\n\t\"84335911\",\n\t\"84335919\",\n\t\"84335990\",\n\t\"84336010\",\n\t\"84336021\",\n\t\"84336029\",\n\t\"84336090\",\n\t\"84339010\",\n\t\"84339090\",\n\t\"84341000\",\n\t\"84342010\",\n\t\"84342090\",\n\t\"84349000\",\n\t\"84351000\",\n\t\"84359000\",\n\t\"84361000\",\n\t\"84362100\",\n\t\"84362900\",\n\t\"84368000\",\n\t\"84369100\",\n\t\"84369900\",\n\t\"84371000\",\n\t\"84378010\",\n\t\"84378090\",\n\t\"84379000\",\n\t\"84381000\",\n\t\"84382011\",\n\t\"84382019\",\n\t\"84382090\",\n\t\"84383000\",\n\t\"84384000\",\n\t\"84385000\",\n\t\"84386000\",\n\t\"84388010\",\n\t\"84388020\",\n\t\"84388090\",\n\t\"84389000\",\n\t\"84391010\",\n\t\"84391020\",\n\t\"84391030\",\n\t\"84391090\",\n\t\"84392000\",\n\t\"84393010\",\n\t\"84393020\",\n\t\"84393030\",\n\t\"84393090\",\n\t\"84399100\",\n\t\"84399910\",\n\t\"84399990\",\n\t\"84401011\",\n\t\"84401019\",\n\t\"84401020\",\n\t\"84401090\",\n\t\"84409000\",\n\t\"84411010\",\n\t\"84411090\",\n\t\"84412000\",\n\t\"84413010\",\n\t\"84413090\",\n\t\"84414000\",\n\t\"84418000\",\n\t\"84419000\",\n\t\"84423010\",\n\t\"84423020\",\n\t\"84423090\",\n\t\"84424010\",\n\t\"84424020\",\n\t\"84424090\",\n\t\"84425000\",\n\t\"84431110\",\n\t\"84431190\",\n\t\"84431200\",\n\t\"84431310\",\n\t\"84431321\",\n\t\"84431329\",\n\t\"84431390\",\n\t\"84431400\",\n\t\"84431500\",\n\t\"84431600\",\n\t\"84431710\",\n\t\"84431790\",\n\t\"84431910\",\n\t\"84431990\",\n\t\"84433111\",\n\t\"84433112\",\n\t\"84433113\",\n\t\"84433114\",\n\t\"84433115\",\n\t\"84433116\",\n\t\"84433119\",\n\t\"84433191\",\n\t\"84433199\",\n\t\"84433221\",\n\t\"84433222\",\n\t\"84433223\",\n\t\"84433229\",\n\t\"84433231\",\n\t\"84433232\",\n\t\"84433233\",\n\t\"84433234\",\n\t\"84433235\",\n\t\"84433236\",\n\t\"84433237\",\n\t\"84433238\",\n\t\"84433239\",\n\t\"84433240\",\n\t\"84433251\",\n\t\"84433252\",\n\t\"84433259\",\n\t\"84433291\",\n\t\"84433299\",\n\t\"84433910\",\n\t\"84433921\",\n\t\"84433928\",\n\t\"84433929\",\n\t\"84433930\",\n\t\"84433990\",\n\t\"84439110\",\n\t\"84439191\",\n\t\"84439192\",\n\t\"84439199\",\n\t\"84439911\",\n\t\"84439912\",\n\t\"84439919\",\n\t\"84439921\",\n\t\"84439922\",\n\t\"84439923\",\n\t\"84439929\",\n\t\"84439931\",\n\t\"84439932\",\n\t\"84439933\",\n\t\"84439939\",\n\t\"84439941\",\n\t\"84439942\",\n\t\"84439949\",\n\t\"84439950\",\n\t\"84439960\",\n\t\"84439970\",\n\t\"84439980\",\n\t\"84439990\",\n\t\"84440010\",\n\t\"84440020\",\n\t\"84440090\",\n\t\"84451110\",\n\t\"84451120\",\n\t\"84451190\",\n\t\"84451200\",\n\t\"84451300\",\n\t\"84451910\",\n\t\"84451921\",\n\t\"84451922\",\n\t\"84451923\",\n\t\"84451924\",\n\t\"84451925\",\n\t\"84451926\",\n\t\"84451927\",\n\t\"84451929\",\n\t\"84452000\",\n\t\"84453010\",\n\t\"84453090\",\n\t\"84454011\",\n\t\"84454012\",\n\t\"84454018\",\n\t\"84454019\",\n\t\"84454021\",\n\t\"84454029\",\n\t\"84454031\",\n\t\"84454039\",\n\t\"84454040\",\n\t\"84454090\",\n\t\"84459010\",\n\t\"84459020\",\n\t\"84459030\",\n\t\"84459040\",\n\t\"84459090\",\n\t\"84461010\",\n\t\"84461090\",\n\t\"84462100\",\n\t\"84462900\",\n\t\"84463010\",\n\t\"84463020\",\n\t\"84463030\",\n\t\"84463040\",\n\t\"84463090\",\n\t\"84471100\",\n\t\"84471200\",\n\t\"84472010\",\n\t\"84472021\",\n\t\"84472029\",\n\t\"84472030\",\n\t\"84479010\",\n\t\"84479020\",\n\t\"84479090\",\n\t\"84481110\",\n\t\"84481120\",\n\t\"84481190\",\n\t\"84481900\",\n\t\"84482010\",\n\t\"84482020\",\n\t\"84482030\",\n\t\"84482090\",\n\t\"84483100\",\n\t\"84483211\",\n\t\"84483219\",\n\t\"84483220\",\n\t\"84483230\",\n\t\"84483240\",\n\t\"84483250\",\n\t\"84483290\",\n\t\"84483310\",\n\t\"84483390\",\n\t\"84483911\",\n\t\"84483912\",\n\t\"84483917\",\n\t\"84483919\",\n\t\"84483921\",\n\t\"84483922\",\n\t\"84483923\",\n\t\"84483929\",\n\t\"84483991\",\n\t\"84483992\",\n\t\"84483999\",\n\t\"84484200\",\n\t\"84484910\",\n\t\"84484920\",\n\t\"84484990\",\n\t\"84485110\",\n\t\"84485190\",\n\t\"84485910\",\n\t\"84485921\",\n\t\"84485922\",\n\t\"84485929\",\n\t\"84485930\",\n\t\"84485940\",\n\t\"84485990\",\n\t\"84490010\",\n\t\"84490020\",\n\t\"84490080\",\n\t\"84490091\",\n\t\"84490099\",\n\t\"84501100\",\n\t\"84501200\",\n\t\"84501900\",\n\t\"84502010\",\n\t\"84502020\",\n\t\"84502090\",\n\t\"84509010\",\n\t\"84509090\",\n\t\"84511000\",\n\t\"84512100\",\n\t\"84512910\",\n\t\"84512990\",\n\t\"84513010\",\n\t\"84513091\",\n\t\"84513099\",\n\t\"84514010\",\n\t\"84514021\",\n\t\"84514029\",\n\t\"84514090\",\n\t\"84515010\",\n\t\"84515020\",\n\t\"84515090\",\n\t\"84518000\",\n\t\"84519010\",\n\t\"84519090\",\n\t\"84521000\",\n\t\"84522110\",\n\t\"84522120\",\n\t\"84522190\",\n\t\"84522910\",\n\t\"84522921\",\n\t\"84522922\",\n\t\"84522923\",\n\t\"84522924\",\n\t\"84522925\",\n\t\"84522929\",\n\t\"84522990\",\n\t\"84523000\",\n\t\"84529020\",\n\t\"84529081\",\n\t\"84529089\",\n\t\"84529091\",\n\t\"84529092\",\n\t\"84529093\",\n\t\"84529094\",\n\t\"84529099\",\n\t\"84531010\",\n\t\"84531090\",\n\t\"84532000\",\n\t\"84538000\",\n\t\"84539000\",\n\t\"84541000\",\n\t\"84542010\",\n\t\"84542090\",\n\t\"84543010\",\n\t\"84543020\",\n\t\"84543090\",\n\t\"84549010\",\n\t\"84549090\",\n\t\"84551000\",\n\t\"84552110\",\n\t\"84552190\",\n\t\"84552210\",\n\t\"84552290\",\n\t\"84553010\",\n\t\"84553020\",\n\t\"84553090\",\n\t\"84559000\",\n\t\"84561111\",\n\t\"84561119\",\n\t\"84561190\",\n\t\"84561211\",\n\t\"84561219\",\n\t\"84561290\",\n\t\"84562010\",\n\t\"84562090\",\n\t\"84563011\",\n\t\"84563019\",\n\t\"84563090\",\n\t\"84564000\",\n\t\"84565000\",\n\t\"84569000\",\n\t\"84571000\",\n\t\"84572010\",\n\t\"84572090\",\n\t\"84573010\",\n\t\"84573090\",\n\t\"84581110\",\n\t\"84581191\",\n\t\"84581199\",\n\t\"84581910\",\n\t\"84581990\",\n\t\"84589100\",\n\t\"84589900\",\n\t\"84591000\",\n\t\"84592110\",\n\t\"84592191\",\n\t\"84592199\",\n\t\"84592900\",\n\t\"84593100\",\n\t\"84593900\",\n\t\"84594100\",\n\t\"84594900\",\n\t\"84595100\",\n\t\"84595900\",\n\t\"84596100\",\n\t\"84596900\",\n\t\"84597000\",\n\t\"84601200\",\n\t\"84601900\",\n\t\"84602200\",\n\t\"84602300\",\n\t\"84602400\",\n\t\"84602900\",\n\t\"84603100\",\n\t\"84603900\",\n\t\"84604011\",\n\t\"84604019\",\n\t\"84604091\",\n\t\"84604099\",\n\t\"84609011\",\n\t\"84609012\",\n\t\"84609019\",\n\t\"84609090\",\n\t\"84612010\",\n\t\"84612090\",\n\t\"84613010\",\n\t\"84613090\",\n\t\"84614010\",\n\t\"84614091\",\n\t\"84614099\",\n\t\"84615010\",\n\t\"84615020\",\n\t\"84615090\",\n\t\"84619010\",\n\t\"84619090\",\n\t\"84621100\",\n\t\"84621900\",\n\t\"84622200\",\n\t\"84622300\",\n\t\"84622400\",\n\t\"84622500\",\n\t\"84622600\",\n\t\"84622900\",\n\t\"84623200\",\n\t\"84623300\",\n\t\"84623900\",\n\t\"84624200\",\n\t\"84624900\",\n\t\"84625100\",\n\t\"84625900\",\n\t\"84626100\",\n\t\"84626200\",\n\t\"84626300\",\n\t\"84626900\",\n\t\"84629000\",\n\t\"84631010\",\n\t\"84631090\",\n\t\"84632010\",\n\t\"84632091\",\n\t\"84632099\",\n\t\"84633000\",\n\t\"84639010\",\n\t\"84639090\",\n\t\"84641000\",\n\t\"84642010\",\n\t\"84642021\",\n\t\"84642029\",\n\t\"84642090\",\n\t\"84649011\",\n\t\"84649019\",\n\t\"84649090\",\n\t\"84651000\",\n\t\"84652000\",\n\t\"84659110\",\n\t\"84659120\",\n\t\"84659190\",\n\t\"84659211\",\n\t\"84659219\",\n\t\"84659290\",\n\t\"84659310\",\n\t\"84659390\",\n\t\"84659400\",\n\t\"84659511\",\n\t\"84659512\",\n\t\"84659591\",\n\t\"84659592\",\n\t\"84659600\",\n\t\"84659900\",\n\t\"84661000\",\n\t\"84662010\",\n\t\"84662090\",\n\t\"84663000\",\n\t\"84669100\",\n\t\"84669200\",\n\t\"84669311\",\n\t\"84669319\",\n\t\"84669320\",\n\t\"84669330\",\n\t\"84669340\",\n\t\"84669350\",\n\t\"84669360\",\n\t\"84669410\",\n\t\"84669420\",\n\t\"84669490\",\n\t\"84671110\",\n\t\"84671190\",\n\t\"84671900\",\n\t\"84672100\",\n\t\"84672200\",\n\t\"84672910\",\n\t\"84672991\",\n\t\"84672992\",\n\t\"84672993\",\n\t\"84672999\",\n\t\"84678100\",\n\t\"84678900\",\n\t\"84679100\",\n\t\"84679200\",\n\t\"84679900\",\n\t\"84681000\",\n\t\"84682000\",\n\t\"84688010\",\n\t\"84688090\",\n\t\"84689010\",\n\t\"84689020\",\n\t\"84689090\",\n\t\"84701000\",\n\t\"84702100\",\n\t\"84702900\",\n\t\"84703000\",\n\t\"84705010\",\n\t\"84705090\",\n\t\"84709010\",\n\t\"84709090\",\n\t\"84713011\",\n\t\"84713012\",\n\t\"84713019\",\n\t\"84713090\",\n\t\"84714100\",\n\t\"84714900\",\n\t\"84715010\",\n\t\"84715020\",\n\t\"84715030\",\n\t\"84715040\",\n\t\"84715090\",\n\t\"84716052\",\n\t\"84716053\",\n\t\"84716054\",\n\t\"84716059\",\n\t\"84716061\",\n\t\"84716062\",\n\t\"84716080\",\n\t\"84716090\",\n\t\"84717010\",\n\t\"84717020\",\n\t\"84717030\",\n\t\"84717040\",\n\t\"84717090\",\n\t\"84718000\",\n\t\"84719011\",\n\t\"84719012\",\n\t\"84719013\",\n\t\"84719014\",\n\t\"84719019\",\n\t\"84719090\",\n\t\"84721000\",\n\t\"84723010\",\n\t\"84723020\",\n\t\"84723030\",\n\t\"84723090\",\n\t\"84729010\",\n\t\"84729020\",\n\t\"84729030\",\n\t\"84729040\",\n\t\"84729051\",\n\t\"84729059\",\n\t\"84729091\",\n\t\"84729099\",\n\t\"84732100\",\n\t\"84732910\",\n\t\"84732920\",\n\t\"84732990\",\n\t\"84733011\",\n\t\"84733019\",\n\t\"84733031\",\n\t\"84733032\",\n\t\"84733033\",\n\t\"84733034\",\n\t\"84733039\",\n\t\"84733041\",\n\t\"84733042\",\n\t\"84733049\",\n\t\"84733090\",\n\t\"84734010\",\n\t\"84734070\",\n\t\"84734090\",\n\t\"84735010\",\n\t\"84735040\",\n\t\"84735050\",\n\t\"84735090\",\n\t\"84741000\",\n\t\"84742010\",\n\t\"84742090\",\n\t\"84743100\",\n\t\"84743200\",\n\t\"84743900\",\n\t\"84748010\",\n\t\"84748090\",\n\t\"84749000\",\n\t\"84751000\",\n\t\"84752100\",\n\t\"84752910\",\n\t\"84752990\",\n\t\"84759000\",\n\t\"84762100\",\n\t\"84762900\",\n\t\"84768100\",\n\t\"84768910\",\n\t\"84768990\",\n\t\"84769000\",\n\t\"84771011\",\n\t\"84771019\",\n\t\"84771021\",\n\t\"84771029\",\n\t\"84771091\",\n\t\"84771099\",\n\t\"84772010\",\n\t\"84772090\",\n\t\"84773010\",\n\t\"84773090\",\n\t\"84774010\",\n\t\"84774090\",\n\t\"84775100\",\n\t\"84775911\",\n\t\"84775919\",\n\t\"84775990\",\n\t\"84778010\",\n\t\"84778090\",\n\t\"84779000\",\n\t\"84781010\",\n\t\"84781090\",\n\t\"84789000\",\n\t\"84791010\",\n\t\"84791090\",\n\t\"84792000\",\n\t\"84793000\",\n\t\"84794000\",\n\t\"84795000\",\n\t\"84796000\",\n\t\"84797100\",\n\t\"84797900\",\n\t\"84798110\",\n\t\"84798190\",\n\t\"84798210\",\n\t\"84798290\",\n\t\"84798300\",\n\t\"84798911\",\n\t\"84798912\",\n\t\"84798921\",\n\t\"84798922\",\n\t\"84798931\",\n\t\"84798932\",\n\t\"84798940\",\n\t\"84798991\",\n\t\"84798992\",\n\t\"84798999\",\n\t\"84799010\",\n\t\"84799090\",\n\t\"84801000\",\n\t\"84802000\",\n\t\"84803000\",\n\t\"84804100\",\n\t\"84804910\",\n\t\"84804990\",\n\t\"84805000\",\n\t\"84806000\",\n\t\"84807100\",\n\t\"84807910\",\n\t\"84807990\",\n\t\"84811000\",\n\t\"84812011\",\n\t\"84812019\",\n\t\"84812090\",\n\t\"84813000\",\n\t\"84814000\",\n\t\"84818011\",\n\t\"84818019\",\n\t\"84818021\",\n\t\"84818029\",\n\t\"84818031\",\n\t\"84818039\",\n\t\"84818091\",\n\t\"84818092\",\n\t\"84818093\",\n\t\"84818094\",\n\t\"84818095\",\n\t\"84818096\",\n\t\"84818097\",\n\t\"84818099\",\n\t\"84819010\",\n\t\"84819090\",\n\t\"84821010\",\n\t\"84821090\",\n\t\"84822010\",\n\t\"84822090\",\n\t\"84823000\",\n\t\"84824000\",\n\t\"84825010\",\n\t\"84825090\",\n\t\"84828000\",\n\t\"84829111\",\n\t\"84829119\",\n\t\"84829120\",\n\t\"84829130\",\n\t\"84829190\",\n\t\"84829910\",\n\t\"84829990\",\n\t\"84831011\",\n\t\"84831019\",\n\t\"84831020\",\n\t\"84831030\",\n\t\"84831040\",\n\t\"84831050\",\n\t\"84831090\",\n\t\"84832000\",\n\t\"84833010\",\n\t\"84833021\",\n\t\"84833029\",\n\t\"84833090\",\n\t\"84834010\",\n\t\"84834090\",\n\t\"84835010\",\n\t\"84835090\",\n\t\"84836011\",\n\t\"84836019\",\n\t\"84836090\",\n\t\"84839000\",\n\t\"84841000\",\n\t\"84842000\",\n\t\"84849000\",\n\t\"84851000\",\n\t\"84852000\",\n\t\"84853000\",\n\t\"84858000\",\n\t\"84859000\",\n\t\"84861000\",\n\t\"84862000\",\n\t\"84863000\",\n\t\"84864000\",\n\t\"84869000\",\n\t\"84871000\",\n\t\"84879000\",\n\t\"85011011\",\n\t\"85011019\",\n\t\"85011021\",\n\t\"85011029\",\n\t\"85011030\",\n\t\"85012000\",\n\t\"85013110\",\n\t\"85013120\",\n\t\"85013210\",\n\t\"85013220\",\n\t\"85013310\",\n\t\"85013320\",\n\t\"85013411\",\n\t\"85013419\",\n\t\"85013420\",\n\t\"85014011\",\n\t\"85014019\",\n\t\"85014021\",\n\t\"85014029\",\n\t\"85015110\",\n\t\"85015120\",\n\t\"85015190\",\n\t\"85015210\",\n\t\"85015220\",\n\t\"85015290\",\n\t\"85015310\",\n\t\"85015320\",\n\t\"85015330\",\n\t\"85015390\",\n\t\"85016100\",\n\t\"85016200\",\n\t\"85016300\",\n\t\"85016400\",\n\t\"85017100\",\n\t\"85017210\",\n\t\"85017290\",\n\t\"85018000\",\n\t\"85021110\",\n\t\"85021190\",\n\t\"85021210\",\n\t\"85021290\",\n\t\"85021311\",\n\t\"85021319\",\n\t\"85021390\",\n\t\"85022011\",\n\t\"85022019\",\n\t\"85022090\",\n\t\"85023100\",\n\t\"85023900\",\n\t\"85024010\",\n\t\"85024090\",\n\t\"85030010\",\n\t\"85030090\",\n\t\"85041000\",\n\t\"85042100\",\n\t\"85042200\",\n\t\"85042300\",\n\t\"85043111\",\n\t\"85043119\",\n\t\"85043191\",\n\t\"85043192\",\n\t\"85043193\",\n\t\"85043199\",\n\t\"85043211\",\n\t\"85043219\",\n\t\"85043221\",\n\t\"85043229\",\n\t\"85043300\",\n\t\"85043400\",\n\t\"85044010\",\n\t\"85044021\",\n\t\"85044022\",\n\t\"85044029\",\n\t\"85044030\",\n\t\"85044040\",\n\t\"85044050\",\n\t\"85044060\",\n\t\"85044090\",\n\t\"85045010\",\n\t\"85045090\",\n\t\"85049010\",\n\t\"85049020\",\n\t\"85049030\",\n\t\"85049040\",\n\t\"85049090\",\n\t\"85051100\",\n\t\"85051910\",\n\t\"85051990\",\n\t\"85052010\",\n\t\"85052090\",\n\t\"85059011\",\n\t\"85059019\",\n\t\"85059080\",\n\t\"85059090\",\n\t\"85061011\",\n\t\"85061012\",\n\t\"85061019\",\n\t\"85061020\",\n\t\"85061031\",\n\t\"85061032\",\n\t\"85061039\",\n\t\"85063010\",\n\t\"85063090\",\n\t\"85064010\",\n\t\"85064090\",\n\t\"85065010\",\n\t\"85065090\",\n\t\"85066010\",\n\t\"85066090\",\n\t\"85068010\",\n\t\"85068090\",\n\t\"85069000\",\n\t\"85071010\",\n\t\"85071090\",\n\t\"85072010\",\n\t\"85072090\",\n\t\"85073011\",\n\t\"85073019\",\n\t\"85073090\",\n\t\"85075010\",\n\t\"85075020\",\n\t\"85075090\",\n\t\"85076000\",\n\t\"85078000\",\n\t\"85079010\",\n\t\"85079020\",\n\t\"85079090\",\n\t\"85081100\",\n\t\"85081900\",\n\t\"85086000\",\n\t\"85087000\",\n\t\"85094010\",\n\t\"85094020\",\n\t\"85094030\",\n\t\"85094040\",\n\t\"85094050\",\n\t\"85094090\",\n\t\"85098010\",\n\t\"85098090\",\n\t\"85099000\",\n\t\"85101000\",\n\t\"85102000\",\n\t\"85103000\",\n\t\"85109011\",\n\t\"85109019\",\n\t\"85109020\",\n\t\"85109090\",\n\t\"85111000\",\n\t\"85112010\",\n\t\"85112090\",\n\t\"85113010\",\n\t\"85113020\",\n\t\"85114000\",\n\t\"85115010\",\n\t\"85115090\",\n\t\"85118010\",\n\t\"85118020\",\n\t\"85118030\",\n\t\"85118090\",\n\t\"85119000\",\n\t\"85121000\",\n\t\"85122011\",\n\t\"85122019\",\n\t\"85122021\",\n\t\"85122022\",\n\t\"85122023\",\n\t\"85122029\",\n\t\"85123000\",\n\t\"85124010\",\n\t\"85124020\",\n\t\"85129000\",\n\t\"85131010\",\n\t\"85131090\",\n\t\"85139000\",\n\t\"85141100\",\n\t\"85141900\",\n\t\"85142011\",\n\t\"85142019\",\n\t\"85142020\",\n\t\"85143100\",\n\t\"85143200\",\n\t\"85143900\",\n\t\"85144000\",\n\t\"85149000\",\n\t\"85151100\",\n\t\"85151900\",\n\t\"85152100\",\n\t\"85152900\",\n\t\"85153110\",\n\t\"85153190\",\n\t\"85153900\",\n\t\"85158010\",\n\t\"85158090\",\n\t\"85159000\",\n\t\"85161000\",\n\t\"85162100\",\n\t\"85162900\",\n\t\"85163100\",\n\t\"85163200\",\n\t\"85163300\",\n\t\"85164000\",\n\t\"85165000\",\n\t\"85166000\",\n\t\"85167100\",\n\t\"85167200\",\n\t\"85167910\",\n\t\"85167920\",\n\t\"85167990\",\n\t\"85168010\",\n\t\"85168090\",\n\t\"85169000\",\n\t\"85171100\",\n\t\"85171300\",\n\t\"85171410\",\n\t\"85171431\",\n\t\"85171432\",\n\t\"85171439\",\n\t\"85171441\",\n\t\"85171449\",\n\t\"85171490\",\n\t\"85171830\",\n\t\"85171890\",\n\t\"85176130\",\n\t\"85176141\",\n\t\"85176142\",\n\t\"85176143\",\n\t\"85176149\",\n\t\"85176191\",\n\t\"85176192\",\n\t\"85176199\",\n\t\"85176214\",\n\t\"85176215\",\n\t\"85176221\",\n\t\"85176229\",\n\t\"85176234\",\n\t\"85176239\",\n\t\"85176241\",\n\t\"85176249\",\n\t\"85176251\",\n\t\"85176252\",\n\t\"85176253\",\n\t\"85176254\",\n\t\"85176255\",\n\t\"85176256\",\n\t\"85176259\",\n\t\"85176262\",\n\t\"85176264\",\n\t\"85176265\",\n\t\"85176272\",\n\t\"85176273\",\n\t\"85176277\",\n\t\"85176278\",\n\t\"85176279\",\n\t\"85176291\",\n\t\"85176294\",\n\t\"85176296\",\n\t\"85176299\",\n\t\"85176900\",\n\t\"85177110\",\n\t\"85177120\",\n\t\"85177190\",\n\t\"85177900\",\n\t\"85181010\",\n\t\"85181090\",\n\t\"85182100\",\n\t\"85182200\",\n\t\"85182910\",\n\t\"85182990\",\n\t\"85183000\",\n\t\"85184000\",\n\t\"85185000\",\n\t\"85189010\",\n\t\"85189090\",\n\t\"85192000\",\n\t\"85193000\",\n\t\"85198110\",\n\t\"85198120\",\n\t\"85198190\",\n\t\"85198900\",\n\t\"85211010\",\n\t\"85211081\",\n\t\"85211089\",\n\t\"85211090\",\n\t\"85219000\",\n\t\"85221000\",\n\t\"85229000\",\n\t\"85232110\",\n\t\"85232120\",\n\t\"85232911\",\n\t\"85232919\",\n\t\"85232990\",\n\t\"85234110\",\n\t\"85234190\",\n\t\"85234910\",\n\t\"85234920\",\n\t\"85234990\",\n\t\"85235110\",\n\t\"85235190\",\n\t\"85235210\",\n\t\"85235290\",\n\t\"85235900\",\n\t\"85238000\",\n\t\"85241100\",\n\t\"85241200\",\n\t\"85241900\",\n\t\"85249100\",\n\t\"85249200\",\n\t\"85249900\",\n\t\"85255011\",\n\t\"85255019\",\n\t\"85255021\",\n\t\"85255022\",\n\t\"85255023\",\n\t\"85255024\",\n\t\"85255029\",\n\t\"85256010\",\n\t\"85256020\",\n\t\"85256090\",\n\t\"85258100\",\n\t\"85258200\",\n\t\"85258300\",\n\t\"85258911\",\n\t\"85258912\",\n\t\"85258913\",\n\t\"85258914\",\n\t\"85258919\",\n\t\"85258921\",\n\t\"85258922\",\n\t\"85258929\",\n\t\"85261000\",\n\t\"85269100\",\n\t\"85269200\",\n\t\"85271200\",\n\t\"85271300\",\n\t\"85271900\",\n\t\"85272100\",\n\t\"85272900\",\n\t\"85279100\",\n\t\"85279200\",\n\t\"85279910\",\n\t\"85279990\",\n\t\"85284200\",\n\t\"85284930\",\n\t\"85284990\",\n\t\"85285200\",\n\t\"85285900\",\n\t\"85286200\",\n\t\"85286910\",\n\t\"85286990\",\n\t\"85287111\",\n\t\"85287119\",\n\t\"85287190\",\n\t\"85287200\",\n\t\"85287300\",\n\t\"85291020\",\n\t\"85291090\",\n\t\"85299011\",\n\t\"85299012\",\n\t\"85299019\",\n\t\"85299020\",\n\t\"85299030\",\n\t\"85299040\",\n\t\"85299050\",\n\t\"85299090\",\n\t\"85301010\",\n\t\"85301090\",\n\t\"85308010\",\n\t\"85308090\",\n\t\"85309000\",\n\t\"85311010\",\n\t\"85311090\",\n\t\"85312000\",\n\t\"85318000\",\n\t\"85319000\",\n\t\"85321000\",\n\t\"85322111\",\n\t\"85322119\",\n\t\"85322120\",\n\t\"85322190\",\n\t\"85322200\",\n\t\"85322310\",\n\t\"85322390\",\n\t\"85322410\",\n\t\"85322420\",\n\t\"85322490\",\n\t\"85322510\",\n\t\"85322590\",\n\t\"85322910\",\n\t\"85322990\",\n\t\"85323010\",\n\t\"85323090\",\n\t\"85329000\",\n\t\"85331000\",\n\t\"85332110\",\n\t\"85332120\",\n\t\"85332190\",\n\t\"85332900\",\n\t\"85333110\",\n\t\"85333190\",\n\t\"85333910\",\n\t\"85333990\",\n\t\"85334011\",\n\t\"85334012\",\n\t\"85334013\",\n\t\"85334019\",\n\t\"85334091\",\n\t\"85334092\",\n\t\"85334099\",\n\t\"85339000\",\n\t\"85340011\",\n\t\"85340012\",\n\t\"85340013\",\n\t\"85340019\",\n\t\"85340020\",\n\t\"85340031\",\n\t\"85340032\",\n\t\"85340033\",\n\t\"85340039\",\n\t\"85340040\",\n\t\"85340051\",\n\t\"85340059\",\n\t\"85351000\",\n\t\"85352100\",\n\t\"85352900\",\n\t\"85353013\",\n\t\"85353017\",\n\t\"85353018\",\n\t\"85353019\",\n\t\"85353023\",\n\t\"85353027\",\n\t\"85353028\",\n\t\"85353029\",\n\t\"85354010\",\n\t\"85354090\",\n\t\"85359010\",\n\t\"85359090\",\n\t\"85361000\",\n\t\"85362000\",\n\t\"85363010\",\n\t\"85363090\",\n\t\"85364100\",\n\t\"85364900\",\n\t\"85365010\",\n\t\"85365020\",\n\t\"85365030\",\n\t\"85365090\",\n\t\"85366100\",\n\t\"85366910\",\n\t\"85366990\",\n\t\"85367000\",\n\t\"85369010\",\n\t\"85369020\",\n\t\"85369030\",\n\t\"85369040\",\n\t\"85369050\",\n\t\"85369060\",\n\t\"85369090\",\n\t\"85371011\",\n\t\"85371019\",\n\t\"85371020\",\n\t\"85371030\",\n\t\"85371090\",\n\t\"85372010\",\n\t\"85372090\",\n\t\"85381000\",\n\t\"85389010\",\n\t\"85389020\",\n\t\"85389090\",\n\t\"85391010\",\n\t\"85391090\",\n\t\"85392110\",\n\t\"85392190\",\n\t\"85392200\",\n\t\"85392910\",\n\t\"85392990\",\n\t\"85393111\",\n\t\"85393119\",\n\t\"85393120\",\n\t\"85393131\",\n\t\"85393132\",\n\t\"85393139\",\n\t\"85393210\",\n\t\"85393220\",\n\t\"85393230\",\n\t\"85393911\",\n\t\"85393912\",\n\t\"85393913\",\n\t\"85393919\",\n\t\"85393990\",\n\t\"85394110\",\n\t\"85394190\",\n\t\"85394900\",\n\t\"85395100\",\n\t\"85395200\",\n\t\"85399010\",\n\t\"85399020\",\n\t\"85399090\",\n\t\"85401100\",\n\t\"85401200\",\n\t\"85402011\",\n\t\"85402019\",\n\t\"85402020\",\n\t\"85402090\",\n\t\"85404000\",\n\t\"85406010\",\n\t\"85406090\",\n\t\"85407100\",\n\t\"85407900\",\n\t\"85408100\",\n\t\"85408910\",\n\t\"85408990\",\n\t\"85409110\",\n\t\"85409120\",\n\t\"85409130\",\n\t\"85409140\",\n\t\"85409190\",\n\t\"85409900\",\n\t\"85411011\",\n\t\"85411012\",\n\t\"85411019\",\n\t\"85411021\",\n\t\"85411022\",\n\t\"85411029\",\n\t\"85411031\",\n\t\"85411032\",\n\t\"85411039\",\n\t\"85411091\",\n\t\"85411092\",\n\t\"85411099\",\n\t\"85412110\",\n\t\"85412120\",\n\t\"85412191\",\n\t\"85412199\",\n\t\"85412910\",\n\t\"85412920\",\n\t\"85413011\",\n\t\"85413019\",\n\t\"85413021\",\n\t\"85413029\",\n\t\"85414111\",\n\t\"85414112\",\n\t\"85414121\",\n\t\"85414122\",\n\t\"85414123\",\n\t\"85414124\",\n\t\"85414210\",\n\t\"85414220\",\n\t\"85414290\",\n\t\"85414300\",\n\t\"85414900\",\n\t\"85415100\",\n\t\"85415900\",\n\t\"85416010\",\n\t\"85416090\",\n\t\"85419010\",\n\t\"85419020\",\n\t\"85419090\",\n\t\"85423110\",\n\t\"85423120\",\n\t\"85423190\",\n\t\"85423210\",\n\t\"85423221\",\n\t\"85423229\",\n\t\"85423291\",\n\t\"85423299\",\n\t\"85423311\",\n\t\"85423319\",\n\t\"85423320\",\n\t\"85423390\",\n\t\"85423911\",\n\t\"85423919\",\n\t\"85423920\",\n\t\"85423931\",\n\t\"85423939\",\n\t\"85423991\",\n\t\"85423999\",\n\t\"85429000\",\n\t\"85431000\",\n\t\"85432000\",\n\t\"85433010\",\n\t\"85433090\",\n\t\"85434000\",\n\t\"85437011\",\n\t\"85437012\",\n\t\"85437013\",\n\t\"85437014\",\n\t\"85437015\",\n\t\"85437019\",\n\t\"85437020\",\n\t\"85437031\",\n\t\"85437032\",\n\t\"85437033\",\n\t\"85437034\",\n\t\"85437035\",\n\t\"85437036\",\n\t\"85437039\",\n\t\"85437040\",\n\t\"85437050\",\n\t\"85437091\",\n\t\"85437092\",\n\t\"85437099\",\n\t\"85439010\",\n\t\"85439090\",\n\t\"85441100\",\n\t\"85441911\",\n\t\"85441919\",\n\t\"85441990\",\n\t\"85442000\",\n\t\"85443000\",\n\t\"85444200\",\n\t\"85444900\",\n\t\"85446000\",\n\t\"85447010\",\n\t\"85447020\",\n\t\"85447030\",\n\t\"85447090\",\n\t\"85451100\",\n\t\"85451910\",\n\t\"85451920\",\n\t\"85451990\",\n\t\"85452000\",\n\t\"85459010\",\n\t\"85459020\",\n\t\"85459030\",\n\t\"85459090\",\n\t\"85461000\",\n\t\"85462000\",\n\t\"85469000\",\n\t\"85471000\",\n\t\"85472010\",\n\t\"85472090\",\n\t\"85479000\",\n\t\"85480010\",\n\t\"85480090\",\n\t\"85491100\",\n\t\"85491200\",\n\t\"85491300\",\n\t\"85491400\",\n\t\"85491900\",\n\t\"85492100\",\n\t\"85492900\",\n\t\"85493100\",\n\t\"85493900\",\n\t\"85499100\",\n\t\"85499900\",\n\t\"86011000\",\n\t\"86012000\",\n\t\"86021000\",\n\t\"86029000\",\n\t\"86031000\",\n\t\"86039000\",\n\t\"86040010\",\n\t\"86040090\",\n\t\"86050010\",\n\t\"86050090\",\n\t\"86061000\",\n\t\"86063000\",\n\t\"86069100\",\n\t\"86069200\",\n\t\"86069900\",\n\t\"86071110\",\n\t\"86071120\",\n\t\"86071200\",\n\t\"86071911\",\n\t\"86071919\",\n\t\"86071990\",\n\t\"86072100\",\n\t\"86072900\",\n\t\"86073000\",\n\t\"86079100\",\n\t\"86079900\",\n\t\"86080011\",\n\t\"86080012\",\n\t\"86080090\",\n\t\"86090000\",\n\t\"87011000\",\n\t\"87012100\",\n\t\"87012200\",\n\t\"87012300\",\n\t\"87012400\",\n\t\"87012900\",\n\t\"87013000\",\n\t\"87019100\",\n\t\"87019200\",\n\t\"87019300\",\n\t\"87019410\",\n\t\"87019490\",\n\t\"87019510\",\n\t\"87019590\",\n\t\"87021000\",\n\t\"87022000\",\n\t\"87023000\",\n\t\"87024010\",\n\t\"87024090\",\n\t\"87029000\",\n\t\"87031000\",\n\t\"87032100\",\n\t\"87032210\",\n\t\"87032290\",\n\t\"87032310\",\n\t\"87032390\",\n\t\"87032410\",\n\t\"87032490\",\n\t\"87033110\",\n\t\"87033190\",\n\t\"87033210\",\n\t\"87033290\",\n\t\"87033310\",\n\t\"87033390\",\n\t\"87034000\",\n\t\"87035000\",\n\t\"87036000\",\n\t\"87037000\",\n\t\"87038000\",\n\t\"87039000\",\n\t\"87041010\",\n\t\"87041090\",\n\t\"87042110\",\n\t\"87042120\",\n\t\"87042130\",\n\t\"87042190\",\n\t\"87042210\",\n\t\"87042220\",\n\t\"87042230\",\n\t\"87042290\",\n\t\"87042310\",\n\t\"87042320\",\n\t\"87042330\",\n\t\"87042340\",\n\t\"87042390\",\n\t\"87043110\",\n\t\"87043120\",\n\t\"87043130\",\n\t\"87043190\",\n\t\"87043210\",\n\t\"87043220\",\n\t\"87043230\",\n\t\"87043290\",\n\t\"87044100\",\n\t\"87044200\",\n\t\"87044300\",\n\t\"87045100\",\n\t\"87045200\",\n\t\"87046000\",\n\t\"87049000\",\n\t\"87051020\",\n\t\"87051030\",\n\t\"87051090\",\n\t\"87052000\",\n\t\"87053000\",\n\t\"87054000\",\n\t\"87059010\",\n\t\"87059090\",\n\t\"87060010\",\n\t\"87060020\",\n\t\"87060090\",\n\t\"87071000\",\n\t\"87079010\",\n\t\"87079090\",\n\t\"87081000\",\n\t\"87082100\",\n\t\"87082200\",\n\t\"87082911\",\n\t\"87082912\",\n\t\"87082913\",\n\t\"87082914\",\n\t\"87082919\",\n\t\"87082991\",\n\t\"87082992\",\n\t\"87082993\",\n\t\"87082994\",\n\t\"87082995\",\n\t\"87082999\",\n\t\"87083011\",\n\t\"87083019\",\n\t\"87083090\",\n\t\"87084011\",\n\t\"87084019\",\n\t\"87084080\",\n\t\"87084090\",\n\t\"87085011\",\n\t\"87085012\",\n\t\"87085019\",\n\t\"87085080\",\n\t\"87085091\",\n\t\"87085099\",\n\t\"87087010\",\n\t\"87087090\",\n\t\"87088000\",\n\t\"87089100\",\n\t\"87089200\",\n\t\"87089300\",\n\t\"87089411\",\n\t\"87089412\",\n\t\"87089413\",\n\t\"87089481\",\n\t\"87089482\",\n\t\"87089483\",\n\t\"87089490\",\n\t\"87089510\",\n\t\"87089521\",\n\t\"87089522\",\n\t\"87089529\",\n\t\"87089910\",\n\t\"87089990\",\n\t\"87091100\",\n\t\"87091900\",\n\t\"87099000\",\n\t\"87100000\",\n\t\"87111000\",\n\t\"87112010\",\n\t\"87112020\",\n\t\"87112090\",\n\t\"87113000\",\n\t\"87114000\",\n\t\"87115000\",\n\t\"87116000\",\n\t\"87119000\",\n\t\"87120010\",\n\t\"87120090\",\n\t\"87131000\",\n\t\"87139000\",\n\t\"87141000\",\n\t\"87142000\",\n\t\"87149100\",\n\t\"87149200\",\n\t\"87149311\",\n\t\"87149319\",\n\t\"87149320\",\n\t\"87149410\",\n\t\"87149490\",\n\t\"87149500\",\n\t\"87149611\",\n\t\"87149612\",\n\t\"87149619\",\n\t\"87149690\",\n\t\"87149910\",\n\t\"87149920\",\n\t\"87149990\",\n\t\"87150000\",\n\t\"87161000\",\n\t\"87162000\",\n\t\"87163100\",\n\t\"87163900\",\n\t\"87164000\",\n\t\"87168000\",\n\t\"87169010\",\n\t\"87169090\",\n\t\"88010000\",\n\t\"88021100\",\n\t\"88021210\",\n\t\"88021290\",\n\t\"88022010\",\n\t\"88022021\",\n\t\"88022022\",\n\t\"88022090\",\n\t\"88023010\",\n\t\"88023021\",\n\t\"88023029\",\n\t\"88023031\",\n\t\"88023039\",\n\t\"88023090\",\n\t\"88024010\",\n\t\"88024090\",\n\t\"88026000\",\n\t\"88040000\",\n\t\"88051000\",\n\t\"88052100\",\n\t\"88052900\",\n\t\"88061000\",\n\t\"88062100\",\n\t\"88062200\",\n\t\"88062300\",\n\t\"88062400\",\n\t\"88062900\",\n\t\"88069100\",\n\t\"88069200\",\n\t\"88069300\",\n\t\"88069400\",\n\t\"88069900\",\n\t\"88071000\",\n\t\"88072000\",\n\t\"88073000\",\n\t\"88079000\",\n\t\"89011000\",\n\t\"89012000\",\n\t\"89013000\",\n\t\"89019000\",\n\t\"89020010\",\n\t\"89020090\",\n\t\"89031100\",\n\t\"89031200\",\n\t\"89031900\",\n\t\"89032100\",\n\t\"89032200\",\n\t\"89032300\",\n\t\"89033100\",\n\t\"89033200\",\n\t\"89033300\",\n\t\"89039300\",\n\t\"89039900\",\n\t\"89040000\",\n\t\"89051000\",\n\t\"89052000\",\n\t\"89059000\",\n\t\"89061000\",\n\t\"89069000\",\n\t\"89071000\",\n\t\"89079000\",\n\t\"89080000\",\n\t\"90011011\",\n\t\"90011019\",\n\t\"90011020\",\n\t\"90012000\",\n\t\"90013000\",\n\t\"90014000\",\n\t\"90015000\",\n\t\"90019010\",\n\t\"90019090\",\n\t\"90021111\",\n\t\"90021119\",\n\t\"90021120\",\n\t\"90021190\",\n\t\"90021900\",\n\t\"90022010\",\n\t\"90022090\",\n\t\"90029010\",\n\t\"90029090\",\n\t\"90031100\",\n\t\"90031910\",\n\t\"90031990\",\n\t\"90039010\",\n\t\"90039090\",\n\t\"90041000\",\n\t\"90049010\",\n\t\"90049020\",\n\t\"90049090\",\n\t\"90051000\",\n\t\"90058000\",\n\t\"90059010\",\n\t\"90059090\",\n\t\"90063000\",\n\t\"90064000\",\n\t\"90065310\",\n\t\"90065320\",\n\t\"90065930\",\n\t\"90065940\",\n\t\"90065951\",\n\t\"90065959\",\n\t\"90066100\",\n\t\"90066900\",\n\t\"90069110\",\n\t\"90069190\",\n\t\"90069900\",\n\t\"90071000\",\n\t\"90072020\",\n\t\"90072090\",\n\t\"90079100\",\n\t\"90079200\",\n\t\"90085000\",\n\t\"90089000\",\n\t\"90101010\",\n\t\"90101020\",\n\t\"90101090\",\n\t\"90105010\",\n\t\"90105020\",\n\t\"90105090\",\n\t\"90106000\",\n\t\"90109010\",\n\t\"90109090\",\n\t\"90111000\",\n\t\"90112010\",\n\t\"90112020\",\n\t\"90112030\",\n\t\"90118010\",\n\t\"90118090\",\n\t\"90119010\",\n\t\"90119090\",\n\t\"90121010\",\n\t\"90121090\",\n\t\"90129010\",\n\t\"90129090\",\n\t\"90131010\",\n\t\"90131090\",\n\t\"90132000\",\n\t\"90138000\",\n\t\"90139000\",\n\t\"90141000\",\n\t\"90142010\",\n\t\"90142020\",\n\t\"90142030\",\n\t\"90142090\",\n\t\"90148010\",\n\t\"90148090\",\n\t\"90149000\",\n\t\"90151000\",\n\t\"90152010\",\n\t\"90152090\",\n\t\"90153000\",\n\t\"90154000\",\n\t\"90158010\",\n\t\"90158090\",\n\t\"90159010\",\n\t\"90159090\",\n\t\"90160010\",\n\t\"90160090\",\n\t\"90171010\",\n\t\"90171090\",\n\t\"90172000\",\n\t\"90173010\",\n\t\"90173020\",\n\t\"90173090\",\n\t\"90178010\",\n\t\"90178090\",\n\t\"90179010\",\n\t\"90179090\",\n\t\"90181100\",\n\t\"90181210\",\n\t\"90181290\",\n\t\"90181300\",\n\t\"90181410\",\n\t\"90181420\",\n\t\"90181490\",\n\t\"90181910\",\n\t\"90181920\",\n\t\"90181980\",\n\t\"90181990\",\n\t\"90182010\",\n\t\"90182020\",\n\t\"90182090\",\n\t\"90183111\",\n\t\"90183119\",\n\t\"90183190\",\n\t\"90183211\",\n\t\"90183212\",\n\t\"90183213\",\n\t\"90183219\",\n\t\"90183220\",\n\t\"90183910\",\n\t\"90183921\",\n\t\"90183922\",\n\t\"90183923\",\n\t\"90183925\",\n\t\"90183926\",\n\t\"90183929\",\n\t\"90183930\",\n\t\"90183991\",\n\t\"90183999\",\n\t\"90184100\",\n\t\"90184911\",\n\t\"90184912\",\n\t\"90184919\",\n\t\"90184920\",\n\t\"90184940\",\n\t\"90184991\",\n\t\"90184999\",\n\t\"90185010\",\n\t\"90185090\",\n\t\"90189010\",\n\t\"90189021\",\n\t\"90189029\",\n\t\"90189031\",\n\t\"90189039\",\n\t\"90189040\",\n\t\"90189050\",\n\t\"90189061\",\n\t\"90189069\",\n\t\"90189091\",\n\t\"90189093\",\n\t\"90189094\",\n\t\"90189095\",\n\t\"90189096\",\n\t\"90189097\",\n\t\"90189099\",\n\t\"90191000\",\n\t\"90192010\",\n\t\"90192020\",\n\t\"90192030\",\n\t\"90192040\",\n\t\"90192090\",\n\t\"90200010\",\n\t\"90200090\",\n\t\"90211010\",\n\t\"90211020\",\n\t\"90211091\",\n\t\"90211099\",\n\t\"90212110\",\n\t\"90212190\",\n\t\"90212900\",\n\t\"90213110\",\n\t\"90213120\",\n\t\"90213190\",\n\t\"90213911\",\n\t\"90213919\",\n\t\"90213920\",\n\t\"90213930\",\n\t\"90213940\",\n\t\"90213980\",\n\t\"90213991\",\n\t\"90213999\",\n\t\"90214000\",\n\t\"90215000\",\n\t\"90219011\",\n\t\"90219012\",\n\t\"90219013\",\n\t\"90219019\",\n\t\"90219080\",\n\t\"90219091\",\n\t\"90219092\",\n\t\"90219099\",\n\t\"90221200\",\n\t\"90221311\",\n\t\"90221319\",\n\t\"90221390\",\n\t\"90221411\",\n\t\"90221412\",\n\t\"90221413\",\n\t\"90221419\",\n\t\"90221490\",\n\t\"90221910\",\n\t\"90221991\",\n\t\"90221999\",\n\t\"90222110\",\n\t\"90222120\",\n\t\"90222190\",\n\t\"90222910\",\n\t\"90222990\",\n\t\"90223000\",\n\t\"90229010\",\n\t\"90229020\",\n\t\"90229080\",\n\t\"90229091\",\n\t\"90229099\",\n\t\"90230000\",\n\t\"90241010\",\n\t\"90241020\",\n\t\"90241090\",\n\t\"90248011\",\n\t\"90248019\",\n\t\"90248021\",\n\t\"90248029\",\n\t\"90248090\",\n\t\"90249000\",\n\t\"90251111\",\n\t\"90251119\",\n\t\"90251191\",\n\t\"90251199\",\n\t\"90251910\",\n\t\"90251990\",\n\t\"90258000\",\n\t\"90259010\",\n\t\"90259090\",\n\t\"90261011\",\n\t\"90261019\",\n\t\"90261021\",\n\t\"90261029\",\n\t\"90262010\",\n\t\"90262090\",\n\t\"90268000\",\n\t\"90269010\",\n\t\"90269020\",\n\t\"90269090\",\n\t\"90271000\",\n\t\"90272011\",\n\t\"90272012\",\n\t\"90272019\",\n\t\"90272021\",\n\t\"90272029\",\n\t\"90273011\",\n\t\"90273019\",\n\t\"90273020\",\n\t\"90275010\",\n\t\"90275020\",\n\t\"90275030\",\n\t\"90275040\",\n\t\"90275050\",\n\t\"90275090\",\n\t\"90278100\",\n\t\"90278911\",\n\t\"90278912\",\n\t\"90278913\",\n\t\"90278914\",\n\t\"90278920\",\n\t\"90278991\",\n\t\"90278999\",\n\t\"90279010\",\n\t\"90279091\",\n\t\"90279093\",\n\t\"90279099\",\n\t\"90281011\",\n\t\"90281019\",\n\t\"90281090\",\n\t\"90282010\",\n\t\"90282020\",\n\t\"90283011\",\n\t\"90283019\",\n\t\"90283021\",\n\t\"90283029\",\n\t\"90283031\",\n\t\"90283039\",\n\t\"90283090\",\n\t\"90289010\",\n\t\"90289090\",\n\t\"90291010\",\n\t\"90291090\",\n\t\"90292010\",\n\t\"90292020\",\n\t\"90299010\",\n\t\"90299090\",\n\t\"90301010\",\n\t\"90301090\",\n\t\"90302010\",\n\t\"90302021\",\n\t\"90302022\",\n\t\"90302029\",\n\t\"90302030\",\n\t\"90303100\",\n\t\"90303200\",\n\t\"90303311\",\n\t\"90303319\",\n\t\"90303321\",\n\t\"90303329\",\n\t\"90303390\",\n\t\"90303910\",\n\t\"90303990\",\n\t\"90304010\",\n\t\"90304020\",\n\t\"90304030\",\n\t\"90304090\",\n\t\"90308210\",\n\t\"90308290\",\n\t\"90308410\",\n\t\"90308420\",\n\t\"90308490\",\n\t\"90308910\",\n\t\"90308920\",\n\t\"90308930\",\n\t\"90308940\",\n\t\"90308990\",\n\t\"90309010\",\n\t\"90309090\",\n\t\"90311000\",\n\t\"90312010\",\n\t\"90312090\",\n\t\"90314100\",\n\t\"90314910\",\n\t\"90314920\",\n\t\"90314990\",\n\t\"90318011\",\n\t\"90318012\",\n\t\"90318020\",\n\t\"90318030\",\n\t\"90318040\",\n\t\"90318050\",\n\t\"90318060\",\n\t\"90318091\",\n\t\"90318099\",\n\t\"90319010\",\n\t\"90319090\",\n\t\"90321010\",\n\t\"90321090\",\n\t\"90322000\",\n\t\"90328100\",\n\t\"90328911\",\n\t\"90328919\",\n\t\"90328921\",\n\t\"90328922\",\n\t\"90328923\",\n\t\"90328924\",\n\t\"90328925\",\n\t\"90328929\",\n\t\"90328930\",\n\t\"90328981\",\n\t\"90328982\",\n\t\"90328983\",\n\t\"90328984\",\n\t\"90328989\",\n\t\"90328990\",\n\t\"90329010\",\n\t\"90329091\",\n\t\"90329099\",\n\t\"90330000\",\n\t\"91011100\",\n\t\"91011900\",\n\t\"91012100\",\n\t\"91012900\",\n\t\"91019100\",\n\t\"91019900\",\n\t\"91021110\",\n\t\"91021190\",\n\t\"91021210\",\n\t\"91021220\",\n\t\"91021290\",\n\t\"91021900\",\n\t\"91022100\",\n\t\"91022900\",\n\t\"91029100\",\n\t\"91029900\",\n\t\"91031000\",\n\t\"91039000\",\n\t\"91040000\",\n\t\"91051100\",\n\t\"91051900\",\n\t\"91052100\",\n\t\"91052900\",\n\t\"91059100\",\n\t\"91059900\",\n\t\"91061000\",\n\t\"91069000\",\n\t\"91070010\",\n\t\"91070090\",\n\t\"91081110\",\n\t\"91081190\",\n\t\"91081200\",\n\t\"91081900\",\n\t\"91082000\",\n\t\"91089000\",\n\t\"91091000\",\n\t\"91099000\",\n\t\"91101110\",\n\t\"91101190\",\n\t\"91101200\",\n\t\"91101900\",\n\t\"91109000\",\n\t\"91111000\",\n\t\"91112010\",\n\t\"91112090\",\n\t\"91118000\",\n\t\"91119010\",\n\t\"91119090\",\n\t\"91122000\",\n\t\"91129000\",\n\t\"91131000\",\n\t\"91132000\",\n\t\"91139000\",\n\t\"91143000\",\n\t\"91144000\",\n\t\"91149000\",\n\t\"92011000\",\n\t\"92012000\",\n\t\"92019000\",\n\t\"92021000\",\n\t\"92029000\",\n\t\"92051000\",\n\t\"92059000\",\n\t\"92060000\",\n\t\"92071010\",\n\t\"92071090\",\n\t\"92079010\",\n\t\"92079090\",\n\t\"92081000\",\n\t\"92089000\",\n\t\"92093000\",\n\t\"92099100\",\n\t\"92099200\",\n\t\"92099400\",\n\t\"92099900\",\n\t\"93011000\",\n\t\"93012000\",\n\t\"93019000\",\n\t\"93020000\",\n\t\"93031000\",\n\t\"93032000\",\n\t\"93033000\",\n\t\"93039010\",\n\t\"93039090\",\n\t\"93040010\",\n\t\"93040090\",\n\t\"93051000\",\n\t\"93052000\",\n\t\"93059100\",\n\t\"93059900\",\n\t\"93062110\",\n\t\"93062120\",\n\t\"93062130\",\n\t\"93062190\",\n\t\"93062900\",\n\t\"93063000\",\n\t\"93069010\",\n\t\"93069020\",\n\t\"93069090\",\n\t\"93070000\",\n\t\"94011010\",\n\t\"94011090\",\n\t\"94012000\",\n\t\"94013100\",\n\t\"94013900\",\n\t\"94014100\",\n\t\"94014900\",\n\t\"94015200\",\n\t\"94015300\",\n\t\"94015900\",\n\t\"94016100\",\n\t\"94016900\",\n\t\"94017100\",\n\t\"94017900\",\n\t\"94018000\",\n\t\"94019100\",\n\t\"94019900\",\n\t\"94021000\",\n\t\"94029010\",\n\t\"94029020\",\n\t\"94029090\",\n\t\"94031000\",\n\t\"94032010\",\n\t\"94032090\",\n\t\"94033000\",\n\t\"94034000\",\n\t\"94035000\",\n\t\"94036000\",\n\t\"94037000\",\n\t\"94038200\",\n\t\"94038300\",\n\t\"94038900\",\n\t\"94039100\",\n\t\"94039900\",\n\t\"94041000\",\n\t\"94042100\",\n\t\"94042900\",\n\t\"94043000\",\n\t\"94044000\",\n\t\"94049000\",\n\t\"94051110\",\n\t\"94051190\",\n\t\"94051910\",\n\t\"94051990\",\n\t\"94052100\",\n\t\"94052900\",\n\t\"94053100\",\n\t\"94053900\",\n\t\"94054100\",\n\t\"94054200\",\n\t\"94054900\",\n\t\"94055000\",\n\t\"94056100\",\n\t\"94056900\",\n\t\"94059100\",\n\t\"94059200\",\n\t\"94059900\",\n\t\"94061010\",\n\t\"94061090\",\n\t\"94062000\",\n\t\"94069010\",\n\t\"94069020\",\n\t\"94069090\",\n\t\"95030010\",\n\t\"95030021\",\n\t\"95030022\",\n\t\"95030029\",\n\t\"95030031\",\n\t\"95030039\",\n\t\"95030040\",\n\t\"95030050\",\n\t\"95030060\",\n\t\"95030070\",\n\t\"95030080\",\n\t\"95030091\",\n\t\"95030097\",\n\t\"95030098\",\n\t\"95030099\",\n\t\"95042000\",\n\t\"95043000\",\n\t\"95044000\",\n\t\"95045000\",\n\t\"95049010\",\n\t\"95049090\",\n\t\"95051000\",\n\t\"95059000\",\n\t\"95061100\",\n\t\"95061200\",\n\t\"95061900\",\n\t\"95062100\",\n\t\"95062900\",\n\t\"95063100\",\n\t\"95063200\",\n\t\"95063900\",\n\t\"95064000\",\n\t\"95065100\",\n\t\"95065900\",\n\t\"95066100\",\n\t\"95066200\",\n\t\"95066900\",\n\t\"95067000\",\n\t\"95069100\",\n\t\"95069900\",\n\t\"95071000\",\n\t\"95072000\",\n\t\"95073000\",\n\t\"95079000\",\n\t\"95081000\",\n\t\"95082110\",\n\t\"95082120\",\n\t\"95082190\",\n\t\"95082210\",\n\t\"95082290\",\n\t\"95082300\",\n\t\"95082400\",\n\t\"95082500\",\n\t\"95082600\",\n\t\"95082900\",\n\t\"95083000\",\n\t\"95084000\",\n\t\"96011000\",\n\t\"96019000\",\n\t\"96020010\",\n\t\"96020020\",\n\t\"96020090\",\n\t\"96031000\",\n\t\"96032100\",\n\t\"96032900\",\n\t\"96033000\",\n\t\"96034010\",\n\t\"96034090\",\n\t\"96035000\",\n\t\"96039000\",\n\t\"96040000\",\n\t\"96050000\",\n\t\"96061000\",\n\t\"96062100\",\n\t\"96062200\",\n\t\"96062900\",\n\t\"96063000\",\n\t\"96071100\",\n\t\"96071900\",\n\t\"96072000\",\n\t\"96081000\",\n\t\"96082000\",\n\t\"96083000\",\n\t\"96084000\",\n\t\"96085000\",\n\t\"96086000\",\n\t\"96089100\",\n\t\"96089981\",\n\t\"96089989\",\n\t\"96089990\",\n\t\"96091000\",\n\t\"96092000\",\n\t\"96099000\",\n\t\"96100000\",\n\t\"96110000\",\n\t\"96121000\",\n\t\"96122000\",\n\t\"96131000\",\n\t\"96132000\",\n\t\"96138000\",\n\t\"96139000\",\n\t\"96140000\",\n\t\"96151100\",\n\t\"96151900\",\n\t\"96159000\",\n\t\"96161000\",\n\t\"96162000\",\n\t\"96170010\",\n\t\"96170020\",\n\t\"96180000\",\n\t\"96190000\",\n\t\"96200000\",\n\t\"97012100\",\n\t\"97012200\",\n\t\"97012900\",\n\t\"97019100\",\n\t\"97019200\",\n\t\"97019900\",\n\t\"97021000\",\n\t\"97029000\",\n\t\"97031000\",\n\t\"97039000\",\n\t\"97040000\",\n\t\"97051000\",\n\t\"97052100\",\n\t\"97052200\",\n\t\"97052900\",\n\t\"97053100\",\n\t\"97053900\",\n\t\"97061000\",\n\t\"97069000\",\n];\n\n/**\n * Shape a complete NCM code has to be written in: the 8 digits, optionally split into the\n * printed `NNNN.NN.NN` groups by a single whitespace or mask character.\n */\nexport const NCM_FORMAT_REGEX = /^\\d{4}[\\s.\\-/]?\\d{2}[\\s.\\-/]?\\d{2}$/;\n","import { isLookupCode } from \"../_internals/is-lookup-code/is-lookup-code\";\nimport { padLookupCode } from \"../_internals/pad-lookup-code/pad-lookup-code\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { NCM_CODES, NCM_FORMAT_REGEX } from \"./constants\";\n\nconst NCM_LENGTH = 8;\n\nlet cache: Set<string> | undefined;\n\nconst getCache = (): Set<string> => {\n\tcache ??= new Set(NCM_CODES);\n\treturn cache;\n};\n\n/**\n * Validates if a NCM (Nomenclatura Comum do Mercosul) code exists in the official table.\n *\n * A string is only read as a code when it is written in one of the documented forms: the 8\n * digits, or the `NNNN.NN.NN` mask, with a single separator between the groups and optional\n * surrounding whitespace. Anything else (`\"abc01012100\"`) is rejected instead of having its\n * digits picked out. A number is only read as a code when it is a non-negative safe integer,\n * since a sign, a decimal point or a rounded magnitude would otherwise be read as a code the\n * caller never wrote.\n *\n * An NCM code is always 8 digits and its leading zeros are part of it, so a value written as\n * bare digits is left padded with zeros to 8 whether it comes as a string or as a number:\n * `1012100`, `\"1012100\"` and `\"01012100\"` are the same code. A masked value already carries its\n * separators and is read as written.\n *\n * @param {string|number} value - The NCM code to be validated, with or without the\n * `NNNN.NN.NN` mask.\n * @returns {boolean} True when the code is a known 8 digit NCM code, false otherwise.\n *\n * @example\n * ```typescript\n * isValidNcm(\"0101.21.00\"); // true\n * isValidNcm(\"01012100\"); // true\n * isValidNcm(1012100); // true (padded to 8 digits, so this is \"01012100\")\n * isValidNcm(\"1012100\"); // true (padded to 8 digits, so this is \"01012100\")\n * isValidNcm(\"00000000\"); // false\n * isValidNcm(\"abc01012100\"); // false (not a documented form)\n * isValidNcm(-84713012); // false (not a non-negative safe integer)\n * ```\n *\n * @see Official: https://portalunico.siscomex.gov.br/classif/api/publico/nomenclatura/download/json\n */\nexport const isValidNcm = (value: string | number): boolean => {\n\tif (!isLookupCode(value)) return false;\n\n\tconst code = padLookupCode(value, NCM_LENGTH);\n\n\tif (!NCM_FORMAT_REGEX.test(code)) return false;\n\n\treturn getCache().has(sanitizeToDigits(code));\n};\n","import { getNfeKeyInfo } from \"../get-nfe-key-info/get-nfe-key-info\";\n\n/**\n * Validates a DF-e (Documento Fiscal eletrônico) access key (chave de acesso).\n *\n * Covers every document whose access key is the same 44 digit string: NF-e (modelo 55), NFC-e\n * (65), CT-e (57), MDF-e (58), CT-e OS (67, the Conhecimento de Transporte Eletrônico para\n * Outros Serviços), GTV-e (64, the CT-e Guia de Transporte de Valores), BP-e (63), NF3e (66)\n * and NFCom (62). The CF-e-SAT (59) is out: its 44 position \"chave de consulta\" is composed\n * differently. The 44 digits may be split into the printed groups of 4 by whitespace, `.`, `-`\n * or `/`, a run of them between two groups included, the same mask rule `isValidCpf` and\n * `isValidCnpj` follow; a separator inside a group of 4, or any other character, is rejected\n * instead of being stripped. The `NFe`, `CTe`, `MDFe`, `BPe`, `NF3e` and `NFCom` prefixes found\n * in the `Id` attribute of the document's XML (e.g. `Id=\"NFe3517...`) are stripped before that\n * check, with any whitespace between the prefix and the first group.\n *\n * The key is `cUF(2) AAMM(4) CNPJ/CPF(14) mod(2) serie(3) nNF(9) tpEmis(1) cNF(8) cDV(1)`, with\n * NFCom and NF3e spending position 36 on `nSiteAutoriz` and leaving 7 digits for `cNF`.\n * `tpEmis` must be one of the codes the MOC of that model assigns, so the accepted set changes\n * with the model: 1 to 7 and 9 for NF-e and NFC-e, `{1, 3, 4, 5, 7, 8}` for the CT-e,\n * `{1, 5, 7, 8}` for the CT-e OS, `{1, 2, 7, 8}` for the GTV-e, `{1, 2, 3}` for the MDF-e and\n * `{1, 2}` for the BP-e, the NF3e and the NFCom. Code 8, the authorização pela SVC-SP, is\n * assigned by the CT-e MOC only, never by the NF-e one.\n * The check digit (`cDV`) is a modulus 11 over the first 43 digits, weights 2-9 cycling from\n * the right, where a remainder of 0 or 1 maps to check digit 0.\n *\n * For NF-e and NFC-e the numeric code is also checked against rule B03-10 of the NF-e MOC,\n * which forbids the twenty repeated and sequential `cNF` values it lists and a `cNF` equal to\n * the document number.\n *\n * @param {string} value - The access key value to be validated.\n * @returns {boolean} True if the access key is valid, false otherwise.\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/arquivo-manuais/moc7-visao-geral.pdf\n * Manual de Orientação do Contribuinte (MOC) NF-e, \"chave de acesso\".\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2007/AJ_009_07\n * Ajuste SINIEF 09/07, cláusula primeira, caput: the CT-e, modelo 57.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2019/AJ036_19\n * Ajuste SINIEF 36/19, cláusula primeira: the CT-e OS, modelo 67.\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/2020/ajuste-sinief-03-20\n * Ajuste SINIEF 03/20, cláusula primeira: the GTV-e, modelo 64.\n * @see Official: https://dfe-portal.svrs.rs.gov.br/CTE/Documentos\n * CT-e MOC 4.00, Anexo I (\"MOC CTe 4.00 Anexo I - Leiaute e Regras de Validação\"): the `tpEmis`\n * domains D19, D27 and D15. Published by the SVRS dfe-portal, like the BP-e, NF3e and NFCom\n * manuals below; the cte.fazenda.gov.br manual index answers \"Sistema temporariamente\n * indisponível\" permanently.\n * @see Official: https://dfe-portal.svrs.rs.gov.br/BPE/Documentos\n * BP-e MOC 1.00b, Visão Geral and Anexo I: modelo 63.\n * @see Official: https://dfe-portal.svrs.rs.gov.br/NF3e/Documentos\n * NF3e MOC 1.00a, Visão Geral and Anexo I: modelo 66 and `nSiteAutoriz`.\n * @see Official: https://dfe-portal.svrs.rs.gov.br/NFCOM/Documentos\n * NFCom MOC 1.00a, Visão Geral and Anexo I: modelo 62 and `nSiteAutoriz`.\n * @see Based on: https://github.com/nfephp-org/sped-common/blob/master/src/Keys.php\n * NFePHP `Keys::build`/`Keys::isValid` reference implementation.\n * @see Based on: https://github.com/vmarchesin/br-validate-dfe-access-key\n * Second reference implementation and source of additional test vectors.\n *\n * @example\n * ```typescript\n * isValidNfeKey(\"35170458716523000119550010000000121000123458\"); // true (NF-e, SP)\n * isValidNfeKey(\"NFe35170458716523000119550010000000121000123458\"); // true (XML Id prefix)\n * isValidNfeKey(\"3517 0458 7165 2300 0119 5500 1000 0000 1210 0012 3458\"); // true (masked)\n * isValidNfeKey(\"3517.0458.7165.2300.0119.5500.1000.0000.1210.0012.3458\"); // true (any of the mask characters)\n * isValidNfeKey(\"351 70458716523000119550010000000121000123458\"); // false (a separator inside a group of 4)\n * isValidNfeKey(\"99170458716523000119550010000000121000123458\"); // false (invalid cUF)\n * isValidNfeKey(\"35170458716523000119010010000000121000123450\"); // false (invalid mod)\n * ```\n */\nexport const isValidNfeKey = (value: string): boolean => getNfeKeyInfo(value) !== null;\n","export const PASSPORT_REGEX = /^[A-Z]{2}[0-9]{6}$/;\n","import { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport { PASSPORT_REGEX } from \"./constants\";\n\n/**\n * Checks if a Brazilian passport number is valid.\n * To be considered valid, the sanitized input must contain exactly two alphabetical\n * characters followed by exactly six numerical digits. The input is case-insensitive and\n * any non-alphanumeric characters (spaces, dots, hyphens, etc.) are ignored, mirroring the\n * sanitization performed by `formatPassport`/`parsePassport`.\n * This function does not verify if the input is a real passport number,\n * as there are no checksums for the Brazilian passport.\n * A number is accepted for symmetry with `formatPassport`/`parsePassport` but is never valid:\n * the decimal form of a number never starts with the two letters a passport number needs.\n *\n * @param {string|number} passport - The string containing the passport number to be checked.\n * @returns {boolean} True if the passport number is valid (2 letters followed by 6 digits).\n *\n * @example\n * isValidPassport(\"AB123456\") // true\n * isValidPassport(\"ab123456\") // true (case-insensitive)\n * isValidPassport(\"AB-123.456\") // true (symbols are ignored)\n * isValidPassport(\"12345678\") // false\n * isValidPassport(\"DC-221345extra\") // false\n *\n * The Polícia Federal passport FAQ states the layout: \"Ele é composto por duas letras - chamadas\n * de 'série', e por seis dígitos subsequentes. Por exemplo: Passaporte CS265436.\"\n *\n * @see Official: https://www.gov.br/pf/pt-br/assuntos/passaporte\n * @see Official: https://www.gov.br/pf/pt-br/assuntos/passaporte/ajuda/duvidas_/caderneta/caderneta-numero-onde-fica-e\n */\nexport const isValidPassport = (passport: string | number): boolean => {\n\tif (typeof passport !== \"string\") return false;\n\n\treturn PASSPORT_REGEX.test(sanitizeToAlphanumeric(passport));\n};\n","import { type PixKeyType, getPixKeyInfo } from \"../get-pix-key-info/get-pix-key-info\";\n\n/** Options of `isValidPixKey`. */\nexport type IsValidPixKeyOptions = {\n\t/** Kinds of Pix key that count as valid (default: all of them). */\n\taccept?: PixKeyType[];\n};\n\n/**\n * Validates a Pix key (chave Pix) against the DICT key formats.\n *\n * A value is valid when `getPixKeyInfo` recognizes it as a CPF, a CNPJ, an e-mail address, a\n * Brazilian mobile phone number or a random key (EVP), and when that kind is listed in\n * `options.accept`. The manual registers a \"número de telefone celular\", so a landline is not\n * a valid phone key.\n *\n * @param {string} value - The Pix key to validate.\n * @param {IsValidPixKeyOptions} [options] - Optional validation options.\n * @param {PixKeyType[]} [options.accept] - The kinds of key to accept. Defaults to all of them.\n * @returns {boolean} True if the value is a valid Pix key, false otherwise.\n *\n * @example\n * ```typescript\n * isValidPixKey(\"123.456.789-09\"); // true\n * isValidPixKey(\"fulano@example.com\"); // true\n * isValidPixKey(\"(11) 98765-4321\"); // true\n * isValidPixKey(\"71c7d9be-4b85-4e43-9f1c-1f3b8b4e9a2d\"); // true\n * isValidPixKey(\"123.456.789-09\", { accept: [\"email\", \"evp\"] }); // false\n * isValidPixKey(\"not a key\"); // false\n * ```\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/API-DICT.html\n * DICT (Diretório de Identificadores de Contas Transacionais) API specification, key format\n * reference.\n * @see Official: https://github.com/bacen/pix-api\n * Pix (SPI) OpenAPI spec.\n */\nexport const isValidPixKey = (value: string, options?: IsValidPixKeyOptions): boolean => {\n\tconst key = getPixKeyInfo(value);\n\n\tif (!key) return false;\n\n\tconst accept = options?.accept;\n\n\treturn Array.isArray(accept) ? accept.includes(key.type) : true;\n};\n","import { getPixPayloadInfo } from \"../get-pix-payload-info/get-pix-payload-info\";\n\n/**\n * Validates a Pix BR Code payload, the string behind a Pix QR Code and behind \"Pix copia e\n * cola\".\n *\n * The payload is valid when its TLV (tag-length-value) structure is well-formed, when the\n * mandatory objects are present and well-formed (payload format indicator `01`, merchant\n * category code, currency `986`, country `BR`, merchant name and merchant city), when one of\n * the \"Merchant Account Information\" templates (IDs 26 to 51) carries the `br.gov.bcb.pix` GUI\n * together with a key (static QR Code) or a URL (dynamic QR Code), and when the CRC-16 matches\n * the rest of the payload. The \"Point of Initiation Method\" object (`01`) is advisory: the\n * Manual do BR Code marks it `Uso: O` and only assigns a meaning to the value `\"12\"`, so it may\n * be absent from either shape and only a value outside `{\"11\", \"12\"}` makes the payload\n * invalid. A payload built around a key that states a transaction amount (`54`) must state one\n * greater than zero, unless it is a Pix Saque BR Code, i.e. unless it carries the ISPB of the\n * \"facilitador de serviço de saque\" in sub-object 26-03 (`fss`) as §2.6 of the Pix manual\n * prescribes; rejecting `\"0\"`/`\"0.00\"` without `fss` is a deliberate restriction of this\n * library, not a rule of the manual. A `fss` written next to a PSP location makes the payload\n * invalid: §2.7 of the Manual de Padrões para Iniciação do Pix maps the dynamic QR Code to\n * exactly two sub-objects, `00` (GUI) and `25` (URL), and `fss` belongs to the static template\n * of §2.6.\n *\n * The key itself is not checked against the DICT formats: the manual states a static QR Code\n * can be generated with a key that is not (or is no longer) registered, so use `isValidPixKey`\n * when that matters.\n *\n * Unreserved Templates (IDs 80 to 99) are ignored. The \"QR Code composto\" of Pix Automático\n * (Pix recorrente) writes its recurrence location in one of them: when such a payload also\n * carries a payment location in 26-25, as the composite example of the Pix manual does, it is\n * accepted here and read as an ordinary dynamic payload, its recurrence location dropped. Only\n * a payload with no Pix template at all in IDs 26 to 51 is reported as invalid.\n *\n * @param {string} value - The BR Code payload to validate.\n * @returns {boolean} True if the payload is a valid Pix BR Code, false otherwise.\n *\n * @example\n * ```typescript\n * isValidPixPayload(\n *   \"00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-426655440000\" +\n *     \"5204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***63041D3D\",\n * ); // true\n *\n * isValidPixPayload(\"00020126580014br.gov.bcb.pix...\"); // false (broken CRC)\n * ```\n *\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf\n * @see Official: https://github.com/bacen/pix-api\n * Pix (SPI) OpenAPI spec.\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/pix/API-DICT.html\n * DICT (Diretório de Identificadores de Contas Transacionais) API specification.\n */\nexport const isValidPixPayload = (value: string): boolean => getPixPayloadInfo(value) !== null;\n","import { calculateProcessoJuridicoCheckDigits } from \"../_internals/calculate-processo-juridico-check-digits/calculate-processo-juridico-check-digits\";\nimport { PROCESSO_JURIDICO_TRIBUNALS } from \"../_internals/constants/processo-juridico\";\nimport { SEPARATORS_REGEX } from \"../_internals/constants/separators\";\nimport {\n\tCHECK_DIGIT_LENGTH,\n\tCHECK_DIGIT_START_POSITION,\n\tCOURT_POSITION,\n\tTRIBUNAL_LENGTH,\n\tTRIBUNAL_START_POSITION,\n} from \"./constants\";\n\nconst FORMAT_REGEX = /^\\d{7}[\\s.-]*\\d{2}[\\s.-]*\\d{4}[\\s.-]*\\d[\\s.-]*\\d{2}[\\s.-]*\\d{4}$/;\n\nconst verifyCheckDigit = (value: string): boolean => {\n\tconst verificationDigits = Number.parseInt(\n\t\tvalue.slice(CHECK_DIGIT_START_POSITION, CHECK_DIGIT_START_POSITION + CHECK_DIGIT_LENGTH),\n\t\t10,\n\t);\n\n\tconst withoutCheck =\n\t\tvalue.slice(0, CHECK_DIGIT_START_POSITION) +\n\t\tvalue.slice(CHECK_DIGIT_START_POSITION + CHECK_DIGIT_LENGTH);\n\n\treturn calculateProcessoJuridicoCheckDigits(withoutCheck) === verificationDigits;\n};\n\nconst verifyCourtAndTribunal = (value: string): boolean => {\n\tconst tribunals = PROCESSO_JURIDICO_TRIBUNALS.get(Number(value.charAt(COURT_POSITION)));\n\n\tif (tribunals === undefined) return false;\n\n\treturn tribunals.includes(\n\t\tNumber(value.slice(TRIBUNAL_START_POSITION, TRIBUNAL_START_POSITION + TRIBUNAL_LENGTH)),\n\t);\n};\n\n/**\n * Validates a Brazilian Processo Jurídico (court case) number.\n *\n * Three things are checked: the `NNNNNNN-DD.AAAA.J.TR.OOOO` layout, the `DD` check digits (ISO\n * 7064 MOD 97-10) and the `J` and `TR` pair, which has to name an órgão and a tribunal Resolução\n * CNJ nº 65/2008 actually created, so a number carrying a correct check digit but a court that\n * does not exist, `0000100-23.2008.8.28.0000`, is rejected. The unidade de origem (`OOOO`) is\n * only read as four digits: art. 1º, § 6º leaves its codification to each tribunal, so there is\n * no central list to check it against.\n *\n * The CNJ mask separators (whitespace, `.` and `-`) are accepted between the\n * `NNNNNNN-DD.AAAA.J.TR.OOOO` fields, and whitespace around the value is ignored, but any other\n * character, a letter in particular, makes the value invalid.\n *\n * @param {string} value - The Processo Jurídico number to validate.\n * @returns {boolean} True if the Processo Jurídico number is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidProcessoJuridico(\"00020802520125150049\"); // true\n * isValidProcessoJuridico(\"0002080-25.2012.5.15.0049\"); // true\n * isValidProcessoJuridico(\" 0002080-25.2012.5.15.0049 \"); // true (surrounding whitespace)\n * isValidProcessoJuridico(\"0000100-23.2008.8.28.0000\"); // false (there is no 28th Tribunal de Justiça)\n * isValidProcessoJuridico(\"ab00020802520125150049\"); // false (invalid format)\n * ```\n *\n * Resolução CNJ nº 65/2008 defines this Número Único de Processo layout and its check digits, and\n * closes the list of órgão (`J`) and tribunal (`TR`) codes in art. 1º, § 4º and § 5º.\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/119\n */\nexport const isValidProcessoJuridico = (value: string): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\tif (!FORMAT_REGEX.test(value.trim())) return false;\n\n\tconst digits = value.replace(SEPARATORS_REGEX, \"\");\n\n\tif (!verifyCheckDigit(digits)) return false;\n\n\treturn verifyCourtAndTribunal(digits);\n};\n","/**\n * Structural format of each supported professional council registration number.\n *\n * The citations for these shapes live on the JSDoc of `isValidRegistroProfissional`, which is\n * also where the councils that publish no number format at all are named.\n */\n\nexport type RegistroProfissionalCouncil = \"OAB\" | \"CRM\" | \"CRO\" | \"CRP\" | \"CRC\";\n\n/**\n * Registration number followed by the UF of the seccional (OAB) or of the regional (CRM), the\n * same shape for both councils.\n */\nexport const PROFESSIONAL_NUMBER_UF_REGEX = /^(?<number>\\d{4,6})(?<uf>[A-Z]{2})$/;\n\nexport const CRO_REGEX = /^(?<number>\\d{3,6})(?<uf>[A-Z]{2})$/;\n\nexport const CRP_REGEX = /^(?<region>\\d{2})(?<number>\\d{4,6})$/;\n\n/**\n * UF, six digits, the tipo de registro (`O` Originário or `P` Provisório), the check digit and,\n * for a Registro Transferido or Secundário, the `T`/`S` suffix plus the UF of the destination CRC.\n */\nexport const CRC_REGEX =\n\t/^(?<uf>[A-Z]{2})(?<number>\\d{6})(?<category>[OP])(?<checkDigit>\\d)(?:(?<transfer>[TS])(?<transferUf>[A-Z]{2}))?$/;\n\n/** Lowest regional code of the CFP system, CRP-01. */\nexport const CRP_MIN_REGION = 1;\n\n/** Highest regional code of the CFP system, CRP-24. */\nexport const CRP_MAX_REGION = 24;\n","import { type StateCode } from \"../_internals/constants/states\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { isStateCode } from \"../_internals/is-state-code/is-state-code\";\nimport { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\nimport {\n\tCRC_REGEX,\n\tCRO_REGEX,\n\tCRP_MAX_REGION,\n\tCRP_MIN_REGION,\n\tCRP_REGEX,\n\tPROFESSIONAL_NUMBER_UF_REGEX,\n\ttype RegistroProfissionalCouncil,\n} from \"./constants\";\n\nexport type { StateCode } from \"../_internals/constants/states\";\n\n/** The registration `isValidRegistroProfissional` checks: the number, the council that issued it and, optionally, the UF it must belong to. */\nexport type IsValidRegistroProfissionalParams = {\n\t/** The registration number to be validated, e.g. `\"123456/SP\"`. */\n\tvalue: string;\n\t/** The professional council that issued the registration number. */\n\tcouncil: RegistroProfissionalCouncil;\n\t/** The UF the registration is expected to belong to. Ignored for `\"CRP\"` (see below). */\n\tstateCode?: StateCode;\n};\n\nconst REGEX_BY_COUNCIL: Record<RegistroProfissionalCouncil, RegExp> = {\n\tOAB: PROFESSIONAL_NUMBER_UF_REGEX,\n\tCRM: PROFESSIONAL_NUMBER_UF_REGEX,\n\tCRO: CRO_REGEX,\n\tCRP: CRP_REGEX,\n\tCRC: CRC_REGEX,\n};\n\nconst isKnownCrpRegion = (value: string): boolean => {\n\tconst region = Number(value);\n\n\treturn region >= CRP_MIN_REGION && region <= CRP_MAX_REGION;\n};\n\n/**\n * Checks the structure of a professional council registration number (registro/inscrição\n * profissional).\n *\n * This is a structural check only: it validates the digit count and, for the councils whose\n * number embeds the UF, that the UF is a real Brazilian state code, optionally matching\n * `params.stateCode`. It never computes or asserts a check digit, even for CRC, whose format\n * includes one (the digit is only checked for presence and shape).\n *\n * Supported councils and what is validated:\n * - `\"OAB\"` (Ordem dos Advogados do Brasil): 4 to 6 digits + UF, e.g. `\"123456/SP\"`.\n * - `\"CRM\"` (Conselho Regional de Medicina): 4 to 6 digits + UF, e.g. `\"123456-SP\"`.\n * - `\"CRO\"` (Conselho Regional de Odontologia): 3 to 6 digits + UF, e.g. `\"12345/SP\"`.\n * - `\"CRP\"` (Conselho Regional de Psicologia): 2 digit regional code + 4 to 6 digits, e.g.\n *   `\"06/12345\"`. The regional code must be one of the 24 Conselhos Regionais of the CFP\n *   system, CRP-01 to CRP-24. It is not a literal UF (some regions cover more than one state),\n *   so `params.stateCode` is ignored for this council.\n * - `\"CRC\"` (Conselho Regional de Contabilidade): UF + 6 digits + the tipo de registro (`\"O\"`\n *   Originário or `\"P\"` Provisório) + 1 check digit whose value is not verified, e.g.\n *   `\"SP-123456/O-3\"`. The letter says nothing about the professional category: the Manual de\n *   Registro states that the distinction between `\"O\"` and `\"P\"` applies \"independentemente da\n *   categoria profissional do contabilista\". A Registro Transferido or Secundário is written by\n *   appending `\"T\"` or `\"S\"` and the UF of the destination CRC **after** the check digit, as the\n *   Resolução CFC nº 1.707/2023, art. 5º, parágrafo único, and the Manual's own examples\n *   (`\"SP-123456/O-3 T-MG\"`, `\"TO-654321/P-8 T-SC\"`, `\"PI-111222/O-5 S-AC\"`) put it. Both UFs\n *   have to be real state codes; `params.stateCode` is compared against the originating one,\n *   the UF the número do Registro Originário belongs to.\n *\n * CREA (Conselho Regional de Engenharia e Agronomia) is not supported: since the 2016 national\n * unification (RNP) its registration number format could not be confirmed from an official,\n * publicly documented source.\n *\n * Only the CRC shape and the CRP regional codes rest on a published source: the CFP page lists\n * the 24 Conselhos Regionais and nothing else, so the 4 to 6 digit body of a CRP number is as\n * unsourced as the OAB, CRM and CRO ranges. The OAB, the CFM and the CFO do not publish the\n * format of the numbers their seccionais and regionais issue, so the digit ranges accepted for\n * `\"OAB\"`, `\"CRM\"` and `\"CRO\"` are conventional rather than normative, and two counterexamples\n * are known: the OAB/SP public search field is `maxlength=\"7\"` and rejects only inputs of two\n * characters or fewer, and the CFM's Manual de Procedimentos Administrativos documents a `300`\n * prefixed CRM for foreign-trained physicians and a trailing `P` for inscrição provisória,\n * neither of which the accepted shape can express.\n *\n * Everything it needs travels in a single object, the shape `isValidBankAccount` takes: a\n * registration number means nothing without the council that issued it, so the two are read\n * together. A value that is not an object, or one missing `value` or `council`, is `false` like\n * any other registration it cannot recognise.\n *\n * @param {IsValidRegistroProfissionalParams} params - The registration to be validated.\n * @param {string} params.value - The registration number, e.g. `\"123456/SP\"`.\n * @param {RegistroProfissionalCouncil} params.council - The issuing council.\n * @param {string} [params.stateCode] - The expected UF, ignored for `\"CRP\"`.\n * @returns {boolean} True if the value has the structure of a registration number for the\n * given council, false otherwise.\n *\n * @example\n * ```typescript\n * isValidRegistroProfissional({ value: \"123456/SP\", council: \"OAB\" }); // true\n * isValidRegistroProfissional({ value: \"123456-SP\", council: \"OAB\", stateCode: \"SP\" }); // true\n * isValidRegistroProfissional({ value: \"123456-RJ\", council: \"OAB\", stateCode: \"SP\" }); // false (UF mismatch)\n * isValidRegistroProfissional({ value: \"06/12345\", council: \"CRP\" }); // true\n * isValidRegistroProfissional({ value: \"SP-123456/O-3\", council: \"CRC\" }); // true\n * isValidRegistroProfissional({ value: \"SP-123456/O-3 T-MG\", council: \"CRC\" }); // true (transferido)\n * isValidRegistroProfissional({ value: \"SP-123456/T-3\", council: \"CRC\" }); // false (\"T\" is not a tipo)\n * isValidRegistroProfissional({ value: \"123456\", council: \"OAB\" }); // false (no UF)\n * ```\n *\n * @see Official: https://cfc.org.br/wp-content/uploads/2018/04/1_manual_registro.pdf\n * Manual de Registro do Sistema CFC/CRCs, item 1.1: the CRC registration is the sigla of the UF,\n * six sequential digits, the letter of the tipo de registro and a check digit, with\n * \"UF-000001/P-7\" and \"UF-000002/O-5\" as its own worked examples; the same item adds the \"T\" of\n * the Registro Transferido \"ao número do Registro Definitivo Originário ou Registro Provisório …\n * acompanhada de um hífen e da sigla designativa da jurisdição do CRC de destino\".\n * @see Official: https://www1.cfc.org.br/sisweb/SRE/docs/Res_1707.pdf\n * Resolução CFC nº 1.707/2023, art. 5º parágrafo único: \"No caso de Registro Transferido, ao\n * número do Registro Originário será acrescentada a letra 'T', acompanhada da sigla designativa da\n * jurisdição do CRC de destino.\"\n * @see Official: https://site.cfp.org.br/cfp/sistema-conselhos/conselhos-pelo-brasil/\n * Conselho Federal de Psicologia: the 24 Conselhos Regionais of the system, numbered CRP-01 to\n * CRP-24. The page establishes the regional codes only; it publishes no length for the inscription\n * number itself.\n * @see Official: https://www.oab.org.br/\n * Ordem dos Advogados do Brasil (OAB), the federal body that regulates the profession, which\n * publishes no format for the número de inscrição and the seccional.\n * @see Official: https://portal.cfm.org.br/\n * Conselho Federal de Medicina (CFM), the autarquia federal that regulates the profession, which\n * publishes no format for the registration number and the UF.\n * @see Official: https://cfo.org.br/\n * Conselho Federal de Odontologia (CFO), the autarquia federal that regulates the profession,\n * which publishes no format for the registration number and the UF.\n */\nexport const isValidRegistroProfissional = (params: IsValidRegistroProfissionalParams): boolean => {\n\tif (isNullish(params)) return false;\n\n\tconst { value, council, stateCode } = params;\n\n\tif (typeof value !== \"string\") return false;\n\n\tif (!Object.hasOwn(REGEX_BY_COUNCIL, council)) return false;\n\n\tconst regex = REGEX_BY_COUNCIL[council];\n\n\tconst match = regex.exec(sanitizeToAlphanumeric(value));\n\n\tif (!match?.groups) return false;\n\n\tconst { region, uf, transferUf } = match.groups;\n\n\tif (region !== undefined && !isKnownCrpRegion(region)) return false;\n\n\tif (transferUf !== undefined && !isStateCode(transferUf)) return false;\n\n\tif (uf === undefined) return true;\n\n\tif (!isStateCode(uf)) return false;\n\n\treturn !stateCode || uf === stateCode;\n};\n","import { calculateRenavamCheckDigit } from \"../_internals/calculate-renavam-check-digit/calculate-renavam-check-digit\";\nimport { SEPARATORS_REGEX } from \"../_internals/constants/separators\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\n\nconst RENAVAM_LENGTH = 11;\n\nconst BASE_LENGTH = 10;\n\nconst FORMAT_REGEX = /^\\d{9}$|^\\d{11}$/;\n\n/**\n * Validates if a RENAVAM (Registro Nacional de Veículos Automotores) is valid.\n *\n * RENAVAM can be in two formats:\n * - Old format: 9 digits (will be padded to 11 with zeros)\n * - New format: 11 digits\n *\n * The validation uses a checksum algorithm based on modulo 11.\n *\n * Spaces, dots and hyphens are ignored, so every punctuated form of a RENAVAM is accepted, but\n * any other character, a letter in particular, makes the value invalid. A registration whose\n * digits are all the same (`\"00000000000\"`) is rejected as well, matching both references below.\n *\n * @param {string} renavam - The RENAVAM value to be validated.\n * @returns {boolean} True if the RENAVAM is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidRenavam(\"639884962\"); // true (9 digits, old format)\n * isValidRenavam(\"00639884962\"); // true (11 digits, new format)\n * isValidRenavam(\"0063988.4962\"); // true (dots and hyphens are ignored)\n * isValidRenavam(\"12345678901\"); // false (invalid checksum)\n * isValidRenavam(\"00000000000\"); // false (repeated digits)\n * isValidRenavam(\"ab00639884962\"); // false (invalid format)\n * ```\n *\n * The Código de Trânsito Brasileiro creates the RENAVAM registry but does not define its check\n * digit, so the algorithm below follows the two community references cited as `Based on:`.\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l9503compilado.htm\n * @see Based on: https://github.com/klawdyo/validation-br/blob/main/src/renavam.ts\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/renavam.py\n */\nexport const isValidRenavam = (renavam: string | number): boolean => {\n\tif (typeof renavam !== \"string\" && typeof renavam !== \"number\") return false;\n\n\tconst digits = renavam.toString().replace(SEPARATORS_REGEX, \"\");\n\n\tif (!FORMAT_REGEX.test(digits)) return false;\n\n\tconst paddedDigits = digits.padStart(RENAVAM_LENGTH, \"0\");\n\n\tif (isRepeatedDigits(paddedDigits)) return false;\n\n\tconst expectedDigit = calculateRenavamCheckDigit(paddedDigits.slice(0, BASE_LENGTH));\n\n\tconst actualDigit = Number.parseInt(paddedDigits.charAt(BASE_LENGTH), 10);\n\n\treturn expectedDigit === actualDigit;\n};\n","/**\n * VIN (Vehicle Identification Number / chassi) layout: 17 characters, excluding the letters\n * `I`, `O` and `Q` (dropped to avoid confusion with `1` and `0`), per ISO 3779:2009 structure.\n * The check digit at the 9th position, its transliteration table and its weighted MOD 11\n * algorithm are a North-American requirement (49 CFR 565.15 / SAE J853), not something\n * Resolução CONTRAN nº 968/2022 (which replaced Resolução CONTRAN nº 24/1998 from 1 January 2025,\n * art. 50, II) or ABNT NBR 6066, which define the Brazilian VIN structure, mandate; many Brazilian-built VINs do not carry a matching check digit.\n * The ISO catalogue page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser, where it renders the standard's paywalled\n * abstract rather than its text.\n * @see Official: https://www.iso.org/standard/52200.html\n * @see Official: https://www.ecfr.gov/current/title-49/section-565.15\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9682022.pdf\n * Resolução CONTRAN nº 968, de 20 de junho de 2022, art. 2º, I (VIN of 17 characters in three sections)\n * and art. 50, II (revocation of Resolução nº 24/1998 from 1 January 2025).\n * @see Official: https://vpic.nhtsa.dot.gov/api/\n */\nexport const VIN_LENGTH = 17;\n\nexport const VIN_CHECK_DIGIT_POSITION = 8;\n\nexport const VIN_TRANSLITERATION: Record<string, number> = {\n\t0: 0,\n\t1: 1,\n\t2: 2,\n\t3: 3,\n\t4: 4,\n\t5: 5,\n\t6: 6,\n\t7: 7,\n\t8: 8,\n\t9: 9,\n\tA: 1,\n\tB: 2,\n\tC: 3,\n\tD: 4,\n\tE: 5,\n\tF: 6,\n\tG: 7,\n\tH: 8,\n\tJ: 1,\n\tK: 2,\n\tL: 3,\n\tM: 4,\n\tN: 5,\n\tP: 7,\n\tR: 9,\n\tS: 2,\n\tT: 3,\n\tU: 4,\n\tV: 5,\n\tW: 6,\n\tX: 7,\n\tY: 8,\n\tZ: 9,\n};\n\nexport const VIN_WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2];\n","import { generateChecksum } from \"../_internals/generate-checksum/generate-checksum\";\nimport { isRepeatedDigits } from \"../_internals/is-repeated-digits/is-repeated-digits\";\nimport {\n\tVIN_CHECK_DIGIT_POSITION,\n\tVIN_LENGTH,\n\tVIN_TRANSLITERATION,\n\tVIN_WEIGHTS,\n} from \"./constants\";\n\n/**\n * Validates a VIN (Vehicle Identification Number / chassi).\n *\n * Checks the length (17 characters), the excluded letters (`I`, `O`, `Q` are never valid; ISO\n * 3779:2009 structure) and the check digit at the 9th position, with the check digit and\n * transliteration computed per 49 CFR 565.15. That 9th-position check digit is a North-American\n * requirement (49 CFR 565.15 / SAE J853): Resolução CONTRAN nº 968/2022 (in force since 1 July 2022, revoking Resolução CONTRAN nº 24/1998 from\n * 1 January 2025 by its art. 50, II) and ABNT NBR 6066 define\n * the Brazilian VIN structure but do not mandate it, so many Brazilian-built VINs do not carry\n * a matching check digit. This function is therefore a North-American-style structural check,\n * not a universal validator of Brazilian VINs. Case-insensitive and trims surrounding whitespace.\n *\n * A VIN is printed as one unbroken run of 17 characters, so, unlike the documents this package\n * masks (`isValidCpf`, `isValidCnpj`, `isValidNfeKey`), it has no group boundary to write a\n * separator at and none is accepted: a space, `.`, `-` or `/` among the characters is rejected\n * instead of being stripped.\n *\n * A value whose 17 characters are all the same (`\"00000000000000000\"`) is rejected even when it\n * carries a matching check digit, as every other validator of this package rejects a\n * repeated-digit document (`isValidCpf(\"00000000000\")`, `isValidCns`, `isValidCaepf`,\n * `isValidCei`): no WMI, VDS and VIS are built out of a single repeated character, and it is what\n * a placeholder or a zero-filled field looks like.\n *\n * @param {string} value - The VIN to be validated.\n * @returns {boolean} True when `value` is a 17 character VIN with a matching check digit.\n *\n * @example\n * ```typescript\n * isValidVin(\"1HGCM82633A004352\"); // true\n * isValidVin(\"1m8gdm9axkp042788\"); // true (check digit X, lowercase)\n * isValidVin(\"JH4TB2H26CC000000\"); // true\n * isValidVin(\"1HGCM82633A004353\"); // false (bad check digit)\n * isValidVin(\"00000000000000000\"); // false (every character the same, though the check digit matches)\n * isValidVin(\"1HGCM8263IA004352\"); // false (contains the excluded letter I)\n * isValidVin(\"1HGCM82633A00435\"); // false (16 characters)\n * ```\n *\n * The ISO catalogue page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser, where it renders the standard's paywalled\n * abstract rather than its text.\n *\n * @see Official: https://www.iso.org/standard/52200.html\n * @see Official: https://www.ecfr.gov/current/title-49/section-565.15\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao9682022.pdf\n * Resolução CONTRAN nº 968, de 20 de junho de 2022, art. 2º, I (VIN of 17 characters in three sections)\n * and art. 50, II (revocation of Resolução nº 24/1998 from 1 January 2025).\n * @see Official: https://vpic.nhtsa.dot.gov/api/\n */\nexport const isValidVin = (value: string): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\tconst vin = value.trim().toUpperCase();\n\n\tif (vin.length !== VIN_LENGTH) return false;\n\n\tif (isRepeatedDigits(vin)) return false;\n\n\t// Stryker disable next-line StringLiteral: generateChecksum strips this to digits, so it's inert.\n\tlet translitDigits = \"\";\n\n\tfor (const char of vin) {\n\t\tif (!(char in VIN_TRANSLITERATION)) return false;\n\n\t\ttranslitDigits += VIN_TRANSLITERATION[char];\n\t}\n\n\tconst checkDigit = vin[VIN_CHECK_DIGIT_POSITION];\n\n\tconst remainder = generateChecksum({ base: translitDigits, weight: VIN_WEIGHTS }) % 11;\n\tconst expected = remainder === 10 ? \"X\" : String(remainder);\n\n\treturn expected === checkDigit;\n};\n","import { calculateVoterIdFirstDigit } from \"../_internals/calculate-voter-id-first-digit/calculate-voter-id-first-digit\";\nimport { calculateVoterIdSecondDigit } from \"../_internals/calculate-voter-id-second-digit/calculate-voter-id-second-digit\";\nimport { NINE_DIGIT_FEDERATIVE_UNION_CODES } from \"../_internals/constants/voter-id\";\n\nconst SEPARATORS_REGEX = /[\\s.]/g;\n\nconst FORMAT_REGEX = /^[\\s.]*\\d{4}[\\s.]*\\d{4}[\\s.]*(?:\\d[\\s.]*)?\\d{2}[\\s.]*\\d{2}[\\s.]*$/;\n\n/**\n * Validates if a Brazilian voter id (título de eleitor) is valid.\n *\n * A voter id normally has 12 digits: an 8-digit sequential number, a 2-digit federative\n * union code (01-28) and a 2-digit verification code. São Paulo (01) and Minas Gerais (02)\n * may instead issue voter ids with a 9-digit sequential number, totalling 13 digits.\n *\n * Whitespace and dots are accepted around and between the \"0000 0000 00 00\" groups, but any\n * other character, a letter in particular, makes the value invalid.\n *\n * @param {string} value - The voter id value to be validated.\n * @returns {boolean} True if the voter id is valid, false otherwise.\n *\n * @example\n * ```typescript\n * isValidVoterId(\"102385010671\"); // true (12 digits)\n * isValidVoterId(\"1234567880191\"); // true (13 digits, São Paulo)\n * isValidVoterId(\"1023 8501 06 71\"); // true (whitespace mask)\n * isValidVoterId(\"123456780124\"); // false (invalid checksum)\n * isValidVoterId(\"ab102385010671\"); // false (invalid format)\n * ```\n *\n * Resolução TSE nº 23.659/2021, art. 36, parágrafo único, confirms the federative union table and\n * the two-step módulo 11 structure (\"até 12 algarismos\"). The weights used in each step and the\n * 13-digit São Paulo/Minas Gerais ids are brutils parity, not published by the TSE — siga0984 uses\n * a different 9-digit rule for the sequential number.\n *\n * The TSE resolution page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser.\n *\n * @see Official: https://www.tse.jus.br/legislacao/compilada/res/2021/resolucao-no-23-659-de-26-de-outubro-de-2021\n * @see Based on: https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-titulo-de-eleitor/\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/voter_id.py\n */\nexport const isValidVoterId = (value: string): boolean => {\n\tif (typeof value !== \"string\") return false;\n\n\tif (!FORMAT_REGEX.test(value)) return false;\n\n\tconst digits = value.replace(SEPARATORS_REGEX, \"\");\n\n\t// Stryker disable next-line MethodExpression: the check digits are computed from the first eight digits only, so passing the whole value instead of the sequential part yields the same result.\n\tconst sequentialNumber = digits.slice(0, -4);\n\tconst federativeUnion = digits.slice(-4, -2);\n\tconst verifier = digits.slice(-2);\n\n\tif (digits.length === 13 && !NINE_DIGIT_FEDERATIVE_UNION_CODES.includes(federativeUnion)) {\n\t\treturn false;\n\t}\n\n\tconst ufCode = Number(federativeUnion);\n\n\tif (ufCode < 1 || ufCode > 28) return false;\n\n\tconst digit1 = calculateVoterIdFirstDigit({ sequentialNumber, federativeUnion });\n\tconst digit2 = calculateVoterIdSecondDigit({ federativeUnion, firstDigit: digit1 });\n\n\treturn verifier === `${digit1}${digit2}`;\n};\n","import { ARRECADACAO_LINE_LENGTH, ARRECADACAO_PRODUCT } from \"../_internals/constants/arrecadacao\";\nimport { BOLETO_LENGTH } from \"../_internals/constants/boleto\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Removes boleto formatting characters and returns only digits.\n *\n * Bank slips starting with `8` are \"arrecadação\" (convênio/tributos) slips, whose linha\n * digitável has 48 digits instead of the 47 of a \"cobrança bancária\" slip.\n *\n * @param {string|number} value - The boleto value to be parsed.\n * @returns {string} The boleto value without formatting.\n *\n * @example\n * ```typescript\n * parseBoleto(\"10491.44338 55119.000002 00000.000141 3 25230000093423\");\n * // \"10491443385511900000200000000141325230000093423\"\n *\n * parseBoleto(\"82630000001-1 09880010070-2 02410202400-0 00020510451-9\");\n * // \"826300000011098800100702024102024000000205104519\"\n * ```\n *\n * Carta-Circular BCB nº 2.926/2000 specifies the linha digitável fields and the módulo 11\n * check digit (using 1 for remainders 0, 10 and 1) of the 47 digit cobrança bancária slip,\n * including the position of the fator de vencimento field. The FEBRABAN \"Layout Padrão de\n * Arrecadação/Recebimento com Utilização do Código de Barras\" and the FEBRABAN layout index\n * cover the arrecadação slip.\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/c_circ/2000/pdf/c_circ_2926_v1_O.pdf\n * @see Official: https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20-%20C%C3%B3digo%20de%20Barras%20-%20Vers%C3%A3o%208%20-%2011_05_2026.pdf\n * @see Official: https://portal.febraban.org.br/pagina/3425/33/pt-br/layout-febraban\n */\nexport const parseBoleto = (value: string | number): string => {\n\tconst digits = sanitizeToDigits(value);\n\n\treturn digits.slice(\n\t\t0,\n\t\tdigits.startsWith(ARRECADACAO_PRODUCT) ? ARRECADACAO_LINE_LENGTH : BOLETO_LENGTH,\n\t);\n};\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes CAEPF (Cadastro de Atividade Econômica da Pessoa Física) formatting characters and\n * returns only digits.\n *\n * The number has 14 digits, 12 of base plus the two check digits, which is the length the result\n * is capped at; a shorter value passes through as far as it goes. Use `isValidCaepf` to check the\n * number itself.\n *\n * @param {string|number} value - The CAEPF value to be parsed.\n * @returns {string} Up to 14 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseCaepf(\"293.118.610/001-84\"); // \"29311861000184\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/caepf\n * The registry's own page at the Receita Federal, which describes the cadastro but does not print\n * the mask; the mask is the one the sources cited by `isValidCaepf` agree on.\n */\nexport const parseCaepf = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes CBO (Classificação Brasileira de Ocupações) formatting characters and returns only\n * digits.\n *\n * An occupation code has 6 digits, which is the length the result is capped at; a shorter value\n * passes through as far as it goes and is never left padded, so the leading zero of a code such\n * as `010205` has to be written out. Use `getCbo` or `isValidCbo`, which do pad a bare numeric\n * code, to look an occupation up.\n *\n * @param {string|number} value - The CBO code to be parsed.\n * @returns {string} Up to 6 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseCbo(\"2124-05\"); // \"212405\"\n * ```\n *\n * @see Official: https://www.gov.br/trabalho-e-emprego/pt-br/assuntos/cbo/servicos/downloads/cbo2002-ocupacao.csv\n * The CBO 2002 occupation table, as published by the Ministério do Trabalho e Emprego.\n */\nexport const parseCbo = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes CEI (Cadastro Específico do INSS) formatting characters and returns only digits.\n *\n * The numbering has 12 digits, 11 of base and one check digit, which is the length the result is\n * capped at; a shorter value passes through as far as it goes, so the mask of an input still\n * being typed can be stripped with it. Use `isValidCei` to check the number itself.\n *\n * @param {string|number} value - The CEI value to be parsed.\n * @returns {string} Up to 12 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseCei(\"27.729.71181/87\"); // \"277297118187\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cno\n * The registry's own page at the Receita Federal, which describes the cadastro but does not print\n * the mask; the mask is the one the reference implementations cited by `isValidCei` agree on.\n */\nexport const parseCei = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { CEP_LENGTH } from \"../_internals/constants/cep\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Removes CEP formatting characters and returns only digits.\n *\n * @param {string|number} value - The CEP value to be parsed.\n * @returns {string} The CEP value without formatting.\n *\n * @example\n * ```typescript\n * parseCep(\"01310-930\"); // \"01310930\"\n * ```\n *\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/tudo-sobre-cep\n * @see Official: https://www.correios.com.br/enviar/precisa-de-ajuda/guia-de-enderecamento/guia-de-enderecamento\n */\nexport const parseCep = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, CEP_LENGTH);\n","import { CERTIDAO_LENGTH } from \"../_internals/constants/certidao\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Removes the formatting of the matrícula of a certidão de registro civil and returns only\n * digits.\n *\n * The matrícula has 32 digits, which is the length the result is capped at; a shorter value\n * passes through as far as it goes, so the mask of an input still being typed can be stripped\n * with it. This only takes the mask off: use `isValidCertidao` to check the matrícula and\n * `getCertidaoInfo` to read its fields.\n *\n * @param {string|number} value - The matrícula value to be parsed.\n * @returns {string} Up to 32 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseCertidao(\"104539 01 55 2013 1 00012 021 0000123 21\");\n * // \"10453901552013100012021000012321\"\n * ```\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/5243\n * Código Nacional de Normas da Corregedoria Nacional de Justiça - Foro Extrajudicial (Provimento\n * CNJ nº 149/2023), art. 473: the in-force 6 + 2 + 2 + 4 + 1 + 5 + 3 + 7 + 2 layout of the 32\n * digit matrícula.\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/1310\n * Provimento CNJ nº 3, de 17/11/2009, art. 7º, where that matrícula first got the same digit\n * structure (revoked; historical).\n */\nexport const parseCertidao = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, CERTIDAO_LENGTH);\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes CFOP (Código Fiscal de Operações e Prestações) formatting characters and returns only\n * digits.\n *\n * A code has 4 digits, which is the length the result is capped at; a shorter value passes\n * through as far as it goes. No CFOP code starts with a zero, its first digit is the operation\n * group from 1 to 7, so nothing is ever padded here. Use `getCfop` or `isValidCfop` to look a\n * code up in the official table.\n *\n * @param {string|number} value - The CFOP code to be parsed.\n * @returns {string} Up to 4 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseCfop(\"5.102\"); // \"5102\"\n * ```\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/ajustes/sinief/cfop_cvsn_1-6.24\n * Consolidated Anexo II of Convênio SINIEF s/nº 1970, which prints the codes in the \"N.NNN\" form.\n */\nexport const parseCfop = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes CNAE (Classificação Nacional de Atividades Econômicas) formatting characters and\n * returns only digits.\n *\n * A complete subclass code has 7 digits, which is the length the result is capped at; a shorter\n * value (a division, a group or a class still being typed) passes through as far as it goes and\n * is never left padded, so the leading zeros a code carries have to be written out. Use\n * `getCnae` or `isValidCnae`, which do pad a bare numeric code, to look a code up.\n *\n * @param {string|number} value - The CNAE code to be parsed.\n * @returns {string} Up to 7 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseCnae(\"6201-5/01\"); // \"6201501\"\n * ```\n *\n * @see Official: https://servicodados.ibge.gov.br/api/v2/cnae/subclasses\n */\nexport const parseCnae = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes CNH (Carteira Nacional de Habilitação) formatting characters and returns only digits.\n *\n * @param {string|number} value - The CNH to be parsed.\n * @returns {string} Up to 11 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseCnh(\"123456789-00\"); // \"12345678900\"\n * ```\n *\n * Resolução CONTRAN nº 886/2021, art. 4º I, defines the CNH registry number as 9 characters plus\n * 2 security check digits, which is the layout this parser caps at; no official text publishes\n * the check-digit weights used to compute them.\n *\n * @see Official: https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/Resolucao8862021F.pdf\n */\nexport const parseCnh = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes CNO (Cadastro Nacional de Obras) formatting characters and returns only digits.\n *\n * The CNO replaced the CEI for construction works and kept its 12 digit numbering, so the result\n * is capped at the same length; a shorter value passes through as far as it goes. Use\n * `isValidCno` to check the number itself.\n *\n * @param {string|number} value - The CNO value to be parsed.\n * @returns {string} Up to 12 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseCno(\"11.113.01373/68\"); // \"111130137368\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/orientacao-tributaria/cadastros/cno\n * The registry's own page at the Receita Federal, which describes the cadastro but does not print\n * the mask; the mask is the one the reference implementations cited by `isValidCno` agree on.\n */\nexport const parseCno = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes CNS (Cartão Nacional de Saúde) formatting characters and returns only digits.\n *\n * The number the ANVISA and DATASUS routines check has 15 digits, the length the result is\n * capped at; a shorter value passes through as far as it goes, so the parser can strip the mask\n * off an input still being typed. Use `isValidCns` to check the number itself.\n *\n * @param {string|number} value - The CNS value to be parsed.\n * @returns {string} Up to 15 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseCns(\"123 4567 8901 0000\"); // \"123456789010000\"\n * ```\n *\n * @see Official: https://rni-docs.anvisa.gov.br/docs/regras_gerais/validacoes/validacaoCNS/\n * ANVISA's validation routines, which fix the 15 digit length. The page sits behind a bot filter\n * and answers HTTP 403 to every non-browser client, so it has to be opened in a browser.\n * @see Based on: https://integracao.esusab.ufsc.br/ledi/documentacao/regras/algoritmo_CNS.html\n * e-SUS APS documentation of the same DATASUS algorithm, reachable without a browser.\n */\nexport const parseCns = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { CPF_LENGTH } from \"../_internals/constants/cpf\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Removes CPF formatting characters and returns only digits.\n *\n * @param {string|number} value - The CPF value to be parsed.\n * @returns {string} The CPF value without formatting.\n *\n * @example\n * ```typescript\n * parseCpf(\"123.456.789-09\"); // \"12345678909\"\n * ```\n *\n * @see Official: https://www.gov.br/receitafederal/pt-br/assuntos/meu-cpf\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/cpf.py\n */\nexport const parseCpf = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, CPF_LENGTH);\n","import { DEFAULT_PRECISION, clampPrecision } from \"../_internals/clamp-precision/clamp-precision\";\nimport { parseDecimal } from \"../_internals/parse-decimal/parse-decimal\";\n\n/** Options of `parseCurrency`. */\nexport type ParseCurrencyOptions = {\n\t/** Number of decimal places used as the minor unit scale. Fractions accept up to two digits, or `precision` digits when it is greater. Defaults to 2, clamped to 0-20. */\n\tprecision?: number;\n};\n\n/**\n * Parses a string representing Brazilian currency format into a number.\n *\n * The last `,` or `.` followed by 1 to 2 digits (or up to `precision` digits, when that is\n * larger) is the decimal separator; every other `,` or `.` is a thousands separator, so\n * `\"R$ 1.234,56\"` parses to 1234.56 and `\"R$ 1.234\"` to 1234. A value written without any\n * separator keeps the cents convention and is divided by `10 ** precision`, so `\"1234\"`\n * parses to 12.34. A `-` written before the first digit is preserved, so `\"-R$ 1,00\"` parses\n * to -1.\n *\n * The precision is clamped to `0-20`, and a precision that is not a finite number falls back\n * to 2.\n *\n * @param {string} value - The string value to be parsed (e.g., \"R$ 1.234,56\" or \"1234,56\")\n * @param {ParseCurrencyOptions} [options] - Optional parsing options.\n * @param {number} options.precision - The number of decimal places used as the minor unit scale. Fractions accept up to two digits, or `precision` digits when it is greater. Defaults to 2, clamped to 0-20.\n * @returns {number} The parsed number value (e.g., 1234.56)\n *\n * The `R$` prefix and the comma before the centavos are the ones Lei nº 9.069/1995, art. 1º,\n * §§ 1º and 2º prescribes; the `.` grouping comes from the CLDR pt-BR locale data.\n *\n * @see Official: https://www.planalto.gov.br/ccivil_03/leis/l9069.htm\n * @see Based on: https://cldr.unicode.org/\n *\n * @example\n * ```typescript\n * parseCurrency(\"R$ 1.234,56\"); // returns 1234.56\n * parseCurrency(\"1234,56\"); // returns 1234.56\n * parseCurrency(\"R$ 0,50\"); // returns 0.50\n * parseCurrency(\"R$ 1.234\"); // returns 1234\n * parseCurrency(\"1234\"); // returns 12.34\n * parseCurrency(\"-R$ 1,00\"); // returns -1\n * parseCurrency(\"R$ 1,001\", { precision: 3 }); // returns 1.001\n * parseCurrency(\"\"); // returns 0\n * ```\n */\nexport const parseCurrency = (value: string, options?: ParseCurrencyOptions): number => {\n\tconst precision = clampPrecision(options?.precision);\n\n\treturn parseDecimal(value, {\n\t\tminorUnits: precision,\n\t\tmaxFractionDigits: Math.max(DEFAULT_PRECISION, precision),\n\t});\n};\n","import { BR_IBAN_LENGTH } from \"../_internals/constants/iban\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToAlphanumeric } from \"../_internals/sanitize-to-alphanumeric/sanitize-to-alphanumeric\";\n\n/**\n * Removes IBAN formatting characters, uppercases the result and returns the compact IBAN.\n *\n * An IBAN carries letters as well as digits (the country code, the account type and, from the\n * tenth holder on, the owner indicator), so the value is read for its letters and digits rather\n * than for its digits alone, exactly like `parsePassport` and `formatIban` do. The result is\n * capped at the 29 characters of a Brazilian IBAN, the same cap `formatIban` applies, and a\n * shorter value passes through as far as it goes. Use `isValidIban` to check the check digits and\n * `getIbanInfo` to read the fields.\n *\n * @param {string|number} value - The IBAN to be parsed.\n * @returns {string} Up to 29 uppercase alphanumeric characters, or an empty string when there is\n * no letter or digit at all.\n *\n * @example\n * ```typescript\n * parseIban(\"BR15 0000 0000 0000 1093 2840 814P 2\"); // \"BR1500000000000010932840814P2\"\n * ```\n *\n * @see Official: https://www.bcb.gov.br/pre/normativos/circ/2013/pdf/circ_3625_v1_O.pdf\n * Circular BCB nº 3.625/2013\n * @see Official: https://www.bcb.gov.br/content/estabilidadefinanceira/Documents/sistema_pagamentos_brasileiro/IBAN-Guidelines_%20port.pdf\n * Diretrizes de Implementação do IBAN no Brasil, which fix the 29 character Brazilian length.\n */\nexport const parseIban = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToAlphanumeric(value).slice(0, BR_IBAN_LENGTH);\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes legal nature (natureza jurídica) formatting characters and returns only digits.\n *\n * @param {string|number} value - The legal nature code to be parsed.\n * @returns {string} Up to 4 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseLegalNature(\"206-2\"); // \"2062\"\n * ```\n *\n * The CONCLA table page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser; the detailed structure PDF next to it is served\n * normally.\n *\n * @see Official: https://concla.ibge.gov.br/estrutura/natjur-estrutura/natureza-juridica-2021\n * @see Official: https://concla.ibge.gov.br/images/concla/documentacao/CONCLA-TNJ2021-EstruturaDetalhada.pdf\n */\nexport const parseLegalNature = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { LENGTH } from \"./constants\";\n\n/**\n * Removes NCM (Nomenclatura Comum do Mercosul) formatting characters and returns only digits.\n *\n * A complete code has 8 digits, which is the length the result is capped at; a shorter value (a\n * position or a subposition, or a code still being typed) passes through as far as it goes and is\n * never left padded, so the leading zeros a code carries have to be written out. Use `isValidNcm`,\n * which does pad a bare numeric code, to check a code against the official table.\n *\n * @param {string|number} value - The NCM code to be parsed.\n * @returns {string} Up to 8 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseNcm(\"8471.30.12\"); // \"84713012\"\n * ```\n *\n * @see Official: https://portalunico.siscomex.gov.br/classif/api/publico/nomenclatura/download/json\n */\nexport const parseNcm = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, LENGTH);\n","import { NFE_KEY_LENGTH, XML_ID_PREFIX_REGEX } from \"../_internals/constants/nfe-key\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { toStringSafe } from \"../_internals/to-string-safe/to-string-safe\";\n\n/**\n * Removes the formatting of a DF-e (Documento Fiscal eletrônico) access key (chave de acesso) and\n * returns only digits.\n *\n * The `NFe`, `CTe`, `MDFe`, `BPe`, `NF3e` and `NFCom` prefixes the `Id` attribute of the\n * document's XML puts in front of the key are stripped before the digits are read, with any\n * whitespace around them, the same way `isValidNfeKey` accepts them. The prefix has to go first\n * because `NF3e` carries a digit of its own that is not part of the key.\n *\n * The result is capped at the 44 digits of an access key; a shorter value passes through as far\n * as it goes, so the grouping of a key still being typed can be stripped with it. Use\n * `isValidNfeKey` to check the key and `getNfeKeyInfo` to read its fields.\n *\n * @param {string|number} value - The access key value to be parsed.\n * @returns {string} Up to 44 digits, or an empty string when there is no digit at all.\n *\n * @example\n * ```typescript\n * parseNfeKey(\"3517 0458 7165 2300 0119 5500 1000 0000 1210 0012 3458\");\n * // \"35170458716523000119550010000000121000123458\"\n *\n * parseNfeKey(\"NFe35170458716523000119550010000000121000123458\");\n * // \"35170458716523000119550010000000121000123458\"\n * ```\n *\n * @see Official: https://www.confaz.fazenda.gov.br/legislacao/arquivo-manuais/moc7-visao-geral.pdf\n * Manual de Orientação do Contribuinte (MOC) NF-e, \"chave de acesso\", which fixes the 44 digits\n * and the `Id` attribute the prefixes come from.\n */\nexport const parseNfeKey = (value: string | number): string => {\n\t// Stryker disable next-line StringLiteral: whatever replaces the prefix is stripped again by sanitizeToDigits unless it carries a digit, and the mutant's literal carries none.\n\tconst body = toStringSafe(value).trim().replace(XML_ID_PREFIX_REGEX, \"\");\n\n\treturn sanitizeToDigits(body).slice(0, NFE_KEY_LENGTH);\n};\n","import { PHONE_NATIONAL_MAX_LENGTH } from \"../_internals/constants/phone\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { normalizePhone } from \"../_internals/normalize-phone/normalize-phone\";\n\n/**\n * Removes phone formatting characters, returns only digits, and caps the result to 11 digits.\n *\n * A Brazilian country code is stripped first, under a single rule: the leading `0055` or `55`\n * is removed **only when** the digits left behind are exactly 10 or 11 long, i.e. a plausible\n * national number (DDD plus an 8 or 9 digit subscriber number). Any other input keeps its\n * digits, so a number from the `55` area code survives: `\"55987654321\"` would leave only 9\n * digits, so its `55` is read as the DDD. The rule is length-based, not sign-based, which\n * makes `\"+5511987654321\"`, `\"005511987654321\"` and `\"5511987654321\"` all parse alike.\n *\n * @param {string|number} value - The phone value to be parsed.\n * @returns {string} The phone value without formatting.\n *\n * @example\n * ```typescript\n * parsePhone(\"(11) 98765-4321\"); // \"11987654321\"\n * parsePhone(\"+55 (11) 98765-4321\"); // \"11987654321\"\n * parsePhone(\"5511987654321\"); // \"11987654321\"\n * parsePhone(\"55987654321\"); // \"55987654321\" (area code 55, country code kept out of it)\n * ```\n *\n * @see Official: https://www.itu.int/rec/T-REC-E.164\n * @see Official: https://informacoes.anatel.gov.br/legislacao/resolucoes/2022/1641-resolucao-749\n */\nexport const parsePhone = (value: string | number): string =>\n\tisNullish(value) ? \"\" : normalizePhone(value).slice(0, PHONE_NATIONAL_MAX_LENGTH);\n","import { PIS_LENGTH } from \"../_internals/constants/pis\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Removes PIS formatting characters and returns only digits.\n *\n * @param {string|number} value - The PIS value to be parsed.\n * @returns {string} The PIS value without formatting.\n *\n * @example\n * ```typescript\n * parsePis(\"120.12345.67-8\"); // \"12012345678\"\n * ```\n *\n * @see Official: https://www.gov.br/inss/pt-br/direitos-e-deveres/inscricao-e-contribuicao/inscricao\n * @see Official: https://www.gov.br/esocial/pt-br/documentacao-tecnica/manuais/mos-manual-de-orientacao-do-esocial-vs-2-4.pdf\n * @see Official: https://www.sirc.gov.br/wp-content/uploads/manual_sirc_recomendacoes_tecnicas_v7.pdf\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/pis.py\n */\nexport const parsePis = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, PIS_LENGTH);\n","import { PROCESSO_JURIDICO_LENGTH } from \"../_internals/constants/processo-juridico\";\nimport { isNullish } from \"../_internals/is-nullish/is-nullish\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\n\n/**\n * Removes legal process formatting characters and returns only digits.\n *\n * @param {string|number} value - The legal process value to be parsed.\n * @returns {string} The legal process value without formatting.\n *\n * @example\n * ```typescript\n * parseProcessoJuridico(\"0002080-34.2026.5.15.0049\"); // \"00020803420265150049\"\n * ```\n *\n * Resolução CNJ nº 65/2008 defines this Número Único de Processo layout and its check digits.\n *\n * @see Official: https://atos.cnj.jus.br/atos/detalhar/119\n */\nexport const parseProcessoJuridico = (value: string | number): string =>\n\tisNullish(value) ? \"\" : sanitizeToDigits(value).slice(0, PROCESSO_JURIDICO_LENGTH);\n","import { NINE_DIGIT_FEDERATIVE_UNION_CODES } from \"../_internals/constants/voter-id\";\nimport { sanitizeToDigits } from \"../_internals/sanitize-to-digits/sanitize-to-digits\";\nimport { EXTENDED_LENGTH, LENGTH } from \"./constants\";\n\n/**\n * Removes voter id (título de eleitor) formatting characters and returns only digits.\n *\n * Keeps up to 13 digits when the 10th and 11th digits identify São Paulo (\"01\") or Minas\n * Gerais (\"02\"), since those states may issue voter ids with a 9-digit sequential number;\n * otherwise keeps up to the usual 12 digits.\n *\n * @param {string|number} value - The voter id value to be parsed.\n * @returns {string} The voter id value without formatting.\n *\n * @example\n * ```typescript\n * parseVoterId(\"1234 5678 01 24\"); // \"123456780124\"\n * parseVoterId(\"1234 5678 8 01 91\"); // \"1234567880191\"\n * ```\n *\n * The 13-digit São Paulo/Minas Gerais cap is brutils parity, not published by the TSE. A\n * 14-or-more-digit input whose 10th and 11th digits are \"01\"/\"02\" is read as a 13-digit São Paulo\n * or Minas Gerais id and capped at 13 digits, discarding anything past that.\n *\n * The TSE resolution page sits behind a bot filter and answers HTTP 403 to every non-browser\n * client, so it has to be opened in a browser.\n *\n * @see Official: https://www.tse.jus.br/legislacao/compilada/res/2021/resolucao-no-23-659-de-26-de-outubro-de-2021\n * @see Based on: https://github.com/brazilian-utils/python/blob/main/brutils/voter_id.py\n */\nexport const parseVoterId = (value: string | number): string => {\n\tconst digits = sanitizeToDigits(value);\n\n\tconst federativeUnion = digits.slice(9, 11);\n\n\tconst maxLength = NINE_DIGIT_FEDERATIVE_UNION_CODES.includes(federativeUnion)\n\t\t? EXTENDED_LENGTH\n\t\t: LENGTH;\n\n\treturn digits.slice(0, maxLength);\n};\n","import { addBusinessDays } from \"../add-business-days/add-business-days\";\nimport { type BusinessDayOptions } from \"../is-business-day/is-business-day\";\n\nexport type { BusinessDayOptions } from \"../is-business-day/is-business-day\";\n\n/**\n * Subtracts a number of Brazilian business days (dias úteis) from a date.\n *\n * The mirror image of `addBusinessDays`, which it delegates to: `subBusinessDays(date, amount)`\n * is `addBusinessDays(date, -amount)`, down to the last detail. A business day is a day for\n * which `isBusinessDay` returns `true` (not a Saturday, a Sunday, or a Brazilian holiday),\n * evaluated with the same `options`, and the walk goes one calendar day at a time, counting only\n * business days.\n *\n * `amount: 0` returns a **new `Date` equal to `date`, unchanged**, even when `date` itself falls\n * on a weekend or holiday, and a negative `amount` walks *forwards*, exactly like date-fns'\n * `subBusinessDays`.\n *\n * The time-of-day (hours, minutes, seconds, milliseconds) of `date` is preserved in the result,\n * and `date` itself is never mutated.\n *\n * If `options.stateCode` is provided but is not a valid/known state code, it is ignored and only\n * national holidays are considered (same behavior as `getHolidays`/`isBusinessDay`), so a\n * prototype-chain key such as `\"__proto__\"` is an unknown state code like any other. An `options`\n * that is not an object at all is ignored, exactly as `isBusinessDay` ignores it.\n *\n * Only years from 1900 through 2099 are supported, the range `getHolidays` computes. A `date`\n * outside it, or a walk that leaves it, returns `null`.\n *\n * @param {Date} date - The date to count from. Never mutated: a new `Date` is returned.\n * @param {number} amount - The number of business days to subtract; a negative value walks forwards.\n * @param {BusinessDayOptions} [options] - Which holidays count as non-business days.\n * @param {StateCode} [options.stateCode] - Brazilian state code whose state holidays are also considered.\n * @param {boolean} [options.includeOptional] - Whether optional holidays count as non-business days (default: `true`).\n * @returns {Date | null} A new `Date`, `amount` business days before `date`. `null` on bad input:\n * a `date` that is not a valid `Date` or is outside 1900-2099, an `amount` that is not a finite\n * integer, a `stateCode` that is not a string, or a walk that leaves the supported years.\n *\n * @example\n * ```typescript\n * subBusinessDays(new Date(2024, 0, 5, 12), 1); // Thu 2024-01-04, 12:00 (the previous day is already a business day)\n * subBusinessDays(new Date(2024, 0, 8, 12), 1); // Fri 2024-01-05, 12:00 (walks back over the weekend)\n * subBusinessDays(new Date(2025, 0, 2, 12), 1); // Tue 2024-12-31, 12:00 (Jan 1 is Ano novo, skipped)\n * subBusinessDays(new Date(2024, 0, 5, 12), -1); // Mon 2024-01-08, 12:00 (walks forwards)\n * subBusinessDays(new Date(2024, 0, 6, 12), 0); // Sat 2024-01-06, 12:00 (unchanged, even though Saturday is not a business day)\n * subBusinessDays(new Date(2024, 6, 10, 12), 1, { stateCode: \"SP\" }); // Mon 2024-07-08, 12:00 (Jul 9 is a state holiday in SP)\n * subBusinessDays(new Date(\"not a date\"), 1); // null\n * subBusinessDays(new Date(2024, 0, 2), 1.5); // null (not an integer)\n * subBusinessDays(new Date(1900, 0, 2), 1); // null (the walk leaves the supported years)\n * ```\n *\n * @see Based on: https://date-fns.org/docs/subBusinessDays\n * Reference behavior and the positional\n * `(date, amount)` argument order. The underlying holiday determination's official sources are\n * cited in `isBusinessDay`/`getHolidays`.\n */\nexport const subBusinessDays = (\n\tdate: Date,\n\tamount: number,\n\toptions?: BusinessDayOptions,\n): Date | null => {\n\tif (!Number.isInteger(amount)) return null;\n\n\treturn addBusinessDays(date, -amount, options);\n};\n","import { formatCep } from \"./format-cep/format-cep\";\nimport { formatCnpj } from \"./format-cnpj/format-cnpj\";\nimport { formatCpf } from \"./format-cpf/format-cpf\";\nimport { generateCnpj } from \"./generate-cnpj/generate-cnpj\";\nimport { generateCpf } from \"./generate-cpf/generate-cpf\";\nimport { isValidCep } from \"./is-valid-cep/is-valid-cep\";\nimport { isValidCnpj } from \"./is-valid-cnpj/is-valid-cnpj\";\nimport { isValidCpf } from \"./is-valid-cpf/is-valid-cpf\";\nimport { isValidIe } from \"./is-valid-ie/is-valid-ie\";\nimport { isValidPis } from \"./is-valid-pis/is-valid-pis\";\n\nexport type { Bank } from \"./_internals/constants/banks\";\nexport type { Municipality } from \"./_internals/constants/cities\";\nexport type { State, StateCode, StateName } from \"./_internals/constants/states\";\nexport type { NumberToWordsGender } from \"./_internals/number-to-words/number-to-words\";\nexport { addBusinessDays } from \"./add-business-days/add-business-days\";\nexport { type CapitalizeOptions, capitalize } from \"./capitalize/capitalize\";\nexport { convertCurrencyToWords } from \"./convert-currency-to-words/convert-currency-to-words\";\nexport {\n\ttype ConvertDateToWordsOptions,\n\tconvertDateToWords,\n} from \"./convert-date-to-words/convert-date-to-words\";\nexport { convertLicensePlateToMercosul } from \"./convert-license-plate-to-mercosul/convert-license-plate-to-mercosul\";\nexport {\n\ttype ConvertNumberToWordsOptions,\n\tconvertNumberToWords,\n} from \"./convert-number-to-words/convert-number-to-words\";\nexport { differenceInBusinessDays } from \"./difference-in-business-days/difference-in-business-days\";\nexport { type FormatBoletoOptions, formatBoleto } from \"./format-boleto/format-boleto\";\nexport { type FormatCaepfOptions, formatCaepf } from \"./format-caepf/format-caepf\";\nexport { type FormatCeiOptions, formatCei } from \"./format-cei/format-cei\";\nexport { type FormatCepOptions, formatCep } from \"./format-cep/format-cep\";\nexport { type FormatCertidaoOptions, formatCertidao } from \"./format-certidao/format-certidao\";\nexport { type FormatCnaeOptions, formatCnae } from \"./format-cnae/format-cnae\";\nexport { type FormatCnhOptions, formatCnh } from \"./format-cnh/format-cnh\";\nexport { type FormatCnoOptions, formatCno } from \"./format-cno/format-cno\";\nexport { type FormatCnpjOptions, formatCnpj } from \"./format-cnpj/format-cnpj\";\nexport { type FormatCnsOptions, formatCns } from \"./format-cns/format-cns\";\nexport { type FormatCpfOptions, formatCpf } from \"./format-cpf/format-cpf\";\nexport { type FormatCurrencyOptions, formatCurrency } from \"./format-currency/format-currency\";\nexport { formatIban } from \"./format-iban/format-iban\";\nexport {\n\ttype FormatLegalNatureOptions,\n\tformatLegalNature,\n} from \"./format-legal-nature/format-legal-nature\";\nexport { formatLicensePlate } from \"./format-license-plate/format-license-plate\";\nexport { type FormatNcmOptions, formatNcm } from \"./format-ncm/format-ncm\";\nexport { type FormatNfeKeyOptions, formatNfeKey } from \"./format-nfe-key/format-nfe-key\";\nexport { formatPassport } from \"./format-passport/format-passport\";\nexport { type FormatPhoneOptions, type PhoneMask, formatPhone } from \"./format-phone/format-phone\";\nexport { type FormatPisOptions, formatPis } from \"./format-pis/format-pis\";\nexport {\n\ttype FormatProcessoJuridicoOptions,\n\tformatProcessoJuridico,\n} from \"./format-processo-juridico/format-processo-juridico\";\nexport { formatVoterId } from \"./format-voter-id/format-voter-id\";\nexport { type GenerateBoletoParams, generateBoleto } from \"./generate-boleto/generate-boleto\";\nexport { generateCep } from \"./generate-cep/generate-cep\";\nexport { generateCnh } from \"./generate-cnh/generate-cnh\";\nexport { type GenerateCnpjParams, generateCnpj } from \"./generate-cnpj/generate-cnpj\";\nexport { generateCpf } from \"./generate-cpf/generate-cpf\";\nexport { generateLegalNature } from \"./generate-legal-nature/generate-legal-nature\";\nexport {\n\ttype GenerateLicensePlateFormat,\n\tgenerateLicensePlate,\n} from \"./generate-license-plate/generate-license-plate\";\nexport { generatePassport } from \"./generate-passport/generate-passport\";\nexport { generatePhone, type GeneratePhoneType } from \"./generate-phone/generate-phone\";\nexport { generatePis } from \"./generate-pis/generate-pis\";\nexport {\n\ttype GeneratePixPayloadParams,\n\tgeneratePixPayload,\n} from \"./generate-pix-payload/generate-pix-payload\";\nexport {\n\ttype GenerateProcessoJuridicoParams,\n\tgenerateProcessoJuridico,\n} from \"./generate-processo-juridico/generate-processo-juridico\";\nexport { generateRenavam } from \"./generate-renavam/generate-renavam\";\nexport { generateVoterId } from \"./generate-voter-id/generate-voter-id\";\nexport {\n\ttype AddressInfo,\n\ttype CepProvider,\n\tGetAddressInfoByCepError,\n\tGetAddressInfoByCepNotFoundError,\n\ttype GetAddressInfoByCepOptions,\n\tGetAddressInfoByCepServiceError,\n\tGetAddressInfoByCepValidationError,\n\tgetAddressInfoByCep,\n} from \"./get-address-info-by-cep/get-address-info-by-cep\";\nexport { type AreaCodeInfo, getAreaCodeInfo } from \"./get-area-code-info/get-area-code-info\";\nexport { getAreaCodesByState } from \"./get-area-codes-by-state/get-area-codes-by-state\";\nexport { getBankByCode } from \"./get-bank-by-code/get-bank-by-code\";\nexport { getBankByIspb } from \"./get-bank-by-ispb/get-bank-by-ispb\";\nexport { getBanks } from \"./get-banks/get-banks\";\nexport {\n\ttype BoletoInfo,\n\ttype GetBoletoInfoOptions,\n\tgetBoletoInfo,\n} from \"./get-boleto-info/get-boleto-info\";\nexport { type Cbo, getCbo } from \"./get-cbo/get-cbo\";\nexport {\n\ttype CepAddressInfo,\n\tGetCepInfoByAddressError,\n\tGetCepInfoByAddressNotFoundError,\n\ttype GetCepInfoByAddressParams,\n\tGetCepInfoByAddressValidationError,\n\tgetCepInfoByAddress,\n} from \"./get-cep-info-by-address/get-cep-info-by-address\";\nexport {\n\ttype CertidaoInfo,\n\ttype CertidaoType,\n\tgetCertidaoInfo,\n} from \"./get-certidao-info/get-certidao-info\";\nexport { type Cfop, getCfop } from \"./get-cfop/get-cfop\";\nexport { getCities } from \"./get-cities/get-cities\";\nexport { type Cnae, getCnae } from \"./get-cnae/get-cnae\";\nexport {\n\tgetFormatLicensePlate,\n\ttype LicensePlateFormat,\n} from \"./get-format-license-plate/get-format-license-plate\";\nexport {\n\ttype GetHolidaysParams,\n\ttype Holiday,\n\ttype HolidayType,\n\tgetHolidays,\n} from \"./get-holidays/get-holidays\";\nexport { type IbanInfo, getIbanInfo } from \"./get-iban-info/get-iban-info\";\nexport {\n\ttype LegalNature,\n\ttype LegalNatureCategory,\n\tgetLegalNature,\n} from \"./get-legal-nature/get-legal-nature\";\nexport { type GetLegalNaturesParams, getLegalNatures } from \"./get-legal-natures/get-legal-natures\";\nexport {\n\ttype GetLegalNaturesByCategoryOptions,\n\tgetLegalNaturesByCategory,\n} from \"./get-legal-natures-by-category/get-legal-natures-by-category\";\nexport { getMunicipalities } from \"./get-municipalities/get-municipalities\";\nexport {\n\ttype GetMunicipalityByCodeParams,\n\ttype GetMunicipalityByNameParams,\n\ttype GetMunicipalityParams,\n\tgetMunicipality,\n} from \"./get-municipality/get-municipality\";\nexport { getMunicipalityByCode } from \"./get-municipality-by-code/get-municipality-by-code\";\nexport {\n\ttype NfeKeyInfo,\n\ttype NfeKeyModel,\n\tgetNfeKeyInfo,\n} from \"./get-nfe-key-info/get-nfe-key-info\";\nexport {\n\ttype PixKeyInfo,\n\ttype PixKeyType,\n\tgetPixKeyInfo,\n} from \"./get-pix-key-info/get-pix-key-info\";\nexport {\n\ttype PixPayloadInfo,\n\ttype PixPointOfInitiation,\n\tgetPixPayloadInfo,\n} from \"./get-pix-payload-info/get-pix-payload-info\";\nexport { getStateByIbgeCode } from \"./get-state-by-ibge-code/get-state-by-ibge-code\";\nexport { getStateCodeByName } from \"./get-state-code-by-name/get-state-code-by-name\";\nexport { getStateNameByCode } from \"./get-state-name-by-code/get-state-name-by-code\";\nexport { getStates } from \"./get-states/get-states\";\nexport { getTimezoneByState } from \"./get-timezone-by-state/get-timezone-by-state\";\nexport { type BusinessDayOptions, isBusinessDay } from \"./is-business-day/is-business-day\";\nexport { type IsHolidayParams, isHoliday } from \"./is-holiday/is-holiday\";\nexport {\n\ttype IsValidBankAccountParams,\n\tisValidBankAccount,\n} from \"./is-valid-bank-account/is-valid-bank-account\";\nexport { isValidBoleto } from \"./is-valid-boleto/is-valid-boleto\";\nexport { isValidCaepf } from \"./is-valid-caepf/is-valid-caepf\";\nexport { isValidCbo } from \"./is-valid-cbo/is-valid-cbo\";\nexport { isValidCei } from \"./is-valid-cei/is-valid-cei\";\nexport { isValidCep } from \"./is-valid-cep/is-valid-cep\";\nexport {\n\ttype IsValidCertidaoOptions,\n\tisValidCertidao,\n} from \"./is-valid-certidao/is-valid-certidao\";\nexport { isValidCfop } from \"./is-valid-cfop/is-valid-cfop\";\nexport { isValidCnae } from \"./is-valid-cnae/is-valid-cnae\";\nexport { isValidCnh } from \"./is-valid-cnh/is-valid-cnh\";\nexport { isValidCno } from \"./is-valid-cno/is-valid-cno\";\nexport { type IsValidCnpjOptions, isValidCnpj } from \"./is-valid-cnpj/is-valid-cnpj\";\nexport { isValidCns } from \"./is-valid-cns/is-valid-cns\";\nexport { isValidCpf } from \"./is-valid-cpf/is-valid-cpf\";\nexport { isValidCreditCard } from \"./is-valid-credit-card/is-valid-credit-card\";\nexport { isValidCsosn } from \"./is-valid-csosn/is-valid-csosn\";\nexport { type IsValidCstOptions, isValidCst } from \"./is-valid-cst/is-valid-cst\";\nexport { isValidEmail } from \"./is-valid-email/is-valid-email\";\nexport { isValidIban } from \"./is-valid-iban/is-valid-iban\";\nexport { type IsValidIeParams, isValidIe } from \"./is-valid-ie/is-valid-ie\";\nexport { isValidLandlinePhone } from \"./is-valid-landline-phone/is-valid-landline-phone\";\nexport { isValidLegalNature } from \"./is-valid-legal-nature/is-valid-legal-nature\";\nexport { isValidLicensePlate } from \"./is-valid-license-plate/is-valid-license-plate\";\nexport {\n\ttype IsValidMobilePhoneOptions,\n\tisValidMobilePhone,\n} from \"./is-valid-mobile-phone/is-valid-mobile-phone\";\nexport { isValidNcm } from \"./is-valid-ncm/is-valid-ncm\";\nexport { isValidNfeKey } from \"./is-valid-nfe-key/is-valid-nfe-key\";\nexport { isValidPassport } from \"./is-valid-passport/is-valid-passport\";\nexport {\n\ttype IsValidPhoneOptions,\n\ttype PhoneType,\n\ttype PhoneVersion,\n\tisValidPhone,\n} from \"./is-valid-phone/is-valid-phone\";\nexport { isValidPis } from \"./is-valid-pis/is-valid-pis\";\nexport { type IsValidPixKeyOptions, isValidPixKey } from \"./is-valid-pix-key/is-valid-pix-key\";\nexport { isValidPixPayload } from \"./is-valid-pix-payload/is-valid-pix-payload\";\nexport { isValidProcessoJuridico } from \"./is-valid-processo-juridico/is-valid-processo-juridico\";\nexport type { RegistroProfissionalCouncil } from \"./is-valid-registro-profissional/constants\";\nexport {\n\ttype IsValidRegistroProfissionalParams,\n\tisValidRegistroProfissional,\n} from \"./is-valid-registro-profissional/is-valid-registro-profissional\";\nexport { isValidRenavam } from \"./is-valid-renavam/is-valid-renavam\";\nexport { isValidServicePhone } from \"./is-valid-service-phone/is-valid-service-phone\";\nexport { isValidVin } from \"./is-valid-vin/is-valid-vin\";\nexport { isValidVoterId } from \"./is-valid-voter-id/is-valid-voter-id\";\nexport { parseBoleto } from \"./parse-boleto/parse-boleto\";\nexport { parseCaepf } from \"./parse-caepf/parse-caepf\";\nexport { parseCbo } from \"./parse-cbo/parse-cbo\";\nexport { parseCei } from \"./parse-cei/parse-cei\";\nexport { parseCep } from \"./parse-cep/parse-cep\";\nexport { parseCertidao } from \"./parse-certidao/parse-certidao\";\nexport { parseCfop } from \"./parse-cfop/parse-cfop\";\nexport { parseCnae } from \"./parse-cnae/parse-cnae\";\nexport { parseCnh } from \"./parse-cnh/parse-cnh\";\nexport { parseCno } from \"./parse-cno/parse-cno\";\nexport { type ParseCnpjOptions, parseCnpj } from \"./parse-cnpj/parse-cnpj\";\nexport { parseCns } from \"./parse-cns/parse-cns\";\nexport { parseCpf } from \"./parse-cpf/parse-cpf\";\nexport { type ParseCurrencyOptions, parseCurrency } from \"./parse-currency/parse-currency\";\nexport { parseIban } from \"./parse-iban/parse-iban\";\nexport { parseLegalNature } from \"./parse-legal-nature/parse-legal-nature\";\nexport { parseLicensePlate } from \"./parse-license-plate/parse-license-plate\";\nexport { parseNcm } from \"./parse-ncm/parse-ncm\";\nexport { parseNfeKey } from \"./parse-nfe-key/parse-nfe-key\";\nexport { parsePassport } from \"./parse-passport/parse-passport\";\nexport { parsePhone } from \"./parse-phone/parse-phone\";\nexport { parsePis } from \"./parse-pis/parse-pis\";\nexport { parseProcessoJuridico } from \"./parse-processo-juridico/parse-processo-juridico\";\nexport { parseVoterId } from \"./parse-voter-id/parse-voter-id\";\nexport { removeAccents } from \"./remove-accents/remove-accents\";\nexport { subBusinessDays } from \"./sub-business-days/sub-business-days\";\n\n/**\n * The parameters of `generateProcessoJuridico`, the 2.3.0 name of\n * `GenerateProcessoJuridicoParams`.\n *\n * @deprecated Use `GenerateProcessoJuridicoParams` instead.\n */\nexport type { GenerateProcessoJuridicoOptions } from \"./generate-processo-juridico/generate-processo-juridico\";\n/**\n * The address `getCepInfoByAddress` looks up, the 2.3.0 name of `GetCepInfoByAddressParams`.\n *\n * @deprecated Use `GetCepInfoByAddressParams` instead.\n */\nexport type { GetCepInfoByAddressOptions } from \"./get-cep-info-by-address/get-cep-info-by-address\";\n/**\n * The object form `getHolidays` accepts, the 2.3.0 name of `GetHolidaysParams`.\n *\n * @deprecated Use `GetHolidaysParams` instead.\n */\nexport type { GetHolidaysOptions } from \"./get-holidays/get-holidays\";\n/**\n * The `getMunicipality` query by IBGE municipality code, the 2.3.0 name of\n * `GetMunicipalityByCodeParams`.\n *\n * @deprecated Use `GetMunicipalityByCodeParams` instead.\n */\nexport type { GetMunicipalityByCodeOptions } from \"./get-municipality/get-municipality\";\n/**\n * The `getMunicipality` query by municipality name and state code, the 2.3.0 name of\n * `GetMunicipalityByNameParams`.\n *\n * @deprecated Use `GetMunicipalityByNameParams` instead.\n */\nexport type { GetMunicipalityByNameOptions } from \"./get-municipality/get-municipality\";\n/**\n * The two ways `getMunicipality` can be queried, the 2.3.0 name of `GetMunicipalityParams`.\n *\n * @deprecated Use `GetMunicipalityParams` instead.\n */\nexport type { GetMunicipalityOptions } from \"./get-municipality/get-municipality\";\n/**\n * The parameters `isHoliday` takes, the 2.3.0 name of `IsHolidayParams`.\n *\n * @deprecated Use `IsHolidayParams` instead.\n */\nexport type { IsHolidayOptions } from \"./is-holiday/is-holiday\";\n/**\n * The bank account `isValidBankAccount` checks: the bank, the agency and the account with its\n * check digit.\n *\n * Kept from 2.3.0: the name violates the naming rule, since this object is the only argument\n * `isValidBankAccount` takes, but it shipped in 2.3.0 as the canonical name.\n *\n * @deprecated Use `IsValidBankAccountParams` instead.\n */\nexport type { IsValidBankAccountOptions } from \"./is-valid-bank-account/is-valid-bank-account\";\n// The deprecated aliases below are declared as constants rather than as renamed re-exports\n// (`export { formatCpf as formatCPF }`) so that their `@deprecated` tag survives into the bundled\n// declaration file: the bundler collapses every renamed re-export of the entry point into a single\n// `export { ... }` statement, which carries no documentation, while a `declare const` keeps the\n// comment written right above it.\n/**\n * Formats a CEP, the 1.x name of `formatCep`.\n *\n * @deprecated Use `formatCep` instead.\n */\nexport const formatCEP: typeof formatCep = formatCep;\n/**\n * Formats a CNPJ, the 1.x name of `formatCnpj`.\n *\n * @deprecated Use `formatCnpj` instead.\n */\nexport const formatCNPJ: typeof formatCnpj = formatCnpj;\n/**\n * Formats a CPF, the 1.x name of `formatCpf`.\n *\n * @deprecated Use `formatCpf` instead.\n */\nexport const formatCPF: typeof formatCpf = formatCpf;\n/**\n * Generates a valid random CNPJ, the 1.x name of `generateCnpj`.\n *\n * @deprecated Use `generateCnpj` instead.\n */\nexport const generateCNPJ: typeof generateCnpj = generateCnpj;\n/**\n * Generates a valid random CPF, the 1.x name of `generateCpf`.\n *\n * @deprecated Use `generateCpf` instead.\n */\nexport const generateCPF: typeof generateCpf = generateCpf;\n/**\n * Checks whether a CEP is valid, the 1.x name of `isValidCep`.\n *\n * @deprecated Use `isValidCep` instead.\n */\nexport const isValidCEP: typeof isValidCep = isValidCep;\n/**\n * Checks whether a CNPJ is valid, the 1.x name of `isValidCnpj`.\n *\n * @deprecated Use `isValidCnpj` instead.\n */\nexport const isValidCNPJ: typeof isValidCnpj = isValidCnpj;\n/**\n * Checks whether a CPF is valid, the 1.x name of `isValidCpf`.\n *\n * @deprecated Use `isValidCpf` instead.\n */\nexport const isValidCPF: typeof isValidCpf = isValidCpf;\n/**\n * Checks whether a state registration (inscrição estadual) is valid, the 1.x name of `isValidIe`.\n *\n * @deprecated Use `isValidIe` instead.\n */\nexport const isValidIE: typeof isValidIe = isValidIe;\n/**\n * Checks whether a PIS/PASEP is valid, the 1.x name of `isValidPis`.\n *\n * @deprecated Use `isValidPis` instead.\n */\nexport const isValidPIS: typeof isValidPis = isValidPis;\n"],"mappings":"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,OAAU,6CACV,OAAU,8CACV,OAAU,gDACV,OAAU,6CACV,OAAU,kCACV,OAAU,uEACV,OAAU,yBACV,OAAU,wBACV,OAAU,iCACV,OAAU,0DACV,OAAU,mBACV,OAAU,yBACV,OAAU,iBACV,OAAU,oBACV,OAAU,qBACV,OAAU,sCACV,OAAU,sDACV,OAAU,oDACV,OAAU,gCACV,OAAU,qBACV,OAAU,wCACV,OAAU,gCACV,OAAU,iCACV,OAAU,2BACV,OAAU,oCACV,OAAU,yCACV,OACC,sGACD,OAAU,qCACV,OAAU,iCACV,OAAU,wCACV,OAAU,mDACV,OAAU,yBACV,OAAU,oBACV,OAAU,qBACV,OAAU,iDACV,OAAU,yBACV,OAAU,qBACV,OAAU,8CACV,OAAU,iCACV,OAAU,8BACV,OAAU,kCACV,OAAU,oBACV,OAAU,yBACV,OAAU,uBACV,OAAU,oBACV,OAAU,oBACV,OAAU,uBACV,OAAU,kCACV,OAAU,UACV,OAAU,2DACV,OAAU,yCACV,OAAU,yBACV,OAAU,qBACV,OAAU,yBACV,OAAU,0BACV,OAAU,wDACV,OAAU,yCACV,OAAU,kDACV,OAAU,kDACV,OAAU,qCACV,OAAU,yDACV,OAAU,kDACV,OAAU,8CACV,OAAU,8CACV,OAAU,+CACV,OAAU,mCACV,OAAU,gBACV,OAAU,kBACV,OAAU,cACV,OAAU,4BACV,OAAU,2CACV,OAAU,uCACV,OAAU,6CACV,OAAU,sDACV,OAAU,yBACV,OAAU,qCACV,OAAU,2BACV,OAAU,oCACV,OAAU,oCACV,OAAU,iCACV,OAAU,yDACV,OAAU,iCACV,OAAU,kCACV,OAAU,sDACV,OAAU,mDACV,OAAU,wBACV,OAAU,4BACV,OAAU,yBACV,OAAU,kCACV,OAAU,sEACV,OAAU,kDACV,OAAU,qCACV,OAAU,iEACV,OAAU,oCACV,OAAU,gCACV,OAAU,iCACV,OAAU,sCACV,OAAU,gCACV,OAAU,sCACV,OAAU,iDACV,OAAU,uCACV,OAAU,qCACV,OAAU,4CACV,OAAU,0BACV,OAAU,sCACV,OAAU,0BACV,OAAU,4BACV,OAAU,kBACV,OAAU,kBACV,OAAU,UACV,OAAU,uCACV,OAAU,aACV,OAAU,sBACV,OAAU,cACV,OAAU,qCACV,OAAU,sBACV,OAAU,qBACV,OAAU,0CACV,OAAU,2CACV,OAAU,qDACV,OAAU,kCACV,OAAU,yBACV,OAAU,yCACV,OAAU,2CACV,OAAU,0CACV,OAAU,8CACV,OAAU,oCACV,OAAU,oCACV,OAAU,oDACV,OAAU,iDACV,OAAU,SACV,OAAU,oBACV,OAAU,+BACV,OAAU,sBACV,OAAU,oCACV,OAAU,mBACV,OAAU,0BACV,OAAU,8BACV,OAAU,qBACV,OAAU,oBACV,OAAU,8BACV,OAAU,kBACV,OAAU,+BACV,OAAU,kBACV,OAAU,mBACV,OAAU,UACV,OAAU,qBACV,OAAU,kCACV,OAAU,YACV,OAAU,qBACV,OAAU,iBACV,OAAU,UACV,OAAU,wBACV,OAAU,YACV,OAAU,aACV,OAAU,eACV,OAAU,eACV,OAAU,aACV,OAAU,cACV,OAAU,uBACV,OAAU,6BACV,OAAU,2BACV,OAAU,0BACV,OAAU,0BACV,OAAU,uBACV,OAAU,sBACV,OAAU,YACV,OAAU,mBACV,OAAU,gCACV,OAAU,iCACV,OAAU,0CACV,OAAU,2CACV,OAAU,+BACV,OAAU,gCACV,OAAU,gCACV,OAAU,uCACV,OAAU,8CACV,OAAU,8BACV,OAAU,gCACV,OAAU,4BACV,OAAU,4CACV,OAAU,gCACV,OAAU,yBACV,OAAU,wBACV,OAAU,uCACV,OAAU,qCACV,OAAU,sCACV,OAAU,oCACV,OAAU,+CACV,OAAU,iCACV,OAAU,4CACV,OAAU,qCACV,OAAU,4BACV,OAAU,0BACV,OAAU,gCACV,OAAU,wBACV,OAAU,uBACV,OAAU,sBACV,OAAU,iCACV,OAAU,wCACV,OAAU,iCACV,OAAU,yBACV,OAAU,mBACV,OAAU,mCACV,OAAU,qBACV,OAAU,yCACV,OAAU,gFACV,OAAU,wCACV,OAAU,2CACV,OAAU,kDACV,OAAU,yCACV,OAAU,oBACV,OAAU,0BACV,OAAU,0BACV,OAAU,0BACV,OAAU,sBACV,OAAU,uCACV,OAAU,2CACV,OAAU,0CACV,OAAU,yCACV,OAAU,qCACV,OAAU,iCACV,OAAU,gCACV,OAAU,8BACV,OAAU,kCACV,OAAU,wBACV,OAAU,wBACV,OAAU,yBACV,OAAU,sCACV,OAAU,sCACV,OAAU,uBACV,OAAU,oCACV,OAAU,mCACV,OAAU,qCACV,OAAU,yBACV,OAAU,0BACV,OAAU,8BACV,OAAU,yCACV,OAAU,iCACV,OAAU,oEACV,OAAU,+BACV,OAAU,uBACV,OAAU,iBACV,OAAU,qDACV,OAAU,wCACV,OAAU,oBACV,OAAU,mDACV,OAAU,mDACV,OAAU,kDACV,OAAU,mDACV,OAAU,sBACV,OAAU,2BACV,OAAU,mBACV,OAAU,UACV,OAAU,YACV,OAAU,sBACV,OAAU,sBACV,OAAU,sBACV,OAAU,uBACV,OAAU,2BACV,OAAU,0BACV,OAAU,yBACV,OAAU,+BACV,OAAU,qCACV,OAAU,oCACV,OAAU,uCACV,OAAU,uCACV,OAAU,wCACV,OAAU,sCACV,OAAU,2CACV,OAAU,sCACV,OAAU,kDACV,OAAU,yCACV,OAAU,qCACV,OAAU,qDACV,OAAU,kCACV,OAAU,oCACV,OAAU,yCACV,OAAU,wDACV,OAAU,uCACV,OAAU,+CACV,OAAU,kCACV,OAAU,mEACV,OAAU,6EACV,OAAU,uDACV,OAAU,qBACV,OAAU,cACV,OAAU,eACV,OAAU,gCACV,OAAU,4BACV,OAAU,sDACV,OAAU,gCACV,OAAU,0BACV,OAAU,6BACV,OAAU,oCACV,OAAU,aACV,OAAU,qBACV,OAAU,sBACV,OAAU,iCACV,OAAU,kCACV,OAAU,yBACV,OAAU,0BACV,OAAU,4BACV,OAAU,wBACV,OAAU,0BACV,OAAU,sCACV,OAAU,yBACV,OAAU,+CACV,OAAU,gBACV,OAAU,YACV,OAAU,6BACV,OAAU,qBACV,OAAU,uBACV,OAAU,8BACV,OAAU,gCACV,OAAU,+CACV,OAAU,2BACV,OAAU,+BACV,OAAU,+BACV,OAAU,2BACV,OAAU,8BACV,OAAU,WACV,OAAU,gBACV,OAAU,sBACV,OAAU,4BACV,OAAU,8BACV,OAAU,4BACV,OAAU,6BACV,OAAU,yCACV,OAAU,kCACV,OAAU,uBACV,OAAU,wBACV,OAAU,aACV,OAAU,kBACV,OAAU,mBACV,OAAU,iBACV,OAAU,uBACV,OAAU,oBACV,OAAU,6DACV,OAAU,mDACV,OAAU,oCACV,OAAU,2CACV,OAAU,wBACV,OAAU,uBACV,OAAU,iBACV,OAAU,sBACV,OAAU,kCACV,OAAU,sBACV,OAAU,sBACV,OAAU,sBACV,OAAU,uBACV,OAAU,6BACV,OAAU,mCACV,OAAU,kBACV,OAAU,iBACV,OAAU,uBACV,OAAU,iCACV,OAAU,oBACV,OAAU,wBACV,OAAU,wBACV,OAAU,qBACV,OAAU,qBACV,OAAU,2CACV,OAAU,gCACV,OAAU,4BACV,OAAU,+BACV,OAAU,0BACV,OAAU,uBACV,OAAU,0CACV,OAAU,kBACV,OAAU,6BACV,OAAU,qBACV,OAAU,qBACV,OAAU,kBACV,OAAU,uBACV,OAAU,mBACV,OAAU,8BACV,OAAU,kCACV,OAAU,uCACV,OAAU,yCACV,OAAU,yBACV,OAAU,8BACV,OAAU,4BACV,OAAU,4BACV,OAAU,kCACV,OAAU,sBACV,OAAU,wBACV,OAAU,wBACV,OAAU,uCACV,OAAU,gCACV,OAAU,2BACV,OAAU,oBACV,OAAU,kCACV,OAAU,0BACV,OAAU,yBACV,OAAU,uBACV,OAAU,6BACV,OAAU,gDACV,OAAU,qBACV,OAAU,wBACV,OAAU,qDACV,OAAU,uBACV,OAAU,sBACV,OAAU,mCACV,OAAU,uCACV,OAAU,gBACV,OAAU,YACV,OAAU,kBACV,OAAU,gBACV,OAAU,gBACV,OAAU,aACV,OAAU,wEACV,OAAU,sEACV,OACC,6FACD,OAAU,8EACV,OAAU,gEACV,OAAU,wDACV,OAAU,qDACV,OAAU,+CACV,OAAU,8CACV,OAAU,gEACV,OAAU,uDACV,OAAU,gDACV,OAAU,qCACV,OAAU,wCACV,OAAU,uDACV,OAAU,+CACV,OAAU,yCACV,OAAU,sCACV,OAAU,yCACV,OAAU,wCACV,OAAU,8DACV,OAAU,0DACV,OAAU,0CACV,OAAU,0CACV,OAAU,uCACV,OAAU,0CACV,OAAU,qCACV,OAAU,+BACV,OAAU,kCACV,OAAU,kDACV,OAAU,sCACV,OAAU,oCACV,OAAU,4CACV,OAAU,uDACV,OAAU,qDACV,OAAU,oDACV,OAAU,6DACV,OAAU,2DACV,OAAU,wDACV,OAAU,oDACV,OAAU,gDACV,OAAU,+CACV,OAAU,yDACV,OAAU,wCACV,OAAU,yCACV,OAAU,4CACV,OAAU,2BACV,OAAU,0BACV,OAAU,yBACV,OAAU,wBACV,OAAU,sDACV,OAAU,kDACV,OAAU,6CACV,OAAU,qCACV,OAAU,4BACV,OAAU,8BACV,OAAU,wBACV,OAAU,oCACV,OAAU,wBACV,OAAU,2BACV,OAAU,mCACV,OAAU,4CACV,OAAU,mDACV,OAAU,iEACV,OAAU,+DACV,OAAU,4DACV,OAAU,4BACV,OAAU,+BACV,OAAU,+BACV,OAAU,8BACV,OAAU,gCACV,OAAU,iCACV,OAAU,qCACV,OAAU,qCACV,OAAU,gCACV,OAAU,oCACV,OAAU,oCACV,OAAU,mCACV,OAAU,kCACV,OAAU,mCACV,OAAU,2DACV,OAAU,4CACV,OAAU,6CACV,OAAU,kDACV,OAAU,2CACV,OAAU,yBACV,OAAU,oCACV,OAAU,oDACV,OAAU,+CACV,OAAU,+CACV,OAAU,kDACV,OAAU,mDACV,OAAU,qDACV,OAAU,0CACV,OAAU,4CACV,OAAU,4CACV,OAAU,2CACV,OAAU,0BACV,OAAU,6CACV,OAAU,6CACV,OAAU,iDACV,OAAU,6CACV,OAAU,wBACV,OAAU,6BACV,OAAU,6BACV,OAAU,sDACV,OAAU,+EACV,OAAU,yCACV,OAAU,wDACV,OAAU,6CACV,OAAU,6CACV,OAAU,+CACV,OAAU,6CACV,OAAU,yBACV,OAAU,yBACV,OAAU,WACV,OAAU,gDACV,OAAU,gBACV,OAAU,uBACV,OAAU,uBACV,OAAU,6BACV,OAAU,mCACV,OAAU,WACV,OAAU,sBACV,OAAU,2BACV,OAAU,6BACV,OAAU,2BACV,OAAU,6BACV,OAAU,iCACV,OAAU,qBACV,OAAU,oBACV,OAAU,wBACV,OAAU,iCACV,OAAU,uBACV,OAAU,0BACV,OAAU,qBACV,OAAU,yBACV,OAAU,6CACV,OAAU,iDACV,OAAU,gDACV,OAAU,uCACV,OAAU,iCACV,OAAU,8CACV,OAAU,oBACV,OAAU,wBACV,OAAU,uBACV,OAAU,0BACV,OAAU,wBACV,OAAU,gCACV,OAAU,yBACV,OAAU,mCACV,OAAU,kCACV,OAAU,sBACV,OAAU,mCACV,OAAU,mCACV,OAAU,kCACV,OAAU,sBACV,OAAU,mBACV,OAAU,uCACV,OAAU,0BACV,OAAU,kCACV,OAAU,cACV,OAAU,aACV,OAAU,qBACV,OAAU,YACV,OAAU,aACV,OAAU,4BACV,OAAU,wBACV,OAAU,wBACV,OAAU,8BACV,OAAU,uBACV,OAAU,+BACV,OAAU,WACV,OAAU,WACV,OAAU,wBACV,OAAU,oBACV,OAAU,uBACV,OAAU,uBACV,OAAU,qBACV,OAAU,mBACV,OAAU,wBACV,OAAU,wBACV,OAAU,iBACV,OAAU,eACV,OAAU,0BACV,OAAU,oBACV,OAAU,uBACV,OAAU,gBACV,OAAU,+BACV,OAAU,WACV,OAAU,kBACV,OAAU,6BACV,OAAU,uBACV,OAAU,uBACV,OAAU,oCACV,OAAU,+BACV,OAAU,sDACV,OAAU,qBACV,OAAU,kDACV,OAAU,iDACV,OAAU,4BACV,OAAU,sBACV,OAAU,iCACV,OAAU,iDACV,OAAU,4CACV,OAAU,sBACV,OAAU,uDACV,OAAU,uCACV,OAAU,wBACV,OAAU,kCACV,OAAU,gCACV,OAAU,yBACV,OAAU,eACV,OAAU,iCACV,OAAU,gCACV,OAAU,qBACV,OAAU,kCACV,OAAU,2BACV,OAAU,8DACV,OAAU,0CACV,OAAU,+CACV,OAAU,wCACV,OAAU,uBACV,OAAU,qEACV,OAAU,6BACV,OAAU,wBACV,OAAU,oCACV,OAAU,6BACV,OAAU,uCACV,OAAU,6BACV,OAAU,gCACV,OAAU,8BACV,OAAU,+BACV,OAAU,+BACV,OAAU,gCACV,OAAU,+BACV,OAAU,sCACV,OAAU,uBACV,OAAU,qBACV,OAAU,SACV,OAAU,aACV,OAAU,oBACV,OAAU,yCACV,OAAU,mBACV,OAAU,gBACV,OAAU,iBACV,OAAU,+DACV,OAAU,aACV,OAAU,YACV,OAAU,WACV,OAAU,aACV,OAAU,YACV,OAAU,WACV,OAAU,iCACV,OAAU,iBACV,OAAU,mBACV,OAAU,UACV,OAAU,qBACV,OAAU,yBACV,OAAU,QACV,OAAU,6BACV,OAAU,mBACV,OAAU,kBACV,OAAU,6BACV,OAAU,oBACV,OAAU,+BACV,OAAU,gCACV,OAAU,sCACV,OAAU,iCACV,OAAU,kCACV,OAAU,YACV,OAAU,yBACV,OAAU,uBACV,OAAU,uBACV,OAAU,cACV,OAAU,6BACV,OAAU,oBACV,OAAU,2BACV,OAAU,oBACV,OAAU,qBACV,OAAU,wBACV,OAAU,oCACV,OAAU,oCACV,OAAU,oBACV,OAAU,gCACV,OAAU,oCACV,OAAU,kBACV,OAAU,yBACV,OAAU,sBACV,OAAU,oBACV,OAAU,4CACV,OAAU,sBACV,OAAU,uBACV,OAAU,sBACV,OAAU,kBACV,OAAU,kBACV,OAAU,0BACV,OAAU,mDACV,OAAU,6CACV,OAAU,yDACV,OAAU,8DACV,OAAU,OACV,OAAU,aACV,OAAU,oBACV,OAAU,iBACV,OAAU,aACV,OAAU,2BACV,OAAU,mCACV,OAAU,4BACV,OAAU,sCACV,OAAU,aACV,OAAU,sBACV,OAAU,qBACV,OAAU,qBACV,OAAU,4CACV,OAAU,8BACV,OAAU,cACV,OAAU,UACV,OAAU,mBACV,OAAU,2BACV,OAAU,mDACV,OAAU,oCACV,OAAU,4BACV,OAAU,oCACV,OAAU,+EACV,OAAU,8BACV,OAAU,mCACV,OAAU,kBACV,OAAU,8BACV,OAAU,wBACV,OAAU,0BACV,OAAU,oDACV,OAAU,sBACV,OAAU,sBACV,OAAU,uCACV,OAAU,0BACV,OACC,+FACD,OAAU,qCACV,OAAU,iBACV,OAAU,wCACV,OAAU,2BACV,OAAU,6BACV,OAAU,8BACV,OAAU,qBACV,OAAU,mBACV,OAAU,uBACV,OAAU,4CACV,OAAU,6BACV,OAAU,yBACV,OAAU,sBACV,OAAU,wBACV,OAAU,yBACV,OAAU,oCACV,OAAU,yBACV,OAAU,YACV,OAAU,gBACV,OAAU,sCACV,OAAU,gF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DACV,OAAU,wBACV,OAAU,oBACV,OAAU,WACV,OAAU,gBACV,OAAU,4BACV,OAAU,iBACV,OAAU,gCACV,OAAU,eACV,OAAU,SACV,OAAU,cACV,OAAU,UACV,OAAU,cACV,OAAU,aACV,OAAU,0BACV,OAAU,mCACV,OAAU,qCACV,OAAU,yCACV,OAAU,wBACV,OAAU,uBACV,OAAU,mBACV,OAAU,kBACV,OAAU,sBACV,OAAU,2CACV,OAAU,iCACV,OAAU,+BACV,OAAU,8BACV,OAAU,+BACV,OAAU,SACV,OAAU,uCACV,OAAU,4BACV,OAAU,YACV,OAAU,qBACV,OAAU,uBACV,OAAU,sBACV,OAAU,qBACV,OAAU,8BACV,OAAU,kBACV,OAAU,oBACV,OAAU,2BACV,OAAU,mBACV,OAAU,gBACV,OAAU,gBACV,OAAU,iCACV,OAAU,aACV,OAAU,sCACV,OAAU,sDACV,OAAU,sCACV,OAAU,+CACV,OAAU,yCACV,OAAU,wBACV,OAAU,mCACV,OAAU,oCACV,OAAU,gCACV,OAAU,sBACV,OAAU,8CACV,OAAU,mFACV,OAAU,wEACV,OAAU,4BACV,OAAU,6BACV,OAAU,uBACV,OAAU,+BACV,OAAU,qCACV,OAAU,mCACV,OAAU,0BACV,OAAU,2BACV,OAAU,0BACV,OAAU,yBACV,OAAU,4BACV,OAAU,0BACV,OAAU,yBACV,OAAU,uBACV,OAAU,sBACV,OAAU,0BACV,OAAU,sBACV,OAAU,kDACV,OAAU,yBACV,OAAU,uBACV,OAAU,cACV,OAAU,YACV,OAAU,uDACV,OAAU,qCACV,OAAU,WACV,OAAU,iCACV,OAAU,4BACV,OAAU,0BACV,OAAU,uBACV,OAAU,iBACV,OAAU,uBACV,OAAU,mCACV,OAAU,wBACV,OAAU,gCACV,OAAU,aACV,OAAU,cACV,OAAU,aACV,OAAU,kDACV,OAAU,aACV,OAAU,2BACV,OAAU,wBACV,OAAU,2BACV,OAAU,wBACV,OAAU,iCACV,OAAU,2BACV,OAAU,uBACV,OAAU,cACV,OAAU,aACV,OAAU,oEACV,OAAU,WACV,OAAU,mCACV,OAAU,4BACV,OAAU,wBACV,OAAU,kCACV,OAAU,6DACV,OAAU,yBACV,OAAU,kDACV,OAAU,gDACV,OAAU,+BACV,OAAU,6BACV,OAAU,4CACV,OAAU,uCACV,OAAU,sCACV,OAAU,qCACV,OAAU,uBACV,OAAU,oBACV,OAAU,iCACV,OAAU,+BACV,OAAU,mBACV,OAAU,mBACV,OAAU,yBACV,OAAU,0BACV,OAAU,kDACV,OAAU,gCACV,OAAU,yBACV,OAAU,yBACV,OAAU,YACV,OAAU,cACV,OAAU,eACV,OAAU,4BACV,OAAU,kCACV,OAAU,8CACV,OAAU,sCACV,OAAU,oCACV,OAAU,8BACV,OAAU,6BACV,OAAU,6BACV,OAAU,0BACV,OAAU,uBACV,OAAU,oDACV,OAAU,+CACV,OAAU,wCACV,OAAU,0BACV,OAAU,gCACV,OAAU,uBACV,OAAU,qDACV,OAAU,kDACV,OAAU,4BACV,OAAU,6BACV,OAAU,sBACV,OAAU,6BACV,OAAU,eACV,OAAU,SACV,OAAU,2BACV,OAAU,0BACV,OAAU,2BACV,OAAU,oBACV,OAAU,qBACV,OAAU,8BACV,OAAU,gDACV,OAAU,qDACV,OAAU,kDACV,OAAU,8DACV,OAAU,kBACV,OAAU,kCACV,OAAU,+BACV,OAAU,2BACV,OAAU,4CACV,OAAU,iCACV,OAAU,iCACV,OAAU,+BACV,OAAU,wBACV,OAAU,uBACV,OAAU,0BACV,OAAU,mBACV,OAAU,kCACV,OAAU,wBACV,OAAU,yBACV,OAAU,4BACV,OAAU,sBACV,OAAU,yBACV,OAAU,sBACV,OAAU,2BACV,OAAU,4BACV,OAAU,SACV,OAAU,YACV,OAAU,QACV,OAAU,SACV,OAAU,UACV,OAAU,sBACV,OAAU,0BACV,OAAU,UACV,OAAU,uCACV,OAAU,gBACV,OAAU,YACV,OAAU,WACV,OAAU,eACV,OAAU,YACV,OAAU,YACV,OAAU,sBACV,OAAU,6BACV,OAAU,kBACV,OAAU,qEACV,OAAU,mDACV,OAAU,qBACV,OAAU,iCACV,OAAU,uBACV,OAAU,YACV,OAAU,2CACV,OAAU,uBACV,OAAU,8BACV,OAAU,0BACV,OAAU,iBACV,OAAU,sBACV,OAAU,2BACV,OAAU,gCACV,OAAU,4CACV,OAAU,gCACV,OAAU,8BACV,OAAU,sCACV,OAAU,+CACV,OAAU,6CACV,OAAU,oCACV,OAAU,kBACV,OAAU,wBACV,OAAU,gCACV,OAAU,sBACV,OAAU,gBACV,OAAU,uCACV,OAAU,WACV,OAAU,eACV,OAAU,oBACV,OAAU,YACV,OAAU,8BACV,OAAU,oBACV,OAAU,2BACV,OAAU,qBACV,OAAU,OACV,OAAU,qBACV,OAAU,aACV,OAAU,oBACV,OAAU,sBACV,OAAU,+BACV,OAAU,oCACV,OAAU,6BACV,OAAU,8BACV,OAAU,qBACV,OAAU,+CACV,OAAU,0BACV,OAAU,yBACV,OAAU,oBACV,OAAU,mCACV,OAAU,4BACV,OAAU,mBACV,OAAU,0CACV,OAAU,aACV,OAAU,YACV,OAAU,aACV,OAAU,YACV,OAAU,aACV,OAAU,WACV,OAAU,mBACV,OAAU,eACV,OAAU,wBACV,OAAU,iBACV,OAAU,cACV,OAAU,uBACV,OAAU,mBACV,OAAU,oCACV,OAAU,4BACV,OAAU,8BACV,OAAU,yBACV,OAAU,qBACV,OAAU,uBACV,OAAU,iBACV,OAAU,mBACV,OAAU,qCACV,OAAU,sBACV,OAAU,kBACV,OAAU,kBACV,OAAU,YACV,OAAU,mBACV,OAAU,wBACV,OAAU,qBACV,OAAU,QACV,OAAU,iBACV,OAAU,sBACV,OAAU,eACV,OAAU,cACV,OAAU,iCACV,OAAU,sCACV,OAAU,4CACV,OAAU,0BACV,OAAU,oCACV,OAAU,iCACV,OAAU,gCACV,OAAU,uBACV,OAAU,aACV,OAAU,wBACV,OAAU,YACV,OAAU,UACV,OAAU,wBACV,OAAU,kDACV,OAAU,sBACV,OAAU,aACV,OAAU,wCACV,OAAU,mCACV,OAAU,iCACV,OAAU,kCACV,OAAU,iCACV,OAAU,qBACV,OAAU,8BACV,OAAU,2BACV,OAAU,qCACV,OAAU,YACV,OAAU,gCACV,OAAU,+DACV,OAAU,6CACV,OAAU,WACV,OAAU,iCACV,OAAU,uDACV,OAAU,wBACV,OAAU,WACV,OAAU,kCACV,OAAU,2BACV,OAAU,qBACV,OAAU,uBACV,OAAU,oBACV,OAAU,kCACV,OAAU,gCACV,OAAU,oBACV,OAAU,6BACV,OAAU,iCACV,OAAU,oCACV,OAAU,4BACV,OAAU,sBACV,OAAU,qBACV,OAAU,mBACV,OAAU,mBACV,OAAU,oBACV,OAAU,sCACV,OAAU,0DACV,OAAU,qDACV,OAAU,gDACV,OAAU,8BACV,OAAU,6BACV,OAAU,wBACV,OAAU,kCACV,OAAU,iCACV,OAAU,4CACV,OAAU,8CACV,OAAU,cACV,OAAU,oBACV,OAAU,wBACV,OAAU,mBACV,OAAU,sBACV,OAAU,kCACV,OAAU,gCACV,OAAU,sCACV,OAAU,+BACV,OAAU,kCACV,OAAU,+BACV,OAAU,gCACV,OAAU,8BACV,OAAU,0BACV,OAAU,8CACV,OAAU,kCACV,OAAU,gCACV,OAAU,+BACV,OAAU,6BACV,OAAU,6BACV,OAAU,+BACV,OAAU,+BACV,OAAU,qBACV,OAAU,sBACV,OAAU,oBACV,OAAU,oBACV,OAAU,YACV,OAAU,aACV,OAAU,YACV,OAAU,0CACV,OAAU,cACV,OAAU,aACV,OAAU,oCACV,OAAU,wCACV,OAAU,oCACV,OAAU,oCACV,OAAU,wBACV,OAAU,aACV,OAAU,8CACV,OAAU,qCACV,OAAU,kCACV,OAAU,2CACV,OAAU,0CACV,OAAU,6DACV,OAAU,oCACV,OAAU,kCACV,OAAU,iCACV,OAAU,kDACV,OAAU,wCACV,OAAU,4DACV,OAAU,uDACV,OAAU,wDACV,OAAU,2CACV,OAAU,sCACV,OAAU,kCACV,OAAU,gDACV,OAAU,+CACV,OAAU,0DACV,OAAU,mDACV,OAAU,kCACV,OAAU,iCACV,OAAU,sCACV,OAAU,iCACV,OAAU,oCACV,OAAU,qCACV,OAAU,mCACV,OAAU,yCACV,OAAU,kCACV,OAAU,mCACV,OAAU,iCACV,OAAU,qCACV,OAAU,kCACV,OAAU,wCACV,OAAU,4DACV,OAAU,wBACV,OAAU,cACV,OAAU,sCACV,OAAU,sBACV,OAAU,wBACV,OAAU,sBACV,OAAU,8CACV,OAAU,0CACV,OAAU,0CACV,OAAU,sCACV,OAAU,oCACV,OAAU,gCACV,OAAU,8BACV,OAAU,8BACV,OAAU,qCACV,OAAU,uCACV,OAAU,yBACV,OAAU,6BACV,OAAU,UACV,OAAU,4DACV,OAAU,4BACV,OAAU,8BACV,OAAU,+BACV,OAAU,4BACV,OAAU,+BACV,OAAU,iCACV,OAAU,sBACV,OAAU,iCACV,OAAU,0CACV,OAAU,kCACV,OAAU,sBACV,OAAU,wBACV,OAAU,sBACV,OAAU,qBACV,OAAU,uBACV,OAAU,oBACV,OAAU,oBACV,OAAU,uBACV,OAAU,iBACV,OAAU,qBACV,OAAU,uBACV,OAAU,UACV,OAAU,kBACV,OAAU,iBACV,OAAU,WACV,OAAU,uBACV,OAAU,yBACV,OAAU,qBACV,OAAU,0BACV,OAAU,yBACV,OAAU,8CACV,OAAU,cACV,OAAU,0EACV,OAAU,uCACV,OAAU,wCACV,OAAU,sCACV,OAAU,sCACV,OAAU,sCACV,OAAU,wCACV,OAAU,6CACV,OAAU,uCACV,OAAU,6CACV,OAAU,wCACV,OAAU,wCACV,OAAU,wCACV,OAAU,qCACV,OAAU,uCACV,OAAU,qCACV,OAAU,oCACV,OAAU,wCACV,OAAU,sCACV,OAAU,uCACV,OACC,sGACD,OACC,gGACD,OAAU,iDACV,OACC,iGACD,OAAU,oFACV,OAAU,YACV,OAAU,eACV,OAAU,wBACV,OAAU,4BACV,OAAU,+DACV,OAAU,sBACV,OAAU,iCACV,OAAU,4CACV,OAAU,+BACV,OACC,2FACD,OAAU,8EACV,OAAU,8EACV,OAAU,+EACV,OAAU,6EACV,OAAU,+CACV,OAAU,gCACV,OAAU,sCACV,OAAU,sCACV,OAAU,wCACV,OAAU,4BACV,OAAU,+BACV,OAAU,4BACV,OAAU,kCACV,OAAU,uCACV,OAAU,yBACV,OAAU,WACV,OAAU,uBACV,OAAU,YACV,OAAU,qBACV,OAAU,UACV,OAAU,2CACV,OAAU,2BACV,OAAU,oDACV,OAAU,6DACV,OAAU,sDACV,OAAU,kCACV,OAAU,4DACV,OAAU,0BACV,OAAU,yCACV,OAAU,iCACV,OAAU,6BACV,OAAU,qCACV,OAAU,+CACV,OAAU,2BACV,OAAU,sBACV,OAAU,aACV,OAAU,mCACV,OAAU,sBACV,OAAU,mCACV,OAAU,gEACV,OAAU,qCACV,OAAU,yBACV,OAAU,0BACV,OAAU,mCACV,OAAU,qBACV,OAAU,kCACV,OAAU,+BACV,OAAU,oBACV,OAAU,4BACV,OAAU,qBACV,OAAU,2BACV,OAAU,oCACV,OAAU,0BACV,OAAU,qCACV,OAAU,uDACV,OAAU,6BACV,OAAU,8BACV,OAAU,sEACV,OAAU,+BACV,OAAU,aACV,OAAU,WACV,OAAU,kCACV,OAAU,iCACV,OAAU,uBACV,OAAU,0BACV,OAAU,mCACV,OAAU,oDACV,OAAU,0CACV,OAAU,wBACV,OAAU,gCACV,OAAU,kCACV,OAAU,+BACV,OAAU,cACV,OAAU,2BACV,OAAU,yBACV,OAAU,0BACV,OAAU,uBACV,OAAU,yBACV,OAAU,sCACV,OAAU,iEACV,OAAU,qCACV,OAAU,wCACV,OAAU,yCACV,OAAU,6BACV,OAAU,sDACV,OAAU,oCACV,OAAU,iEACV,OAAU,4DACV,OAAU,uDACV,OAAU,2DACV,OAAU,sCACV,OAAU,wCACV,OAAU,oDACV,OAAU,uCACV,OAAU,8BACV,OAAU,8BACV,OAAU,aACV,OAAU,2BACV,OAAU,uBACV,OAAU,WACV,OAAU,cACV,OAAU,wCACV,OAAU,cACV,OAAU,oBACV,OAAU,0BACV,OAAU,WACV,OAAU,WACV,OAAU,8BACV,OAAU,cACV,OAAU,kBACV,OAAU,sEACV,OAAU,2BACV,OAAU,wBACV,OAAU,wBACV,OAAU,oBACV,OAAU,eACV,OAAU,kCACV,OAAU,wBACV,OAAU,0BACV,OAAU,qBACV,OAAU,qBACV,OAAU,2BACV,OAAU,gDACV,OAAU,qBACV,OAAU,iCACV,OAAU,qBACV,OAAU,qBACV,OAAU,+CACV,OAAU,4BACV,OAAU,8DACV,OAAU,iEACV,OAAU,iCACV,OAAU,gBACV,OAAU,+DACV,OAAU,iCACV,OAAU,sCACV,OAAU,mCACV,OAAU,gDACV,OAAU,gDACV,OAAU,oCACV,OAAU,oBACV,OAAU,uBACV,OAAU,yBACV,OAAU,oBACV,OAAU,oBACV,OAAU,sDACV,OAAU,6CACV,OAAU,gDACV,OAAU,gEACV,OAAU,gDACV,OAAU,yCACV,OAAU,WACV,OAAU,qBACV,OAAU,qBACV,OAAU,qBACV,OAAU,2BACV,OAAU,2CACV,OAAU,kCACV,OAAU,wBACV,OAAU,wBACV,OAAU,kBACV,OAAU,uBACV,OAAU,mBACV,OAAU,uBACV,OAAU,kDACV,OAAU,6CACV,OAAU,YACV,OAAU,0CACV,OAAU,kCACV,OAAU,uBACV,OAAU,yCACV,OAAU,4CACV,OAAU,oDACV,OAAU,uCACV,OAAU,YACV,OAAU,eACV,OAAU,eACV,OAAU,wBACV,OAAU,6BACV,OAAU,2CACV,OAAU,+CACV,OAAU,WACV,OAAU,gDACV,OAAU,+DACV,OAAU,iCACV,OAAU,kCACV,OAAU,qBACV,OAAU,2DACV,OAAU,0CACV,OAAU,YACV,OAAU,2BACV,OAAU,uCACV,OAAU,yCACV,OAAU,wEACV,OAAU,8DACV,OAAU,mCACV,OAAU,kDACV,OAAU,kCACV,OAAU,qCACV,OAAU,mCACV,OAAU,oBACV,OAAU,WACV,OAAU,iCACV,OAAU,WACV,OAAU,qBACV,OAAU,oBACV,OAAU,gCACV,OAAU,sCACV,OAAU,YACV,OAAU,kDACV,OAAU,kBACV,OAAU,yBACV,OAAU,uBACV,OAAU,cACV,OAAU,0CACV,OAAU,uCACV,OAAU,iCACV,OAAU,oCACV,OAAU,4BACV,OAAU,0BACV,OAAU,qBACV,OAAU,qEACV,OAAU,gCACV,OAAU,wCACV,OAAU,2DACV,OAAU,iEACV,OAAU,uBACV,OAAU,gCACV,OAAU,gDACV,OAAU,+BACV,OAAU,wDACV,OAAU,0CACV,OAAU,iCACV,OAAU,4CACV,OAAU,wCACV,OAAU,4CACV,OAAU,8CACV,OAAU,oDACV,OAAU,0CACV,OAAU,2CACV,OAAU,+BACV,OAAU,sCACV,OAAU,mDACV,OAAU,2BACV,OAAU,uDACV,OAAU,2DACV,OAAU,gFACV,OAAU,+DACV,OAAU,kEACV,OAAU,0DACV,OAAU,yDACV,OAAU,qCACV,OAAU,oEACV,OAAU,8DACV,OAAU,uCACV,OAAU,2EACV,OAAU,uDACV,OAAU,+BACV,OAAU,mCACV,OAAU,sDACV,OAAU,wDACV,OAAU,sFACV,OAAU,iEACV,OAAU,+DACV,OAAU,mEACV,OAAU,iEACV,OAAU,oDACV,OAAU,4DACV,OAAU,uFACV,OAAU,qEACV,OAAU,sDACV,OAAU,qFACV,OAAU,8CACV,OAAU,sEACV,OAAU,gCACV,OAAU,uCACV,OAAU,qCACV,OAAU,oDACV,OAAU,wCACV,OAAU,qCACV,OAAU,uCACV,OAAU,0BACV,OAAU,yBACV,OAAU,oCACV,OAAU,6BACV,OAAU,0CACV,OAAU,wEACV,OAAU,oDACV,OAAU,kDACV,OAAU,0BACV,OAAU,0BACV,OAAU,0BACV,OACC,+FACD,OAAU,qBACV,OAAU,YACV,OAAU,yBACV,OAAU,oBACV,OAAU,wBACV,OAAU,qCACV,OAAU,qCACV,OAAU,uCACV,OAAU,UACV,OAAU,uCACV,OAAU,6BACV,OAAU,oBACV,OAAU,oBACV,OAAU,kCACV,OAAU,kCACV,OAAU,oBACV,OAAU,kCACV,OAAU,+BACV,OAAU,qCACV,OAAU,iCACV,OAAU,gBACV,OAAU,YACV,OAAU,qCACV,OAAU,oCACV,OAAU,sBACV,OAAU,qBACV,OAAU,sBACV,OAAU,wBACV,OAAU,qBACV,OAAU,8BACV,OAAU,2BACV,OAAU,2BACV,OAAU,gCACV,OAAU,gDACV,OAAU,4CACV,OAAU,8CACV,OAAU,+CACV,OAAU,4CACV,OAAU,2BACV,OAAU,iDACV,OAAU,mDACV,OAAU,2DACV,OAAU,kEACV,OAAU,iEACV,OAAU,2CACV,OAAU,kCACV,OAAU,gBACV,OAAU,gCACV,OAAU,wBACV,OAAU,0BACV,OAAU,qBACV,OAAU,0BACV,OAAU,wBACV,OAAU,uCACV,OAAU,2BACV,OAAU,uBACV,OAAU,gCACV,OAAU,0BACV,OAAU,2BACV,OAAU,kBACV,OAAU,8BACV,OAAU,4BACV,OAAU,0BACV,OAAU,uCACV,OAAU,oCACV,OAAU,+BACV,OAAU,2CACV,OAAU,gCACV,OAAU,uCACV,OAAU,wCACV,OAAU,+BACV,OAAU,sCACV,OAAU,uCACV,OAAU,iCACV,OAAU,oCACV,OAAU,0BACV,OAAU,mCACV,OAAU,wBACV,OAAU,0BACV,OAAU,oBACV,OAAU,gCACV,OAAU,sBACV,OAAU,uBACV,OAAU,kCACV,OAAU,uCACV,OAAU,2CACV,OAAU,8CACV,OAAU,sBACV,OAAU,2CACV,OAAU,oCACV,OAAU,8BACV,OAAU,0BACV,OAAU,0DACV,OAAU,yBACV,OAAU,2CACV,OAAU,2CACV,OAAU,YACV,OAAU,6BACV,OAAU,4BACV,OAAU,0BACV,OAAU,sBACV,OAAU,uBACV,OAAU,2CACV,OAAU,4CACV,OAAU,4BACV,OAAU,8BACV,OAAU,uDACV,OAAU,8BACV,OAAU,iCACV,OAAU,gCACV,OAAU,8BACV,OAAU,WACV,OAAU,oCACV,OAAU,oCACV,OAAU,sCACV,OAAU,wDACV,OAAU,qBACV,OAAU,uBACV,OAAU,qBACV,OAAU,wBACV,OAAU,0EACV,OAAU,mCACV,OAAU,gDACV,OAAU,gBACV,OAAU,sBACV,OAAU,+CACV,OAAU,+CACV,OAAU,qCACV,OAAU,mDACV,OAAU,8DACV,OAAU,4CACV,OAAU,yBACV,OAAU,kCACV,OAAU,qCACV,OAAU,uBACV,OAAU,uBACV,OAAU,wDACV,OAAU,yBACV,OAAU,YACV,OAAU,4DACV,OAAU,wBACV,OAAU,qCACV,OAAU,uCACV,OAAU,sDACV,OAAU,sBACV,OAAU,sBACV,OAAU,qBACV,OAAU,0EACV,OAAU,4DACV,OAAU,6DACV,OAAU,oBACV,OAAU,oDACV,OAAU,2BACV,OAAU,6CACV,OAAU,iEACV,OAAU,kCACV,OAAU,iCACV,OAAU,sDACV,OAAU,+CACV,OAAU,6BACV,OAAU,yBACV,OAAU,yBACV,OAAU,yCACV,OAAU,wBACV,OAAU,2BACV,OAAU,oBACV,OAAU,yBACV,OAAU,sBACV,OAAU,yBACV,OAAU,wBACV,OAAU,qDACV,OAAU,6BACV,OAAU,6CACV,OAAU,0CACV,OAAU,0CACV,OAAU,4BACV,OAAU,sDACV,OAAU,6CACV,OAAU,iDACV,OAAU,wBACV,OAAU,6BACV,OAAU,oBACV,OAAU,UACV,OAAU,gCACV,OAAU,sBACV,OAAU,mBACV,OAAU,WACV,OAAU,oBACV,OAAU,8CACV,OAAU,sEACV,OAAU,kCACV,OAAU,UACV,OAAU,YACV,OAAU,cACV,OAAU,cACV,OAAU,YACV,OAAU,sBACV,OAAU,yCACV,OAAU,iCACV,OAAU,wBACV,OAAU,6CACV,OAAU,qBACV,OAAU,aACV,OAAU,uBACV,OAAU,2BACV,OAAU,WACV,OAAU,2BACV,OAAU,yBACV,OAAU,qBACV,OAAU,mCACV,OAAU,iDACV,OAAU,iDACV,OAAU,sBACV,OAAU,gDACV,OAAU,+CACV,OAAU,4DACV,OAAU,2BACV,OAAU,2BACV,OAAU,6BACV,OAAU,iEACV,OAAU,iDACV,OAAU,8CACV,OAAU,8CACV,OAAU,oDACV,OAAU,gDACV,OAAU,sCACV,OAAU,2CACV,OAAU,qDACV,OAAU,0CACV,OAAU,+CACV,OAAU,gCACV,OAAU,6DACV,OAAU,iEACV,OAAU,+DACV,OAAU,kDACV,OAAU,+CACV,OAAU,4CACV,OAAU,yBACV,OAAU,iCACV,OAAU,gCACV,OAAU,cACV,OAAU,WACV,OAAU,kEACV,OAAU,sEACV,OAAU,kDACV,OAAU,aACV,OAAU,cACV,OAAU,yDACV,OAAU,kCACV,OAAU,iCACV,OAAU,0BACV,OAAU,6BACV,OAAU,wCACV,OAAU,+CACV,OAAU,gDACV,OAAU,4DACV,OAAU,uCACV,OAAU,6CACV,OAAU,oBACV,OAAU,+BACV,OAAU,8BACV,OAAU,sCACV,OAAU,8CACV,OAAU,4BACV,OAAU,8BACV,OAAU,6BACV,OAAU,4BACV,OAAU,gCACV,OAAU,sBACV,OAAU,2BACV,OAAU,gCACV,OAAU,yCACV,OAAU,oBACV,OAAU,yBACV,OAAU,iCACV,OAAU,6BACV,OAAU,wBACV,OAAU,2DACV,OAAU,2DACV,OAAU,mCACV,OAAU,4BACV,OAAU,qBACV,OAAU,mCACV,OAAU,aACV,OAAU,iCACV,OAAU,uCACV,OAAU,8CACV,OAAU,yBACV,OAAU,wCACV,OAAU,0CACV,OAAU,kCACV,OAAU,wDACV,OAAU,0DACV,OAAU,0DACV,OAAU,WACV,OAAU,YACV,OAAU,gCACV,OAAU,kBACV,OAAU,aACV,OAAU,yBACV,OAAU,uBACV,OAAU,kDACV,OAAU,YACV,OAAU,wBACV,OAAU,oCACV,OAAU,qCACV,OAAU,yCACV,OAAU,mBACV,OAAU,uBACV,OAAU,mCACV,OAAU,0CACV,OAAU,qCACV,OAAU,mCACV,OAAU,mBACV,OAAU,oBACV,OAAU,kCACV,OAAU,gDACV,OAAU,mBACV,OAAU,mBACV,OAAU,uCACV,OAAU,kBACV,OAAU,oBACV,OAAU,sBACV,OAAU,qBACV,OAAU,mBACV,OAAU,iDACV,OAAU,6BACV,OAAU,4CACV,OAAU,kCACV,OAAU,iDACV,OAAU,8EACV,OAAU,yCACV,OAAU,kEACV,OAAU,wDACV,OAAU,2BACV,OAAU,kDACV,OAAU,sCACV,OAAU,sDACV,OAAU,0DACV,OAAU,4DACV,OAAU,qCACV,OAAU,4CACV,OAAU,uEACV,OAAU,yCACV,OAAU,2DACV,OAAU,iEACV,OAAU,wBACV,OAAU,oDACV,OAAU,uFACV,OAAU,kFACV,OAAU,kDACV,OAAU,uCACV,OAAU,yDACV,OAAU,mEACV,OAAU,gCACV,OAAU,0CACV,OAAU,gDACV,OAAU,sDACV,OAAU,kCACV,OAAU,iCACV,OAAU,6CACV,OAAU,0CACV,OAAU,sCACV,OAAU,6CACV,OAAU,aACV,OAAU,0BACV,OAAU,gCACV,OAAU,sCACV,OAAU,uCACV,OAAU,wBACV,OAAU,sCACV,OAAU,sCACV,OAAU,mCACV,OAAU,yBACV,OAAU,gDACV,OAAU,2BACV,OAAU,kDACV,OACC,2IACD,OAAU,cACV,OAAU,oDACV,OAAU,qCACV,OAAU,uDACV,OAAU,wDACV,OAAU,uDACV,OAAU,uDACV,OAAU,sDACV,OAAU,uCACV,OAAU,sDACV,OAAU,uBACV,OAAU,oBACV,OAAU,uBACV,OAAU,2BACV,OAAU,sBACV,OAAU,uEACV,OAAU,gDACV,OAAU,iDACV,OAAU,oCACV,OAAU,mCACV,OAAU,6CACV,OAAU,uCACV,OAAU,sDACV,OAAU,iDACV,OAAU,oDACV,OAAU,8CACV,OAAU,4CACV,OAAU,8BACV,OAAU,8BACV,OAAU,0BACV,OAAU,wBACV,OAAU,yCACV,OAAU,2CACV,OAAU,+CACV,OAAU,iCACV,OAAU,8CACV,OAAU,mCACV,OAAU,0DACV,OAAU,aACV,OAAU,mDACV,OAAU,8EACV,OAAU,gDACV,OAAU,+BACV,OAAU,4BACV,OAAU,oFACV,OAAU,gCACV,OAAU,sBACV,OAAU,qBACV,OAAU,yBACV,OAAU,0CACV,OAAU,+DACV,OAAU,wBACV,OAAU,gDACV,OAAU,4CACV,OAAU,gCACV,OAAU,0BACV,OAAU,oCACV,OAAU,yBACV,OAAU,yBACV,OAAU,sCACV,OAAU,gCACV,OAAU,mCACV,OAAU,qEACV,OAAU,oDACV,OAAU,sCACV,OAAU,4DACV,OAAU,qCACV,OAAU,sBACV,OAAU,kDACV,OAAU,oDACV,OAAU,qCACV,OAAU,gEACV,OAAU,gEACV,OAAU,kDACV,OAAU,gCACV,OAAU,iCACV,OAAU,kDACV,OAAU,8DACV,OAAU,4DACV,OAAU,yDACV,OAAU,oEACV,OAAU,wCACV,OAAU,uBACV,OAAU,kCACV,OAAU,sDACV,OAAU,oDACV,OAAU,kDACV,OAAU,6DACV,OAAU,0BACV,OAAU,+DACV,OAAU,iDACV,OAAU,iDACV,OAAU,wCACV,OAAU,0CACV,OAAU,kDACV,OAAU,qCACV,OAAU,kCACV,OAAU,uBACV,OAAU,oCACV,OAAU,yBACV,OAAU,iCACV,OAAU,gBACV,OAAU,mBACV,OAAU,mDACV,OAAU,sEACV,OAAU,6CACV,OAAU,yDACV,OAAU,wCACV,OAAU,uBACV,OAAU,iCACV,OAAU,wBACV,OAAU,4BACV,OAAU,6BACV,OAAU,mCACV,OAAU,YACV,OAAU,4BACV,OAAU,8DACV,OAAU,2CACV,OAAU,uBACV,OAAU,8BACV,OAAU,yCACV,OAAU,kDACV,OAAU,wEACV,OAAU,qBACV,OAAU,mBACV,OAAU,iBACV,OAAU,uCACV,OAAU,oBACV,OAAU,4BACV,OAAU,eACV,OAAU,uBACV,OAAU,cACV,OAAU,sCACV,OAAU,wBACV,OAAU,sBACV,OAAU,sBACV,OAAU,aACV,OAAU,YACV,OAAU,gEACV,OAAU,8EACV,OAAU,mEACV,OAAU,0CACV,OAAU,sBACV,OAAU,wBACV,OAAU,oCACV,OAAU,+CACV,OAAU,+EACV,OAAU,+CACV,OAAU,yDACV,OAAU,4BACV,OAAU,uBACV,OAAU,wCACV,OAAU,mBACV,OAAU,yBACV,OAAU,iCACV,OAAU,wBACV,OAAU,sEACV,OAAU,gBACV,OAAU,uCACV,OAAU,0CACV,OAAU,UACV,OAAU,cACV,OAAU,iCACV,OAAU,uCACV,OAAU,qBACV,OAAU,oBACV,OAAU,mCACV,OAAU,kCACV,OAAU,yBACV,OAAU,WACV,OAAU,aACV,OAAU,aACV,OAAU,WACV,OAAU,sBACV,OAAU,wCACV,OAAU,uDACV,OACC,+FACD,OACC,4FACD,OAAU,mCACV,OAAU,yDACV,OAAU,oCACV,OAAU,6BACV,OAAU,yBACV,OAAU,iCACV,OAAU,4BACV,OAAU,sCACV,OAAU,uBACV,OAAU,+BACV,OAAU,qCACV,OAAU,uCACV,OACC,sGACD,OAAU,uDACV,OAAU,qEACV,OAAU,wDACV,OACC,2FACD,OACC,yFACD,OAAU,yCACV,OAAU,sCACV,OAAU,4CACV,OAAU,8DACV,OAAU,oFACV,OACC,0FACD,OAAU,gDACV,OAAU,2DACV,OAAU,iEACV,OAAU,yDACV,OAAU,2DACV,OAAU,uCACV,OAAU,2CACV,OAAU,4EACV,OAAU,mCACV,OAAU,+CACV,OAAU,4EACV,OAAU,sCACV,OAAU,2DACV,OAAU,8CACV,OAAU,mFACV,OAAU,+CACV,OAAU,8CACV,OAAU,oEACV,OAAU,6CACV,OAAU,sEACV,OAAU,sDACV,OAAU,qDACV,OAAU,+CACV,OAAU,mEACV,OAAU,2CACV,OAAU,gDACV,OACC,yFACD,OAAU,0DACV,OAAU,kDACV,OAAU,0EACV,OAAU,4EACV,OAAU,yCACV,OAAU,qCACV,OAAU,8DACV,OAAU,8DACV,OAAU,uCACV,OAAU,oCACV,OAAU,+DACV,OAAU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AW,yBACX,QAAW,iCACX,QAAW,sCACX,QAAW,2BACX,QAAW,wDACX,QAAW,iDACX,QAAW,gEACX,QAAW,6EACX,QAAW,6CACX,QAAW,wDACX,QAAW,sBACX,QAAW,8CACX,QAAW,kCACX,QAAW,gCACX,QAAW,8BACX,QAAW,4DACX,QAAW,oFACX,QAAW,mCACX,QAAW,8EACX,QAAW,mCACX,QAAW,yBACX,QAAW,uCACX,QAAW,sCACX,QAAW,iFACX,QAAW,2CACX,OAAW,iEACX,QAAW,4CACX,QAAW,8CACX,QAAW,+BACX,QAAW,+DACX,QAAW,uDACX,QAAW,iCACX,QAAW,qFACX,QACC,4FACD,QACC,yFACD,QAAW,qDACX,QAAW,uCACX,QAAW,uCACX,QAAW,uDACX,QAAW,wEACX,QAAW,8BACX,QAAW,2BACX,QACC,wFACD,QAAW,sEACX,QAAW,sDACX,QAAW,uDACX,QAAW,iDACX,QAAW,iCACX,QAAW,0EACX,QAAW,sBACX,QACC,0FACD,QAAW,2CACX,QAAW,+EACX,QAAW,mEACX,QAAW,kCACX,QAAW,+CACX,QAAW,2CACX,QAAW,+CACX,QAAW,sEACX,QAAW,2DACX,QAAW,kDACX,QAAW,gEACX,QAAW,0DACX,QACC,0FACD,QAAW,gDACX,QACC,sGACD,QAAW,8DACX,QAAW,iEACX,QAAW,6DACX,QACC,8GACD,QAAW,oEACX,QAAW,sBACX,QAAW,yCACX,QAAW,oCACX,OAAW,uDACX,QAAW,2DACX,QAAW,sCACX,QACC,iHACD,QAAW,qCACX,QAAW,uCACX,QACC,2GACD,QACC,kIACD,QAAW,uBACX,QAAW,gEACX,QAAW,qCACX,QAAW,8CACX,QAAW,yCACX,QAAW,4BACX,QAAW,2CACX,QAAW,wEACX,QAAW,wCACX,QAAW,0CACX,QAAW,6CACX,QAAW,YACX,QAAW,+CACX,QAAW,6BACX,QAAW,mCACX,QAAW,iFACX,QAAW,uBACX,QAAW,+CACX,QAAW,gCACX,QAAW,kDACX,QAAW,sDACX,QAAW,8DACX,QAAW,kCACX,QAAW,uCACX,QAAW,qFACX,QAAW,+CACX,QAAW,qEACX,QAAW,4EACX,QAAW,uCACX,QAAW,mCACX,QAAW,4BACX,QAAW,gDACX,QAAW,qCACX,QAAW,+CACX,QAAW,gDACX,QAAW,gDACX,QAAW,wEACX,QAAW,mDACX,OAAW,oCACX,QAAW,+DACX,QAAW,oCACX,QAAW,kDACX,QAAW,qCACX,QAAW,sCACX,QAAW,2CACX,QAAW,8BACX,QACC,8FACD,QAAW,yEACX,QAAW,uCACX,QAAW,wDACX,QAAW,0DACX,QAAW,2DACX,OAAW,kDACX,QAAW,0CACX,QAAW,+CACX,QAAW,gCACX,QAAW,sEACX,QAAW,kEACX,QAAW,gDACX,QAAW,+EACX,QAAW,4EACX,QAAW,qEACX,QACC,iGACD,QACC,gGACD,QAAW,2CACX,QAAW,oCACX,QAAW,iCACX,QAAW,wBACX,QAAW,qFACX,QAAW,4DACX,QAAW,iEACX,QAAW,+CACX,QAAW,8DACX,QACC,8GACD,QAAW,+CACX,QAAW,iCACX,QACC,qGACD,QAAW,+CACX,QAAW,mFACX,QAAW,oDACX,QAAW,uEACX,QACC,+FACD,QAAW,4BACX,QACC,sGACD,QAAW,0BACX,QACC,0FACD,QAAW,yBACX,QAAW,yBACX,QAAW,mCACX,QAAW,oEACX,QAAW,iDACX,QAAW,uCACX,QAAW,oDACX,QAAW,4BACX,QAAW,yEACX,QAAW,uCACX,QAAW,0CACX,QAAW,wDACX,QAAW,oCACX,QAAW,kCACX,QAAW,sBACX,QAAW,wCACX,QAAW,iCACX,QAAW,2CACX,QACC,wFACD,QAAW,0BACX,QAAW,+CACX,OAAW,qCACX,QAAW,oCACX,QAAW,4CACX,QAAW,sFACX,QACC,8FACD,QAAW,8BACX,QAAW,2DACX,QAAW,4CACX,QAAW,mBACX,QAAW,0CACX,QAAW,kDACX,QAAW,qCACX,OAAW,0DACX,QAAW,4BACX,QAAW,gFACX,QAAW,wDACX,QAAW,qCACX,QAAW,6DACX,QAAW,qEACX,QAAW,8DACX,QAAW,gEACX,QAAW,qCACX,QAAW,yEACX,QAAW,wCACX,QAAW,4CACX,QAAW,6DACX,QAAW,8EACX,QACC,kGACD,MACC,4FACD,QAAW,qEACX,QAAW,uCACX,QACC,0FACD,QAAW,wEACX,QAAW,8EACX,QAAW,qDACX,QAAW,+EACX,QACC,2GACD,QAAW,sDACX,OACC,4FACD,QAAW,kEACX,QAAW,yEACX,QACC,0FACD,QAAW,0EACX,QAAW,4DACX,QAAW,yBACX,QAAW,+DACX,QACC,0GACD,QAAW,uEACX,QACC,sGACD,QACC,oHACD,QAAW,uDACX,QACC,0FACD,QACC,kGACD,QACC,4FACD,QAAW,mFACX,QAAW,qEACX,QAAW,yEACX,QAAW,iDACX,QAAW,qFACX,QACC,yHACD,QAAW,qFACX,QACC,6GACD,QACC,4GACD,QACC,sHACD,QAAW,gFACX,QAAW,oFACX,QACC,+FACD,QACC,yHACD,QACC,gHACD,QAAW,uDACX,QAAW,yEACX,OACC,iHACD,QAAW,wDACX,QACC,qGACD,QACC,gIACD,QAAW,+DACX,QACC,2HACD,QACC,sGACD,QACC,4GACD,QAAW,oFACX,OACC,oHACD,QACC,wHACD,QACC,yFACD,QACC,2HACD,QAAW,qDACX,QAAW,4EACX,QAAW,kEACX,QAAW,mCACX,QAAW,gDACX,QAAW,+DACX,QAAW,wCACX,QACC,4GACD,QAAW,gFACX,QACC,oGACD,QAAW,oFACX,QACC,iGACD,OACC,0FACD,QAAW,6DACX,QACC,oGACD,QAAW,uEACX,QAAW,4CACX,QACC,6FACD,QAAW,iDACX,QAAW,gEACX,QAAW,8DACX,QAAW,0BACX,QAAW,8EACX,QAAW,8CACX,QAAW,6BACX,QAAW,qDACX,OAAW,2EACX,QAAW,2EACX,QAAW,oDACX,QAAW,kDACX,QAAW,mEACX,QAAW,yBACX,QAAW,qBACX,QAAW,qDACX,QAAW,gCACX,QAAW,mDACX,QAAW,0DACX,QAAW,+CACX,QAAW,kCACX,QAAW,gFACX,QAAW,4EACX,QAAW,sFACX,QACC,oHACD,QAAW,qFACX,QACC,wHACD,QACC,gIACD,QAAW,sDACX,QAAW,+BACX,QAAW,gCACX,QAAW,gCACX,QAAW,6CACX,QAAW,oEACX,QAAW,gFACX,QAAW,0CACX,QAAW,gEACX,QAAW,kFACX,QAAW,8CACX,QAAW,wCACX,QAAW,6CACX,QAAW,kEACX,QACC,+FACD,QAAW,iFACX,QACC,sGACD,QAAW,gEACX,QAAW,2EACX,QAAW,oFACX,QACC,sGACD,QAAW,4DACX,QAAW,oFACX,QAAW,iDACX,QAAW,yCACX,QAAW,8EACX,QACC,yFACD,QACC,8GACD,QACC,oGACD,QACC,oHACD,QACC,mGACD,QAAW,gFACX,QAAW,+CACX,QAAW,gDACX,QACC,6FACD,QACC,iHACD,QAAW,uDACX,QACC,iHACD,QACC,8FACD,QACC,oGACD,QACC,+GACD,QACC,2GACD,QAAW,8EACX,QACC,iHACD,QAAW,kDACX,QAAW,oEACX,QAAW,mCACX,QAAW,gEACX,QAAW,6DACX,QAAW,oFACX,OAAW,oDACX,QAAW,sDACX,QAAW,oEACX,QAAW,8BACX,QACC,gGACD,QAAW,kCACX,QAAW,0CACX,OAAW,mCACX,QAAW,gDACX,QAAW,yDACX,QAAW,kEACX,QAAW,8CACX,QAAW,qCACX,QAAW,4BACX,QAAW,6DACX,QAAW,mCACX,QAAW,+BACX,QAAW,oDACX,OAAW,gDACX,QAAW,qCACX,QAAW,sDACX,QAAW,qCACX,QAAW,wBACX,QAAW,2DACX,QAAW,0DACX,QAAW,+CACX,QAAW,0BACX,QAAW,qCACX,QAAW,8DACX,OAAW,wCACX,QAAW,iDACX,QAAW,sEACX,QAAW,qEACX,QAAW,0DACX,QAAW,qDACX,QAAW,qDACX,QACC,qHACD,QAAW,qBACX,QAAW,0EACX,OAAW,yCACX,QAAW,mCACX,QAAW,+BACX,QAAW,qDACX,QAAW,mEACX,QAAW,6CACX,QAAW,8CACX,QAAW,0BACX,QAAW,yBACX,QAAW,oEACX,QAAW,mCACX,QAAW,+CACX,QACC,gGACD,QAAW,sDACX,QAAW,sCACX,QAAW,qFACX,QAAW,gFACX,QACC,qHACD,QAAW,iDACX,QAAW,6EACX,QAAW,iDACX,QACC,6FACD,QAAW,yCACX,QAAW,4CACX,QAAW,qEACX,QAAW,2CACX,QAAW,qBACX,QAAW,yBACX,QAAW,qEACX,QAAW,qBACX,QACC,uHACD,QAAW,2CACX,QAAW,0EACX,QAAW,kEACX,QAAW,mEACX,QAAW,8EACX,QAAW,mDACX,QAAW,kEACX,QAAW,8DACX,QAAW,0EACX,QAAW,mDACX,QAAW,sEACX,QAAW,yEACX,QAAW,sEACX,QAAW,kEACX,QAAW,wEACX,QAAW,oDACX,QACC,yFACD,QAAW,wBACX,QAAW,6EACX,QAAW,sDACX,QAAW,0EACX,QAAW,2EACX,QAAW,mDACX,QACC,iHACD,QAAW,mDACX,QAAW,2EACX,QAAW,sDACX,QAAW,uDACX,QAAW,8EACX,QAAW,+EACX,QACC,kGACD,QAAW,uDACX,QAAW,qDACX,QACC,+FACD,QACC,8GACD,QACC,iGACD,QACC,qGACD,OACC,yGACD,QACC,sGACD,QACC,2FACD,QACC,uGACD,QACC,yGACD,QACC,4FACD,QACC,mHACD,QACC,4FACD,QAAW,sCACX,QAAW,8BACX,QAAW,uCACX,QACC,kGACD,QAAW,iCACX,QAAW,uDACX,QAAW,+BACX,QAAW,4DACX,QAAW,+BACX,QACC,+GACD,QAAW,gDACX,QAAW,mFACX,QAAW,4CACX,QAAW,4DACX,QAAW,oDACX,QACC,qJACD,QACC,4FACD,QAAW,2CACX,QAAW,kFACX,QAAW,6DACX,QAAW,mDACX,QAAW,kDACX,QAAW,8DACX,QAAW,sCACX,QAAW,uDACX,QACC,6FACD,QAAW,iEACX,QAAW,0CACX,QAAW,0DACX,QAAW,uDACX,QAAW,gCACX,QAAW,0CACX,QAAW,4DACX,QAAW,6CACX,QAAW,kCACX,QAAW,6EACX,QACC,oGACD,QAAW,wDACX,QACC,qHACD,QAAW,iCACX,QAAW,uDACX,QAAW,8CACX,QACC,gGACD,QACC,8FACD,QAAW,kCACX,QAAW,2DACX,QAAW,6DACX,QAAW,kEACX,QACC,2GACD,QAAW,yDACX,QAAW,gDACX,QAAW,6DACX,QAAW,qDACX,QAAW,8DACX,QAAW,8DACX,QAAW,2EACX,QAAW,0EACX,QAAW,6EACX,QAAW,wDACX,QAAW,oEACX,QAAW,wDACX,QAAW,2DACX,QAAW,+EACX,QACC,4IACD,QACC,4GACD,QACC,kHACD,QAAW,qDACX,QAAW,sDACX,QACC,2FACD,QACC,kGACD,QACC,2GACD,OAAW,qFACX,QACC,8GACD,QAAW,oFACX,QAAW,+DACX,QACC,wGACD,QAAW,sDACX,QAAW,iDACX,QAAW,2CACX,QAAW,iCACX,QAAW,sDACX,QAAW,6CACX,QAAW,oDACX,QACC,+FACD,QAAW,0DACX,QACC,0KACD,QAAW,sFACX,QAAW,kFACX,QAAW,iEACX,QAAW,uCACX,QAAW,0DACX,QACC,0FACD,QAAW,+CACX,QAAW,mCACX,QACC,kGACD,QAAW,sFACX,QAAW,kDACX,QAAW,oCACX,QAAW,qDACX,QAAW,qFACX,QAAW,sDACX,QAAW,2EACX,QAAW,oDACX,QACC,sGACD,QACC,0FACD,QACC,0FACD,QACC,0GACD,QACC,yGACD,QACC,yGACD,QACC,+HACD,QAAW,kEACX,QAAW,wEACX,QAAW,6EACX,QAAW,qDACX,QAAW,2CACX,QAAW,4DACX,QAAW,0CACX,QAAW,WACX,QAAW,gCACX,QAAW,6CACX,QAAW,YACX,QAAW,6DACX,QACC,iIACD,QAAW,+DACX,QAAW,sCACX,QAAW,wDACX,QAAW,0CACX,QAAW,+BACX,QAAW,gDACX,QAAW,4CACX,QAAW,8CACX,QAAW,oEACX,QAAW,gFACX,QAAW,iDACX,QAAW,yDACX,QAAW,gFACX,QAAW,wDACX,QAAW,8EACX,QAAW,uFACX,QAAW,+BACX,QAAW,8CACX,QAAW,8CACX,QAAW,gCACX,QAAW,6CACX,QAAW,sDACX,QAAW,yEACX,QACC,+IACD,QAAW,mEACX,QACC,kGACD,QAAW,+BACX,QAAW,2CACX,QAAW,6CACX,QAAW,kDACX,QAAW,yDACX,QAAW,2CACX,QAAW,mEACX,QAAW,yDACX,QAAW,sFACX,QAAW,4EACX,QAAW,4EACX,QAAW,4DACX,QAAW,kDACX,QAAW,gFACX,QAAW,sDACX,QAAW,0CACX,QAAW,0DACX,QAAW,iCACX,QAAW,0CACX,QAAW,6CACX,QAAW,8CACX,QAAW,yDACX,QAAW,qCACX,QAAW,8CACX,QAAW,4DACX,QAAW,kDACX,QAAW,wCACX,QACC,yFACD,QAAW,2DACX,QAAW,kEACX,QAAW,qDACX,QAAW,6DACX,QAAW,yCACX,QAAW,wEACX,QAAW,kCACX,QAAW,uEACX,QAAW,4EACX,QAAW,yBACX,QAAW,gFACX,QACC,6GACD,QACC,qHACD,QAAW,oFACX,QAAW,oFACX,QAAW,kBACX,QAAW,6EACX,QAAW,qBACX,QAAW,qFACX,QACC,yHACD,QAAW,uEACX,QACC,2GACD,QAAW,gFACX,QAAW,kFACX,QACC,sHACD,QAAW,8CACX,QAAW,oCACX,MAAW,wBACX,QAAW,4CACX,QAAW,2CACX,QAAW,iDACX,QAAW,6CACX,QAAW,mDACX,QAAW,0EACX,QACC,8GACD,QACC,oGACD,QACC,wIACD,QAAW,8BACX,QAAW,+BACX,QAAW,wCACX,QAAW,mDACX,QAAW,sFACX,QAAW,iDACX,QAAW,iEACX,QAAW,0CACX,QAAW,8DACX,QAAW,iEACX,MAAW,4BACX,QAAW,sBACX,QAAW,uCACX,QAAW,gBACX,QAAW,kFACX,QAAW,mBACX,QAAW,sEACX,QAAW,uCACX,QAAW,6BACX,QAAW,0EACX,QAAW,kCACX,QACC,0FACD,QAAW,4CACX,QAAW,mCACX,QAAW,kCACX,OAAW,sCACX,QAAW,yBACX,QAAW,oFACX,QAAW,mDACX,QACC,wGACD,QAAW,0BACX,QAAW,wCACX,QAAW,4DACX,QAAW,+CACX,QAAW,0CACX,QAAW,iCACX,QAAW,gDACX,QAAW,0DACX,QAAW,6BACX,QAAW,SACX,QAAW,eACX,QAAW,SACX,QAAW,kCACX,QAAW,WACX,QAAW,sBACX,QAAW,qDACX,QAAW,2BACX,QAAW,kDACX,QAAW,uFACX,QACC,wFACD,QAAW,qCACX,QAAW,wEACX,QAAW,0DACX,QAAW,gDACX,QAAW,kFACX,QAAW,mBACX,QAAW,4BACX,QAAW,gCACX,QAAW,qBACX,QAAW,4DACX,QAAW,yCACX,QAAW,kDACX,QAAW,sDACX,QAAW,2CACX,QAAW,kFACX,QAAW,4BACX,QAAW,sCACX,QACC,gHACD,QAAW,uBACX,QAAW,qDACX,QACC,oHACD,QAAW,qEACX,QAAW,yCACX,QAAW,sDACX,QAAW,sBACX,QAAW,iCACX,QAAW,gBACX,QAAW,2EACX,QAAW,6CACX,QAAW,8DACX,QAAW,2CACX,QAAW,uEACX,QAAW,0BACX,QAAW,oCACX,QAAW,uEACX,QAAW,gCACX,QAAW,kDACX,QAAW,wDACX,QAAW,sDACX,QAAW,gDACX,QAAW,oDACX,QAAW,wEACX,QAAW,2DACX,QAAW,aACX,QAAW,2EACX,QAAW,+EACX,OAAW,0CACX,QAAW,4EACX,QACC,gGACD,QAAW,8EACX,QAAW,uBACX,QACC,2FACD,QAAW,gBACX,QAAW,oBACX,QAAW,2CACX,QAAW,oBACX,QAAW,sBACX,QAAW,mCACX,QAAW,gCACX,QAAW,gCACX,OAAW,2CACX,QAAW,yBACX,QAAW,4BACX,QAAW,sBACX,QAAW,oCACX,QAAW,uCACX,QAAW,0BACX,QAAW,oEACX,QAAW,6CACX,QAAW,mBACX,QAAW,qDACX,QAAW,yBACX,QAAW,8BACX,QAAW,uCACX,OAAW,2CACX,QAAW,qDACX,QAAW,gEACX,QAAW,yCACX,QAAW,sCACX,QAAW,8CACX,QAAW,4BACX,OAAW,gEACX,QAAW,yBACX,QAAW,6BACX,QAAW,8BACX,QAAW,yCACX,QAAW,mCACX,QAAW,4EACX,QAAW,uCACX,QAAW,4BACX,OAAW,2CACX,QAAW,wCACX,QAAW,aACX,QAAW,mCACX,QAAW,kCACX,QAAW,kBACX,QAAW,mBACX,QAAW,uBACX,QAAW,iCACX,QAAW,kDACX,QAAW,8CACX,QAAW,kDACX,QAAW,uBACX,QAAW,yCACX,QAAW,qDACX,QAAW,sCACX,QAAW,oCACX,QAAW,8CACX,QAAW,wCACX,QAAW,qBACX,QAAW,kCACX,QACC,wFACD,QAAW,mCACX,QAAW,mCACX,QAAW,oFACX,QACC,uHACD,QAAW,iEACX,QAAW,qCACX,QAAW,8BACX,QAAW,iCACX,QAAW,sDACX,QAAW,mCACX,QAAW,oDACX,QAAW,wBACX,QAAW,mCACX,QAAW,mCACX,QAAW,YACX,QAAW,8BACX,QAAW,8DACX,QACC,yFACD,QAAW,0BACX,OAAW,yBACX,QAAW,iDACX,QAAW,mCACX,QAAW,sEACX,QAAW,mEACX,QACC,8FACD,QAAW,6BACX,MAAW,yEACX,QAAW,wEACX,QAAW,0BACX,QAAW,8EACX,QAAW,4CACX,QAAW,qBACX,QAAW,mBACX,QAAW,6BACX,QAAW,mEACX,QAAW,4CACX,QAAW,uBACX,QAAW,oBACX,QAAW,uDACX,QAAW,kEACX,QAAW,4DACX,QAAW,4BACX,QAAW,+BACX,QAAW,4BACX,QAAW,kDACX,QAAW,yBACX,QAAW,6EACX,QACC,kGACD,QAAW,mFACX,QACC,0FACD,QAAW,0BACX,OAAW,qCACX,QAAW,sEACX,QAAW,sCACX,QAAW,sFACX,QAAW,mDACX,QAAW,8CACX,QAAW,sDACX,QAAW,4CACX,QACC,8FACD,QAAW,6BACX,QAAW,kFACX,QAAW,4DACX,QAAW,mFACX,QAAW,sBACX,QAAW,sDACX,QACC,wFACD,QAAW,4EACX,QAAW,uFACX,QACC,mHACD,QAAW,+CACX,QAAW,wCACX,QAAW,oCACX,QAAW,2DACX,QAAW,sBACX,QAAW,wBACX,QAAW,oFACX,QAAW,+CACX,QAAW,6CACX,QAAW,sCACX,QAAW,kEACX,QAAW,6CACX,QAAW,wCACX,QAAW,0EACX,QAAW,uBACX,QAAW,qCACX,QAAW,0CACX,OAAW,wDACX,QAAW,2BACX,QAAW,2DACX,QAAW,aACX,QACC,6GACD,QAAW,gCACX,QAAW,qEACX,QAAW,4BACX,QAAW,mDACX,OAAW,2CACX,QAAW,qDACX,QAAW,6DACX,QAAW,qDACX,QAAW,2BACX,QAAW,kDACX,QAAW,kBACX,QAAW,6BACX,QACC,qGACD,QAAW,iCACX,QACC,4FACD,QAAW,sCACX,QAAW,sBACX,QAAW,SACX,OAAW,UACX,QAAW,4BACX,QAAW,eACX,QAAW,gCACX,QAAW,6BACX,QAAW,gCACX,QAAW,qBACX,QAAW,eACX,QAAW,gCACX,QAAW,gDACX,QAAW,+CACX,QAAW,yCACX,QAAW,6CACX,QAAW,oCACX,QAAW,0DACX,QAAW,qBACX,QAAW,kBACX,QAAW,wCACX,QAAW,mBACX,QAAW,0DACX,QAAW,oBACX,QAAW,yBACX,QAAW,sBACX,QAAW,6BACX,QAAW,0DACX,QAAW,sCACX,QAAW,8DACX,QACC,sGACD,QACC,mGACD,QAAW,YACX,QAAW,mEACX,QACC,yFACD,QACC,yFACD,QAAW,sFACX,QAAW,qDACX,QAAW,yBACX,QAAW,4CACX,QAAW,4CACX,QAAW,qEACX,QAAW,mDACX,QAAW,wBACX,QAAW,mCACX,QAAW,yBACX,QAAW,sFACX,QAAW,oCACX,QACC,iGACD,QAAW,mFACX,QAAW,oFACX,QAAW,4BACX,QAAW,2BACX,QAAW,0BACX,QAAW,0BACX,QAAW,kDACX,QACC,qGACD,QAAW,2BACX,QAAW,0CACX,QAAW,yCACX,QAAW,6BACX,QAAW,oCACX,QAAW,+BACX,QAAW,yDACX,QAAW,+EACX,QAAW,wCACX,QAAW,uEACX,QAAW,sCACX,QAAW,2BACX,QAAW,0BACX,QAAW,8EACX,QAAW,qCACX,QAAW,gDACX,QAAW,oFACX,QAAW,qDACX,QAAW,uCACX,QACC,8FACD,QAAW,oDACX,QACC,qLACD,QAAW,YACX,QAAW,0BACX,QACC,qHACD,QAAW,gDACX,QAAW,mBACX,QAAW,mBACX,QAAW,mCACX,QAAW,+DACX,QAAW,6DACX,QAAW,4CACX,QACC,yFACD,QAAW,2EACX,QAAW,+BACX,QAAW,mFACX,QAAW,uCACX,QACC,4FACD,QAAW,4DACX,QACC,oHACD,QAAW,iBACX,QAAW,+CACX,QAAW,wEACX,QAAW,oCACX,QAAW,yCACX,QAAW,uCACX,QAAW,4CACX,QAAW,+DACX,QAAW,0CACX,QAAW,uDACX,QAAW,yBACX,QAAW,oDACX,QAAW,8CACX,QAAW,yEACX,QAAW,mEACX,QAAW,0CACX,QAAW,+CACX,QAAW,uCACX,QAAW,0DACX,OAAW,uDACX,QAAW,uCACX,QAAW,qEACX,QAAW,0DACX,QAAW,uEACX,QAAW,wDACX,QAAW,sFACX,QAAW,uDACX,QAAW,YACX,QAAW,wBACX,QAAW,uEACX,QAAW,qCACX,QAAW,qBACX,QACC,gHACD,QAAW,cACX,QAAW,cACX,QAAW,aACX,QAAW,qCACX,QAAW,oEACX,QAAW,oCACX,QAAW,uBACX,QAAW,2BACX,QAAW,yBACX,QAAW,gCACX,QAAW,gFACX,QAAW,wBACX,QAAW,kEACX,QAAW,+BACX,QAAW,+CACX,QAAW,mCACX,QAAW,gDACX,QAAW,yEACX,QAAW,sBACX,QAAW,oEACX,UAAW,mBACX,UAAW,mBACX,UAAW,mBACX,UAAW,4DACX,UAAW,8BACX,UAAW,kBACX,UAAW,iFACX,UAAW,4BACX,UAAW,kBACX,UAAW,kBACX,UAAW,sBACX,UAAW,sBACX,UAAW,oBACX,UAAW,sFACX,UAAW,qBACX,UAAW,kBACX,UAAW,4BACX,UAAW,oBACX,UAAW,oBACX,UAAW,sBACX,UAAW,mBACX,UAAW,sBACX,UAAW,6BACX,UAAW,kFACX,UAAW,+BACX,UAAW,qBACX,UAAW,0CACX,UAAW,qBACX,UAAW,iBACX,UAAW,kBACX,UAAW,oBACX,UAAW,kBACX,UAAW,sCACX,UAAW,0BACX,UAAW,qBACX,UAAW,kBACX,UAAW,mBACX,UAAW,sBACX,UAAW,mBACX,UAAW,qBACX,UAAW,0EACX,UAAW,kBACX,UAAW,mBACX,UAAW,0BACX,UAAW,uBACX,UAAW,8BACX,UAAW,8DACX,UAAW,mBACX,UAAW,yBACX,UAAW,kFACX,UAAW,sEACX,UAAW,0EACX,UAAW,wEACX,UAAW,gCACX,UAAW,gCACX,UAAW,gDACX,UAAW,uBACX,UAAW,qBACX,UAAW,+BACX,UAAW,sBACX,UAAW,mDACX,UAAW,oBACX,UAAW,gCACX,UAAW,+BACX,UAAW,kDACX,UAAW,qCACX,UAAW,mBACX,UAAW,aACX,UAAW,kCACX,UAAW,qBACX,UAAW,2BACX,UAAW,4DACX,UAAW,yDACX,UAAW,2CACX,UAAW,uDACX,UAAW,oEACX,UAAW,+CACX,UAAW,oCACX,UAAW,+BACX,UAAW,iEACX,UAAW,6BACX,UAAW,+BACX,UAAW,uBACX,UAAW,0BACX,UAAW,mBACX,UA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A,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACD,EAMa,GAAmB,sCChyU1B,GAAa,EAEnB,IAAI,GAEJ,MAAM,QACL,KAAA,GAAU,IAAI,IAAI,EAAS,GACpB,IAmCK,GAAc,GAAoC,CAC9D,GAAI,CAAC,EAAa,CAAK,EAAG,MAAO,CAAA,EAEjC,MAAM,EAAO,GAAc,EAAO,EAAU,EAE5C,OAAK,GAAiB,KAAK,CAAI,EAExB,GAAS,CAAA,CAAE,IAAI,EAAiB,CAAI,CAAC,EAFH,CAAA,CAG1C,EC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"}