# Copyright (C) 2011 The Libphonenumber Authors

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

# http://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Generated from:
# http://www.itu.int/oth/T02020000B9/en [2011-07-04]

38110|Пирот
38111|Београд
38112|Пожаревац
38113|Панчево
38114|Ваљево
38115|Шабац
38116|Лесковац
38117|Врање
38118|Ниш
38119|Зајечар
38120|Нови Пазар
38121|Нови Сад
38122|Сремска Митровица
38123|Зрењанин
381230|Кикинда
38124|Суботица
38125|Сомбор
38126|Смедерево
38127|Прокупље
38128|Косовска Митровица
381280|Гњилане
38129|Призрен
381290|Урошевац
38130|Бор
38131|Ужице
38132|Чачак
38133|Пријепоље
38134|Крагујевац
38135|Јагодина
38136|Краљево
38137|Крушевац
38138|Приштина
38139|Пећ
381390|Ђаковица
