zod-ir 1.3.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +149 -130
- package/dist/index.d.mts +110 -35
- package/dist/index.d.ts +110 -35
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -11
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/data.ts","../src/utils.ts","../src/constants.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n isMelliCode,\n isShenaseMelli,\n isPassport,\n isCardNumber,\n isIranianMobile,\n isSheba,\n isPostalCode,\n isLandline,\n verifyAndNormalize,\n getBankInfo,\n getMobileOperator,\n} from \"./utils\";\nimport { getMessage, BaseOptions } from \"./constants\";\n\nexport const zMelliCode = (options?: BaseOptions) =>\n z.string().refine((val) => isMelliCode(val), {\n message: getMessage(\"melliCode\", options),\n });\n\nexport const zShenaseMelli = (options?: BaseOptions) =>\n z.string().refine((val) => isShenaseMelli(val), {\n message: getMessage(\"shenaseMelli\", options),\n });\n\nexport const zPassport = (options?: BaseOptions) =>\n z.string().refine((val) => isPassport(val), {\n message: getMessage(\"passport\", options),\n });\n\nexport const zCardNumber = (options?: BaseOptions) =>\n z.string().refine((val) => isCardNumber(val), {\n message: getMessage(\"cardNumber\", options),\n });\n\ninterface MobileOptions extends BaseOptions {\n strictZero?: boolean | \"optional\";\n}\n\nexport const zIranianMobile = (options?: MobileOptions) =>\n z\n .string()\n .refine(\n (val) => isIranianMobile(val, { strictZero: options?.strictZero }),\n {\n message: getMessage(\"mobile\", options),\n }\n );\n\nexport const zSheba = (options?: BaseOptions) =>\n z.string().refine((val) => isSheba(val), {\n message: getMessage(\"sheba\", options),\n });\n\nexport const zPostalCode = (options?: BaseOptions) =>\n z.string().refine((val) => isPostalCode(val), {\n message: getMessage(\"postalCode\", options),\n });\n\nexport const zLandline = (options?: BaseOptions) =>\n z.string().refine((val) => isLandline(val), {\n message: getMessage(\"landline\", options),\n });\n\nexport const preprocessNumber = (schema: z.ZodTypeAny) =>\n z.preprocess((val) => {\n if (typeof val === \"string\") {\n return verifyAndNormalize(val);\n }\n return val;\n }, schema);\n\nexport {\n isMelliCode,\n isShenaseMelli,\n isPassport,\n isCardNumber,\n isIranianMobile,\n isSheba,\n isPostalCode,\n isLandline,\n verifyAndNormalize,\n getBankInfo,\n getMobileOperator,\n};\n","const CDN_BANKS =\n \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks\";\nconst CDN_OPERATORS =\n \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators\";\n\nexport const BANKS = {\n \"603799\": {\n name: \"Melli\",\n label: \"ملی\",\n color: \"#EF3F3E\",\n logo: `${CDN_BANKS}/melli.svg`,\n },\n \"589210\": {\n name: \"Sepah\",\n label: \"سپه\",\n color: \"#FFC600\",\n logo: `${CDN_BANKS}/sepah.svg`,\n },\n \"627648\": {\n name: \"ToseeSaderat\",\n label: \"توسعه صادرات\",\n color: \"#EDB12C\",\n logo: `${CDN_BANKS}/tosee-saderat.svg`,\n },\n \"627961\": {\n name: \"SanatMadar\",\n label: \"صنعت و معدن\",\n color: \"#B3986D\",\n logo: `${CDN_BANKS}/sanat-madan.svg`,\n },\n \"603770\": {\n name: \"Keshavarzi\",\n label: \"کشاورزی\",\n color: \"#4E7A46\",\n logo: `${CDN_BANKS}/keshavarzi.svg`,\n },\n \"628023\": {\n name: \"Maskan\",\n label: \"مسکن\",\n color: \"#F05A23\",\n logo: `${CDN_BANKS}/maskan.svg`,\n },\n \"627760\": {\n name: \"PostBank\",\n label: \"پست بانک\",\n color: \"#00764D\",\n logo: `${CDN_BANKS}/post-bank.svg`,\n },\n \"502908\": {\n name: \"ToseeTaavon\",\n label: \"توسعه تعاون\",\n color: \"#0064A6\",\n logo: `${CDN_BANKS}/tosee-taavon.svg`,\n },\n \"627412\": {\n name: \"EghtesadNovin\",\n label: \"اقتصاد نوین\",\n color: \"#652D86\",\n logo: `${CDN_BANKS}/eghtesad-novin.svg`,\n },\n \"622106\": {\n name: \"Parsian\",\n label: \"پارسیان\",\n color: \"#B3282D\",\n logo: `${CDN_BANKS}/parsian.svg`,\n },\n \"502229\": {\n name: \"Pasargad\",\n label: \"پاسارگاد\",\n color: \"#FFC72C\",\n logo: `${CDN_BANKS}/pasargad.svg`,\n },\n \"627488\": {\n name: \"Karafarin\",\n label: \"کارآفرین\",\n color: \"#3B9C56\",\n logo: `${CDN_BANKS}/karafarin.svg`,\n },\n \"621986\": {\n name: \"Saman\",\n label: \"سامان\",\n color: \"#006DB6\",\n logo: `${CDN_BANKS}/saman.svg`,\n },\n \"639346\": {\n name: \"Sina\",\n label: \"سینا\",\n color: \"#004E8A\",\n logo: `${CDN_BANKS}/sina.svg`,\n },\n \"639607\": {\n name: \"Sarmayeh\",\n label: \"سرمایه\",\n color: \"#0077B6\",\n logo: `${CDN_BANKS}/sarmayeh.svg`,\n },\n \"636214\": {\n name: \"Ayandeh\",\n label: \"آینده\",\n color: \"#8B5F34\",\n logo: `${CDN_BANKS}/ayandeh.svg`,\n },\n \"502806\": {\n name: \"Shahr\",\n label: \"شهر\",\n color: \"#ED3438\",\n logo: `${CDN_BANKS}/shahr.svg`,\n },\n \"502938\": {\n name: \"Day\",\n label: \"دی\",\n color: \"#0099CC\",\n logo: `${CDN_BANKS}/day.svg`,\n },\n \"603769\": {\n name: \"Saderat\",\n label: \"صادرات\",\n color: \"#1A3266\",\n logo: `${CDN_BANKS}/saderat.svg`,\n },\n \"610433\": {\n name: \"Mellat\",\n label: \"ملت\",\n color: \"#D70005\",\n logo: `${CDN_BANKS}/mellat.svg`,\n },\n \"627353\": {\n name: \"Tejarat\",\n label: \"تجارت\",\n color: \"#005696\",\n logo: `${CDN_BANKS}/tejarat.svg`,\n },\n \"585983\": {\n name: \"Tejarat\",\n label: \"تجارت\",\n color: \"#005696\",\n logo: `${CDN_BANKS}/tejarat.svg`,\n },\n \"589463\": {\n name: \"Refah\",\n label: \"رفاه\",\n color: \"#2B3C8E\",\n logo: `${CDN_BANKS}/refah.svg`,\n },\n \"627381\": {\n name: \"Ansar\",\n label: \"انصار\",\n color: \"#F7B500\",\n logo: `${CDN_BANKS}/ansar.svg`,\n },\n \"505785\": {\n name: \"IranZamin\",\n label: \"ایران زمین\",\n color: \"#92278F\",\n logo: `${CDN_BANKS}/iran-zamin.svg`,\n },\n \"505416\": {\n name: \"Gardeshgari\",\n label: \"گردشگری\",\n color: \"#1D3265\",\n logo: `${CDN_BANKS}/gardeshgari.svg`,\n },\n \"636949\": {\n name: \"Hekmat\",\n label: \"حکمت\",\n color: \"#5F2C83\",\n logo: `${CDN_BANKS}/hekmat.svg`,\n },\n \"505801\": {\n name: \"Kosar\",\n label: \"کوثر\",\n color: \"#C62828\",\n logo: `${CDN_BANKS}/kosar.svg`,\n },\n \"606373\": {\n name: \"MehrIran\",\n label: \"مهر ایران\",\n color: \"#359E49\",\n logo: `${CDN_BANKS}/mehr-iran.svg`,\n },\n \"504172\": {\n name: \"Resalat\",\n label: \"رسالت\",\n color: \"#000000\",\n logo: `${CDN_BANKS}/resalat.svg`,\n },\n \"523388\": {\n name: \"Pasargad\",\n label: \"پاسارگاد (ویپاد)\",\n color: \"#FFC72C\",\n logo: `${CDN_BANKS}/pasargad.svg`,\n },\n \"505809\": {\n name: \"Khavarmianeh\",\n label: \"خاورمیانه\",\n color: \"#1F2B5B\",\n logo: `${CDN_BANKS}/khavarmianeh.svg`,\n },\n} as const;\n\nexport const MOBILE_OPERATORS = {\n MCI: {\n label: \"همراه اول\",\n logo: `${CDN_OPERATORS}/mci.svg`,\n prefixes: [\n \"0910\",\n \"0911\",\n \"0912\",\n \"0913\",\n \"0914\",\n \"0915\",\n \"0916\",\n \"0917\",\n \"0918\",\n \"0919\",\n \"0990\",\n \"0991\",\n \"0992\",\n \"0993\",\n \"0994\",\n ],\n },\n Irancell: {\n label: \"ایرانسل\",\n logo: `${CDN_OPERATORS}/irancell.svg`,\n prefixes: [\n \"0930\",\n \"0933\",\n \"0935\",\n \"0936\",\n \"0937\",\n \"0938\",\n \"0939\",\n \"0901\",\n \"0902\",\n \"0903\",\n \"0904\",\n \"0905\",\n \"0941\",\n ],\n },\n Rightel: {\n label: \"رایتل\",\n logo: `${CDN_OPERATORS}/rightel.svg`,\n prefixes: [\"0920\", \"0921\", \"0922\", \"0923\"],\n },\n Shatel: {\n label: \"شاتل موبایل\",\n logo: `${CDN_OPERATORS}/shatel.svg`,\n prefixes: [\"0998\"],\n },\n Taliya: {\n label: \"تالیا\",\n logo: `${CDN_OPERATORS}/taliya.png`,\n prefixes: [\"0932\"],\n },\n} as const;\n","import { BANKS, MOBILE_OPERATORS } from \"./data\";\n\nexport function verifyAndNormalize(value: string): string {\n if (!value) return \"\";\n const PERSIAN_ZERO = 1776;\n const PERSIAN_NINE = 1785;\n const ARABIC_ZERO = 1632;\n const ARABIC_NINE = 1641;\n const ARABIC_YEH = 1610;\n const PERSIAN_YE = 1740;\n const ARABIC_KAF = 1603;\n const PERSIAN_KE = 1705;\n let result = \"\";\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n let char = value[i];\n if (code >= PERSIAN_ZERO && code <= PERSIAN_NINE) {\n char = String(code - PERSIAN_ZERO);\n } else if (code >= ARABIC_ZERO && code <= ARABIC_NINE) {\n char = String(code - ARABIC_ZERO);\n } else if (code === ARABIC_YEH) {\n char = String.fromCharCode(PERSIAN_YE);\n } else if (code === ARABIC_KAF) {\n char = String.fromCharCode(PERSIAN_KE);\n }\n result += char;\n }\n return result;\n}\n\nexport type BankInfo = {\n name: string;\n label: string;\n color: string;\n logo: string;\n formatted: string;\n} | null;\n\nexport function getBankInfo(cardNumber: string): BankInfo {\n const normalized = verifyAndNormalize(cardNumber).replace(/[\\-\\s]/g, \"\");\n if (normalized.length < 6) return null;\n const bin = normalized.substring(0, 6);\n // @ts-ignore\n const bank = BANKS[bin];\n if (!bank) return null;\n return {\n ...bank,\n formatted: normalized.replace(/(\\d{4})(?=\\d)/g, \"$1-\"),\n };\n}\n\nexport type OperatorInfo = {\n name: string;\n label: string;\n logo: string;\n} | null;\n\nexport function getMobileOperator(mobile: string): OperatorInfo {\n const normalized = verifyAndNormalize(mobile);\n\n let prefix = \"\";\n if (normalized.startsWith(\"09\")) {\n prefix = normalized.substring(0, 4);\n } else if (normalized.startsWith(\"9\")) {\n prefix = \"0\" + normalized.substring(0, 3);\n } else if (normalized.startsWith(\"+98\")) {\n prefix = \"0\" + normalized.substring(3, 6);\n }\n\n if (prefix.length !== 4) return null;\n\n for (const [key, op] of Object.entries(MOBILE_OPERATORS)) {\n // @ts-ignore\n if (op.prefixes.includes(prefix)) {\n return {\n name: key,\n label: op.label,\n logo: op.logo,\n };\n }\n }\n\n return null;\n}\n\nexport function isMelliCode(code: string): boolean {\n if (!/^\\d{10}$/.test(code)) return false;\n if (/^(\\d)\\1+$/.test(code)) return false;\n const check = parseInt(code[9]);\n const sum =\n code\n .substring(0, 9)\n .split(\"\")\n .reduce((acc, x, i) => acc + parseInt(x) * (10 - i), 0) % 11;\n return sum < 2 ? check === sum : check === 11 - sum;\n}\nexport function isShenaseMelli(code: string): boolean {\n if (code.length !== 11 || !/^\\d{11}$/.test(code)) return false;\n const tenth = parseInt(code[9]);\n const inputCheck = parseInt(code[10]);\n const coefficients = [29, 27, 23, 19, 17, 29, 27, 23, 19, 17];\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n const digit = parseInt(code[i]);\n sum += (digit + tenth + 2) * coefficients[i];\n }\n const remainder = sum % 11;\n const calculatedCheck = remainder === 10 ? 0 : remainder;\n return calculatedCheck === inputCheck;\n}\nexport function isPassport(code: string): boolean {\n return /^[A-Za-z][0-9]{8,9}$/.test(code);\n}\nexport function isCardNumber(code: string): boolean {\n const sanitized = code.replace(/[\\-\\s]/g, \"\");\n if (!/^\\d{16}$/.test(sanitized)) return false;\n let sum = 0;\n let shouldDouble = false;\n for (let i = sanitized.length - 1; i >= 0; i--) {\n let digit = parseInt(sanitized[i]);\n if (shouldDouble) {\n digit *= 2;\n if (digit > 9) digit -= 9;\n }\n sum += digit;\n shouldDouble = !shouldDouble;\n }\n return sum % 10 === 0;\n}\ninterface MobileValidationOptions {\n strictZero?: boolean | \"optional\";\n}\nexport function isIranianMobile(\n mobile: string,\n { strictZero = \"optional\" }: MobileValidationOptions = {}\n): boolean {\n const corePattern = \"9\\\\d{9}\";\n let pattern = \"\";\n if (strictZero === true) pattern = `^0${corePattern}$`;\n else if (strictZero === false) pattern = `^${corePattern}$`;\n else pattern = `^(?:0|\\\\+98)?${corePattern}$`;\n return new RegExp(pattern).test(mobile);\n}\nexport function isSheba(code: string): boolean {\n const iban = code.toUpperCase().replace(/[\\-\\s]/g, \"\");\n if (iban.length !== 26 || !iban.startsWith(\"IR\")) return false;\n const newStr = iban.substring(4) + iban.substring(0, 4);\n const numericString = newStr\n .split(\"\")\n .map((c) => {\n const code = c.charCodeAt(0);\n return code >= 48 && code <= 57 ? c : (code - 55).toString();\n })\n .join(\"\");\n try {\n return BigInt(numericString) % BigInt(97) === BigInt(1);\n } catch {\n return false;\n }\n}\nexport function isPostalCode(code: string): boolean {\n return /^[1-9]\\d{9}$/.test(code);\n}\nexport function isLandline(code: string): boolean {\n return /^0\\d{2}\\d{8}$/.test(code);\n}\n","export const ERROR_MESSAGES = {\n fa: {\n melliCode: \"کد ملی نامعتبر است\",\n shenaseMelli: \"شناسه ملی نامعتبر است\",\n passport: \"شماره گذرنامه نامعتبر است\",\n cardNumber: \"شماره کارت نامعتبر است\",\n mobile: \"شماره موبایل نامعتبر است\",\n sheba: \"شماره شبا نامعتبر است\",\n postalCode: \"کد پستی نامعتبر است\",\n landline: \"شماره تلفن ثابت نامعتبر است\",\n },\n en: {\n melliCode: \"Invalid national code\",\n shenaseMelli: \"Invalid legal person ID (Shenase Melli)\",\n passport: \"Invalid passport number\",\n cardNumber: \"Invalid card number\",\n mobile: \"Invalid mobile number\",\n sheba: \"Invalid Sheba (IBAN) number\",\n postalCode: \"Invalid postal code\",\n landline: \"Invalid landline number\",\n },\n} as const;\n\nexport type Language = keyof typeof ERROR_MESSAGES;\n\nexport interface BaseOptions {\n message?: string;\n locale?: Language;\n}\n\nexport const getMessage = (\n key: keyof typeof ERROR_MESSAGES[\"fa\"],\n options?: BaseOptions\n): string => {\n if (options?.message) return options.message;\n const lang = options?.locale || \"fa\";\n return ERROR_MESSAGES[lang][key];\n};"],"mappings":"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","names":["index_exports","__export","getBankInfo","getMobileOperator","isCardNumber","isIranianMobile","isLandline","isMelliCode","isPassport","isPostalCode","isSheba","isShenaseMelli","preprocessNumber","verifyAndNormalize","zCardNumber","zIranianMobile","zLandline","zMelliCode","zPassport","zPostalCode","zSheba","zShenaseMelli","__toCommonJS","import_zod","CDN_BANKS","CDN_OPERATORS","BANKS","MOBILE_OPERATORS","verifyAndNormalize","value","PERSIAN_ZERO","PERSIAN_NINE","ARABIC_ZERO","ARABIC_NINE","ARABIC_YEH","PERSIAN_YE","ARABIC_KAF","PERSIAN_KE","result","i","code","char","getBankInfo","cardNumber","normalized","bin","bank","BANKS","getMobileOperator","mobile","prefix","key","op","MOBILE_OPERATORS","isMelliCode","check","sum","acc","x","isShenaseMelli","tenth","inputCheck","coefficients","digit","remainder","isPassport","isCardNumber","sanitized","shouldDouble","isIranianMobile","strictZero","corePattern","pattern","isSheba","iban","numericString","c","isPostalCode","isLandline","ERROR_MESSAGES","getMessage","key","options","lang","zMelliCode","options","val","isMelliCode","getMessage","zShenaseMelli","isShenaseMelli","zPassport","isPassport","zCardNumber","isCardNumber","zIranianMobile","isIranianMobile","zSheba","isSheba","zPostalCode","isPostalCode","zLandline","isLandline","preprocessNumber","schema","verifyAndNormalize"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/helpers.ts","../src/locales.ts","../src/modules/identity.ts","../src/data/constants.ts","../src/modules/financial.ts","../src/modules/contact.ts","../src/data/plates.ts","../src/modules/vehicle.ts","../src/modules/bill.ts","../src/modules/date.ts","../src/modules/crypto.ts","../src/index.ts"],"names":["verifyAndNormalize","value","PERSIAN_ZERO","PERSIAN_NINE","ARABIC_ZERO","ARABIC_NINE","ARABIC_YEH","PERSIAN_YE","ARABIC_KAF","PERSIAN_KE","result","i","code","char","ERROR_MESSAGES","getMessage","key","options","lang","isMelliCode","normalized","check","sum","acc","x","isShenaseMelli","tenth","inputCheck","coefficients","digit","remainder","isPassport","CDN_BANKS","CDN_OPERATORS","CDN_BILLS","BANKS","MOBILE_OPERATORS","BILL_TYPES","SHEBA_CODES","getBankInfo","cardNumber","bin","bank","isCardNumber","shouldDouble","isSheba","iban","numericString","c","getBankFromSheba","sheba","normalizedSheba","bankCode","cardBin","bankData","getFinancialInfo","isValid","isFinancialValue","info","getMobileOperator","mobile","prefix","op","isIranianMobile","strictZero","corePattern","pattern","isPostalCode","isLandline","PLATE_CITY_CODES","ALL_PROVINCES","getPlateInfo","plate","nPlate","regex","match","letter","cityCode","provinceData","codeEntry","codeStr","cityDetail","d","isPlateNumber","calculateBillCheckDigit","weight","isBillIdValid","billId","nBill","checkDigit","core","isPaymentIdValid","paymentId","nPay","payCheckDigit1","payCore1","payCheckDigit2","combinedCore","getBillInfo","typeDigit","typeInfo","amount","formattedAmount","amountCore","isJalaliLeapYear","year","rem","getDaysInJalaliMonth","month","getJalaliDateInfo","date","day","isLeap","maxDays","isJalaliDate","ALPHABET","ALPHABET_MAP","fromBase58","string","bytes","j","carry","getCryptoInfo","address","decoded","isLowercase","isUppercase","isCryptoAddress","ticker","zMelliCode","z","val","zShenaseMelli","zPassport","zCardNumber","zIranianMobile","zSheba","zPostalCode","zLandline","zBillId","zPaymentId","zPlateNumber","zJalaliDate","zFinancial","zCrypto","preprocessNumber","schema"],"mappings":"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","file":"index.js","sourcesContent":["export function verifyAndNormalize(value: string): string {\n if (!value) return \"\";\n const PERSIAN_ZERO = 1776;\n const PERSIAN_NINE = 1785;\n const ARABIC_ZERO = 1632;\n const ARABIC_NINE = 1641;\n const ARABIC_YEH = 1610;\n const PERSIAN_YE = 1740;\n const ARABIC_KAF = 1603;\n const PERSIAN_KE = 1705;\n\n let result = \"\";\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n let char = value[i];\n\n if (code >= PERSIAN_ZERO && code <= PERSIAN_NINE) {\n char = String(code - PERSIAN_ZERO);\n } else if (code >= ARABIC_ZERO && code <= ARABIC_NINE) {\n char = String(code - ARABIC_ZERO);\n } else if (code === ARABIC_YEH) {\n char = String.fromCharCode(PERSIAN_YE);\n } else if (code === ARABIC_KAF) {\n char = String.fromCharCode(PERSIAN_KE);\n }\n result += char;\n }\n return result;\n}\n","export const ERROR_MESSAGES = {\n fa: {\n melliCode: \"کد ملی نامعتبر است\",\n shenaseMelli: \"شناسه ملی نامعتبر است\",\n passport: \"شماره گذرنامه نامعتبر است\",\n cardNumber: \"شماره کارت نامعتبر است\",\n mobile: \"شماره موبایل نامعتبر است\",\n sheba: \"شماره شبا نامعتبر است\",\n postalCode: \"کد پستی نامعتبر است\",\n landline: \"شماره تلفن ثابت نامعتبر است\",\n billId: \"شناسه قبض نامعتبر است\",\n paymentId: \"شناسه پرداخت نامعتبر است\",\n plateNumber: \"پلاک خودرو نامعتبر است\",\n date: \"تاریخ وارد شده نامعتبر است\",\n financial: \"شماره کارت یا شبا معتبر نیست\",\n crypto: \"آدرس کیف پول معتبر نیست\"\n },\n en: {\n melliCode: \"Invalid national code\",\n shenaseMelli: \"Invalid legal person ID (Shenase Melli)\",\n passport: \"Invalid passport number\",\n cardNumber: \"Invalid card number\",\n mobile: \"Invalid mobile number\",\n sheba: \"Invalid Sheba (IBAN) number\",\n postalCode: \"Invalid postal code\",\n landline: \"Invalid landline number\",\n billId: \"Invalid Bill ID\",\n paymentId: \"Invalid Payment ID\",\n plateNumber: \"Invalid License Plate\",\n date: \"Invalid Date\",\n financial: \"Invalid Sheba (IBAN) number or card number\",\n crypto: \"Invalid Wallet address\"\n },\n} as const;\n\nexport type Language = keyof typeof ERROR_MESSAGES;\n\nexport interface BaseOptions {\n message?: string;\n locale?: Language;\n}\n\nexport const getMessage = (\n key: keyof (typeof ERROR_MESSAGES)[\"fa\"],\n options?: BaseOptions\n): string => {\n if (options?.message) return options.message;\n const lang = options?.locale || \"fa\";\n return ERROR_MESSAGES[lang][key];\n};\n","import { verifyAndNormalize } from \"../utils/helpers\";\n\nexport function isMelliCode(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n if (!/^\\d{10}$/.test(normalized)) return false;\n if (/^(\\d)\\1+$/.test(normalized)) return false;\n const check = parseInt(normalized[9]);\n const sum =\n normalized\n .substring(0, 9)\n .split(\"\")\n .reduce((acc, x, i) => acc + parseInt(x) * (10 - i), 0) % 11;\n return sum < 2 ? check === sum : check === 11 - sum;\n}\n\nexport function isShenaseMelli(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n if (normalized.length !== 11 || !/^\\d{11}$/.test(normalized)) return false;\n const tenth = parseInt(normalized[9]);\n const inputCheck = parseInt(normalized[10]);\n const coefficients = [29, 27, 23, 19, 17, 29, 27, 23, 19, 17];\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n const digit = parseInt(normalized[i]);\n sum += (digit + tenth + 2) * coefficients[i];\n }\n const remainder = sum % 11;\n const calculatedCheck = remainder === 10 ? 0 : remainder;\n return calculatedCheck === inputCheck;\n}\n\nexport function isPassport(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n return /^[A-Za-z][0-9]{8,9}$/.test(normalized);\n}\n","const CDN_BANKS =\n \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks\";\nconst CDN_OPERATORS =\n \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators\";\nconst CDN_BILLS =\n \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/bills\";\n\nexport const BANKS = {\n \"603799\": {\n name: \"Melli\",\n label: \"ملی\",\n color: \"#EF3F3E\",\n logo: `${CDN_BANKS}/melli.svg`,\n },\n \"589210\": {\n name: \"Sepah\",\n label: \"سپه\",\n color: \"#FFC600\",\n logo: `${CDN_BANKS}/sepah.svg`,\n },\n \"627648\": {\n name: \"ToseeSaderat\",\n label: \"توسعه صادرات\",\n color: \"#EDB12C\",\n logo: `${CDN_BANKS}/tosee-saderat.svg`,\n },\n \"627961\": {\n name: \"SanatMadar\",\n label: \"صنعت و معدن\",\n color: \"#B3986D\",\n logo: `${CDN_BANKS}/sanat-madan.svg`,\n },\n \"603770\": {\n name: \"Keshavarzi\",\n label: \"کشاورزی\",\n color: \"#4E7A46\",\n logo: `${CDN_BANKS}/keshavarzi.svg`,\n },\n \"628023\": {\n name: \"Maskan\",\n label: \"مسکن\",\n color: \"#F05A23\",\n logo: `${CDN_BANKS}/maskan.svg`,\n },\n \"627760\": {\n name: \"PostBank\",\n label: \"پست بانک\",\n color: \"#00764D\",\n logo: `${CDN_BANKS}/post-bank.svg`,\n },\n \"502908\": {\n name: \"ToseeTaavon\",\n label: \"توسعه تعاون\",\n color: \"#0064A6\",\n logo: `${CDN_BANKS}/tosee-taavon.svg`,\n },\n \"627412\": {\n name: \"EghtesadNovin\",\n label: \"اقتصاد نوین\",\n color: \"#652D86\",\n logo: `${CDN_BANKS}/eghtesad-novin.svg`,\n },\n \"622106\": {\n name: \"Parsian\",\n label: \"پارسیان\",\n color: \"#B3282D\",\n logo: `${CDN_BANKS}/parsian.svg`,\n },\n \"502229\": {\n name: \"Pasargad\",\n label: \"پاسارگاد\",\n color: \"#FFC72C\",\n logo: `${CDN_BANKS}/pasargad.svg`,\n },\n \"627488\": {\n name: \"Karafarin\",\n label: \"کارآفرین\",\n color: \"#3B9C56\",\n logo: `${CDN_BANKS}/karafarin.svg`,\n },\n \"621986\": {\n name: \"Saman\",\n label: \"سامان\",\n color: \"#006DB6\",\n logo: `${CDN_BANKS}/saman.svg`,\n },\n \"639346\": {\n name: \"Sina\",\n label: \"سینا\",\n color: \"#004E8A\",\n logo: `${CDN_BANKS}/sina.svg`,\n },\n \"639607\": {\n name: \"Sarmayeh\",\n label: \"سرمایه\",\n color: \"#0077B6\",\n logo: `${CDN_BANKS}/sarmayeh.svg`,\n },\n \"636214\": {\n name: \"Ayandeh\",\n label: \"آینده\",\n color: \"#8B5F34\",\n logo: `${CDN_BANKS}/ayandeh.svg`,\n },\n \"502806\": {\n name: \"Shahr\",\n label: \"شهر\",\n color: \"#ED3438\",\n logo: `${CDN_BANKS}/shahr.svg`,\n },\n \"502938\": {\n name: \"Day\",\n label: \"دی\",\n color: \"#0099CC\",\n logo: `${CDN_BANKS}/day.svg`,\n },\n \"603769\": {\n name: \"Saderat\",\n label: \"صادرات\",\n color: \"#1A3266\",\n logo: `${CDN_BANKS}/saderat.svg`,\n },\n \"610433\": {\n name: \"Mellat\",\n label: \"ملت\",\n color: \"#D70005\",\n logo: `${CDN_BANKS}/mellat.svg`,\n },\n \"627353\": {\n name: \"Tejarat\",\n label: \"تجارت\",\n color: \"#005696\",\n logo: `${CDN_BANKS}/tejarat.svg`,\n },\n \"585983\": {\n name: \"Tejarat\",\n label: \"تجارت\",\n color: \"#005696\",\n logo: `${CDN_BANKS}/tejarat.svg`,\n },\n \"589463\": {\n name: \"Refah\",\n label: \"رفاه\",\n color: \"#2B3C8E\",\n logo: `${CDN_BANKS}/refah.svg`,\n },\n \"627381\": {\n name: \"Ansar\",\n label: \"انصار\",\n color: \"#F7B500\",\n logo: `${CDN_BANKS}/ansar.svg`,\n },\n \"505785\": {\n name: \"IranZamin\",\n label: \"ایران زمین\",\n color: \"#92278F\",\n logo: `${CDN_BANKS}/iran-zamin.svg`,\n },\n \"505416\": {\n name: \"Gardeshgari\",\n label: \"گردشگری\",\n color: \"#1D3265\",\n logo: `${CDN_BANKS}/gardeshgari.svg`,\n },\n \"636949\": {\n name: \"Hekmat\",\n label: \"حکمت\",\n color: \"#5F2C83\",\n logo: `${CDN_BANKS}/hekmat.svg`,\n },\n \"505801\": {\n name: \"Kosar\",\n label: \"کوثر\",\n color: \"#C62828\",\n logo: `${CDN_BANKS}/kosar.svg`,\n },\n \"606373\": {\n name: \"MehrIran\",\n label: \"مهر ایران\",\n color: \"#359E49\",\n logo: `${CDN_BANKS}/mehr-iran.svg`,\n },\n \"504172\": {\n name: \"Resalat\",\n label: \"رسالت\",\n color: \"#000000\",\n logo: `${CDN_BANKS}/resalat.svg`,\n },\n \"523388\": {\n name: \"Pasargad\",\n label: \"پاسارگاد (ویپاد)\",\n color: \"#FFC72C\",\n logo: `${CDN_BANKS}/pasargad.svg`,\n },\n \"505809\": {\n name: \"Khavarmianeh\",\n label: \"خاورمیانه\",\n color: \"#1F2B5B\",\n logo: `${CDN_BANKS}/khavarmianeh.svg`,\n },\n} as const;\n\nexport const MOBILE_OPERATORS = {\n MCI: {\n label: \"همراه اول\",\n logo: `${CDN_OPERATORS}/mci.svg`,\n prefixes: [\n \"0910\",\n \"0911\",\n \"0912\",\n \"0913\",\n \"0914\",\n \"0915\",\n \"0916\",\n \"0917\",\n \"0918\",\n \"0919\",\n \"0990\",\n \"0991\",\n \"0992\",\n \"0993\",\n \"0994\",\n ],\n },\n Irancell: {\n label: \"ایرانسل\",\n logo: `${CDN_OPERATORS}/irancell.svg`,\n prefixes: [\n \"0930\",\n \"0933\",\n \"0935\",\n \"0936\",\n \"0937\",\n \"0938\",\n \"0939\",\n \"0901\",\n \"0902\",\n \"0903\",\n \"0904\",\n \"0905\",\n \"0941\",\n ],\n },\n Rightel: {\n label: \"رایتل\",\n logo: `${CDN_OPERATORS}/rightel.svg`,\n prefixes: [\"0920\", \"0921\", \"0922\", \"0923\"],\n },\n Shatel: {\n label: \"شاتل موبایل\",\n logo: `${CDN_OPERATORS}/shatel.svg`,\n prefixes: [\"0998\"],\n },\n Taliya: {\n label: \"تالیا\",\n logo: `${CDN_OPERATORS}/taliya.png`,\n prefixes: [\"0932\"],\n },\n} as const;\n\nexport const BILL_TYPES = {\n 1: {\n label: \"آب\",\n slug: \"water\",\n color: \"#00a8ff\",\n logo: `${CDN_BILLS}/water.svg`,\n },\n 2: {\n label: \"برق\",\n slug: \"electricity\",\n color: \"#fbc531\",\n logo: `${CDN_BILLS}/electricity.svg`,\n },\n 3: {\n label: \"گاز\",\n slug: \"gas\",\n color: \"#e84118\",\n logo: `${CDN_BILLS}/gas.svg`,\n },\n 4: {\n label: \"تلفن ثابت\",\n slug: \"phone\",\n color: \"#273c75\",\n logo: `${CDN_BILLS}/phone.svg`,\n },\n 5: {\n label: \"تلفن همراه\",\n slug: \"mobile\",\n color: \"#8c7ae6\",\n logo: `${CDN_BILLS}/mobile.svg`,\n },\n 6: {\n label: \"عوارض شهرداری\",\n slug: \"municipality\",\n color: \"#44bd32\",\n logo: `${CDN_BILLS}/municipality.svg`,\n },\n 9: {\n label: \"جرایم رانندگی\",\n slug: \"traffic\",\n color: \"#c23616\",\n logo: `${CDN_BILLS}/traffic.svg`,\n },\n} as const;\n\nexport const SHEBA_CODES: Record<string, string> = {\n \"011\": \"627961\", \n \"012\": \"610433\", \n \"013\": \"589463\", \n \"014\": \"628023\", \n \"015\": \"589210\", \n \"016\": \"603770\", \n \"017\": \"603799\", \n \"018\": \"627353\", \n \"019\": \"603769\", \n \"020\": \"627648\", \n \"021\": \"627760\", \n \"022\": \"502908\", \n \"053\": \"627488\", \n \"054\": \"622106\", \n \"055\": \"627412\", \n \"056\": \"621986\", \n \"057\": \"502229\", \n \"058\": \"639607\", \n \"059\": \"639346\", \n \"060\": \"606373\", \n \"061\": \"502806\", \n \"062\": \"636214\", \n \"063\": \"627381\", \n \"064\": \"505416\", \n \"065\": \"636949\", \n \"066\": \"502938\", \n \"069\": \"505785\", \n \"070\": \"504172\", \n \"078\": \"505809\", \n};\n","import { verifyAndNormalize } from \"../utils/helpers\";\nimport { BANKS, SHEBA_CODES } from \"../data/constants\";\n\nexport type BankInfo = {\n name: string;\n label: string;\n color: string;\n logo: string;\n formatted: string;\n} | null;\n\nexport function getBankInfo(cardNumber: string): BankInfo {\n const normalized = verifyAndNormalize(cardNumber).replace(/[\\-\\s]/g, \"\");\n\n if (normalized.length >= 6) {\n const bin = normalized.substring(0, 6);\n // @ts-ignore\n const bank = BANKS[bin];\n if (bank) {\n return {\n ...bank,\n formatted: normalized.replace(/(\\d{4})(?=\\d)/g, \"$1-\"),\n };\n }\n }\n return null;\n}\n\nexport function isCardNumber(code: string): boolean {\n const normalized = verifyAndNormalize(code).replace(/[\\-\\s]/g, \"\");\n if (!/^\\d{16}$/.test(normalized)) return false;\n let sum = 0;\n let shouldDouble = false;\n for (let i = normalized.length - 1; i >= 0; i--) {\n let digit = parseInt(normalized[i]);\n if (shouldDouble) {\n digit *= 2;\n if (digit > 9) digit -= 9;\n }\n sum += digit;\n shouldDouble = !shouldDouble;\n }\n return sum % 10 === 0;\n}\n\nexport function isSheba(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n const iban = normalized.toUpperCase().replace(/[\\-\\s]/g, \"\");\n if (iban.length !== 26 || !iban.startsWith(\"IR\")) return false;\n const newStr = iban.substring(4) + iban.substring(0, 4);\n const numericString = newStr\n .split(\"\")\n .map((c) => {\n const code = c.charCodeAt(0);\n return code >= 48 && code <= 57 ? c : (code - 55).toString();\n })\n .join(\"\");\n try {\n return BigInt(numericString) % BigInt(97) === BigInt(1);\n } catch {\n return false;\n }\n}\n\nfunction getBankFromSheba(sheba: string): BankInfo {\n const normalizedSheba = sheba.toUpperCase();\n if (normalizedSheba.length < 7) return null;\n\n const bankCode = normalizedSheba.substring(4, 7);\n\n const cardBin = SHEBA_CODES[bankCode];\n\n if (cardBin) {\n // @ts-ignore\n const bankData = BANKS[cardBin];\n if (bankData) {\n return {\n ...bankData,\n formatted: normalizedSheba,\n };\n }\n }\n return null;\n}\n\nexport type FinancialInfo = {\n type: \"card\" | \"sheba\" | \"unknown\";\n value: string;\n isValid: boolean;\n bank: BankInfo;\n} | null;\n\nexport function getFinancialInfo(value: string): FinancialInfo {\n const normalized = verifyAndNormalize(value).replace(/[\\-\\s]/g, \"\");\n\n if (normalized.toUpperCase().startsWith(\"IR\")) {\n const isValid = isSheba(normalized);\n const bank = getBankFromSheba(normalized);\n return {\n type: \"sheba\",\n value: normalized.toUpperCase(),\n isValid,\n bank,\n };\n }\n\n if (/^\\d{6,16}$/.test(normalized)) {\n const isValid = isCardNumber(normalized);\n const bank = getBankInfo(normalized);\n\n return {\n type: \"card\",\n value: normalized,\n isValid,\n bank,\n };\n }\n\n return { type: \"unknown\", value: normalized, isValid: false, bank: null };\n}\n\nexport function isFinancialValue(value: string): boolean {\n const info = getFinancialInfo(value);\n return info ? info.isValid : false;\n}\n","import { verifyAndNormalize } from \"../utils/helpers\";\nimport { MOBILE_OPERATORS } from \"../data/constants\";\n\nexport type OperatorInfo = {\n name: string;\n label: string;\n logo: string;\n} | null;\n\nexport function getMobileOperator(mobile: string): OperatorInfo {\n const normalized = verifyAndNormalize(mobile);\n let prefix = \"\";\n if (normalized.startsWith(\"09\")) {\n prefix = normalized.substring(0, 4);\n } else if (normalized.startsWith(\"9\")) {\n prefix = \"0\" + normalized.substring(0, 3);\n } else if (normalized.startsWith(\"+98\")) {\n prefix = \"0\" + normalized.substring(3, 6);\n }\n if (prefix.length !== 4) return null;\n for (const [key, op] of Object.entries(MOBILE_OPERATORS)) {\n // @ts-ignore\n if (op.prefixes.includes(prefix)) {\n return {\n name: key,\n label: op.label,\n logo: op.logo,\n };\n }\n }\n return null;\n}\n\ninterface MobileValidationOptions {\n strictZero?: boolean | \"optional\";\n}\n\nexport function isIranianMobile(\n mobile: string,\n { strictZero = \"optional\" }: MobileValidationOptions = {}\n): boolean {\n const normalized = verifyAndNormalize(mobile);\n const corePattern = \"9\\\\d{9}\";\n let pattern = \"\";\n if (strictZero === true) pattern = `^0${corePattern}$`;\n else if (strictZero === false) pattern = `^${corePattern}$`;\n else pattern = `^(?:0|\\\\+98)?${corePattern}$`;\n return new RegExp(pattern).test(normalized);\n}\n\nexport function isPostalCode(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n return /^[1-9]\\d{9}$/.test(normalized);\n}\n\nexport function isLandline(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n return /^0\\d{2}\\d{8}$/.test(normalized);\n}\n","export const PLATE_CITY_CODES = [\n {\n province: \"آذربایجان شرقی\",\n codes: [\n {\n code: \"15\",\n details: [\n {\n city: \"تبریز\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"25\",\n details: [\n { city: \"اهر\", letters: [\"س\"] },\n { city: \"آذرشهر\", letters: [\"ی\"] },\n { city: \"بستانآباد\", letters: [\"م\"] },\n { city: \"بناب\", letters: [\"ل\"] },\n { city: \"جلفا\", letters: [\"ط\"] },\n { city: \"سراب\", letters: [\"ص\"] },\n { city: \"شبستر\", letters: [\"ن\"] },\n { city: \"کلیبر\", letters: [\"و\"] },\n { city: \"مراغه\", letters: [\"ب\"] },\n { city: \"مرند\", letters: [\"ج\"] },\n { city: \"میانه\", letters: [\"د\"] },\n { city: \"هریس\", letters: [\"ه\"] },\n { city: \"هشترود\", letters: [\"ق\"] },\n ],\n },\n {\n code: \"35\",\n details: [\n { city: \"اسکو\", letters: [\"ب\"] },\n { city: \"مرند\", letters: [\"ط\"] },\n { city: \"مراغه\", letters: [\"ق\"] },\n { city: \"تبریز\", letters: [\"ل\", \"م\"] },\n { city: \"آذرشهر\", letters: [\"ص\"] },\n { city: \"اهر\", letters: [\"ن\"] },\n { city: \"بناب\", letters: [\"س\"] },\n { city: \"بستان آباد\", letters: [\"ی\"] },\n { city: \"جلفا\", letters: [\"ه\"] },\n { city: \"سراب\", letters: [\"و\"] },\n { city: \"شبستر\", letters: [\"د\"] },\n { city: \"کلیبر\", letters: [\"ج\"] },\n { city: \"میانه\", letters: [\"ز\"] },\n { city: \"هریس\", letters: [\"الف\"] },\n { city: \"هشترود\", letters: [\"ت\"] },\n { city: \"تبریز و چاراویماق\", letters: [\"س\"] },\n ],\n },\n ],\n },\n {\n province: \"آذربایجان غربی\",\n codes: [\n {\n code: \"17\",\n details: [\n {\n city: \"ارومیه\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n ],\n },\n { city: \"خوی\", letters: [\"م\"] },\n ],\n },\n {\n code: \"27\",\n details: [\n { city: \"خوی\", letters: [\"ب\"] },\n { city: \"مهاباد\", letters: [\"ج\"] },\n { city: \"ماکو\", letters: [\"د\"] },\n { city: \"سلماس\", letters: [\"س\"] },\n { city: \"نقده\", letters: [\"ص\"] },\n { city: \"میاندوآب\", letters: [\"ط\", \"ن\"] },\n { city: \"تکاب\", letters: [\"ق\"] },\n { city: \"شاهیندژ\", letters: [\"ل\"] },\n { city: \"سردشت\", letters: [\"م\"] },\n { city: \"بوکان\", letters: [\"ن\"] },\n { city: \"چالدران\", letters: [\"ه\"] },\n { city: \"پیرانشهر\", letters: [\"و\"] },\n { city: \"اشنویه\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"37\",\n details: [\n { city: \"خوی\", letters: [\"ب\"] },\n { city: \"میاندوآب\", letters: [\"ج\"] },\n { city: \"نقده\", letters: [\"د\"] },\n { city: \"مهاباد\", letters: [\"ص\"] },\n { city: \"بوکان\", letters: [\"ط\"] },\n { city: \"سلماس\", letters: [\"ق\"] },\n { city: \"ماکو\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"اردبیل\",\n codes: [\n {\n code: \"91\",\n details: [\n { city: \"اردبیل\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"م\", \"و\", \"ی\"] },\n { city: \"پارسآباد\", letters: [\"ص\", \"م\", \"و\", \"ی\"] },\n { city: \"خلخال\", letters: [\"ط\"] },\n { city: \"گرمی\", letters: [\"ل\"] },\n { city: \"بیلهسوار\", letters: [\"ل\"] },\n { city: \"مشکینشهر\", letters: [\"ل\", \"ن\"] },\n { city: \"نیر\", letters: [\"م\"] },\n { city: \"کوثر\", letters: [\"م\", \"و\"] },\n { city: \"نمین\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"اصفهان\",\n codes: [\n {\n code: \"13\",\n details: [\n {\n city: \"اصفهان\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n { city: \"فلاورجان\", letters: [\"ص\"] },\n ],\n },\n {\n code: \"23\",\n details: [\n { city: \"کاشان\", letters: [\"ب\"] },\n { city: \"نجفآباد\", letters: [\"ج\"] },\n { city: \"شهرضا\", letters: [\"د\"] },\n { city: \"خمینیشهر\", letters: [\"س\"] },\n { city: \"گلپایگان\", letters: [\"ص\"] },\n { city: \"نطنز\", letters: [\"ط\"] },\n { city: \"اردستان\", letters: [\"ق\"] },\n { city: \"خوانسار\", letters: [\"ل\"] },\n { city: \"نایین\", letters: [\"م\"] },\n { city: \"سمیرم\", letters: [\"ن\"] },\n { city: \"فلاورجان\", letters: [\"ه\"] },\n { city: \"فریدونشهر\", letters: [\"و\"] },\n { city: \"لنجان\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"43\",\n details: [\n { city: \"فریدن\", letters: [\"ب\"] },\n { city: \"مبارکه\", letters: [\"ج\", \"ط\"] },\n { city: \"شاهینشهر و میمه\", letters: [\"د\", \"ل\"] },\n { city: \"آران و بیدگل\", letters: [\"س\"] },\n { city: \"تیران و کرون\", letters: [\"ص\"] },\n { city: \"دهاقان\", letters: [\"ق\"] },\n { city: \"نجفآباد\", letters: [\"م\"] },\n { city: \"خمینیشهر\", letters: [\"ن\"] },\n { city: \"لنجان\", letters: [\"ه\"] },\n { city: \"کاشان\", letters: [\"و\"] },\n { city: \"فلاورجان\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"53\",\n details: [\n { city: \"اصفهان\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ق\", \"ل\", \"و\"] },\n { city: \"شهرضا\", letters: [\"ط\"] },\n { city: \"شاهینشهر و میمه\", letters: [\"م\"] },\n { city: \"نجفآباد\", letters: [\"ن\"] },\n { city: \"کاشان\", letters: [\"ه\"] },\n { city: \"خمینیشهر\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"67\",\n details: [\n {\n city: \"اصفهان\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ط\", \"ل\", \"م\", \"ن\", \"و\"],\n },\n { city: \"شاهینشهر و میمه\", letters: [\"ق\"] },\n { city: \"لنجان\", letters: [\"ص\"] },\n ],\n },\n ],\n },\n {\n province: \"البرز\",\n codes: [\n {\n code: \"21\",\n details: [\n { city: \"ساوجبلاغ\", letters: [\"ص\"] },\n { city: \"کرج\", letters: [\"ل\", \"و\"] },\n ],\n },\n {\n code: \"30\",\n details: [{ city: \"کرج\", letters: [\"د\", \"س\", \"ل\", \"م\", \"ه\"] }],\n },\n {\n code: \"38\",\n details: [\n { city: \"کرج\", letters: [\"ب\", \"د\", \"س\", \"م\", \"ن\", \"ه\", \"ی\"] },\n ],\n },\n {\n code: \"68\",\n details: [\n {\n city: \"کرج\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"78\",\n details: [{ city: \"ساوجبلاغ\", letters: [\"ط\"] }],\n },\n ],\n },\n {\n province: \"ایلام\",\n codes: [\n {\n code: \"98\",\n details: [\n { city: \"ایلام\", letters: [\"ب\", \"ج\", \"د\"] },\n { city: \"مهران\", letters: [\"ص\"] },\n { city: \"بدره\", letters: [\"ط\"] },\n { city: \"دهلران\", letters: [\"ق\"] },\n { city: \"چرداول\", letters: [\"ل\"] },\n { city: \"ایوان\", letters: [\"م\"] },\n { city: \"آبدانان\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"بوشهر\",\n codes: [\n {\n code: \"48\",\n details: [\n {\n city: \"بوشهر\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"58\",\n details: [\n { city: \"دشتستان\", letters: [\"ب\", \"م\", \"و\"] },\n { city: \"گناوه\", letters: [\"ج\", \"ه\"] },\n { city: \"کنگان، عسلویه\", letters: [\"د\", \"ن\"] },\n { city: \"تنگستان\", letters: [\"س\"] },\n { city: \"دشتی\", letters: [\"ص\", \"ی\"] },\n { city: \"دیر\", letters: [\"ط\"] },\n { city: \"دیلم\", letters: [\"ق\"] },\n { city: \"جم\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"تهران\",\n codes: [\n {\n code: \"11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 20, 40, 50, 60\",\n details: [\n {\n city: \"تهران (شهر)\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"21\",\n details: [\n { city: \"اسلامشهر\", letters: [\"ب\", \"ی\"] },\n { city: \"رباطکریم\", letters: [\"م\"] },\n { city: \"پاکدشت\", letters: [\"ل\"] },\n ],\n },\n {\n code: \"30\",\n details: [\n { city: \"اسلامشهر\", letters: [\"ق\"] },\n { city: \"پاکدشت\", letters: [\"ن\"] },\n ],\n },\n {\n code: \"78\",\n details: [\n { city: \"اسلامشهر\", letters: [\"ب\", \"ق\"] },\n { city: \"رباطکریم\", letters: [\"ج\"] },\n { city: \"ری\", letters: [\"ن\"] },\n { city: \"شمیرانات\", letters: [\"و\"] },\n ],\n },\n {\n code: \"38\",\n details: [{ city: \"رباطکریم\", letters: [\"ل\"] }],\n },\n ],\n },\n {\n province: \"چهارمحال و بختیاری\",\n codes: [\n {\n code: \"71\",\n details: [\n {\n city: \"شهرکرد\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"81\",\n details: [\n { city: \"بروجن\", letters: [\"ب\", \"ق\"] },\n { city: \"لردگان\", letters: [\"س\"] },\n { city: \"فارسان\", letters: [\"د\"] },\n { city: \"اردل\", letters: [\"ج\"] },\n { city: \"کوهرنگ\", letters: [\"ص\"] },\n { city: \"کیار\", letters: [\"ط\"] },\n { city: \"بن\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"خراسان شمالی\",\n codes: [\n {\n code: \"32\",\n details: [{ city: \"بجنورد\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\"] }],\n },\n {\n code: \"26\",\n details: [\n { city: \"شیروان\", letters: [\"ص\", \"ب\"] },\n { city: \"اسفراین\", letters: [\"ج\", \"ط\"] },\n { city: \"مانه و سملقان\", letters: [\"د\", \"ل\"] },\n { city: \"فاروج\", letters: [\"م\"] },\n { city: \"بجنورد\", letters: [\"ب\", \"ج\", \"د\"] },\n { city: \"جاجرم و گرمه\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"خراسان رضوی\",\n codes: [\n {\n code: \"12\",\n details: [\n {\n city: \"مشهد\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"32\",\n details: [\n { city: \"نیشابور\", letters: [\"ب\", \"ی\"] },\n { city: \"سبزوار\", letters: [\"ج\"] },\n { city: \"تربتجام\", letters: [\"ص\"] },\n { city: \"قوچان\", letters: [\"ط\"] },\n { city: \"گناباد\", letters: [\"ق\"] },\n { city: \"تربتحیدریه\", letters: [\"ل\", \"ن\"] },\n { city: \"کاشمر\", letters: [\"م\"] },\n { city: \"تایباد\", letters: [\"ه\"] },\n { city: \"مشهد\", letters: [\"و\"] },\n ],\n },\n {\n code: \"36\",\n details: [\n { city: \"مشهد\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ه\", \"و\"] },\n { city: \"کاشمر\", letters: [\"ق\"] },\n { city: \"نیشابور\", letters: [\"ل\"] },\n { city: \"سبزوار\", letters: [\"م\"] },\n { city: \"تربت حیدریه\", letters: [\"ن\"] },\n { city: \"تربتجام\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"42\",\n details: [\n { city: \"فریمان\", letters: [\"ب\"] },\n { city: \"مشهد\", letters: [\"ج\", \"ق\", \"ه\", \"و\"] },\n { city: \"سرخس\", letters: [\"د\"] },\n { city: \"درگز\", letters: [\"س\"] },\n { city: \"خواف\", letters: [\"ص\"] },\n { city: \"چناران\", letters: [\"ط\"] },\n { city: \"بردسکن\", letters: [\"ل\"] },\n { city: \"رشتخوار\", letters: [\"م\"] },\n { city: \"سبزوار\", letters: [\"ن\"] },\n { city: \"تربت حیدریه\", letters: [\"ی\"] },\n { city: \"کلات\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"74\",\n details: [\n {\n city: \"مشهد\",\n letters: [\"ب\", \"د\", \"س\", \"ص\", \"ق\", \"م\", \"ن\", \"ه\", \"و\", \"ی\"],\n },\n { city: \"قوچان\", letters: [\"ج\"] },\n { city: \"نیشابور\", letters: [\"ط\"] },\n { city: \"سبزوار\", letters: [\"ل\"] },\n { city: \"گناباد\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"خراسان جنوبی\",\n codes: [\n {\n code: \"32\",\n details: [{ city: \"بیرجند\", letters: [\"د\"] }],\n },\n {\n code: \"52\",\n details: [\n { city: \"بیرجند\", letters: [\"ب\", \"ج\", \"د\"] },\n { city: \"قاینات\", letters: [\"ص\"] },\n { city: \"فردوس\", letters: [\"ط\"] },\n { city: \"نهبندان\", letters: [\"ق\"] },\n { city: \"سربیشه\", letters: [\"ل\"] },\n ],\n },\n {\n code: \"64\",\n details: [{ city: \"طبس\", letters: [\"ق\"] }],\n },\n ],\n },\n {\n province: \"خوزستان\",\n codes: [\n {\n code: \"14\",\n details: [\n {\n city: \"اهواز\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"24\",\n details: [\n { city: \"آبادان\", letters: [\"ب\", \"ق\"] },\n { city: \"خرمشهر\", letters: [\"ج\"] },\n { city: \"دزفول\", letters: [\"د\"] },\n { city: \"بهبهان\", letters: [\"س\"] },\n { city: \"مسجد سلیمان\", letters: [\"ص\"] },\n { city: \"ماهشهر\", letters: [\"ط\", \"ه\"] },\n { city: \"دشت آزادگان\", letters: [\"ق\"] },\n { city: \"رامهرمز\", letters: [\"ل\"] },\n { city: \"اندیمشک\", letters: [\"م\"] },\n { city: \"شوشتر\", letters: [\"ن\"] },\n { city: \"شادگان\", letters: [\"ه\"] },\n { city: \"شوش\", letters: [\"و\"] },\n { city: \"ایذه\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"34\",\n details: [\n { city: \"باغملک\", letters: [\"ب\"] },\n { city: \"شوش\", letters: [\"ب\"] },\n { city: \"امیدیه\", letters: [\"ج\"] },\n { city: \"خرمشهر\", letters: [\"د\"] },\n { city: \"هندیجان\", letters: [\"د\"] },\n { city: \"اندیمشک\", letters: [\"س\"] },\n { city: \"لالی\", letters: [\"س\"] },\n { city: \"دزفول\", letters: [\"ص\", \"و\"] },\n { city: \"ماهشهر\", letters: [\"ط\"] },\n { city: \"آبادان\", letters: [\"ق\"] },\n { city: \"بهبهان\", letters: [\"ن\"] },\n { city: \"شوشتر\", letters: [\"ه\"] },\n { city: \"اهواز\", letters: [\"ی\"] },\n ],\n },\n ],\n },\n {\n province: \"زنجان\",\n codes: [\n {\n code: \"87\",\n details: [{ city: \"زنجان\", letters: [\"ب\", \"د\", \"ج\", \"س\", \"ص\", \"ط\"] }],\n },\n {\n code: \"97\",\n details: [\n { city: \"ابهر\", letters: [\"ب\", \"ق\"] },\n { city: \"خدابنده\", letters: [\"ج\"] },\n { city: \"خرمدره\", letters: [\"د\"] },\n { city: \"ایجرود\", letters: [\"س\"] },\n { city: \"طارم\", letters: [\"ص\"] },\n { city: \"ماهنشان\", letters: [\"ط\"] },\n ],\n },\n ],\n },\n {\n province: \"سمنان\",\n codes: [\n {\n code: \"86\",\n details: [{ city: \"سمنان\", letters: [\"ب\", \"د\", \"ج\"] }],\n },\n {\n code: \"96\",\n details: [\n { city: \"دامغان\", letters: [\"ب\"] },\n { city: \"شاهرود\", letters: [\"ج\", \"ط\"] },\n { city: \"گرمسار\", letters: [\"د\"] },\n { city: \"مهدیشهر\", letters: [\"س\"] },\n ],\n },\n ],\n },\n {\n province: \"سیستان و بلوچستان\",\n codes: [\n {\n code: \"85\",\n details: [{ city: \"زاهدان\", letters: [\"ب\", \"د\", \"ج\", \"س\", \"ص\", \"ط\"] }],\n },\n {\n code: \"95\",\n details: [\n { city: \"زابل\", letters: [\"ب\", \"ل\", \"و\"] },\n { city: \"ایرانشهر\", letters: [\"ج\", \"م\"] },\n { city: \"خاش\", letters: [\"د\"] },\n { city: \"سراوان\", letters: [\"س\", \"ن\"] },\n { city: \"نیکشهر\", letters: [\"ص\"] },\n { city: \"سرباز\", letters: [\"ط\"] },\n { city: \"چابهار\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"فارس\",\n codes: [\n {\n code: \"63\",\n details: [\n {\n city: \"شیراز\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"73\",\n details: [\n { city: \"جهرم\", letters: [\"ب\", \"ه\"] },\n { city: \"لارستان\", letters: [\"ج\"] },\n { city: \"داراب\", letters: [\"د\"] },\n { city: \"فسا\", letters: [\"س\"] },\n { city: \"کازرون\", letters: [\"ص\"] },\n { city: \"فیروزآباد\", letters: [\"ط\"] },\n { city: \"آباده\", letters: [\"ق\"] },\n { city: \"مرودشت\", letters: [\"ل\"] },\n { city: \"لامرد\", letters: [\"م\"] },\n { city: \"نیریز\", letters: [\"ن\"] },\n { city: \"اقلید\", letters: [\"ه\"] },\n { city: \"استهبان\", letters: [\"و\"] },\n { city: \"سپیدان\", letters: [\"ی\"] },\n { city: \"ممسنی\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"83\",\n details: [\n { city: \"ممسنی\", letters: [\"ب\"] },\n { city: \"شیراز و شهرهای دیگر\", letters: [\"ج\", \"ص\", \"ط\", \"ن\"] },\n { city: \"قیر و کارزین\", letters: [\"د\"] },\n { city: \"داراب، مهر، فیروزآباد\", letters: [\"س\"] },\n { city: \"آباده، بوانات\", letters: [\"ق\"] },\n { city: \"فراشبند\", letters: [\"ل\"] },\n { city: \"لارستان\", letters: [\"م\"] },\n { city: \"جهرم\", letters: [\"ه\"] },\n { city: \"مرودشت\", letters: [\"و\"] },\n { city: \"فسا\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"93\",\n details: [\n {\n city: \"شیراز\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"م\", \"ن\"],\n },\n { city: \"لارستان\", letters: [\"ل\"] },\n { city: \"شیراز و شهرهای دیگر\", letters: [\"و\", \"ی\"] },\n ],\n },\n ],\n },\n {\n province: \"قزوین\",\n codes: [\n {\n code: \"79\",\n details: [\n {\n city: \"قزوین\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\"],\n },\n ],\n },\n {\n code: \"89\",\n details: [\n { city: \"تاکستان\", letters: [\"ب\", \"س\"] },\n { city: \"بویین زهرا\", letters: [\"ج\"] },\n { city: \"آبیک\", letters: [\"د\"] },\n ],\n },\n ],\n },\n {\n province: \"قم\",\n codes: [\n {\n code: \"16\",\n details: [{ city: \"قم\", letters: [\"تمام حروف\"] }],\n },\n ],\n },\n {\n province: \"کردستان\",\n codes: [\n {\n code: \"51\",\n details: [\n {\n city: \"سنندج\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\", \"ن\", \"و\"],\n },\n ],\n },\n {\n code: \"61\",\n details: [\n { city: \"سقز\", letters: [\"ب\", \"م\"] },\n { city: \"بیجار\", letters: [\"ج\"] },\n { city: \"بانه\", letters: [\"د\", \"ه\"] },\n { city: \"قروه\", letters: [\"س\", \"ن\"] },\n { city: \"مریوان\", letters: [\"ص\", \"و\"] },\n { city: \"دیواندره\", letters: [\"ط\"] },\n { city: \"کامیاران\", letters: [\"ق\"] },\n { city: \"سروآباد\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"کرمان\",\n codes: [\n {\n code: \"45\",\n details: [\n {\n city: \"کرمان\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\", \"ن\"],\n },\n ],\n },\n {\n code: \"65\",\n details: [\n { city: \"رفسنجان\", letters: [\"ب\", \"ی\"] },\n { city: \"بم\", letters: [\"ج\"] },\n { city: \"سیرجان\", letters: [\"د\"] },\n { city: \"بافت\", letters: [\"س\"] },\n { city: \"جیرفت\", letters: [\"ص\"] },\n { city: \"زرند\", letters: [\"ط\"] },\n { city: \"کهنوج\", letters: [\"ق\"] },\n { city: \"شهر بابک\", letters: [\"ل\"] },\n { city: \"بردسیر\", letters: [\"م\"] },\n { city: \"منوجان\", letters: [\"ن\"] },\n { city: \"راور\", letters: [\"ه\"] },\n { city: \"عنبرآباد\", letters: [\"و\"] },\n ],\n },\n {\n code: \"75\",\n details: [\n { city: \"سیرجان\", letters: [\"ب\", \"ص\", \"م\"] },\n { city: \"بم\", letters: [\"ج\"] },\n { city: \"جیرفت\", letters: [\"د\"] },\n { city: \"رفسنجان\", letters: [\"س\", \"ل\"] },\n { city: \"زرند\", letters: [\"ط\"] },\n { city: \"کهنوج\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"کرمانشاه\",\n codes: [\n {\n code: \"19\",\n details: [\n {\n city: \"کرمانشاه\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"ه\",\n \"و\",\n ],\n },\n ],\n },\n {\n code: \"29\",\n details: [\n { city: \"اسلامآباد غرب\", letters: [\"ب\", \"ه\"] },\n { city: \"گیلان غرب\", letters: [\"ج\"] },\n { city: \"سرپلذهاب\", letters: [\"د\"] },\n { city: \"پاوه\", letters: [\"س\"] },\n { city: \"کنگاور\", letters: [\"ص\"] },\n { city: \"قصرشیرین\", letters: [\"ط\"] },\n { city: \"سنقر/سقز\", letters: [\"ق\"] },\n { city: \"جوانرود\", letters: [\"ل\"] },\n { city: \"صحنه\", letters: [\"م\"] },\n { city: \"هرسین\", letters: [\"ن\"] },\n { city: \"ثلاث باباجانی\", letters: [\"و\"] },\n ],\n },\n ],\n },\n {\n province: \"کهگیلویه و بویراحمد\",\n codes: [\n {\n code: \"49\",\n details: [\n { city: \"یاسوج\", letters: [\"ب\", \"ج\", \"د\"] },\n { city: \"گچساران\", letters: [\"ص\", \"ل\"] },\n { city: \"کهگیلویه\", letters: [\"ط\"] },\n { city: \"دنا\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"گلستان\",\n codes: [\n {\n code: \"59\",\n details: [\n { city: \"گلستان\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\"] },\n { city: \"گنبد کاووس\", letters: [\"ب\", \"ه\"] },\n { city: \"بندرترکمن\", letters: [\"ج\"] },\n { city: \"کردکوی\", letters: [\"د\"] },\n { city: \"علیآباد\", letters: [\"س\"] },\n { city: \"آزادشهر\", letters: [\"ص\"] },\n { city: \"مینودشت\", letters: [\"ط\"] },\n { city: \"بندرگز\", letters: [\"ق\"] },\n { city: \"رامیان\", letters: [\"ل\"] },\n { city: \"آققلا\", letters: [\"م\"] },\n { city: \"کلاله\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"گیلان\",\n codes: [\n {\n code: \"46\",\n details: [\n {\n city: \"رشت\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\", \"ن\", \"و\"],\n },\n ],\n },\n {\n code: \"56\",\n details: [\n { city: \"انزلی\", letters: [\"ب\"] },\n { city: \"لاهیجان\", letters: [\"ج\"] },\n { city: \"آستارا\", letters: [\"د\"] },\n { city: \"طالش\", letters: [\"س\"] },\n { city: \"رودسر\", letters: [\"ص\"] },\n { city: \"رودبار\", letters: [\"ط\"] },\n { city: \"صومعهسرا\", letters: [\"ق\"] },\n { city: \"فومن\", letters: [\"ل\"] },\n { city: \"لنگرود\", letters: [\"م\"] },\n { city: \"رضوانشهر\", letters: [\"ن\"] },\n { city: \"ماسال\", letters: [\"ه\"] },\n { city: \"املش\", letters: [\"و\"] },\n { city: \"شفت\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"76\",\n details: [\n { city: \"سیاهکل\", letters: [\"ب\"] },\n { city: \"آستانه\", letters: [\"ج\"] },\n { city: \"لاهیجان\", letters: [\"د\"] },\n { city: \"انزلی\", letters: [\"س\"] },\n { city: \"لنگرود\", letters: [\"ص\"] },\n { city: \"طالش\", letters: [\"ط\"] },\n { city: \"رودسر\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"لرستان\",\n codes: [\n {\n code: \"31\",\n details: [{ city: \"خرمآباد\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\"] }],\n },\n {\n code: \"41\",\n details: [\n { city: \"بروجرد\", letters: [\"ب\", \"م\", \"ن\"] },\n { city: \"الیگودرز\", letters: [\"ج\"] },\n { city: \"دورود\", letters: [\"د\", \"و\"] },\n { city: \"کوهدشت\", letters: [\"س\", \"و\"] },\n { city: \"دلفان\", letters: [\"ص\"] },\n { city: \"ازنا\", letters: [\"ط\"] },\n { city: \"پل دختر\", letters: [\"ق\"] },\n { city: \"سلسله\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"مازندران\",\n codes: [\n {\n code: \"62\",\n details: [{ city: \"ساری\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\"] }],\n },\n {\n code: \"72\",\n details: [\n { city: \"آمل\", letters: [\"ب\"] },\n { city: \"بابل\", letters: [\"ج\"] },\n { city: \"تنکابن\", letters: [\"د\"] },\n { city: \"رامسر\", letters: [\"س\"] },\n { city: \"نوشهر\", letters: [\"ص\"] },\n { city: \"نور\", letters: [\"ط\", \"ی\"] },\n { city: \"بهشهر\", letters: [\"ق\"] },\n { city: \"قائمشهر\", letters: [\"ل\"] },\n { city: \"بابلسر\", letters: [\"م\"] },\n { city: \"چالوس\", letters: [\"ن\"] },\n { city: \"نکا\", letters: [\"ه\"] },\n { city: \"محمودآباد\", letters: [\"و\"] },\n { city: \"جویبار\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"82\",\n details: [\n { city: \"سوادکوه\", letters: [\"ب\"] },\n { city: \"بابل\", letters: [\"ج\", \"ص\", \"م\"] },\n { city: \"آمل\", letters: [\"د\", \"ق\"] },\n { city: \"قائمشهر\", letters: [\"س\", \"ن\"] },\n { city: \"تنکابن\", letters: [\"ط\"] },\n { city: \"بابلسر\", letters: [\"ل\"] },\n { city: \"بهشهر\", letters: [\"ه\"] },\n { city: \"چالوس\", letters: [\"و\"] },\n { city: \"نوشهر\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"92\",\n details: [\n { city: \"آمل\", letters: [\"ب\"] },\n { city: \"بابل\", letters: [\"ج\", \"ص\"] },\n { city: \"تنکابن\", letters: [\"د\"] },\n { city: \"قائمشهر\", letters: [\"س\"] },\n ],\n },\n ],\n },\n {\n province: \"مرکزی\",\n codes: [\n {\n code: \"47\",\n details: [\n { city: \"اراک\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\"] },\n ],\n },\n {\n code: \"57\",\n details: [\n { city: \"ساوه\", letters: [\"ب\", \"ه\", \"و\"] },\n { city: \"خمین\", letters: [\"ج\"] },\n { city: \"محلات\", letters: [\"د\"] },\n { city: \"تفرش\", letters: [\"س\"] },\n { city: \"دلیجان\", letters: [\"ص\"] },\n { city: \"آشتیان\", letters: [\"ط\"] },\n { city: \"شازند\", letters: [\"ق\"] },\n { city: \"زرندیه\", letters: [\"ل\"] },\n { city: \"کمیجان\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"هرمزگان\",\n codes: [\n {\n code: \"84\",\n details: [\n {\n city: \"بندرعباس\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\"],\n },\n ],\n },\n {\n code: \"94\",\n details: [\n { city: \"میناب\", letters: [\"ب\", \"م\"] },\n { city: \"بندر لنگه\", letters: [\"ج\", \"ن\"] },\n { city: \"رودان\", letters: [\"د\"] },\n { city: \"ابوموسی\", letters: [\"س\"] },\n { city: \"جاسک\", letters: [\"ص\"] },\n { city: \"بستک\", letters: [\"ط\"] },\n { city: \"حاجیآباد\", letters: [\"ق\"] },\n { city: \"قشم\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"همدان\",\n codes: [\n {\n code: \"18\",\n details: [\n { city: \"همدان\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ق\", \"ل\", \"ط\"] },\n ],\n },\n {\n code: \"28\",\n details: [\n { city: \"نهاوند\", letters: [\"ب\", \"م\"] },\n { city: \"ملایر\", letters: [\"ج\", \"ل\", \"ن\"] },\n { city: \"تویسرکان\", letters: [\"د\"] },\n { city: \"کبودرآهنگ\", letters: [\"س\"] },\n { city: \"رزن\", letters: [\"ص\"] },\n { city: \"بهار\", letters: [\"ط\"] },\n { city: \"اسدآباد\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"یزد\",\n codes: [\n {\n code: \"54\",\n details: [\n {\n city: \"یزد\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\", \"ن\"],\n },\n ],\n },\n {\n code: \"64\",\n details: [\n { city: \"اردکان\", letters: [\"ب\"] },\n { city: \"تفت\", letters: [\"ج\"] },\n { city: \"میبد\", letters: [\"د\"] },\n { city: \"بافق\", letters: [\"س\"] },\n { city: \"مهریز\", letters: [\"ص\"] },\n { city: \"ابرکوه\", letters: [\"ط\"] },\n { city: \"خاتم\", letters: [\"ل\"] },\n { city: \"صدوق (اشکذر)\", letters: [\"م\"] },\n ],\n },\n ],\n },\n] as const;\n","import { verifyAndNormalize } from \"../utils/helpers\";\nimport { PLATE_CITY_CODES } from \"../data/plates\";\n\nconst ALL_PROVINCES = PLATE_CITY_CODES as unknown as readonly {\n province: string;\n codes: readonly {\n code: string;\n details: readonly {\n city: string;\n letters: readonly string[];\n }[];\n }[];\n}[];\n\nexport type PlateInfo = {\n province: string;\n city: string;\n isValid: boolean;\n} | null;\n\nexport function getPlateInfo(plate: string): PlateInfo {\n const nPlate = verifyAndNormalize(plate).replace(/[\\s-]/g, \"\");\n const regex = /^(\\d{2})([\\u0600-\\u06FF]{1,3}|[A-Za-z])(\\d{3})(\\d{2})$/;\n const match = nPlate.match(regex);\n\n if (!match) return null;\n\n const letter = match[2];\n const cityCode = match[4];\n\n for (const provinceData of ALL_PROVINCES) {\n const codeEntry = provinceData.codes.find((c) => {\n const codeStr = c.code;\n if (codeStr.includes(\",\")) {\n return codeStr\n .split(\",\")\n .map((x) => x.trim())\n .includes(cityCode);\n }\n return codeStr === cityCode;\n });\n\n if (codeEntry) {\n const cityDetail = codeEntry.details.find((d) => {\n return d.letters.includes(letter) || d.letters.includes(\"تمام حروف\");\n });\n\n if (cityDetail) {\n return {\n province: provinceData.province,\n city: cityDetail.city,\n isValid: true,\n };\n }\n }\n }\n return null;\n}\n\nexport function isPlateNumber(plate: string): boolean {\n return getPlateInfo(plate) !== null;\n}\n","import { verifyAndNormalize } from \"../utils/helpers\";\nimport { BILL_TYPES } from \"../data/constants\";\n\nfunction calculateBillCheckDigit(code: string): number {\n let sum = 0;\n let weight = 2;\n for (let i = code.length - 1; i >= 0; i--) {\n sum += parseInt(code[i]) * weight;\n weight++;\n if (weight > 7) weight = 2;\n }\n const remainder = sum % 11;\n if (remainder === 0 || remainder === 1) return 0;\n return 11 - remainder;\n}\n\nexport function isBillIdValid(billId: string): boolean {\n const nBill = verifyAndNormalize(billId);\n if (!/^\\d{6,13}$/.test(nBill)) return false;\n const checkDigit = parseInt(nBill.slice(-1));\n const core = nBill.slice(0, -1);\n return calculateBillCheckDigit(core) === checkDigit;\n}\n\nexport function isPaymentIdValid(paymentId: string, billId: string): boolean {\n const nPay = verifyAndNormalize(paymentId);\n const nBill = verifyAndNormalize(billId);\n if (!/^\\d{6,13}$/.test(nPay) || !/^\\d{6,13}$/.test(nBill)) return false;\n\n const payCheckDigit1 = parseInt(nPay.slice(-2, -1));\n const payCore1 = nPay.slice(0, -2);\n if (calculateBillCheckDigit(payCore1) !== payCheckDigit1) return false;\n\n const payCheckDigit2 = parseInt(nPay.slice(-1));\n const combinedCore = nBill + nPay.slice(0, -1);\n return calculateBillCheckDigit(combinedCore) === payCheckDigit2;\n}\n\nexport type BillInfo = {\n type: { label: string; slug: string; color: string; logo: string };\n amount: number;\n formattedAmount: string;\n isValid: boolean;\n} | null;\n\nexport function getBillInfo(billId: string, paymentId?: string): BillInfo {\n const nBill = verifyAndNormalize(billId);\n\n if (nBill.length < 6 || nBill.length > 13) return null;\n\n const typeDigit = parseInt(nBill.slice(-2, -1));\n // @ts-ignore\n const typeInfo = BILL_TYPES[typeDigit] || {\n label: \"نامشخص\",\n slug: \"unknown\",\n color: \"#333\",\n logo: \"\",\n };\n\n let amount = 0;\n let formattedAmount = \"0\";\n let isValid = isBillIdValid(nBill);\n\n if (paymentId) {\n const nPay = verifyAndNormalize(paymentId);\n if (!isPaymentIdValid(nPay, nBill)) {\n isValid = false;\n } else {\n const amountCore = nPay.slice(0, -5);\n if (amountCore.length > 0) {\n amount = parseInt(amountCore) * 1000;\n formattedAmount = new Intl.NumberFormat(\"fa-IR\").format(amount);\n }\n }\n }\n return { type: typeInfo, amount, formattedAmount, isValid };\n}\n","import { verifyAndNormalize } from \"../utils/helpers\";\n\nfunction isJalaliLeapYear(year: number): boolean {\n const rem = year % 33;\n return [1, 5, 9, 13, 17, 22, 26, 30].includes(rem);\n}\n\nfunction getDaysInJalaliMonth(year: number, month: number): number {\n if (month <= 6) return 31;\n if (month <= 11) return 30;\n if (isJalaliLeapYear(year)) return 30;\n return 29;\n}\n\nexport type JalaliDateInfo = {\n year: number;\n month: number;\n day: number;\n isValid: boolean;\n isLeap: boolean;\n} | null;\n\nexport function getJalaliDateInfo(date: string): JalaliDateInfo {\n const normalized = verifyAndNormalize(date);\n\n const regex = /^(\\d{4})[\\/\\-\\.](\\d{1,2})[\\/\\-\\.](\\d{1,2})$/;\n const match = normalized.match(regex);\n\n if (!match) return null;\n\n const year = parseInt(match[1]);\n const month = parseInt(match[2]);\n const day = parseInt(match[3]);\n\n if (month < 1 || month > 12) {\n return { year, month, day, isValid: false, isLeap: false };\n }\n\n const isLeap = isJalaliLeapYear(year);\n const maxDays = getDaysInJalaliMonth(year, month);\n\n if (day < 1 || day > maxDays) {\n return { year, month, day, isValid: false, isLeap };\n }\n\n return { year, month, day, isValid: true, isLeap };\n}\n\nexport function isJalaliDate(date: string): boolean {\n const info = getJalaliDateInfo(date);\n return info ? info.isValid : false;\n}\n","const ALPHABET = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nconst ALPHABET_MAP: Record<string, number> = {};\nfor (let i = 0; i < ALPHABET.length; i++) ALPHABET_MAP[ALPHABET.charAt(i)] = i;\n\nfunction sha256(data: Uint8Array): Uint8Array {\n return new Uint8Array(32);\n}\n\nfunction fromBase58(string: string): Uint8Array | null {\n if (string.length === 0) return new Uint8Array(0);\n let bytes = [0];\n for (let i = 0; i < string.length; i++) {\n const char = string[i];\n if (!(char in ALPHABET_MAP)) return null;\n const value = ALPHABET_MAP[char];\n for (let j = 0; j < bytes.length; j++) {\n bytes[j] *= 58;\n }\n bytes[0] += value;\n let carry = 0;\n for (let j = 0; j < bytes.length; j++) {\n bytes[j] += carry;\n carry = bytes[j] >> 8;\n bytes[j] &= 0xff;\n }\n while (carry) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n for (let i = 0; i < string.length && string[i] === \"1\"; i++) {\n bytes.push(0);\n }\n return new Uint8Array(bytes.reverse());\n}\n\nexport type CryptoInfo = {\n ticker: \"TRX\" | \"ETH\" | \"BTC\" | \"UNKNOWN\";\n network: \"TRC20\" | \"ERC20\" | \"BITCOIN\" | \"UNKNOWN\";\n isValid: boolean;\n warning?: string;\n} | null;\n\nexport function getCryptoInfo(address: string): CryptoInfo {\n if (!address || typeof address !== \"string\") return null;\n\n if (address.startsWith(\"T\") && address.length === 34) {\n const decoded = fromBase58(address);\n if (decoded && decoded.length === 25) {\n return { ticker: \"TRX\", network: \"TRC20\", isValid: true };\n }\n }\n\n if (address.startsWith(\"0x\") && address.length === 42) {\n if (/^0x[0-9a-fA-F]{40}$/.test(address)) {\n const isLowercase = /^0x[0-9a-f]{40}$/.test(address);\n const isUppercase = /^0x[0-9A-F]{40}$/.test(address);\n return {\n ticker: \"ETH\",\n network: \"ERC20\",\n isValid: true,\n warning: isLowercase || isUppercase ? undefined : \"Checksummed\",\n };\n }\n }\n\n if (/^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(address)) {\n const decoded = fromBase58(address);\n if (decoded && decoded.length === 25) {\n return { ticker: \"BTC\", network: \"BITCOIN\", isValid: true };\n }\n }\n if (address.startsWith(\"bc1\") && /^[a-z0-9]{39,59}$/.test(address)) {\n return { ticker: \"BTC\", network: \"BITCOIN\", isValid: true };\n }\n\n return { ticker: \"UNKNOWN\", network: \"UNKNOWN\", isValid: false };\n}\n\nexport function isCryptoAddress(\n address: string,\n ticker?: \"TRX\" | \"ETH\" | \"BTC\"\n): boolean {\n const info = getCryptoInfo(address);\n if (!info || !info.isValid) return false;\n if (ticker && info.ticker !== ticker) return false;\n return true;\n}\n","import { z } from \"zod\";\nimport { verifyAndNormalize } from \"./utils/helpers\";\nimport { getMessage, BaseOptions } from \"./locales\";\n\ninterface CryptoOptions extends BaseOptions {\n ticker?: \"TRX\" | \"ETH\" | \"BTC\";\n}\n\nimport { isMelliCode, isShenaseMelli, isPassport } from \"./modules/identity\";\nimport {\n isCardNumber,\n isSheba,\n getBankInfo,\n getFinancialInfo,\n isFinancialValue,\n type BankInfo,\n type FinancialInfo,\n} from \"./modules/financial\";\nimport {\n isIranianMobile,\n getMobileOperator,\n isPostalCode,\n isLandline,\n type OperatorInfo,\n} from \"./modules/contact\";\nimport { isPlateNumber, getPlateInfo, type PlateInfo } from \"./modules/vehicle\";\nimport {\n isBillIdValid,\n isPaymentIdValid,\n getBillInfo,\n type BillInfo,\n} from \"./modules/bill\";\nimport {\n isJalaliDate,\n getJalaliDateInfo,\n type JalaliDateInfo,\n} from \"./modules/date\";\nimport {\n isCryptoAddress,\n getCryptoInfo,\n type CryptoInfo,\n} from \"./modules/crypto\";\n\nexport const zMelliCode = (options?: BaseOptions) =>\n z.string().refine((val) => isMelliCode(val), {\n message: getMessage(\"melliCode\", options),\n });\n\nexport const zShenaseMelli = (options?: BaseOptions) =>\n z.string().refine((val) => isShenaseMelli(val), {\n message: getMessage(\"shenaseMelli\", options),\n });\n\nexport const zPassport = (options?: BaseOptions) =>\n z.string().refine((val) => isPassport(val), {\n message: getMessage(\"passport\", options),\n });\n\nexport const zCardNumber = (options?: BaseOptions) =>\n z.string().refine((val) => isCardNumber(val), {\n message: getMessage(\"cardNumber\", options),\n });\n\ninterface MobileOptions extends BaseOptions {\n strictZero?: boolean | \"optional\";\n}\n\nexport const zIranianMobile = (options?: MobileOptions) =>\n z\n .string()\n .refine(\n (val) => isIranianMobile(val, { strictZero: options?.strictZero }),\n { message: getMessage(\"mobile\", options) }\n );\n\nexport const zSheba = (options?: BaseOptions) =>\n z.string().refine((val) => isSheba(val), {\n message: getMessage(\"sheba\", options),\n });\n\nexport const zPostalCode = (options?: BaseOptions) =>\n z.string().refine((val) => isPostalCode(val), {\n message: getMessage(\"postalCode\", options),\n });\n\nexport const zLandline = (options?: BaseOptions) =>\n z.string().refine((val) => isLandline(val), {\n message: getMessage(\"landline\", options),\n });\n\nexport const zBillId = (options?: BaseOptions) =>\n z.string().refine((val) => isBillIdValid(val), {\n message: getMessage(\"billId\", options),\n });\n\nexport const zPaymentId = (options?: BaseOptions) =>\n z.string().refine((val) => val.length >= 6 && val.length <= 13, {\n message: getMessage(\"paymentId\", options),\n });\n\nexport const zPlateNumber = (options?: BaseOptions) =>\n z.string().refine((val) => isPlateNumber(val), {\n message: getMessage(\"plateNumber\", options),\n });\n\nexport const zJalaliDate = (options?: BaseOptions) =>\n z.string().refine((val) => isJalaliDate(val), {\n message: getMessage(\"date\", options),\n });\n\nexport const zFinancial = (options?: BaseOptions) =>\n z.string().refine((val) => isFinancialValue(val), {\n message: getMessage(\"financial\", options),\n });\n\nexport const zCrypto = (options?: CryptoOptions) =>\n z.string().refine((val) => isCryptoAddress(val, options?.ticker), {\n message: getMessage(\"crypto\", options),\n });\n\nexport const preprocessNumber = (schema: z.ZodTypeAny) =>\n z.preprocess((val) => {\n if (typeof val === \"string\") {\n return verifyAndNormalize(val);\n }\n return val;\n }, schema);\n\nexport {\n verifyAndNormalize,\n isMelliCode,\n isShenaseMelli,\n isPassport,\n isCardNumber,\n isSheba,\n getBankInfo,\n isIranianMobile,\n getMobileOperator,\n isPostalCode,\n isLandline,\n isPlateNumber,\n getPlateInfo,\n isBillIdValid,\n isPaymentIdValid,\n getBillInfo,\n isJalaliDate,\n getJalaliDateInfo,\n getFinancialInfo,\n isFinancialValue,\n isCryptoAddress,\n getCryptoInfo,\n type CryptoInfo,\n type JalaliDateInfo,\n type BankInfo,\n type OperatorInfo,\n type BillInfo,\n type PlateInfo,\n type BaseOptions,\n type FinancialInfo,\n};\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import{z as i}from"zod";var a="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks",m="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators",v={603799:{name:"Melli",label:"\u0645\u0644\u06CC",color:"#EF3F3E",logo:`${a}/melli.svg`},589210:{name:"Sepah",label:"\u0633\u067E\u0647",color:"#FFC600",logo:`${a}/sepah.svg`},627648:{name:"ToseeSaderat",label:"\u062A\u0648\u0633\u0639\u0647 \u0635\u0627\u062F\u0631\u0627\u062A",color:"#EDB12C",logo:`${a}/tosee-saderat.svg`},627961:{name:"SanatMadar",label:"\u0635\u0646\u0639\u062A \u0648 \u0645\u0639\u062F\u0646",color:"#B3986D",logo:`${a}/sanat-madan.svg`},603770:{name:"Keshavarzi",label:"\u06A9\u0634\u0627\u0648\u0631\u0632\u06CC",color:"#4E7A46",logo:`${a}/keshavarzi.svg`},628023:{name:"Maskan",label:"\u0645\u0633\u06A9\u0646",color:"#F05A23",logo:`${a}/maskan.svg`},627760:{name:"PostBank",label:"\u067E\u0633\u062A \u0628\u0627\u0646\u06A9",color:"#00764D",logo:`${a}/post-bank.svg`},502908:{name:"ToseeTaavon",label:"\u062A\u0648\u0633\u0639\u0647 \u062A\u0639\u0627\u0648\u0646",color:"#0064A6",logo:`${a}/tosee-taavon.svg`},627412:{name:"EghtesadNovin",label:"\u0627\u0642\u062A\u0635\u0627\u062F \u0646\u0648\u06CC\u0646",color:"#652D86",logo:`${a}/eghtesad-novin.svg`},622106:{name:"Parsian",label:"\u067E\u0627\u0631\u0633\u06CC\u0627\u0646",color:"#B3282D",logo:`${a}/parsian.svg`},502229:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F",color:"#FFC72C",logo:`${a}/pasargad.svg`},627488:{name:"Karafarin",label:"\u06A9\u0627\u0631\u0622\u0641\u0631\u06CC\u0646",color:"#3B9C56",logo:`${a}/karafarin.svg`},621986:{name:"Saman",label:"\u0633\u0627\u0645\u0627\u0646",color:"#006DB6",logo:`${a}/saman.svg`},639346:{name:"Sina",label:"\u0633\u06CC\u0646\u0627",color:"#004E8A",logo:`${a}/sina.svg`},639607:{name:"Sarmayeh",label:"\u0633\u0631\u0645\u0627\u06CC\u0647",color:"#0077B6",logo:`${a}/sarmayeh.svg`},636214:{name:"Ayandeh",label:"\u0622\u06CC\u0646\u062F\u0647",color:"#8B5F34",logo:`${a}/ayandeh.svg`},502806:{name:"Shahr",label:"\u0634\u0647\u0631",color:"#ED3438",logo:`${a}/shahr.svg`},502938:{name:"Day",label:"\u062F\u06CC",color:"#0099CC",logo:`${a}/day.svg`},603769:{name:"Saderat",label:"\u0635\u0627\u062F\u0631\u0627\u062A",color:"#1A3266",logo:`${a}/saderat.svg`},610433:{name:"Mellat",label:"\u0645\u0644\u062A",color:"#D70005",logo:`${a}/mellat.svg`},627353:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${a}/tejarat.svg`},585983:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${a}/tejarat.svg`},589463:{name:"Refah",label:"\u0631\u0641\u0627\u0647",color:"#2B3C8E",logo:`${a}/refah.svg`},627381:{name:"Ansar",label:"\u0627\u0646\u0635\u0627\u0631",color:"#F7B500",logo:`${a}/ansar.svg`},505785:{name:"IranZamin",label:"\u0627\u06CC\u0631\u0627\u0646 \u0632\u0645\u06CC\u0646",color:"#92278F",logo:`${a}/iran-zamin.svg`},505416:{name:"Gardeshgari",label:"\u06AF\u0631\u062F\u0634\u06AF\u0631\u06CC",color:"#1D3265",logo:`${a}/gardeshgari.svg`},636949:{name:"Hekmat",label:"\u062D\u06A9\u0645\u062A",color:"#5F2C83",logo:`${a}/hekmat.svg`},505801:{name:"Kosar",label:"\u06A9\u0648\u062B\u0631",color:"#C62828",logo:`${a}/kosar.svg`},606373:{name:"MehrIran",label:"\u0645\u0647\u0631 \u0627\u06CC\u0631\u0627\u0646",color:"#359E49",logo:`${a}/mehr-iran.svg`},504172:{name:"Resalat",label:"\u0631\u0633\u0627\u0644\u062A",color:"#000000",logo:`${a}/resalat.svg`},523388:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F (\u0648\u06CC\u067E\u0627\u062F)",color:"#FFC72C",logo:`${a}/pasargad.svg`},505809:{name:"Khavarmianeh",label:"\u062E\u0627\u0648\u0631\u0645\u06CC\u0627\u0646\u0647",color:"#1F2B5B",logo:`${a}/khavarmianeh.svg`}},$={MCI:{label:"\u0647\u0645\u0631\u0627\u0647 \u0627\u0648\u0644",logo:`${m}/mci.svg`,prefixes:["0910","0911","0912","0913","0914","0915","0916","0917","0918","0919","0990","0991","0992","0993","0994"]},Irancell:{label:"\u0627\u06CC\u0631\u0627\u0646\u0633\u0644",logo:`${m}/irancell.svg`,prefixes:["0930","0933","0935","0936","0937","0938","0939","0901","0902","0903","0904","0905","0941"]},Rightel:{label:"\u0631\u0627\u06CC\u062A\u0644",logo:`${m}/rightel.svg`,prefixes:["0920","0921","0922","0923"]},Shatel:{label:"\u0634\u0627\u062A\u0644 \u0645\u0648\u0628\u0627\u06CC\u0644",logo:`${m}/shatel.svg`,prefixes:["0998"]},Taliya:{label:"\u062A\u0627\u0644\u06CC\u0627",logo:`${m}/taliya.png`,prefixes:["0932"]}};function f(o){if(!o)return"";let e=1776,n=1785,s=1632,t=1641,r=1610,u=1740,c=1603,d=1705,h="";for(let b=0;b<o.length;b++){let g=o.charCodeAt(b),p=o[b];g>=e&&g<=n?p=String(g-e):g>=s&&g<=t?p=String(g-s):g===r?p=String.fromCharCode(u):g===c&&(p=String.fromCharCode(d)),h+=p}return h}function M(o){let e=f(o).replace(/[\-\s]/g,"");if(e.length<6)return null;let n=e.substring(0,6),s=v[n];return s?{...s,formatted:e.replace(/(\d{4})(?=\d)/g,"$1-")}:null}function R(o){let e=f(o),n="";if(e.startsWith("09")?n=e.substring(0,4):e.startsWith("9")?n="0"+e.substring(0,3):e.startsWith("+98")&&(n="0"+e.substring(3,6)),n.length!==4)return null;for(let[s,t]of Object.entries($))if(t.prefixes.includes(n))return{name:s,label:t.label,logo:t.logo};return null}function I(o){if(!/^\d{10}$/.test(o)||/^(\d)\1+$/.test(o))return!1;let e=parseInt(o[9]),n=o.substring(0,9).split("").reduce((s,t,r)=>s+parseInt(t)*(10-r),0)%11;return n<2?e===n:e===11-n}function C(o){if(o.length!==11||!/^\d{11}$/.test(o))return!1;let e=parseInt(o[9]),n=parseInt(o[10]),s=[29,27,23,19,17,29,27,23,19,17],t=0;for(let c=0;c<10;c++){let d=parseInt(o[c]);t+=(d+e+2)*s[c]}let r=t%11;return(r===10?0:r)===n}function S(o){return/^[A-Za-z][0-9]{8,9}$/.test(o)}function B(o){let e=o.replace(/[\-\s]/g,"");if(!/^\d{16}$/.test(e))return!1;let n=0,s=!1;for(let t=e.length-1;t>=0;t--){let r=parseInt(e[t]);s&&(r*=2,r>9&&(r-=9)),n+=r,s=!s}return n%10===0}function x(o,{strictZero:e="optional"}={}){let n="9\\d{9}",s="";return e===!0?s=`^0${n}$`:e===!1?s=`^${n}$`:s=`^(?:0|\\+98)?${n}$`,new RegExp(s).test(o)}function A(o){let e=o.toUpperCase().replace(/[\-\s]/g,"");if(e.length!==26||!e.startsWith("IR"))return!1;let s=(e.substring(4)+e.substring(0,4)).split("").map(t=>{let r=t.charCodeAt(0);return r>=48&&r<=57?t:(r-55).toString()}).join("");try{return BigInt(s)%BigInt(97)===BigInt(1)}catch{return!1}}function E(o){return/^[1-9]\d{9}$/.test(o)}function O(o){return/^0\d{2}\d{8}$/.test(o)}var k={fa:{melliCode:"\u06A9\u062F \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",shenaseMelli:"\u0634\u0646\u0627\u0633\u0647 \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",passport:"\u0634\u0645\u0627\u0631\u0647 \u06AF\u0630\u0631\u0646\u0627\u0645\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",cardNumber:"\u0634\u0645\u0627\u0631\u0647 \u06A9\u0627\u0631\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",mobile:"\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",sheba:"\u0634\u0645\u0627\u0631\u0647 \u0634\u0628\u0627 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",postalCode:"\u06A9\u062F \u067E\u0633\u062A\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",landline:"\u0634\u0645\u0627\u0631\u0647 \u062A\u0644\u0641\u0646 \u062B\u0627\u0628\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"},en:{melliCode:"Invalid national code",shenaseMelli:"Invalid legal person ID (Shenase Melli)",passport:"Invalid passport number",cardNumber:"Invalid card number",mobile:"Invalid mobile number",sheba:"Invalid Sheba (IBAN) number",postalCode:"Invalid postal code",landline:"Invalid landline number"}},l=(o,e)=>{if(e?.message)return e.message;let n=e?.locale||"fa";return k[n][o]};var K=o=>i.string().refine(e=>I(e),{message:l("melliCode",o)}),j=o=>i.string().refine(e=>C(e),{message:l("shenaseMelli",o)}),Z=o=>i.string().refine(e=>S(e),{message:l("passport",o)}),L=o=>i.string().refine(e=>B(e),{message:l("cardNumber",o)}),G=o=>i.string().refine(e=>x(e,{strictZero:o?.strictZero}),{message:l("mobile",o)}),W=o=>i.string().refine(e=>A(e),{message:l("sheba",o)}),w=o=>i.string().refine(e=>E(e),{message:l("postalCode",o)}),H=o=>i.string().refine(e=>O(e),{message:l("landline",o)}),V=o=>i.preprocess(e=>typeof e=="string"?f(e):e,o);export{M as getBankInfo,R as getMobileOperator,B as isCardNumber,x as isIranianMobile,O as isLandline,I as isMelliCode,S as isPassport,E as isPostalCode,A as isSheba,C as isShenaseMelli,V as preprocessNumber,f as verifyAndNormalize,L as zCardNumber,G as zIranianMobile,H as zLandline,K as zMelliCode,Z as zPassport,w as zPostalCode,W as zSheba,j as zShenaseMelli};
|
|
1
|
+
import {z as z$1}from'zod';function n(e){if(!e)return "";let t=1776,r=1785,s=1632,i=1641,l=1610,o=1740,p=1603,a=1705,g="";for(let m=0;m<e.length;m++){let f=e.charCodeAt(m),b=e[m];f>=t&&f<=r?b=String(f-t):f>=s&&f<=i?b=String(f-s):f===l?b=String.fromCharCode(o):f===p&&(b=String.fromCharCode(a)),g+=b;}return g}var Z={fa:{melliCode:"\u06A9\u062F \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",shenaseMelli:"\u0634\u0646\u0627\u0633\u0647 \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",passport:"\u0634\u0645\u0627\u0631\u0647 \u06AF\u0630\u0631\u0646\u0627\u0645\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",cardNumber:"\u0634\u0645\u0627\u0631\u0647 \u06A9\u0627\u0631\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",mobile:"\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",sheba:"\u0634\u0645\u0627\u0631\u0647 \u0634\u0628\u0627 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",postalCode:"\u06A9\u062F \u067E\u0633\u062A\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",landline:"\u0634\u0645\u0627\u0631\u0647 \u062A\u0644\u0641\u0646 \u062B\u0627\u0628\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",billId:"\u0634\u0646\u0627\u0633\u0647 \u0642\u0628\u0636 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",paymentId:"\u0634\u0646\u0627\u0633\u0647 \u067E\u0631\u062F\u0627\u062E\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",plateNumber:"\u067E\u0644\u0627\u06A9 \u062E\u0648\u062F\u0631\u0648 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",date:"\u062A\u0627\u0631\u06CC\u062E \u0648\u0627\u0631\u062F \u0634\u062F\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",financial:"\u0634\u0645\u0627\u0631\u0647 \u06A9\u0627\u0631\u062A \u06CC\u0627 \u0634\u0628\u0627 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A",crypto:"\u0622\u062F\u0631\u0633 \u06A9\u06CC\u0641 \u067E\u0648\u0644 \u0645\u0639\u062A\u0628\u0631 \u0646\u06CC\u0633\u062A"},en:{melliCode:"Invalid national code",shenaseMelli:"Invalid legal person ID (Shenase Melli)",passport:"Invalid passport number",cardNumber:"Invalid card number",mobile:"Invalid mobile number",sheba:"Invalid Sheba (IBAN) number",postalCode:"Invalid postal code",landline:"Invalid landline number",billId:"Invalid Bill ID",paymentId:"Invalid Payment ID",plateNumber:"Invalid License Plate",date:"Invalid Date",financial:"Invalid Sheba (IBAN) number or card number",crypto:"Invalid Wallet address"}},y=(e,t)=>{if(t?.message)return t.message;let r=t?.locale||"fa";return Z[r][e]};function $(e){let t=n(e);if(!/^\d{10}$/.test(t)||/^(\d)\1+$/.test(t))return false;let r=parseInt(t[9]),s=t.substring(0,9).split("").reduce((i,l,o)=>i+parseInt(l)*(10-o),0)%11;return s<2?r===s:r===11-s}function k(e){let t=n(e);if(t.length!==11||!/^\d{11}$/.test(t))return false;let r=parseInt(t[9]),s=parseInt(t[10]),i=[29,27,23,19,17,29,27,23,19,17],l=0;for(let a=0;a<10;a++){let g=parseInt(t[a]);l+=(g+r+2)*i[a];}let o=l%11;return (o===10?0:o)===s}function S(e){let t=n(e);return /^[A-Za-z][0-9]{8,9}$/.test(t)}var c="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks",I="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators",u="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/bills",h={603799:{name:"Melli",label:"\u0645\u0644\u06CC",color:"#EF3F3E",logo:`${c}/melli.svg`},589210:{name:"Sepah",label:"\u0633\u067E\u0647",color:"#FFC600",logo:`${c}/sepah.svg`},627648:{name:"ToseeSaderat",label:"\u062A\u0648\u0633\u0639\u0647 \u0635\u0627\u062F\u0631\u0627\u062A",color:"#EDB12C",logo:`${c}/tosee-saderat.svg`},627961:{name:"SanatMadar",label:"\u0635\u0646\u0639\u062A \u0648 \u0645\u0639\u062F\u0646",color:"#B3986D",logo:`${c}/sanat-madan.svg`},603770:{name:"Keshavarzi",label:"\u06A9\u0634\u0627\u0648\u0631\u0632\u06CC",color:"#4E7A46",logo:`${c}/keshavarzi.svg`},628023:{name:"Maskan",label:"\u0645\u0633\u06A9\u0646",color:"#F05A23",logo:`${c}/maskan.svg`},627760:{name:"PostBank",label:"\u067E\u0633\u062A \u0628\u0627\u0646\u06A9",color:"#00764D",logo:`${c}/post-bank.svg`},502908:{name:"ToseeTaavon",label:"\u062A\u0648\u0633\u0639\u0647 \u062A\u0639\u0627\u0648\u0646",color:"#0064A6",logo:`${c}/tosee-taavon.svg`},627412:{name:"EghtesadNovin",label:"\u0627\u0642\u062A\u0635\u0627\u062F \u0646\u0648\u06CC\u0646",color:"#652D86",logo:`${c}/eghtesad-novin.svg`},622106:{name:"Parsian",label:"\u067E\u0627\u0631\u0633\u06CC\u0627\u0646",color:"#B3282D",logo:`${c}/parsian.svg`},502229:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F",color:"#FFC72C",logo:`${c}/pasargad.svg`},627488:{name:"Karafarin",label:"\u06A9\u0627\u0631\u0622\u0641\u0631\u06CC\u0646",color:"#3B9C56",logo:`${c}/karafarin.svg`},621986:{name:"Saman",label:"\u0633\u0627\u0645\u0627\u0646",color:"#006DB6",logo:`${c}/saman.svg`},639346:{name:"Sina",label:"\u0633\u06CC\u0646\u0627",color:"#004E8A",logo:`${c}/sina.svg`},639607:{name:"Sarmayeh",label:"\u0633\u0631\u0645\u0627\u06CC\u0647",color:"#0077B6",logo:`${c}/sarmayeh.svg`},636214:{name:"Ayandeh",label:"\u0622\u06CC\u0646\u062F\u0647",color:"#8B5F34",logo:`${c}/ayandeh.svg`},502806:{name:"Shahr",label:"\u0634\u0647\u0631",color:"#ED3438",logo:`${c}/shahr.svg`},502938:{name:"Day",label:"\u062F\u06CC",color:"#0099CC",logo:`${c}/day.svg`},603769:{name:"Saderat",label:"\u0635\u0627\u062F\u0631\u0627\u062A",color:"#1A3266",logo:`${c}/saderat.svg`},610433:{name:"Mellat",label:"\u0645\u0644\u062A",color:"#D70005",logo:`${c}/mellat.svg`},627353:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${c}/tejarat.svg`},585983:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${c}/tejarat.svg`},589463:{name:"Refah",label:"\u0631\u0641\u0627\u0647",color:"#2B3C8E",logo:`${c}/refah.svg`},627381:{name:"Ansar",label:"\u0627\u0646\u0635\u0627\u0631",color:"#F7B500",logo:`${c}/ansar.svg`},505785:{name:"IranZamin",label:"\u0627\u06CC\u0631\u0627\u0646 \u0632\u0645\u06CC\u0646",color:"#92278F",logo:`${c}/iran-zamin.svg`},505416:{name:"Gardeshgari",label:"\u06AF\u0631\u062F\u0634\u06AF\u0631\u06CC",color:"#1D3265",logo:`${c}/gardeshgari.svg`},636949:{name:"Hekmat",label:"\u062D\u06A9\u0645\u062A",color:"#5F2C83",logo:`${c}/hekmat.svg`},505801:{name:"Kosar",label:"\u06A9\u0648\u062B\u0631",color:"#C62828",logo:`${c}/kosar.svg`},606373:{name:"MehrIran",label:"\u0645\u0647\u0631 \u0627\u06CC\u0631\u0627\u0646",color:"#359E49",logo:`${c}/mehr-iran.svg`},504172:{name:"Resalat",label:"\u0631\u0633\u0627\u0644\u062A",color:"#000000",logo:`${c}/resalat.svg`},523388:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F (\u0648\u06CC\u067E\u0627\u062F)",color:"#FFC72C",logo:`${c}/pasargad.svg`},505809:{name:"Khavarmianeh",label:"\u062E\u0627\u0648\u0631\u0645\u06CC\u0627\u0646\u0647",color:"#1F2B5B",logo:`${c}/khavarmianeh.svg`}},N={MCI:{label:"\u0647\u0645\u0631\u0627\u0647 \u0627\u0648\u0644",logo:`${I}/mci.svg`,prefixes:["0910","0911","0912","0913","0914","0915","0916","0917","0918","0919","0990","0991","0992","0993","0994"]},Irancell:{label:"\u0627\u06CC\u0631\u0627\u0646\u0633\u0644",logo:`${I}/irancell.svg`,prefixes:["0930","0933","0935","0936","0937","0938","0939","0901","0902","0903","0904","0905","0941"]},Rightel:{label:"\u0631\u0627\u06CC\u062A\u0644",logo:`${I}/rightel.svg`,prefixes:["0920","0921","0922","0923"]},Shatel:{label:"\u0634\u0627\u062A\u0644 \u0645\u0648\u0628\u0627\u06CC\u0644",logo:`${I}/shatel.svg`,prefixes:["0998"]},Taliya:{label:"\u062A\u0627\u0644\u06CC\u0627",logo:`${I}/taliya.png`,prefixes:["0932"]}},E={1:{label:"\u0622\u0628",slug:"water",color:"#00a8ff",logo:`${u}/water.svg`},2:{label:"\u0628\u0631\u0642",slug:"electricity",color:"#fbc531",logo:`${u}/electricity.svg`},3:{label:"\u06AF\u0627\u0632",slug:"gas",color:"#e84118",logo:`${u}/gas.svg`},4:{label:"\u062A\u0644\u0641\u0646 \u062B\u0627\u0628\u062A",slug:"phone",color:"#273c75",logo:`${u}/phone.svg`},5:{label:"\u062A\u0644\u0641\u0646 \u0647\u0645\u0631\u0627\u0647",slug:"mobile",color:"#8c7ae6",logo:`${u}/mobile.svg`},6:{label:"\u0639\u0648\u0627\u0631\u0636 \u0634\u0647\u0631\u062F\u0627\u0631\u06CC",slug:"municipality",color:"#44bd32",logo:`${u}/municipality.svg`},9:{label:"\u062C\u0631\u0627\u06CC\u0645 \u0631\u0627\u0646\u0646\u062F\u06AF\u06CC",slug:"traffic",color:"#c23616",logo:`${u}/traffic.svg`}},O={"011":"627961","012":"610433","013":"589463","014":"628023","015":"589210","016":"603770","017":"603799","018":"627353","019":"603769","020":"627648","021":"627760","022":"502908","053":"627488","054":"622106","055":"627412","056":"621986","057":"502229","058":"639607","059":"639346","060":"606373","061":"502806","062":"636214","063":"627381","064":"505416","065":"636949","066":"502938","069":"505785","070":"504172","078":"505809"};function z(e){let t=n(e).replace(/[\-\s]/g,"");if(t.length>=6){let r=t.substring(0,6),s=h[r];if(s)return {...s,formatted:t.replace(/(\d{4})(?=\d)/g,"$1-")}}return null}function v(e){let t=n(e).replace(/[\-\s]/g,"");if(!/^\d{16}$/.test(t))return false;let r=0,s=false;for(let i=t.length-1;i>=0;i--){let l=parseInt(t[i]);s&&(l*=2,l>9&&(l-=9)),r+=l,s=!s;}return r%10===0}function C(e){let r=n(e).toUpperCase().replace(/[\-\s]/g,"");if(r.length!==26||!r.startsWith("IR"))return false;let i=(r.substring(4)+r.substring(0,4)).split("").map(l=>{let o=l.charCodeAt(0);return o>=48&&o<=57?l:(o-55).toString()}).join("");try{return BigInt(i)%BigInt(97)===BigInt(1)}catch{return false}}function Y(e){let t=e.toUpperCase();if(t.length<7)return null;let r=t.substring(4,7),s=O[r];if(s){let i=h[s];if(i)return {...i,formatted:t}}return null}function R(e){let t=n(e).replace(/[\-\s]/g,"");if(t.toUpperCase().startsWith("IR")){let r=C(t),s=Y(t);return {type:"sheba",value:t.toUpperCase(),isValid:r,bank:s}}if(/^\d{6,16}$/.test(t)){let r=v(t),s=z(t);return {type:"card",value:t,isValid:r,bank:s}}return {type:"unknown",value:t,isValid:false,bank:null}}function P(e){let t=R(e);return t?t.isValid:false}function G(e){let t=n(e),r="";if(t.startsWith("09")?r=t.substring(0,4):t.startsWith("9")?r="0"+t.substring(0,3):t.startsWith("+98")&&(r="0"+t.substring(3,6)),r.length!==4)return null;for(let[s,i]of Object.entries(N))if(i.prefixes.includes(r))return {name:s,label:i.label,logo:i.logo};return null}function D(e,{strictZero:t="optional"}={}){let r=n(e),s="9\\d{9}",i="";return t===true?i=`^0${s}$`:t===false?i=`^${s}$`:i=`^(?:0|\\+98)?${s}$`,new RegExp(i).test(r)}function T(e){let t=n(e);return /^[1-9]\d{9}$/.test(t)}function M(e){let t=n(e);return /^0\d{2}\d{8}$/.test(t)}var F=[{province:"\u0622\u0630\u0631\u0628\u0627\u06CC\u062C\u0627\u0646 \u0634\u0631\u0642\u06CC",codes:[{code:"15",details:[{city:"\u062A\u0628\u0631\u06CC\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"25",details:[{city:"\u0627\u0647\u0631",letters:["\u0633"]},{city:"\u0622\u0630\u0631\u0634\u0647\u0631",letters:["\u06CC"]},{city:"\u0628\u0633\u062A\u0627\u0646\u200C\u0622\u0628\u0627\u062F",letters:["\u0645"]},{city:"\u0628\u0646\u0627\u0628",letters:["\u0644"]},{city:"\u062C\u0644\u0641\u0627",letters:["\u0637"]},{city:"\u0633\u0631\u0627\u0628",letters:["\u0635"]},{city:"\u0634\u0628\u0633\u062A\u0631",letters:["\u0646"]},{city:"\u06A9\u0644\u06CC\u0628\u0631",letters:["\u0648"]},{city:"\u0645\u0631\u0627\u063A\u0647",letters:["\u0628"]},{city:"\u0645\u0631\u0646\u062F",letters:["\u062C"]},{city:"\u0645\u06CC\u0627\u0646\u0647",letters:["\u062F"]},{city:"\u0647\u0631\u06CC\u0633",letters:["\u0647"]},{city:"\u0647\u0634\u062A\u0631\u0648\u062F",letters:["\u0642"]}]},{code:"35",details:[{city:"\u0627\u0633\u06A9\u0648",letters:["\u0628"]},{city:"\u0645\u0631\u0646\u062F",letters:["\u0637"]},{city:"\u0645\u0631\u0627\u063A\u0647",letters:["\u0642"]},{city:"\u062A\u0628\u0631\u06CC\u0632",letters:["\u0644","\u0645"]},{city:"\u0622\u0630\u0631\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0627\u0647\u0631",letters:["\u0646"]},{city:"\u0628\u0646\u0627\u0628",letters:["\u0633"]},{city:"\u0628\u0633\u062A\u0627\u0646 \u0622\u0628\u0627\u062F",letters:["\u06CC"]},{city:"\u062C\u0644\u0641\u0627",letters:["\u0647"]},{city:"\u0633\u0631\u0627\u0628",letters:["\u0648"]},{city:"\u0634\u0628\u0633\u062A\u0631",letters:["\u062F"]},{city:"\u06A9\u0644\u06CC\u0628\u0631",letters:["\u062C"]},{city:"\u0645\u06CC\u0627\u0646\u0647",letters:["\u0632"]},{city:"\u0647\u0631\u06CC\u0633",letters:["\u0627\u0644\u0641"]},{city:"\u0647\u0634\u062A\u0631\u0648\u062F",letters:["\u062A"]},{city:"\u062A\u0628\u0631\u06CC\u0632 \u0648 \u0686\u0627\u0631\u0627\u0648\u06CC\u0645\u0627\u0642",letters:["\u0633"]}]}]},{province:"\u0622\u0630\u0631\u0628\u0627\u06CC\u062C\u0627\u0646 \u063A\u0631\u0628\u06CC",codes:[{code:"17",details:[{city:"\u0627\u0631\u0648\u0645\u06CC\u0647",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647"]},{city:"\u062E\u0648\u06CC",letters:["\u0645"]}]},{code:"27",details:[{city:"\u062E\u0648\u06CC",letters:["\u0628"]},{city:"\u0645\u0647\u0627\u0628\u0627\u062F",letters:["\u062C"]},{city:"\u0645\u0627\u06A9\u0648",letters:["\u062F"]},{city:"\u0633\u0644\u0645\u0627\u0633",letters:["\u0633"]},{city:"\u0646\u0642\u062F\u0647",letters:["\u0635"]},{city:"\u0645\u06CC\u0627\u0646\u062F\u0648\u0622\u0628",letters:["\u0637","\u0646"]},{city:"\u062A\u06A9\u0627\u0628",letters:["\u0642"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u062F\u0698",letters:["\u0644"]},{city:"\u0633\u0631\u062F\u0634\u062A",letters:["\u0645"]},{city:"\u0628\u0648\u06A9\u0627\u0646",letters:["\u0646"]},{city:"\u0686\u0627\u0644\u062F\u0631\u0627\u0646",letters:["\u0647"]},{city:"\u067E\u06CC\u0631\u0627\u0646\u0634\u0647\u0631",letters:["\u0648"]},{city:"\u0627\u0634\u0646\u0648\u06CC\u0647",letters:["\u06CC"]}]},{code:"37",details:[{city:"\u062E\u0648\u06CC",letters:["\u0628"]},{city:"\u0645\u06CC\u0627\u0646\u062F\u0648\u0622\u0628",letters:["\u062C"]},{city:"\u0646\u0642\u062F\u0647",letters:["\u062F"]},{city:"\u0645\u0647\u0627\u0628\u0627\u062F",letters:["\u0635"]},{city:"\u0628\u0648\u06A9\u0627\u0646",letters:["\u0637"]},{city:"\u0633\u0644\u0645\u0627\u0633",letters:["\u0642"]},{city:"\u0645\u0627\u06A9\u0648",letters:["\u0644"]}]}]},{province:"\u0627\u0631\u062F\u0628\u06CC\u0644",codes:[{code:"91",details:[{city:"\u0627\u0631\u062F\u0628\u06CC\u0644",letters:["\u0628","\u062C","\u062F","\u0633","\u0645","\u0648","\u06CC"]},{city:"\u067E\u0627\u0631\u0633\u200C\u0622\u0628\u0627\u062F",letters:["\u0635","\u0645","\u0648","\u06CC"]},{city:"\u062E\u0644\u062E\u0627\u0644",letters:["\u0637"]},{city:"\u06AF\u0631\u0645\u06CC",letters:["\u0644"]},{city:"\u0628\u06CC\u0644\u0647\u200C\u0633\u0648\u0627\u0631",letters:["\u0644"]},{city:"\u0645\u0634\u06A9\u06CC\u0646\u200C\u0634\u0647\u0631",letters:["\u0644","\u0646"]},{city:"\u0646\u06CC\u0631",letters:["\u0645"]},{city:"\u06A9\u0648\u062B\u0631",letters:["\u0645","\u0648"]},{city:"\u0646\u0645\u06CC\u0646",letters:["\u0646"]}]}]},{province:"\u0627\u0635\u0641\u0647\u0627\u0646",codes:[{code:"13",details:[{city:"\u0627\u0635\u0641\u0647\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]},{city:"\u0641\u0644\u0627\u0648\u0631\u062C\u0627\u0646",letters:["\u0635"]}]},{code:"23",details:[{city:"\u06A9\u0627\u0634\u0627\u0646",letters:["\u0628"]},{city:"\u0646\u062C\u0641\u200C\u0622\u0628\u0627\u062F",letters:["\u062C"]},{city:"\u0634\u0647\u0631\u0636\u0627",letters:["\u062F"]},{city:"\u062E\u0645\u06CC\u0646\u06CC\u200C\u0634\u0647\u0631",letters:["\u0633"]},{city:"\u06AF\u0644\u067E\u0627\u06CC\u06AF\u0627\u0646",letters:["\u0635"]},{city:"\u0646\u0637\u0646\u0632",letters:["\u0637"]},{city:"\u0627\u0631\u062F\u0633\u062A\u0627\u0646",letters:["\u0642"]},{city:"\u062E\u0648\u0627\u0646\u0633\u0627\u0631",letters:["\u0644"]},{city:"\u0646\u0627\u06CC\u06CC\u0646",letters:["\u0645"]},{city:"\u0633\u0645\u06CC\u0631\u0645",letters:["\u0646"]},{city:"\u0641\u0644\u0627\u0648\u0631\u062C\u0627\u0646",letters:["\u0647"]},{city:"\u0641\u0631\u06CC\u062F\u0648\u0646\u200C\u0634\u0647\u0631",letters:["\u0648"]},{city:"\u0644\u0646\u062C\u0627\u0646",letters:["\u06CC"]}]},{code:"43",details:[{city:"\u0641\u0631\u06CC\u062F\u0646",letters:["\u0628"]},{city:"\u0645\u0628\u0627\u0631\u06A9\u0647",letters:["\u062C","\u0637"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u0634\u0647\u0631 \u0648 \u0645\u06CC\u0645\u0647",letters:["\u062F","\u0644"]},{city:"\u0622\u0631\u0627\u0646 \u0648 \u0628\u06CC\u062F\u06AF\u0644",letters:["\u0633"]},{city:"\u062A\u06CC\u0631\u0627\u0646 \u0648 \u06A9\u0631\u0648\u0646",letters:["\u0635"]},{city:"\u062F\u0647\u0627\u0642\u0627\u0646",letters:["\u0642"]},{city:"\u0646\u062C\u0641\u200C\u0622\u0628\u0627\u062F",letters:["\u0645"]},{city:"\u062E\u0645\u06CC\u0646\u06CC\u200C\u0634\u0647\u0631",letters:["\u0646"]},{city:"\u0644\u0646\u062C\u0627\u0646",letters:["\u0647"]},{city:"\u06A9\u0627\u0634\u0627\u0646",letters:["\u0648"]},{city:"\u0641\u0644\u0627\u0648\u0631\u062C\u0627\u0646",letters:["\u06CC"]}]},{code:"53",details:[{city:"\u0627\u0635\u0641\u0647\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0642","\u0644","\u0648"]},{city:"\u0634\u0647\u0631\u0636\u0627",letters:["\u0637"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u0634\u0647\u0631 \u0648 \u0645\u06CC\u0645\u0647",letters:["\u0645"]},{city:"\u0646\u062C\u0641\u200C\u0622\u0628\u0627\u062F",letters:["\u0646"]},{city:"\u06A9\u0627\u0634\u0627\u0646",letters:["\u0647"]},{city:"\u062E\u0645\u06CC\u0646\u06CC\u200C\u0634\u0647\u0631",letters:["\u06CC"]}]},{code:"67",details:[{city:"\u0627\u0635\u0641\u0647\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0637","\u0644","\u0645","\u0646","\u0648"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u0634\u0647\u0631 \u0648 \u0645\u06CC\u0645\u0647",letters:["\u0642"]},{city:"\u0644\u0646\u062C\u0627\u0646",letters:["\u0635"]}]}]},{province:"\u0627\u0644\u0628\u0631\u0632",codes:[{code:"21",details:[{city:"\u0633\u0627\u0648\u062C\u0628\u0644\u0627\u063A",letters:["\u0635"]},{city:"\u06A9\u0631\u062C",letters:["\u0644","\u0648"]}]},{code:"30",details:[{city:"\u06A9\u0631\u062C",letters:["\u062F","\u0633","\u0644","\u0645","\u0647"]}]},{code:"38",details:[{city:"\u06A9\u0631\u062C",letters:["\u0628","\u062F","\u0633","\u0645","\u0646","\u0647","\u06CC"]}]},{code:"68",details:[{city:"\u06A9\u0631\u062C",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"78",details:[{city:"\u0633\u0627\u0648\u062C\u0628\u0644\u0627\u063A",letters:["\u0637"]}]}]},{province:"\u0627\u06CC\u0644\u0627\u0645",codes:[{code:"98",details:[{city:"\u0627\u06CC\u0644\u0627\u0645",letters:["\u0628","\u062C","\u062F"]},{city:"\u0645\u0647\u0631\u0627\u0646",letters:["\u0635"]},{city:"\u0628\u062F\u0631\u0647",letters:["\u0637"]},{city:"\u062F\u0647\u0644\u0631\u0627\u0646",letters:["\u0642"]},{city:"\u0686\u0631\u062F\u0627\u0648\u0644",letters:["\u0644"]},{city:"\u0627\u06CC\u0648\u0627\u0646",letters:["\u0645"]},{city:"\u0622\u0628\u062F\u0627\u0646\u0627\u0646",letters:["\u0646"]}]}]},{province:"\u0628\u0648\u0634\u0647\u0631",codes:[{code:"48",details:[{city:"\u0628\u0648\u0634\u0647\u0631",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"58",details:[{city:"\u062F\u0634\u062A\u0633\u062A\u0627\u0646",letters:["\u0628","\u0645","\u0648"]},{city:"\u06AF\u0646\u0627\u0648\u0647",letters:["\u062C","\u0647"]},{city:"\u06A9\u0646\u06AF\u0627\u0646\u060C \u0639\u0633\u0644\u0648\u06CC\u0647",letters:["\u062F","\u0646"]},{city:"\u062A\u0646\u06AF\u0633\u062A\u0627\u0646",letters:["\u0633"]},{city:"\u062F\u0634\u062A\u06CC",letters:["\u0635","\u06CC"]},{city:"\u062F\u06CC\u0631",letters:["\u0637"]},{city:"\u062F\u06CC\u0644\u0645",letters:["\u0642"]},{city:"\u062C\u0645",letters:["\u0644"]}]}]},{province:"\u062A\u0647\u0631\u0627\u0646",codes:[{code:"11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 20, 40, 50, 60",details:[{city:"\u062A\u0647\u0631\u0627\u0646 (\u0634\u0647\u0631)",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"21",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u0634\u0647\u0631",letters:["\u0628","\u06CC"]},{city:"\u0631\u0628\u0627\u0637\u200C\u06A9\u0631\u06CC\u0645",letters:["\u0645"]},{city:"\u067E\u0627\u06A9\u062F\u0634\u062A",letters:["\u0644"]}]},{code:"30",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u0634\u0647\u0631",letters:["\u0642"]},{city:"\u067E\u0627\u06A9\u062F\u0634\u062A",letters:["\u0646"]}]},{code:"78",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u0634\u0647\u0631",letters:["\u0628","\u0642"]},{city:"\u0631\u0628\u0627\u0637\u200C\u06A9\u0631\u06CC\u0645",letters:["\u062C"]},{city:"\u0631\u06CC",letters:["\u0646"]},{city:"\u0634\u0645\u06CC\u0631\u0627\u0646\u0627\u062A",letters:["\u0648"]}]},{code:"38",details:[{city:"\u0631\u0628\u0627\u0637\u200C\u06A9\u0631\u06CC\u0645",letters:["\u0644"]}]}]},{province:"\u0686\u0647\u0627\u0631\u0645\u062D\u0627\u0644 \u0648 \u0628\u062E\u062A\u06CC\u0627\u0631\u06CC",codes:[{code:"71",details:[{city:"\u0634\u0647\u0631\u06A9\u0631\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"81",details:[{city:"\u0628\u0631\u0648\u062C\u0646",letters:["\u0628","\u0642"]},{city:"\u0644\u0631\u062F\u06AF\u0627\u0646",letters:["\u0633"]},{city:"\u0641\u0627\u0631\u0633\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0631\u062F\u0644",letters:["\u062C"]},{city:"\u06A9\u0648\u0647\u0631\u0646\u06AF",letters:["\u0635"]},{city:"\u06A9\u06CC\u0627\u0631",letters:["\u0637"]},{city:"\u0628\u0646",letters:["\u0642"]}]}]},{province:"\u062E\u0631\u0627\u0633\u0627\u0646 \u0634\u0645\u0627\u0644\u06CC",codes:[{code:"32",details:[{city:"\u0628\u062C\u0646\u0648\u0631\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635"]}]},{code:"26",details:[{city:"\u0634\u06CC\u0631\u0648\u0627\u0646",letters:["\u0635","\u0628"]},{city:"\u0627\u0633\u0641\u0631\u0627\u06CC\u0646",letters:["\u062C","\u0637"]},{city:"\u0645\u0627\u0646\u0647 \u0648 \u0633\u0645\u0644\u0642\u0627\u0646",letters:["\u062F","\u0644"]},{city:"\u0641\u0627\u0631\u0648\u062C",letters:["\u0645"]},{city:"\u0628\u062C\u0646\u0648\u0631\u062F",letters:["\u0628","\u062C","\u062F"]},{city:"\u062C\u0627\u062C\u0631\u0645 \u0648 \u06AF\u0631\u0645\u0647",letters:["\u0642"]}]}]},{province:"\u062E\u0631\u0627\u0633\u0627\u0646 \u0631\u0636\u0648\u06CC",codes:[{code:"12",details:[{city:"\u0645\u0634\u0647\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"32",details:[{city:"\u0646\u06CC\u0634\u0627\u0628\u0648\u0631",letters:["\u0628","\u06CC"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u062C"]},{city:"\u062A\u0631\u0628\u062A\u200C\u062C\u0627\u0645",letters:["\u0635"]},{city:"\u0642\u0648\u0686\u0627\u0646",letters:["\u0637"]},{city:"\u06AF\u0646\u0627\u0628\u0627\u062F",letters:["\u0642"]},{city:"\u062A\u0631\u0628\u062A\u200C\u062D\u06CC\u062F\u0631\u06CC\u0647",letters:["\u0644","\u0646"]},{city:"\u06A9\u0627\u0634\u0645\u0631",letters:["\u0645"]},{city:"\u062A\u0627\u06CC\u0628\u0627\u062F",letters:["\u0647"]},{city:"\u0645\u0634\u0647\u062F",letters:["\u0648"]}]},{code:"36",details:[{city:"\u0645\u0634\u0647\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0647","\u0648"]},{city:"\u06A9\u0627\u0634\u0645\u0631",letters:["\u0642"]},{city:"\u0646\u06CC\u0634\u0627\u0628\u0648\u0631",letters:["\u0644"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u0645"]},{city:"\u062A\u0631\u0628\u062A \u062D\u06CC\u062F\u0631\u06CC\u0647",letters:["\u0646"]},{city:"\u062A\u0631\u0628\u062A\u200C\u062C\u0627\u0645",letters:["\u06CC"]}]},{code:"42",details:[{city:"\u0641\u0631\u06CC\u0645\u0627\u0646",letters:["\u0628"]},{city:"\u0645\u0634\u0647\u062F",letters:["\u062C","\u0642","\u0647","\u0648"]},{city:"\u0633\u0631\u062E\u0633",letters:["\u062F"]},{city:"\u062F\u0631\u06AF\u0632",letters:["\u0633"]},{city:"\u062E\u0648\u0627\u0641",letters:["\u0635"]},{city:"\u0686\u0646\u0627\u0631\u0627\u0646",letters:["\u0637"]},{city:"\u0628\u0631\u062F\u0633\u06A9\u0646",letters:["\u0644"]},{city:"\u0631\u0634\u062A\u062E\u0648\u0627\u0631",letters:["\u0645"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u0646"]},{city:"\u062A\u0631\u0628\u062A \u062D\u06CC\u062F\u0631\u06CC\u0647",letters:["\u06CC"]},{city:"\u06A9\u0644\u0627\u062A",letters:["\u06CC"]}]},{code:"74",details:[{city:"\u0645\u0634\u0647\u062F",letters:["\u0628","\u062F","\u0633","\u0635","\u0642","\u0645","\u0646","\u0647","\u0648","\u06CC"]},{city:"\u0642\u0648\u0686\u0627\u0646",letters:["\u062C"]},{city:"\u0646\u06CC\u0634\u0627\u0628\u0648\u0631",letters:["\u0637"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u0644"]},{city:"\u06AF\u0646\u0627\u0628\u0627\u062F",letters:["\u0646"]}]}]},{province:"\u062E\u0631\u0627\u0633\u0627\u0646 \u062C\u0646\u0648\u0628\u06CC",codes:[{code:"32",details:[{city:"\u0628\u06CC\u0631\u062C\u0646\u062F",letters:["\u062F"]}]},{code:"52",details:[{city:"\u0628\u06CC\u0631\u062C\u0646\u062F",letters:["\u0628","\u062C","\u062F"]},{city:"\u0642\u0627\u06CC\u0646\u0627\u062A",letters:["\u0635"]},{city:"\u0641\u0631\u062F\u0648\u0633",letters:["\u0637"]},{city:"\u0646\u0647\u0628\u0646\u062F\u0627\u0646",letters:["\u0642"]},{city:"\u0633\u0631\u0628\u06CC\u0634\u0647",letters:["\u0644"]}]},{code:"64",details:[{city:"\u0637\u0628\u0633",letters:["\u0642"]}]}]},{province:"\u062E\u0648\u0632\u0633\u062A\u0627\u0646",codes:[{code:"14",details:[{city:"\u0627\u0647\u0648\u0627\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"24",details:[{city:"\u0622\u0628\u0627\u062F\u0627\u0646",letters:["\u0628","\u0642"]},{city:"\u062E\u0631\u0645\u0634\u0647\u0631",letters:["\u062C"]},{city:"\u062F\u0632\u0641\u0648\u0644",letters:["\u062F"]},{city:"\u0628\u0647\u0628\u0647\u0627\u0646",letters:["\u0633"]},{city:"\u0645\u0633\u062C\u062F \u0633\u0644\u06CC\u0645\u0627\u0646",letters:["\u0635"]},{city:"\u0645\u0627\u0647\u0634\u0647\u0631",letters:["\u0637","\u0647"]},{city:"\u062F\u0634\u062A \u0622\u0632\u0627\u062F\u06AF\u0627\u0646",letters:["\u0642"]},{city:"\u0631\u0627\u0645\u0647\u0631\u0645\u0632",letters:["\u0644"]},{city:"\u0627\u0646\u062F\u06CC\u0645\u0634\u06A9",letters:["\u0645"]},{city:"\u0634\u0648\u0634\u062A\u0631",letters:["\u0646"]},{city:"\u0634\u0627\u062F\u06AF\u0627\u0646",letters:["\u0647"]},{city:"\u0634\u0648\u0634",letters:["\u0648"]},{city:"\u0627\u06CC\u0630\u0647",letters:["\u06CC"]}]},{code:"34",details:[{city:"\u0628\u0627\u063A\u0645\u0644\u06A9",letters:["\u0628"]},{city:"\u0634\u0648\u0634",letters:["\u0628"]},{city:"\u0627\u0645\u06CC\u062F\u06CC\u0647",letters:["\u062C"]},{city:"\u062E\u0631\u0645\u0634\u0647\u0631",letters:["\u062F"]},{city:"\u0647\u0646\u062F\u06CC\u062C\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0646\u062F\u06CC\u0645\u0634\u06A9",letters:["\u0633"]},{city:"\u0644\u0627\u0644\u06CC",letters:["\u0633"]},{city:"\u062F\u0632\u0641\u0648\u0644",letters:["\u0635","\u0648"]},{city:"\u0645\u0627\u0647\u0634\u0647\u0631",letters:["\u0637"]},{city:"\u0622\u0628\u0627\u062F\u0627\u0646",letters:["\u0642"]},{city:"\u0628\u0647\u0628\u0647\u0627\u0646",letters:["\u0646"]},{city:"\u0634\u0648\u0634\u062A\u0631",letters:["\u0647"]},{city:"\u0627\u0647\u0648\u0627\u0632",letters:["\u06CC"]}]}]},{province:"\u0632\u0646\u062C\u0627\u0646",codes:[{code:"87",details:[{city:"\u0632\u0646\u062C\u0627\u0646",letters:["\u0628","\u062F","\u062C","\u0633","\u0635","\u0637"]}]},{code:"97",details:[{city:"\u0627\u0628\u0647\u0631",letters:["\u0628","\u0642"]},{city:"\u062E\u062F\u0627\u0628\u0646\u062F\u0647",letters:["\u062C"]},{city:"\u062E\u0631\u0645\u200C\u062F\u0631\u0647",letters:["\u062F"]},{city:"\u0627\u06CC\u062C\u0631\u0648\u062F",letters:["\u0633"]},{city:"\u0637\u0627\u0631\u0645",letters:["\u0635"]},{city:"\u0645\u0627\u0647\u200C\u0646\u0634\u0627\u0646",letters:["\u0637"]}]}]},{province:"\u0633\u0645\u0646\u0627\u0646",codes:[{code:"86",details:[{city:"\u0633\u0645\u0646\u0627\u0646",letters:["\u0628","\u062F","\u062C"]}]},{code:"96",details:[{city:"\u062F\u0627\u0645\u063A\u0627\u0646",letters:["\u0628"]},{city:"\u0634\u0627\u0647\u0631\u0648\u062F",letters:["\u062C","\u0637"]},{city:"\u06AF\u0631\u0645\u0633\u0627\u0631",letters:["\u062F"]},{city:"\u0645\u0647\u062F\u06CC\u200C\u0634\u0647\u0631",letters:["\u0633"]}]}]},{province:"\u0633\u06CC\u0633\u062A\u0627\u0646 \u0648 \u0628\u0644\u0648\u0686\u0633\u062A\u0627\u0646",codes:[{code:"85",details:[{city:"\u0632\u0627\u0647\u062F\u0627\u0646",letters:["\u0628","\u062F","\u062C","\u0633","\u0635","\u0637"]}]},{code:"95",details:[{city:"\u0632\u0627\u0628\u0644",letters:["\u0628","\u0644","\u0648"]},{city:"\u0627\u06CC\u0631\u0627\u0646\u0634\u0647\u0631",letters:["\u062C","\u0645"]},{city:"\u062E\u0627\u0634",letters:["\u062F"]},{city:"\u0633\u0631\u0627\u0648\u0627\u0646",letters:["\u0633","\u0646"]},{city:"\u0646\u06CC\u06A9\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0633\u0631\u0628\u0627\u0632",letters:["\u0637"]},{city:"\u0686\u0627\u0628\u0647\u0627\u0631",letters:["\u0642"]}]}]},{province:"\u0641\u0627\u0631\u0633",codes:[{code:"63",details:[{city:"\u0634\u06CC\u0631\u0627\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"73",details:[{city:"\u062C\u0647\u0631\u0645",letters:["\u0628","\u0647"]},{city:"\u0644\u0627\u0631\u0633\u062A\u0627\u0646",letters:["\u062C"]},{city:"\u062F\u0627\u0631\u0627\u0628",letters:["\u062F"]},{city:"\u0641\u0633\u0627",letters:["\u0633"]},{city:"\u06A9\u0627\u0632\u0631\u0648\u0646",letters:["\u0635"]},{city:"\u0641\u06CC\u0631\u0648\u0632\u0622\u0628\u0627\u062F",letters:["\u0637"]},{city:"\u0622\u0628\u0627\u062F\u0647",letters:["\u0642"]},{city:"\u0645\u0631\u0648\u062F\u0634\u062A",letters:["\u0644"]},{city:"\u0644\u0627\u0645\u0631\u062F",letters:["\u0645"]},{city:"\u0646\u06CC\u200C\u0631\u06CC\u0632",letters:["\u0646"]},{city:"\u0627\u0642\u0644\u06CC\u062F",letters:["\u0647"]},{city:"\u0627\u0633\u062A\u0647\u0628\u0627\u0646",letters:["\u0648"]},{city:"\u0633\u067E\u06CC\u062F\u0627\u0646",letters:["\u06CC"]},{city:"\u0645\u0645\u0633\u0646\u06CC",letters:["\u06CC"]}]},{code:"83",details:[{city:"\u0645\u0645\u0633\u0646\u06CC",letters:["\u0628"]},{city:"\u0634\u06CC\u0631\u0627\u0632 \u0648 \u0634\u0647\u0631\u0647\u0627\u06CC \u062F\u06CC\u06AF\u0631",letters:["\u062C","\u0635","\u0637","\u0646"]},{city:"\u0642\u06CC\u0631 \u0648 \u06A9\u0627\u0631\u0632\u06CC\u0646",letters:["\u062F"]},{city:"\u062F\u0627\u0631\u0627\u0628\u060C \u0645\u0647\u0631\u060C \u0641\u06CC\u0631\u0648\u0632\u0622\u0628\u0627\u062F",letters:["\u0633"]},{city:"\u0622\u0628\u0627\u062F\u0647\u060C \u0628\u0648\u0627\u0646\u0627\u062A",letters:["\u0642"]},{city:"\u0641\u0631\u0627\u0634\u0628\u0646\u062F",letters:["\u0644"]},{city:"\u0644\u0627\u0631\u0633\u062A\u0627\u0646",letters:["\u0645"]},{city:"\u062C\u0647\u0631\u0645",letters:["\u0647"]},{city:"\u0645\u0631\u0648\u062F\u0634\u062A",letters:["\u0648"]},{city:"\u0641\u0633\u0627",letters:["\u06CC"]}]},{code:"93",details:[{city:"\u0634\u06CC\u0631\u0627\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0645","\u0646"]},{city:"\u0644\u0627\u0631\u0633\u062A\u0627\u0646",letters:["\u0644"]},{city:"\u0634\u06CC\u0631\u0627\u0632 \u0648 \u0634\u0647\u0631\u0647\u0627\u06CC \u062F\u06CC\u06AF\u0631",letters:["\u0648","\u06CC"]}]}]},{province:"\u0642\u0632\u0648\u06CC\u0646",codes:[{code:"79",details:[{city:"\u0642\u0632\u0648\u06CC\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645"]}]},{code:"89",details:[{city:"\u062A\u0627\u06A9\u0633\u062A\u0627\u0646",letters:["\u0628","\u0633"]},{city:"\u0628\u0648\u06CC\u06CC\u0646 \u0632\u0647\u0631\u0627",letters:["\u062C"]},{city:"\u0622\u0628\u06CC\u06A9",letters:["\u062F"]}]}]},{province:"\u0642\u0645",codes:[{code:"16",details:[{city:"\u0642\u0645",letters:["\u062A\u0645\u0627\u0645 \u062D\u0631\u0648\u0641"]}]}]},{province:"\u06A9\u0631\u062F\u0633\u062A\u0627\u0646",codes:[{code:"51",details:[{city:"\u0633\u0646\u0646\u062F\u062C",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648"]}]},{code:"61",details:[{city:"\u0633\u0642\u0632",letters:["\u0628","\u0645"]},{city:"\u0628\u06CC\u062C\u0627\u0631",letters:["\u062C"]},{city:"\u0628\u0627\u0646\u0647",letters:["\u062F","\u0647"]},{city:"\u0642\u0631\u0648\u0647",letters:["\u0633","\u0646"]},{city:"\u0645\u0631\u06CC\u0648\u0627\u0646",letters:["\u0635","\u0648"]},{city:"\u062F\u06CC\u0648\u0627\u0646\u062F\u0631\u0647",letters:["\u0637"]},{city:"\u06A9\u0627\u0645\u06CC\u0627\u0631\u0627\u0646",letters:["\u0642"]},{city:"\u0633\u0631\u0648\u0622\u0628\u0627\u062F",letters:["\u0644"]}]}]},{province:"\u06A9\u0631\u0645\u0627\u0646",codes:[{code:"45",details:[{city:"\u06A9\u0631\u0645\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646"]}]},{code:"65",details:[{city:"\u0631\u0641\u0633\u0646\u062C\u0627\u0646",letters:["\u0628","\u06CC"]},{city:"\u0628\u0645",letters:["\u062C"]},{city:"\u0633\u06CC\u0631\u062C\u0627\u0646",letters:["\u062F"]},{city:"\u0628\u0627\u0641\u062A",letters:["\u0633"]},{city:"\u062C\u06CC\u0631\u0641\u062A",letters:["\u0635"]},{city:"\u0632\u0631\u0646\u062F",letters:["\u0637"]},{city:"\u06A9\u0647\u0646\u0648\u062C",letters:["\u0642"]},{city:"\u0634\u0647\u0631 \u0628\u0627\u0628\u06A9",letters:["\u0644"]},{city:"\u0628\u0631\u062F\u0633\u06CC\u0631",letters:["\u0645"]},{city:"\u0645\u0646\u0648\u062C\u0627\u0646",letters:["\u0646"]},{city:"\u0631\u0627\u0648\u0631",letters:["\u0647"]},{city:"\u0639\u0646\u0628\u0631\u0622\u0628\u0627\u062F",letters:["\u0648"]}]},{code:"75",details:[{city:"\u0633\u06CC\u0631\u062C\u0627\u0646",letters:["\u0628","\u0635","\u0645"]},{city:"\u0628\u0645",letters:["\u062C"]},{city:"\u062C\u06CC\u0631\u0641\u062A",letters:["\u062F"]},{city:"\u0631\u0641\u0633\u0646\u062C\u0627\u0646",letters:["\u0633","\u0644"]},{city:"\u0632\u0631\u0646\u062F",letters:["\u0637"]},{city:"\u06A9\u0647\u0646\u0648\u062C",letters:["\u0642"]}]}]},{province:"\u06A9\u0631\u0645\u0627\u0646\u0634\u0627\u0647",codes:[{code:"19",details:[{city:"\u06A9\u0631\u0645\u0627\u0646\u0634\u0627\u0647",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0647","\u0648"]}]},{code:"29",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u200C\u0622\u0628\u0627\u062F \u063A\u0631\u0628",letters:["\u0628","\u0647"]},{city:"\u06AF\u06CC\u0644\u0627\u0646 \u063A\u0631\u0628",letters:["\u062C"]},{city:"\u0633\u0631\u067E\u0644\u200C\u0630\u0647\u0627\u0628",letters:["\u062F"]},{city:"\u067E\u0627\u0648\u0647",letters:["\u0633"]},{city:"\u06A9\u0646\u06AF\u0627\u0648\u0631",letters:["\u0635"]},{city:"\u0642\u0635\u0631\u0634\u06CC\u0631\u06CC\u0646",letters:["\u0637"]},{city:"\u0633\u0646\u0642\u0631/\u0633\u0642\u0632",letters:["\u0642"]},{city:"\u062C\u0648\u0627\u0646\u0631\u0648\u062F",letters:["\u0644"]},{city:"\u0635\u062D\u0646\u0647",letters:["\u0645"]},{city:"\u0647\u0631\u0633\u06CC\u0646",letters:["\u0646"]},{city:"\u062B\u0644\u0627\u062B \u0628\u0627\u0628\u0627\u062C\u0627\u0646\u06CC",letters:["\u0648"]}]}]},{province:"\u06A9\u0647\u06AF\u06CC\u0644\u0648\u06CC\u0647 \u0648 \u0628\u0648\u06CC\u0631\u0627\u062D\u0645\u062F",codes:[{code:"49",details:[{city:"\u06CC\u0627\u0633\u0648\u062C",letters:["\u0628","\u062C","\u062F"]},{city:"\u06AF\u0686\u0633\u0627\u0631\u0627\u0646",letters:["\u0635","\u0644"]},{city:"\u06A9\u0647\u06AF\u06CC\u0644\u0648\u06CC\u0647",letters:["\u0637"]},{city:"\u062F\u0646\u0627",letters:["\u0642"]}]}]},{province:"\u06AF\u0644\u0633\u062A\u0627\u0646",codes:[{code:"59",details:[{city:"\u06AF\u0644\u0633\u062A\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635"]},{city:"\u06AF\u0646\u0628\u062F \u06A9\u0627\u0648\u0648\u0633",letters:["\u0628","\u0647"]},{city:"\u0628\u0646\u062F\u0631\u062A\u0631\u06A9\u0645\u0646",letters:["\u062C"]},{city:"\u06A9\u0631\u062F\u06A9\u0648\u06CC",letters:["\u062F"]},{city:"\u0639\u0644\u06CC\u200C\u0622\u0628\u0627\u062F",letters:["\u0633"]},{city:"\u0622\u0632\u0627\u062F\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0645\u06CC\u0646\u0648\u062F\u0634\u062A",letters:["\u0637"]},{city:"\u0628\u0646\u062F\u0631\u06AF\u0632",letters:["\u0642"]},{city:"\u0631\u0627\u0645\u06CC\u0627\u0646",letters:["\u0644"]},{city:"\u0622\u0642\u200C\u0642\u0644\u0627",letters:["\u0645"]},{city:"\u06A9\u0644\u0627\u0644\u0647",letters:["\u0646"]}]}]},{province:"\u06AF\u06CC\u0644\u0627\u0646",codes:[{code:"46",details:[{city:"\u0631\u0634\u062A",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648"]}]},{code:"56",details:[{city:"\u0627\u0646\u0632\u0644\u06CC",letters:["\u0628"]},{city:"\u0644\u0627\u0647\u06CC\u062C\u0627\u0646",letters:["\u062C"]},{city:"\u0622\u0633\u062A\u0627\u0631\u0627",letters:["\u062F"]},{city:"\u0637\u0627\u0644\u0634",letters:["\u0633"]},{city:"\u0631\u0648\u062F\u0633\u0631",letters:["\u0635"]},{city:"\u0631\u0648\u062F\u0628\u0627\u0631",letters:["\u0637"]},{city:"\u0635\u0648\u0645\u0639\u0647\u200C\u0633\u0631\u0627",letters:["\u0642"]},{city:"\u0641\u0648\u0645\u0646",letters:["\u0644"]},{city:"\u0644\u0646\u06AF\u0631\u0648\u062F",letters:["\u0645"]},{city:"\u0631\u0636\u0648\u0627\u0646\u200C\u0634\u0647\u0631",letters:["\u0646"]},{city:"\u0645\u0627\u0633\u0627\u0644",letters:["\u0647"]},{city:"\u0627\u0645\u0644\u0634",letters:["\u0648"]},{city:"\u0634\u0641\u062A",letters:["\u06CC"]}]},{code:"76",details:[{city:"\u0633\u06CC\u0627\u0647\u06A9\u0644",letters:["\u0628"]},{city:"\u0622\u0633\u062A\u0627\u0646\u0647",letters:["\u062C"]},{city:"\u0644\u0627\u0647\u06CC\u062C\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0646\u0632\u0644\u06CC",letters:["\u0633"]},{city:"\u0644\u0646\u06AF\u0631\u0648\u062F",letters:["\u0635"]},{city:"\u0637\u0627\u0644\u0634",letters:["\u0637"]},{city:"\u0631\u0648\u062F\u0633\u0631",letters:["\u0642"]}]}]},{province:"\u0644\u0631\u0633\u062A\u0627\u0646",codes:[{code:"31",details:[{city:"\u062E\u0631\u0645\u200C\u0622\u0628\u0627\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635"]}]},{code:"41",details:[{city:"\u0628\u0631\u0648\u062C\u0631\u062F",letters:["\u0628","\u0645","\u0646"]},{city:"\u0627\u0644\u06CC\u06AF\u0648\u062F\u0631\u0632",letters:["\u062C"]},{city:"\u062F\u0648\u0631\u0648\u062F",letters:["\u062F","\u0648"]},{city:"\u06A9\u0648\u0647\u062F\u0634\u062A",letters:["\u0633","\u0648"]},{city:"\u062F\u0644\u0641\u0627\u0646",letters:["\u0635"]},{city:"\u0627\u0632\u0646\u0627",letters:["\u0637"]},{city:"\u067E\u0644 \u062F\u062E\u062A\u0631",letters:["\u0642"]},{city:"\u0633\u0644\u0633\u0644\u0647",letters:["\u0644"]}]}]},{province:"\u0645\u0627\u0632\u0646\u062F\u0631\u0627\u0646",codes:[{code:"62",details:[{city:"\u0633\u0627\u0631\u06CC",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637"]}]},{code:"72",details:[{city:"\u0622\u0645\u0644",letters:["\u0628"]},{city:"\u0628\u0627\u0628\u0644",letters:["\u062C"]},{city:"\u062A\u0646\u06A9\u0627\u0628\u0646",letters:["\u062F"]},{city:"\u0631\u0627\u0645\u0633\u0631",letters:["\u0633"]},{city:"\u0646\u0648\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0646\u0648\u0631",letters:["\u0637","\u06CC"]},{city:"\u0628\u0647\u0634\u0647\u0631",letters:["\u0642"]},{city:"\u0642\u0627\u0626\u0645\u0634\u0647\u0631",letters:["\u0644"]},{city:"\u0628\u0627\u0628\u0644\u0633\u0631",letters:["\u0645"]},{city:"\u0686\u0627\u0644\u0648\u0633",letters:["\u0646"]},{city:"\u0646\u06A9\u0627",letters:["\u0647"]},{city:"\u0645\u062D\u0645\u0648\u062F\u0622\u0628\u0627\u062F",letters:["\u0648"]},{city:"\u062C\u0648\u06CC\u0628\u0627\u0631",letters:["\u06CC"]}]},{code:"82",details:[{city:"\u0633\u0648\u0627\u062F\u06A9\u0648\u0647",letters:["\u0628"]},{city:"\u0628\u0627\u0628\u0644",letters:["\u062C","\u0635","\u0645"]},{city:"\u0622\u0645\u0644",letters:["\u062F","\u0642"]},{city:"\u0642\u0627\u0626\u0645\u0634\u0647\u0631",letters:["\u0633","\u0646"]},{city:"\u062A\u0646\u06A9\u0627\u0628\u0646",letters:["\u0637"]},{city:"\u0628\u0627\u0628\u0644\u0633\u0631",letters:["\u0644"]},{city:"\u0628\u0647\u0634\u0647\u0631",letters:["\u0647"]},{city:"\u0686\u0627\u0644\u0648\u0633",letters:["\u0648"]},{city:"\u0646\u0648\u0634\u0647\u0631",letters:["\u06CC"]}]},{code:"92",details:[{city:"\u0622\u0645\u0644",letters:["\u0628"]},{city:"\u0628\u0627\u0628\u0644",letters:["\u062C","\u0635"]},{city:"\u062A\u0646\u06A9\u0627\u0628\u0646",letters:["\u062F"]},{city:"\u0642\u0627\u0626\u0645\u0634\u0647\u0631",letters:["\u0633"]}]}]},{province:"\u0645\u0631\u06A9\u0632\u06CC",codes:[{code:"47",details:[{city:"\u0627\u0631\u0627\u06A9",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642"]}]},{code:"57",details:[{city:"\u0633\u0627\u0648\u0647",letters:["\u0628","\u0647","\u0648"]},{city:"\u062E\u0645\u06CC\u0646",letters:["\u062C"]},{city:"\u0645\u062D\u0644\u0627\u062A",letters:["\u062F"]},{city:"\u062A\u0641\u0631\u0634",letters:["\u0633"]},{city:"\u062F\u0644\u06CC\u062C\u0627\u0646",letters:["\u0635"]},{city:"\u0622\u0634\u062A\u06CC\u0627\u0646",letters:["\u0637"]},{city:"\u0634\u0627\u0632\u0646\u062F",letters:["\u0642"]},{city:"\u0632\u0631\u0646\u062F\u06CC\u0647",letters:["\u0644"]},{city:"\u06A9\u0645\u06CC\u062C\u0627\u0646",letters:["\u0646"]}]}]},{province:"\u0647\u0631\u0645\u0632\u06AF\u0627\u0646",codes:[{code:"84",details:[{city:"\u0628\u0646\u062F\u0631\u0639\u0628\u0627\u0633",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644"]}]},{code:"94",details:[{city:"\u0645\u06CC\u0646\u0627\u0628",letters:["\u0628","\u0645"]},{city:"\u0628\u0646\u062F\u0631 \u0644\u0646\u06AF\u0647",letters:["\u062C","\u0646"]},{city:"\u0631\u0648\u062F\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0628\u0648\u0645\u0648\u0633\u06CC",letters:["\u0633"]},{city:"\u062C\u0627\u0633\u06A9",letters:["\u0635"]},{city:"\u0628\u0633\u062A\u06A9",letters:["\u0637"]},{city:"\u062D\u0627\u062C\u06CC\u200C\u0622\u0628\u0627\u062F",letters:["\u0642"]},{city:"\u0642\u0634\u0645",letters:["\u0644"]}]}]},{province:"\u0647\u0645\u062F\u0627\u0646",codes:[{code:"18",details:[{city:"\u0647\u0645\u062F\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0642","\u0644","\u0637"]}]},{code:"28",details:[{city:"\u0646\u0647\u0627\u0648\u0646\u062F",letters:["\u0628","\u0645"]},{city:"\u0645\u0644\u0627\u06CC\u0631",letters:["\u062C","\u0644","\u0646"]},{city:"\u062A\u0648\u06CC\u0633\u0631\u06A9\u0627\u0646",letters:["\u062F"]},{city:"\u06A9\u0628\u0648\u062F\u0631\u0622\u0647\u0646\u06AF",letters:["\u0633"]},{city:"\u0631\u0632\u0646",letters:["\u0635"]},{city:"\u0628\u0647\u0627\u0631",letters:["\u0637"]},{city:"\u0627\u0633\u062F\u0622\u0628\u0627\u062F",letters:["\u0642"]}]}]},{province:"\u06CC\u0632\u062F",codes:[{code:"54",details:[{city:"\u06CC\u0632\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646"]}]},{code:"64",details:[{city:"\u0627\u0631\u062F\u06A9\u0627\u0646",letters:["\u0628"]},{city:"\u062A\u0641\u062A",letters:["\u062C"]},{city:"\u0645\u06CC\u0628\u062F",letters:["\u062F"]},{city:"\u0628\u0627\u0641\u0642",letters:["\u0633"]},{city:"\u0645\u0647\u0631\u06CC\u0632",letters:["\u0635"]},{city:"\u0627\u0628\u0631\u06A9\u0648\u0647",letters:["\u0637"]},{city:"\u062E\u0627\u062A\u0645",letters:["\u0644"]},{city:"\u0635\u062F\u0648\u0642 (\u0627\u0634\u06A9\u0630\u0631)",letters:["\u0645"]}]}]}];var X=F;function V(e){let t=n(e).replace(/[\s-]/g,""),r=/^(\d{2})([\u0600-\u06FF]{1,3}|[A-Za-z])(\d{3})(\d{2})$/,s=t.match(r);if(!s)return null;let i=s[2],l=s[4];for(let o of X){let p=o.codes.find(a=>{let g=a.code;return g.includes(",")?g.split(",").map(m=>m.trim()).includes(l):g===l});if(p){let a=p.details.find(g=>g.letters.includes(i)||g.letters.includes("\u062A\u0645\u0627\u0645 \u062D\u0631\u0648\u0641"));if(a)return {province:o.province,city:a.city,isValid:true}}}return null}function L(e){return V(e)!==null}function B(e){let t=0,r=2;for(let i=e.length-1;i>=0;i--)t+=parseInt(e[i])*r,r++,r>7&&(r=2);let s=t%11;return s===0||s===1?0:11-s}function x(e){let t=n(e);if(!/^\d{6,13}$/.test(t))return false;let r=parseInt(t.slice(-1)),s=t.slice(0,-1);return B(s)===r}function _(e,t){let r=n(e),s=n(t);if(!/^\d{6,13}$/.test(r)||!/^\d{6,13}$/.test(s))return false;let i=parseInt(r.slice(-2,-1)),l=r.slice(0,-2);if(B(l)!==i)return false;let o=parseInt(r.slice(-1)),p=s+r.slice(0,-1);return B(p)===o}function q(e,t){let r=n(e);if(r.length<6||r.length>13)return null;let s=parseInt(r.slice(-2,-1)),i=E[s]||{label:"\u0646\u0627\u0645\u0634\u062E\u0635",slug:"unknown",color:"#333",logo:""},l=0,o="0",p=x(r);if(t){let a=n(t);if(!_(a,r))p=false;else {let g=a.slice(0,-5);g.length>0&&(l=parseInt(g)*1e3,o=new Intl.NumberFormat("fa-IR").format(l));}}return {type:i,amount:l,formattedAmount:o,isValid:p}}function w(e){let t=e%33;return [1,5,9,13,17,22,26,30].includes(t)}function Q(e,t){return t<=6?31:t<=11||w(e)?30:29}function U(e){let t=n(e),r=/^(\d{4})[\/\-\.](\d{1,2})[\/\-\.](\d{1,2})$/,s=t.match(r);if(!s)return null;let i=parseInt(s[1]),l=parseInt(s[2]),o=parseInt(s[3]);if(l<1||l>12)return {year:i,month:l,day:o,isValid:false,isLeap:false};let p=w(i),a=Q(i,l);return o<1||o>a?{year:i,month:l,day:o,isValid:false,isLeap:p}:{year:i,month:l,day:o,isValid:true,isLeap:p}}function K(e){let t=U(e);return t?t.isValid:false}var W="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",A={};for(let e=0;e<W.length;e++)A[W.charAt(e)]=e;function J(e){if(e.length===0)return new Uint8Array(0);let t=[0];for(let r=0;r<e.length;r++){let s=e[r];if(!(s in A))return null;let i=A[s];for(let o=0;o<t.length;o++)t[o]*=58;t[0]+=i;let l=0;for(let o=0;o<t.length;o++)t[o]+=l,l=t[o]>>8,t[o]&=255;for(;l;)t.push(l&255),l>>=8;}for(let r=0;r<e.length&&e[r]==="1";r++)t.push(0);return new Uint8Array(t.reverse())}function j(e){if(!e||typeof e!="string")return null;if(e.startsWith("T")&&e.length===34){let t=J(e);if(t&&t.length===25)return {ticker:"TRX",network:"TRC20",isValid:true}}if(e.startsWith("0x")&&e.length===42&&/^0x[0-9a-fA-F]{40}$/.test(e)){let t=/^0x[0-9a-f]{40}$/.test(e),r=/^0x[0-9A-F]{40}$/.test(e);return {ticker:"ETH",network:"ERC20",isValid:true,warning:t||r?void 0:"Checksummed"}}if(/^(1|3)[a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(e)){let t=J(e);if(t&&t.length===25)return {ticker:"BTC",network:"BITCOIN",isValid:true}}return e.startsWith("bc1")&&/^[a-z0-9]{39,59}$/.test(e)?{ticker:"BTC",network:"BITCOIN",isValid:true}:{ticker:"UNKNOWN",network:"UNKNOWN",isValid:false}}function H(e,t){let r=j(e);return !(!r||!r.isValid||t&&r.ticker!==t)}var Rt=e=>z$1.string().refine(t=>$(t),{message:y("melliCode",e)}),Pt=e=>z$1.string().refine(t=>k(t),{message:y("shenaseMelli",e)}),Dt=e=>z$1.string().refine(t=>S(t),{message:y("passport",e)}),Tt=e=>z$1.string().refine(t=>v(t),{message:y("cardNumber",e)}),Mt=e=>z$1.string().refine(t=>D(t,{strictZero:e?.strictZero}),{message:y("mobile",e)}),Ft=e=>z$1.string().refine(t=>C(t),{message:y("sheba",e)}),Vt=e=>z$1.string().refine(t=>T(t),{message:y("postalCode",e)}),Lt=e=>z$1.string().refine(t=>M(t),{message:y("landline",e)}),_t=e=>z$1.string().refine(t=>x(t),{message:y("billId",e)}),wt=e=>z$1.string().refine(t=>t.length>=6&&t.length<=13,{message:y("paymentId",e)}),Ut=e=>z$1.string().refine(t=>L(t),{message:y("plateNumber",e)}),Kt=e=>z$1.string().refine(t=>K(t),{message:y("date",e)}),Wt=e=>z$1.string().refine(t=>P(t),{message:y("financial",e)}),Jt=e=>z$1.string().refine(t=>H(t,e?.ticker),{message:y("crypto",e)}),jt=e=>z$1.preprocess(t=>typeof t=="string"?n(t):t,e);
|
|
2
|
+
export{z as getBankInfo,q as getBillInfo,j as getCryptoInfo,R as getFinancialInfo,U as getJalaliDateInfo,G as getMobileOperator,V as getPlateInfo,x as isBillIdValid,v as isCardNumber,H as isCryptoAddress,P as isFinancialValue,D as isIranianMobile,K as isJalaliDate,M as isLandline,$ as isMelliCode,S as isPassport,_ as isPaymentIdValid,L as isPlateNumber,T as isPostalCode,C as isSheba,k as isShenaseMelli,jt as preprocessNumber,n as verifyAndNormalize,_t as zBillId,Tt as zCardNumber,Jt as zCrypto,Wt as zFinancial,Mt as zIranianMobile,Kt as zJalaliDate,Lt as zLandline,Rt as zMelliCode,Dt as zPassport,wt as zPaymentId,Ut as zPlateNumber,Vt as zPostalCode,Ft as zSheba,Pt as zShenaseMelli};//# sourceMappingURL=index.mjs.map
|
|
2
3
|
//# sourceMappingURL=index.mjs.map
|