$mirrors = {
  'Africa' => {
    'Algeria' => {
      'http://ctan.epst-tlemcen.dz/tex-archive/' => 1
    },
    'Morocco' => {
      'https://mirror.marwan.ma/ctan/' => 1
    },
    'South Africa' => {
      'http://ftp.leg.uct.ac.za/pub/packages/ctan/' => 1,
      'http://ftp.sun.ac.za/ftp/CTAN/' => 1,
      'http://mirror.ufs.ac.za/ctan/' => 1
    }
  },
  'Asia' => {
    'China' => {
      'http://mirror.lzu.edu.cn/CTAN/' => 1,
      'http://mirrors.cqu.edu.cn/CTAN/' => 1,
      'http://mirrors.hit.edu.cn/CTAN/' => 1,
      'http://mirrors.sjtug.sjtu.edu.cn/ctan/' => 1,
      'http://mirrors.tuna.tsinghua.edu.cn/CTAN/' => 1,
      'http://mirrors.ustc.edu.cn/CTAN/' => 1
    },
    'Hong Kong' => {
      'https://mirror-hk.koddos.net/CTAN/' => 1
    },
    'India' => {
      'http://ctan.imsc.res.in/' => 1,
      'http://mirror.iopb.res.in/tex-archive/' => 1
    },
    'Indonesia' => {
      'https://mirror.unpad.ac.id/ctan/' => 1
    },
    'Iran' => {
      'http://ctan.asis.ai/' => 1,
      'http://ctan.yazd.ac.ir/' => 1
    },
    'Japan' => {
      'ftp://ftp.kddilabs.jp/CTAN/' => 1,
      'ftp://ftp.u-aizu.ac.jp/pub/tex/CTAN/' => 1,
      'http://ftp.jaist.ac.jp/pub/CTAN/' => 1,
      'http://ftp.yz.yamagata-u.ac.jp/pub/CTAN/' => 1
    },
    'Korea' => {
      'http://ftp.harukasan.org/CTAN/' => 1,
      'http://ftp.ktug.org/tex-archive/' => 1,
      'http://mirror.navercorp.com/CTAN/' => 1,
      'http://mirror.yongbok.net/ctan/' => 1
    },
    'Philippines' => {
      'http://mirror.pregi.net/tex-archive/' => 1
    },
    'Singapore' => {
      'https://download.nus.edu.sg/mirror/ctan/' => 1
    },
    'Taiwan' => {
      'http://ftp.yzu.edu.tw/CTAN/' => 1
    }
  },
  'Europe' => {
    'Austria' => {
      'http://mirror.easyname.at/ctan/' => 1,
      'http://mirror.kumi.systems/ctan/' => 1
    },
    'Belarus' => {
      'http://mirror.datacenter.by/pub/mirrors/CTAN/' => 1
    },
    'Czech Republic' => {
      'http://ftp.cvut.cz/tex-archive/' => 1
    },
    'Denmark' => {
      'http://mirrors.dotsrc.org/ctan/' => 1
    },
    'Finland' => {
      'ftp://ftp.funet.fi/pub/TeX/CTAN/' => 1,
      'https://www.texlive.info/CTAN/' => 1
    },
    'France' => {
      'http://ctan.crest.fr/tex-archive/' => 1,
      'http://ctan.mines-albi.fr/' => 1,
      'http://ctan.tetaneutral.net/' => 1,
      'http://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/ctan/' => 1,
      'http://mirrors.ircam.fr/pub/CTAN/' => 1,
      'http://mirrors.standaloneinstaller.com/ctan/' => 1,
      'https://ctan.mc1.root.project-creative.net/' => 1,
      'https://ctan.mc2.root.project-creative.net/' => 1,
      'https://mirrors.chevalier.io/CTAN/' => 1
    },
    'Germany' => {
      'ftp://ftp.fu-berlin.de/tex/CTAN/' => 1,
      'ftp://ftp.rrzn.uni-hannover.de/pub/mirror/tex-archive/' => 1,
      'ftp://ftp.tu-chemnitz.de/pub/tex/' => 1,
      'http://ctan.ebinger.cc/tex-archive/' => 1,
      'http://ctan.mirror.norbert-ruehl.de/' => 1,
      'http://ctan.space-pro.be/tex-archive/' => 1,
      'http://ftp.fau.de/ctan/' => 1,
      'http://mirror.informatik.hs-fulda.de/tex-archive/' => 1,
      'http://packages.oth-regensburg.de/ctan/' => 1,
      'http://vesta.informatik.rwth-aachen.de/ftp/pub/mirror/ctan/' => 1,
      'https://ctan.kako-dev.de/' => 1,
      'https://ctan.net/' => 1
    },
    'Greece' => {
      'http://ftp.cc.uoc.gr/mirrors/CTAN/' => 1
    },
    'Hungary' => {
      'https://mirror.szerverem.hu/ctan/' => 1
    },
    'Italy' => {
      'http://ctan.mirror.garr.it/mirrors/CTAN/' => 1
    },
    'Netherlands' => {
      'http://ctan.cs.uu.nl/' => 1,
      'http://ctan.triasinformatica.nl/' => 1,
      'http://ftp.snt.utwente.nl/pub/software/tex/' => 1,
      'http://mirror.koddos.net/CTAN/' => 1
    },
    'Norway' => {
      'http://ctan.uib.no/' => 1
    },
    'Poland' => {
      'ftp://ftp.gust.org.pl/TeX/' => 1,
      'ftp://sunsite.icm.edu.pl/pub/CTAN/' => 1,
      'http://piotrkosoft.net/pub/mirrors/CTAN/' => 1
    },
    'Portugal' => {
      'http://mirrors.up.pt/pub/CTAN/' => 1,
      'https://ftp.eq.uc.pt/software/TeX/' => 1
    },
    'Romania' => {
      'http://mirrors.nxthost.com/ctan/' => 1
    },
    'Russia' => {
      'http://ctan.altspu.ru/' => 1,
      'http://mirror.macomnet.net/pub/CTAN/' => 1,
      'http://mirrors.mi.ras.ru/CTAN/' => 1
    },
    'Serbia' => {
      'http://ctan.mirror.ftn.uns.ac.rs/' => 1
    },
    'Slovenia' => {
      'http://ctan.ijs.si/tex-archive/' => 1
    },
    'Spain' => {
      'http://osl.ugr.es/CTAN/' => 1
    },
    'Sweden' => {
      'http://ftp.acc.umu.se/mirror/CTAN/' => 1
    },
    'UK' => {
      'http://anorien.csc.warwick.ac.uk/mirrors/CTAN/' => 1
    }
  },
  'North America' => {
    'Canada' => {
      'http://ctan.forsale.plus/' => 1,
      'http://ctan.math.ca/tex-archive/' => 1,
      'http://ctan.mirror.colo-serv.net/' => 1,
      'http://ctan.mirror.rafal.ca/' => 1,
      'http://mirror.its.dal.ca/ctan/' => 1,
      'http://muug.ca/mirror/ctan/' => 1
    },
    'Costa Rica' => {
      'http://mirrors.ucr.ac.cr/CTAN/' => 1
    },
    'USA' => {
      'http://ctan.math.illinois.edu/' => 1,
      'http://ctan.math.washington.edu/tex-archive/' => 1,
      'http://ctan.mirrors.hoobly.com/' => 1,
      'http://mirror.las.iastate.edu/tex-archive/' => 1,
      'http://mirror.utexas.edu/ctan/' => 1,
      'http://mirrors.concertpass.com/tex-archive/' => 1,
      'http://mirrors.ibiblio.org/pub/mirrors/CTAN/' => 1,
      'http://mirrors.rit.edu/CTAN/' => 1
    }
  },
  'Oceania' => {
    'Australia' => {
      'http://mirror.aarnet.edu.au/pub/CTAN/' => 1
    },
    'New Zealand' => {
      'http://mirror.aut.ac.nz/CTAN/' => 1
    }
  },
  'South America' => {
    'Brazil' => {
      'http://linorg.usp.br/CTAN/' => 1
    }
  }
};
