ryba 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ pkg
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Oleg Dashevskii
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,117 @@
1
+ h1. Ryba
2
+
3
+ h2. Введение
4
+
5
+ Часто встает задача заполнения баз данных «рыбой», т.е. случайно сгенерированными данными,
6
+ похожими на настоящие.
7
+
8
+ К таким данным относятся:
9
+ * ФИО.
10
+ * Почтовые адреса (индекс, город, улица, дом, квартира).
11
+ * Телефоны.
12
+ * E-mail адреса.
13
+ * Названия.
14
+ * «Просто текст» для больших текстовых полей.
15
+
16
+ Есть gemы, умеющие генерировать такие данные на английском: "faker":http://faker.rubyforge.org,
17
+ "random_data":http://rubyforge.org/projects/random-data и другие.
18
+
19
+ Ryba — попытка создать аналогичный генератор для русского языка: русские имена, адреса и т.д.
20
+
21
+ Библиотека находится в активной разработке. На данный момент реализованы:
22
+ * Генерация имен.
23
+ * Генерация телефонов.
24
+ * Генерация адресов.
25
+
26
+ Ниже описан интерфейс для реализованных возможностей.
27
+
28
+ h2. Генерация имен
29
+
30
+ Методы из @Ryba::Name@.
31
+
32
+ @Ryba::Name.first_name(male = nil)@ — случайное имя.
33
+
34
+ @Ryba::Name.middle_name(male = nil)@ — случайное отчество.
35
+
36
+ @Ryba::Name.family_name(male = nil)@ — случайная фамилия.
37
+
38
+ @Ryba::Name.full_name(male = nil)@ — случайное ФИО (например, "Щетинин Камилл Ростиславович").
39
+
40
+ Параметр @male@ указывает пол (@true@ — мужской, @false@ — женский). Если параметр не указывать,
41
+ будет выбран случайный пол.
42
+
43
+ Чтобы получить имена для одного пола, можно воспользоваться методом @Ryba::Name.gender@,
44
+ возвращающим случайный пол. Либо простым вызовом:
45
+
46
+ <pre><code>
47
+ gender = Ryba::Name.gender
48
+ first_name = Ryba::Name.first_name(gender)
49
+ family_name = Ryba::Name.family_name(gender)
50
+ </pre></code>
51
+
52
+ ...либо с помощью блока
53
+
54
+ <pre><code>
55
+ Ryba::Name.gender do |gender|
56
+ first_name = Ryba::Name.first_name(gender)
57
+ family_name = Ryba::Name.family_name(gender)
58
+ end
59
+ </pre></code>
60
+
61
+ h2. Генерация телефонов
62
+
63
+ Метод @Ryba::PhoneNumber.phone_number@.
64
+
65
+ <pre><code>
66
+ >> Ryba::PhoneNumber.phone_number
67
+ => "2-26-47"
68
+ >> Ryba::PhoneNumber.phone_number
69
+ => "431-15-94"
70
+ >> Ryba::PhoneNumber.phone_number
71
+ => "8 (87829) 9-45-53"
72
+ >> Ryba::PhoneNumber.phone_number
73
+ => "5515328"
74
+ >> Ryba::PhoneNumber.phone_number
75
+ => "(2397) 94 78 14"
76
+ </code></pre>
77
+
78
+ h2. Генерация адресов
79
+
80
+ Методы из @Ryba::Address@.
81
+
82
+ @Ryba::Address.index@ — случайный почтовый индекс (просто случайное число между 100000 и 700000). _Пример: 149544_.
83
+
84
+ @Ryba::Address.city@ - случайный город России. _Пример: "Выкса"_.
85
+
86
+ @Ryba::Address.full_city@ - случайный город с указанием региона, если это необходимо (город не является областным центром). _Примеры:_
87
+ * "Брянская обл., г. Унеча";
88
+ * "г. Ярославль";
89
+ * "г. Москва".
90
+
91
+ @Ryba::Address.street@ - случайное название улицы. _Примеры:_
92
+ * "ул. Бородина";
93
+ * "Красный пер.";
94
+ * "1 линия".
95
+
96
+ @Ryba::Address.address@ - случайный адрес. _Примеры:_
97
+ * "ул. Щербакова 130-279";
98
+ * "ул. Невская, д.167, оф. 32";
99
+ * "Пушкинский пер., д. 36, кв.234";
100
+ * "ул. Базарная, д. 182к2, 5-й эт.".
101
+
102
+ @Ryba::Address.postal@ - случайный полный почтовый адрес. _Примеры:_
103
+ * "242733, Рязанская обл., г. Спас-Клепики, ул. Куйбышева, 42-22";
104
+ * "471408, Челябинская обл., г. Златоуст, ул. Квартальная, 174-282";
105
+ * "195730, Воронежская обл., г. Калач, ул. Волжская, д. 175, кв. 7";
106
+ * "342656, Краснодарский край, г. Лабинск, ул. Ворошилова, д.153, кв.225";
107
+ * "209218, Сахалинская обл., г. Корсаков, ул. Мусоргского д. 65 кв. 206";
108
+ * "485245, г. Курган, ул. Литвинова д.173 кв. 245".
109
+
110
+ Обратите внимание, что индекс не является настоящим и что в городе может не быть
111
+ такой улицы (а на улице — такого дома, а в доме — такой квартиры).
112
+
113
+ h2. Лицензия
114
+
115
+ Библиотека ryba распространяется по лицензии MIT, см. файл MIT-LICENSE.
116
+
117
+ Автор: Олег Дашевский, "#{%w(Oleg Dashevskii).join('').downcase}@gmail.com"
@@ -0,0 +1,41 @@
1
+ require 'rake'
2
+
3
+ begin
4
+ require 'jeweler'
5
+ Jeweler::Tasks.new do |s|
6
+ s.name = "ryba"
7
+ s.summary = %Q{Russian faker}
8
+ s.email = "olegdashevskii@gmail.com"
9
+ s.homepage = "http://github.com/be9/ryba"
10
+ s.description = "Russian names and addresses generator"
11
+ s.authors = ["oleg dashevskii"]
12
+ end
13
+
14
+ Jeweler::GemcutterTasks.new
15
+ rescue LoadError
16
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
17
+ end
18
+
19
+ require 'rake/rdoctask'
20
+ Rake::RDocTask.new do |rdoc|
21
+ rdoc.rdoc_dir = 'rdoc'
22
+ rdoc.title = 'ryba'
23
+ rdoc.options << '--line-numbers' << '--inline-source'
24
+ rdoc.rdoc_files.include('README*')
25
+ rdoc.rdoc_files.include('lib/**/*.rb')
26
+ end
27
+
28
+ require 'spec/rake/spectask'
29
+ Spec::Rake::SpecTask.new(:spec) do |t|
30
+ t.libs << 'lib' << 'spec'
31
+ t.spec_files = FileList['spec/**/*_spec.rb']
32
+ t.spec_opts << '--colour'
33
+ end
34
+
35
+ Spec::Rake::SpecTask.new(:rcov) do |t|
36
+ t.libs << 'lib' << 'spec'
37
+ t.spec_files = FileList['spec/**/*_spec.rb']
38
+ t.rcov = true
39
+ end
40
+
41
+ task :default => :spec
@@ -0,0 +1,5 @@
1
+ ---
2
+ :patch: 0
3
+ :major: 0
4
+ :build:
5
+ :minor: 1
@@ -0,0 +1,39 @@
1
+ module Ryba
2
+ def self.numerify(number_string)
3
+ number_string.gsub('#') { rand(10).to_s }
4
+ end
5
+
6
+ def self.pick(variants)
7
+ case variants
8
+ when Array
9
+ variants[rand(variants.size)]
10
+ when String
11
+ variants[rand(variants.length),1]
12
+ when Range
13
+ if variants.exclude_end?
14
+ rand(variants.last - variants.first) + variants.first
15
+ else
16
+ rand((variants.last+1) - variants.first) + variants.first
17
+ end
18
+ end
19
+ end
20
+
21
+ def self.weighted_pick(variants)
22
+ total_sum = variants.inject(0) { |sum, var| sum + var[1] }
23
+ rnd = rand(total_sum)
24
+
25
+ sum = 0
26
+ variants.each do |var|
27
+ sum += var[1]
28
+ return var[0] if rnd < sum
29
+ end
30
+
31
+ # этого не может быть
32
+ raise
33
+ end
34
+ end
35
+
36
+ require File.join(File.dirname(__FILE__), 'ryba', 'data')
37
+ require File.join(File.dirname(__FILE__), 'ryba', 'name')
38
+ require File.join(File.dirname(__FILE__), 'ryba', 'phone_number')
39
+ require File.join(File.dirname(__FILE__), 'ryba', 'address')
@@ -0,0 +1,74 @@
1
+ module Ryba
2
+ class Address
3
+ class<<self
4
+ def index
5
+ Ryba.pick(100000...700000)
6
+ end
7
+
8
+ def city
9
+ Ryba.pick(Data::AllCities).gsub('_', ' ')
10
+ end
11
+
12
+ def full_city
13
+ cty = Ryba.pick(Data::AllCities)
14
+ h_cty = cty.gsub('_', ' ')
15
+
16
+ region = Ryba.pick(Data::RegionByCities[cty])
17
+
18
+ if Data::CitiesByRegion[region].first == cty
19
+ "г. #{h_cty}"
20
+ else
21
+ "#{region}, г. #{h_cty}"
22
+ end
23
+ end
24
+
25
+ def street
26
+ Ryba.pick(Data::StreetNames)
27
+ end
28
+
29
+ BuildingFormats = [
30
+ [ 'д. #', 90 ],
31
+ [ 'д.#', 80 ],
32
+ [ 'д. #/?', 15 ],
33
+ [ 'д. #к?', 10 ],
34
+ [ 'стр. #', 10 ],
35
+ [ 'д.#/?', 5 ],
36
+ [ 'д.#к?', 5 ],
37
+ [ 'стр.#', 5 ],
38
+ ].freeze
39
+
40
+ ApartmentFormats = [
41
+ [ 'кв. #', 10 ],
42
+ [ 'оф. #', 10 ],
43
+ [ '? этаж', 2 ],
44
+ [ 'кв.#', 5 ],
45
+ [ 'оф.#', 5 ],
46
+ [ '?-й эт.', 1 ],
47
+ ]
48
+
49
+ def address
50
+ building = Ryba.pick(1..200)
51
+ apartment = Ryba.pick(1..300)
52
+ separator = Ryba.pick([' ', ', '])
53
+
54
+ street + separator +
55
+ if rand(10) < 2
56
+ "#{building}-#{apartment}"
57
+ else
58
+ formatter = lambda do |fmts, num|
59
+ Ryba.weighted_pick(fmts).gsub('#', num.to_s).gsub('?', Ryba.pick(1..9).to_s)
60
+ end
61
+
62
+ building = formatter.call(BuildingFormats, building)
63
+ apartment = formatter.call(ApartmentFormats, apartment)
64
+
65
+ "#{building}#{separator}#{apartment}"
66
+ end
67
+ end
68
+
69
+ def postal
70
+ "#{index}, #{full_city}, #{address}"
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,817 @@
1
+ module Ryba
2
+ module Data
3
+ # http://taina.aib.ru/names/man/man-a.htm
4
+ MaleNames = %w{
5
+ Абрам Авраам Ибрагим Аввакум Аввакуум Аббакум Август Августин
6
+ Авдей Авенир Аверьян Аверкий Авксентий Агап Агафон Агей Азарий
7
+ Адам Адольф Адриан Акакий Аким Алан Александр Алексей Алоис
8
+ Альберт Альбин Альфред Амадей Амвросий Ананий Анжей Анастасий
9
+ Анатолий Андрей Андриан Андроник Андрон Анисим Антип Антон
10
+ Ануфрий Аполинарий Аполлон Аристарх Аркадий Арнольд Арсен
11
+ Арсений Артем Артемий Артур Архип Аскольд Атанас Аурелий
12
+ Аурелиус Афанасий Афиноген Бажен Бальтазар Бенедикт Бернанд
13
+ Бертран Богдан Болеслав Бонавентура Борис Бронислав Бруно Булат
14
+ Вавила Вадим Валентин Валериан Валерьян Валерий Вальтер Варлаам
15
+ Варлам Варфоломей Василий Вацлав Велор Велорий Венедикт Вениамин
16
+ Викентий Виктор Вилли Винсент Виргилий Виссарион Вит Виталий
17
+ Витольд Владимир Владислав Владлен Влас Вольдемар Всеволод
18
+ Вячеслав Габриель Гавриил Галактион Гарри Геннадий Генрих
19
+ Георгий Егор Геракл Геральд Герасим Герман Глеб Годфрид Гордей
20
+ Грегор Григорий Гурий Густав Давыд Давид Даниил Данила Дементий
21
+ Демид Демьян Денис Джордан Димитрий Дмитрий Дональд Донат
22
+ Дормидонт Дорофей Евгений Евграф Евдоким Евлампий Евсевий Евсей
23
+ Евстафий Евстахий Евстигней Евстрат Елизар Елисей Емельян Епифан
24
+ Еремей Ермолай Ерофей Ефим Ефрем Жерар Захар Зенон Зигфрид
25
+ Зиновий Зосима Иакинф Иван Иво Игнат Игнатий Игорь Измаил
26
+ Изяслав Илларион Илья Имил Эмилий Иннокентий Иона Иосиф Осип
27
+ Ипат Ипполит Ираклий Геракл Иржи Исаак Исидор Сидор Казимир
28
+ Каллистрат Камилл Капитон Карл Карол Карп Касьян Ким Киприан
29
+ Кирилл Кирьян Клавдий Клеменс Клемент Клим Климент Климентий
30
+ Кондратий Кондрат Конрад Константин Корнелий Корнилий Корней
31
+ Кристиан Кристоф Кронид Ксавер Ксенофонт Кузьма Лавр Лаврентий
32
+ Лазарь Лев Леон Леонард Леонид Леонтий Леопольд Лука Лукьян
33
+ Любомир Людвиг Люсьен Май Макар Макарий Максим Максимилиан
34
+ Мануэль Марек Мариан Мариус Марк Марсель Мартин Мартын Масей
35
+ Матвей Матеуш Мауриций Медард Мелентий Мефодий Мечеслав Мечислав
36
+ Милан Милон Мирон Мирослав Митрофан Михаил Модест Моисей
37
+ Мстислав Назар Назарий Наполеон Натан Нафан Наркисс Нарцисс
38
+ Наум Нестор Никандр Никанор Никита Никифор Никодим Николай Никон
39
+ Нил Нисон Норберт Овидий Олаф Олег Олесь Онисим Орест Осип Оскар
40
+ Остромир Павел Памфил Панфил Панкрат Пантелеймон Пантелей
41
+ Парамон Парфен Патрик Патрикей Паулин Пахом Петр Пимен Платон
42
+ Поликарп Порфирий Прокл Прокоп Прокофий Прокопий Протас Прохор
43
+ Ратибор Ратмир Рафаил Рафаэль Ринат Ренат Ричард Роберт Роджер
44
+ Родион Роланд Роман Рональд Ростислав Рубен Рудольф Руслан Рюрик
45
+ Савва Севастьян Савелий Самсон Самуил Святополк Святослав
46
+ Севастьян Северьян Селестин Семен Серафим Сергей Сила Сильвестр
47
+ Серж Соломон Спартак Спиридон Станислав Степан Тарас Теодор
48
+ Теофил Терентий Тимофей Тимур Тит Тихон Томас Трифон Трофим
49
+ Ульрих Устин Фабиан Фаддей Федор Федот Феликс Фелициан Феодосий
50
+ Феофан Фердинанд Филимон Филипп Флор Флориан Фома Франц Фридрих
51
+ Харитон Харольд Христиан Христофор Цезарь Эварист Эдвард Эдгар
52
+ Эдмунд Эдуард Эдвард Эмерик Эмиль Эммануил Эммануэль Эразм Эраст
53
+ Эрик Эрнест Юлиан Юлий Юрий Юхим Яков Ян Януарий Яромир
54
+ Ярослав}.freeze
55
+
56
+ # http://taina.aib.ru/names/woman/woman-a.htm
57
+ FemaleNames = %w{
58
+ Августа Августина Аврора Агата Агафья Аглая Аглаида Агнесса
59
+ Агния Агриппина Ада Аделаида Аделина Адриана Аза Акулина
60
+ Алевтина Александра Алина Алиса Алла Альберта Альбертина Альбина
61
+ Альфреда Амелия Анабела Анастасия Ангелина Анжела Анжелика
62
+ Анисья Анита Аниэла Анна Антонина Анфиса Апполинария Аполлония
63
+ Арабелла Ариадна Астра Аурелия Аурика Барбара Беата Беатриса
64
+ Белла Бенедикта Бернадета Берта Бибиана Бланка Богдана Болеслава
65
+ Борислава Бригитта Бронислава Валентина Валерия Ванда Варвара
66
+ Варя Василиса Васса Венера Вера Вероника Веста Ветта Иветта
67
+ Вивиана Виктория Вильгельмина Виолетта Вирджиния Виринея Виталия
68
+ Виталина Владислава Владлена Габриела Галина Гаянэ Гелена Гелла
69
+ Генриетта Гертруда Гизелла Глафира Гликерия Глория Гортензия
70
+ Грация Дайна Далия Дана Даниела Данута Дарья Дебора Джульетта
71
+ Диана Дина Доля Доминика Дора Дорота Дорофея Ева Евгения Евдокия
72
+ Евпраксия Евтебия Екатерина Елена Елизавета Ефросиния Жанна
73
+ Жеральдина Жозефина Забава Зинаида Зита Злата Зоя Ивона Изабелла
74
+ Изольда Инара Инга Инесса Инна Иоанна Иоланта Ираида Ирена Ирина
75
+ Ирма Ия Калерия Камилла Капитолина Карен Карина Каролина
76
+ Катарина Кира Клавдия Клара Климентина Клотильда Констанция Кора
77
+ Кристина Ксавера Ксения Лада Лайма Лариса Лаура Лена Леокадия
78
+ Леонтина Леся Лиана Лидия Лилиана Лилия Лиля Лия Лола Лолита
79
+ Лолла Луиза Лукреция Любовь Людмила Люсина Люся Люция Лючия
80
+ Магдалена Магдалина Майя Мануэла Маня Маргарита Марианна Марина
81
+ Мариэтта Мария Марлена Марселина Марта Марфа Матильда Матрена
82
+ Матрона Медея Мелания Милена Милица Мира Мирра Мирдза Мирра
83
+ Михалина Моника Муза Надежда Наина Наталья Наталия Наташа Нелли
84
+ Неонила Нила Ника Нина Нинель Нонна Нора Одетта Оксана Октавия
85
+ Октябрина Олеся Ольга Памела Патриция Паула Паулина Пелагея
86
+ Петиция Полина Прасковья Пульхерия Рада Раиса Рахиль Ревекка
87
+ Регина Рина Рената Римма Рита Роберта Роза Розалия Розамунда
88
+ Роксана Ростислава Руслана Руфина Сабина Сандра Сарра Сара
89
+ Светлана Северина Селестина Селина Серафима Сивилла Сильва
90
+ Сильвия Симона Сиотвия Соломея Соня София Софья Станислава
91
+ Стелла Стефанида Стефания Сузанна Сусанна Сюзанна Таира Таисия
92
+ Таисья Тамара Татьяна Текла Теодора Тереза Томила Тамила Ульяна
93
+ Устинья Урсула Фаина Фёкла Фелиция Феодора Феодосия Филиппина
94
+ Филомена Флора Франсуаза Фредерика Фрида Хильда Хильдегарда
95
+ Христина Цецилия Эвелина Эдита Юдифь Эдмунда Элеонора Элиана
96
+ Элина Элиза Элизабет Элла Эльвира Эльза Эмилия Эмма Эмма Эрика
97
+ Эрнестина Эстер Эстера Юдита Юлия Юнона Ядвига Яна Янина
98
+ Ярослава}
99
+
100
+ # http://taina.aib.ru/otchectv/man/index.htm
101
+ MaleMiddleNames = %w{
102
+ Александрович Алексеевич Альбертович Анатольевич Андреевич
103
+ Антонович Аркадьевич Артемович Богданович Богуславович Борисович
104
+ Вадимович Валентинович Валерьевич Васильевич Вениаминович
105
+ Викторович Владимирович Вячеславович Геннадиевич Георгиевич
106
+ Григорьевич Давидович Данилович Денисович Дмитриевич Евгеньевич
107
+ Егорович Ефимович Иванович Игоревич Ильич Иосифович Кириллович
108
+ Константинович Львович Леонидович Макарович Максимович Максович
109
+ Матвеевич Миронович Михайлович Натанович Наумович Николаевич
110
+ Олегович Оскарович Павлович Петрович Платонович Робертович
111
+ Романович Ростиславович Рубенович Рудольфович Русланович
112
+ Святославович Семенович Сергеевич Станиславович Степанович
113
+ Тарасович Тимофеевич Тимурович Федорович Феликсович Филиппович
114
+ Эдуардович Эльдарович Юрьевич Яковлевич Ярославович}
115
+
116
+ # http://taina.aib.ru/otchectv/woman/index.htm
117
+ FemaleMiddleNames = %w{
118
+ Александровна Алексеевна Альбертовна Анатольевна Андреевна
119
+ Антоновна Аркадьевна Артемовна Артуровна Архиповна Аскольдовна
120
+ Афанасьевна Богдановна Болеславовна Борисовна Вадимовна
121
+ Валентиновна Валериевна Васильевна Вениаминовна Викторовна
122
+ Владимировна Владиславовна Вячеславовна Владиславовна
123
+ Геннадиевна Георгиевна Григорьевна Даниловна Денисовна
124
+ Дмитриевна Евгеньевна Егоровна Ефимовна Ждановна Ивановна
125
+ Игоревна Ильинична Кирилловна Константиновна Кузминична Леоновна
126
+ Львовна Леонидовна Макаровна Максимовна Матвеевна Мироновна
127
+ Михайловна Натановна Наумовна Никифоровна Николаевна Ниловна
128
+ Олеговна Оскаровна Павловна Петровна Робертовна Романовна
129
+ Рубеновна Рудольфовна Руслановна Святославовна Семеновна
130
+ Сергеевна Степановна Станиславовна Тарасовна Тимофеевна
131
+ Тимуровна Федоровна Феликсовна Филипповна Эдуардовна Эльдаровна
132
+ Юльевна Юрьевна Яковлевна}
133
+
134
+ # http://b23.ru/qiu
135
+ FamilyNames = %w{
136
+ Абакумов Абарников Абдулов Абрамов Авдеев Аверин Аверьянов
137
+ Авилов Автухов Агапов Агафонов Агейкин Ажищенков Азаров Аксаков
138
+ Аксёнов Алеев Аленин Алиев Алистратов Алогрин Амалиев Амелин
139
+ Аминев Александров Алексеев Алёхин Аллилуев Андреев Андреюшкин
140
+ Андроников Андропов Аниканов Анисимов Анишин Анников Анохин
141
+ Аношкин Антипов Антонов Апалков Артамонов Арефьев Арзамасцев
142
+ Аристархов Арсеньев Артёмов Асланов Аслаханов Астанков Астафьев
143
+ Астахов Афанасьев Афонин Аспидов Бабанин Бабатьев Бабиков
144
+ Бабичев Бабкин Бабурин Багров Бакрылов Бажанов Баженов Базанов
145
+ Базаров Балакин Баландин Балахнов Балашов Бальсунов Баранов
146
+ Барболин Баренцев Баринов Барков Барсуков Батрутдинов Безбородов
147
+ Безруков Безукладников Белибердиев Беликов Белов Беломестнов
148
+ Беломестов Белочкин Бендлин Березин Белоусов Бершов Беспалов
149
+ Бескрёстнов Бехтерев Бирюков Блаженов Блатов Блинов Блохин
150
+ Бобров Богатырёв Богданов Боголепов Боголюбов Богомазов
151
+ Богомолов Богров Бойков Бойцов Болотников Болтоногов Большов
152
+ Бондарев Бондарчюк Бореев Бочаров Борзилов Борцов Брагин Брежнев
153
+ Бугаков Буданов Будников Будылин Букин Буклин Булгаков Булыгин
154
+ Бунин Бурков Буров Бурцов Буряков Бутылин Быков Былинкин Бычков
155
+ Вавилов Вагин Вазов Варенников Васильев Васин Васнев Васнецов
156
+ Вахров Вахрушев Венедиктов Веденеев Веденин Ведерников Вергунов
157
+ Верещагин Вершинин Веселов Викашев Виноградов Винокуров Витаев
158
+ Витвинин Вицин Вихров Водоватов Воликов Волков Вольваков
159
+ Воробьев Воронин Воронов Воронков Воронцов Воскобойников Вотяков
160
+ Вырыпаев Гавриков Гаврилов Гагарин Гаголин Галдин Галиаскаров
161
+ Галкин Галыгин Гарин Гачев Генкин Герасимов Гибазов Гилёв
162
+ Глазков Голов Голованов Головин Голодяев Голубев Голубов
163
+ Голубцов Гончаров Горбачёв Горбунов Горбунков Горев Горелов
164
+ Горемыкин Горюнов Грачёв Графов Грешнев Грибов Грибоедов
165
+ Григорьев Гринин Гришин Громов Губанов Гулин Гурьянов Гусаров
166
+ Гусев Гунин Гущин Горохов Дорофеев Давыдкин Данильцин Двойнев
167
+ Дворников Деменок Дементьев Демидов Деникин Дёгтин Дегтярев
168
+ Дежнёв Делов Дементьев Дёмин Державин Дернов Десятков Дмитриев
169
+ Добронравов Добрынин Долгоруков Должиков Домашев Достовалов
170
+ Драгомиров Дресвянин Дрёмов Друганин Другов Дубинин Дубов
171
+ Дульцев Дуров Дятлов Дураничев Евдокимов Евстигнеев Егоров Ежов
172
+ Елагин Елизаров Елисеев Ельцин Ельцов Емельянов Енин Енотин
173
+ Енотов Ерзов Ермаков Ермилов Еромеев Ерофеев Ершов Есипов Ефимов
174
+ Ефремов Емелин Ерохин Ерёмин Ёжин Ёжов Ёлкин Ёлков Жабин Жарков
175
+ Жарыхин Жвиков Жданов Жеглов Железкин Железнов Жестаков Живенков
176
+ Жиглов Жигунов Жидков Жикин Жилин Жилов Жолдин Жуков Жутов
177
+ Журавлёв Журов Заврагин Завражин Завражнов Завразин Завьялов
178
+ Задорнов Зайцев Закрятин Захаров Захарьин Звягин Зефиров Зёмин
179
+ Зимин Злобин Золин Золотов Зонов Зубков Зубов Зуев Зуйков
180
+ Зимняков Зыкин Зыков Зырянов Зюганов Зверев Игнаткович Ивазов
181
+ Ивакин Ибрагимов Иванов Иванков Ивашин Ивашов Ивкин Иволгин
182
+ Игнатьев Игошин Исмайлов Измайлов Изюмов Иканов Икашев Ильин
183
+ Илюшин Ильюшин Иноземцев Ипатьев Исаев Истомин Кабинов Каблуков
184
+ Каверин Кадников Кадцын Казаков Казанцев Казарезов Калганов
185
+ Калягин Камкин Канадин Канадов Канадцев Каналин Капралов
186
+ Каприянов Капустин Караваев Карандашов Карантиров Караулин
187
+ Караулов Карев Каретников Каргин Карташов Карчагин Катериночкин
188
+ Катин Качусов Кашарин Каширин Кашканов Кашников Киприянов Киреев
189
+ Кирилов Кирсанов Кирьянов Клепахов Климов Климушин Климцов
190
+ Клоков Князев Ковалёв Ковров Ковшутин Кожуров Кожухов Козаков
191
+ Козлов Колесников Коллеров Колонтаев Колосов Кольцов Комаров
192
+ Комзин Комолов Кондратьев Кондюрин Конев Конников Коновалов
193
+ Коньяков Коняшев Копейкин Кораблёв Кораблин Коренев Коренёв
194
+ Коржаков Коржев Корнев Корнеев Корнилов Коровин Королёв Коротаев
195
+ Корчагин Косарёв Косков Косомов Косоруков Костин Костомаров
196
+ Котов Коченков Кошелев Кошечкин Кошкин Краев Краснов Красноперов
197
+ Кропанин Кругликов Круглов Крупин Крутин Кручинкин Крылов Крысов
198
+ Крюков Кубланов Кудашов Кудрин Кудрявцев Кудряшов Кузнецов
199
+ Кузубов Кузьмин Куимов Куклачёв Куклин Куклов Кулагин Кулаков
200
+ Кулибин Куликов Куракин Курбатов Курганов Курдин Курепин
201
+ Курпатов Курсалин Курчин Кутепов Кутиков Кутузов Кутяков
202
+ Лаврентьев Лавров Лагутов Лазарев Ланцов Лапотников Лаптев
203
+ Лапунов Лапухов Ларин Ларионов Ласкутин Лачинов Лачков Лебедев
204
+ Лебединцев Легкодимов Ледовской Леонидов Леонов Лепёхин Лесков
205
+ Летов Лёвкин Лешев Лещёв Лилов Лимонов Липин Лисицын Листунов
206
+ Лихачёв Лобанов Лобов Логинов Локтев Ломоносов Ломтев Лопатин
207
+ Лосев Лоскутников Лоскутов Лужков Луков Лукин Львов Лыткин
208
+ Любимов Любимцев Любов Левкин Лягушкин Лягушов Лялюшкин Ляпин
209
+ Лясин Мадулин Мажулин Макаров Маклаков Максимов Максимушкин
210
+ Максудов Малахов Маликов Малинин Малышев Мальчиков Малыхин
211
+ Малюгин Мамонов Манин Манякин Маркин Марков Маринин Марьин
212
+ Маслов Матвеев Машарин Медведев Медведков Медников Меледин
213
+ Мелехов Меликов Мельников Меншиков Менщиков Меркушев Мещеряков
214
+ Мигунов Мизенов Милехин Милорадов Милюков Милютин Минеев Минин
215
+ Минкин Миров Мирнов Миронов Митин Митрофанов Михайлов Михалев
216
+ Михеев Мишнев Мишутин Моисеев Молчанов Моренов Морозов Моряков
217
+ Мосалев Москвин Муратов Мухортов Мягков Мясников Мятлев Набатов
218
+ Нардин Наумов Невзоров Неделяев Нежданов Немцев Немцов Ненашев
219
+ Нестеров Нечаев Никитин Никифоров Никишин Николаев Никонов
220
+ Никулин Некрасов Новиков Новичков Новосельцев Носачёв Носков
221
+ Носов Нуриев Оборин Образцов Обухов Овечкин Огородников Огурцов
222
+ Озеров Оленев Онегин Опокин Орлов Осин Осинов Осинцев Осокин
223
+ Осолодкин Остальцев Островерхов Ошурков Павлов Панарин Панин
224
+ Панкин Панков Панфилов Папанов Пасхин Патрушев Пахомов Пашин
225
+ Пашков Пенкин Переверзев Перевёртов Пересторонин Перехваткин
226
+ Перов Перфильев Перьмяков Пестов Петров Петухов Печеников Печкин
227
+ Пивоваров Пирогов Пирожков Пичугин Пичушкин Пищальников
228
+ Племянников Погодин Погодов Погребнов Подшивалов Поздняков
229
+ Поливанов Половцев Полотенцев Полунин Полушин Поляков
230
+ Помельников Поникаров Пономарёв Пончиков Попов Попырин Посохов
231
+ Потапов Потёмкин Праздников Прибылов Привалов Примаков Пронин
232
+ Проничев Протасов Прохоров Пугачёв Пугин Пузаков Пузанов Путилин
233
+ Путилов Путин Путинов Путятин Пушкин Пыжалов Пырьев Разин
234
+ Разуваев Распопов Распутин Рассказов Расторгуев Ремизов Репин
235
+ Решетилов Решетников Ржевский Рогачёв Рогов Рогозин Рожков
236
+ Романов Ростов Ростовцев Рубашкин Рудавин Рудников Румянцев
237
+ Рунов Русаков Ручкин Рыбалкин Рыбаков Рыжанов Рыжков Рыжов Рыков
238
+ Рытин Рыченков Рюриков Рябкин Рябков Рябов Рябцев Ряхин Сабанцев
239
+ Сабитов Савасин Савинков Савенков Саврасов Садыков Сазонов
240
+ Салтанов Сальков Сальников Самойлов Самохин Самсонов Санников
241
+ Сапогов Сапожников Сапрыкин Сафиюлин Сафронов Сахаров Свалов
242
+ Северинов Севостьянов Седельников Седов Селезнёв Селиванов
243
+ Семёнов Сенькин Сергеев Серебров Серебряков Серёгин Серов
244
+ Серпионов Семянин Сёмин Сеченов Сиваков Сигаев Сигачёв Сидоров
245
+ Сизов Силиванов Силин Сильвестров Силаев Силиванов Ситников
246
+ Скворцов Скрябин Скоробогатов Скороходов Скуратов Слобожанин
247
+ Смагин Смирнов Сметанин Смолин Смолянинов Смотров Снаткин
248
+ Снегирёв Снетков Соболев Соколов Солдатов Соловьёв Солодников
249
+ Соломин Соломонов Сопов Сорокин Спанов Сталин Стариков Старцев
250
+ Староверов Староволков Стародубов Стародубцев Стеблев Стегнов
251
+ Степанов Степанков Степашин Стрелков Стрекалов Строганов
252
+ Субботин Суботин Суворин Суворкин Суворов Сунгатулин Сукачев
253
+ Сукин Султанов Суриков Сусоев Сусляков Сутулин Суханов Сухоруков
254
+ Сучков Сысоев Сытников Сычёв Сычкин Сюкосев Табаков Табернакулов
255
+ Таланов Талалихин Танков Тарасов Татаров Татауров Твардовский
256
+ Тёмкин Телицын Теплов Теребов Терёшин Тетерев Тимошкин Типалов
257
+ Титов Тихомиров Тихонов Ткачёв Токарев Токмаков Толбанов
258
+ Толкачёв Толмачёв Толстобров Толстокожев Топоров Торопов Травкин
259
+ Трактирников Третьяков Трифонов Трофимов Трусов Трутнев Труфанов
260
+ Трухин Трындин Туполев Турбин Тургенев Туров Турфанов Тычкин
261
+ Тюшняков Тянников Убейсобакин Угольников Ульянов Ульяшин
262
+ Успенский Усатов Усачёв Усов Устинов Устюжанин Утёсов Ухов Фанин
263
+ Фамусов Федин Федосов Федотов Федосеев Федченков Фёдоров Федулов
264
+ Фетисов Филатов Филимонов Филипов Филиппов Флёров Фокин Фоменков
265
+ Фомин Фомичев Фонвизин Форопонов Фирсов Фролов Францев Фукин
266
+ Хабалов Хабаров Хабенский Халипов Халтурин Ханилов Ханипов
267
+ Ханцев Харитонов Харламов Хлебов Хлебников Хлопонин Хмельнов
268
+ Ходяев Холодов Хомколов Храмов Хребтов Хромов Хрущёв Худовеков
269
+ Худяков Хуртин Царицын Царёв Цветаев Цветков Цирюльников
270
+ Цитников Цуканов Чаадаев Чадов Чазов Чапаев Чеботарёв Чебыкин
271
+ Чежеков Чекмарёв Челомеев Челомцев Челпанов Чендев Черенчиков
272
+ Черепанов Черкашин Чернов Чернаков Черников Чернышёв Чесноков
273
+ Чиграков Чижиков Чилаев Чистяков Чичиков Чичканов Чкалов Чмыхов
274
+ Чугунов Чудов Чужинов Чукчов Чукреев Чупахин Чупов Чуприн Чупров
275
+ Чуркин Чучанов Чучумашев Шабунин Шакмаков Шаляпин Шаповалов
276
+ Шапошников Шарапов Шаров Шаршин Шашлов Шведов Шеломов Шепкин
277
+ Шеповалов Шереметьев Шерстов Шикалов Ширманов Шихранов Шишкин
278
+ Шишлов Шишов Шкуратов Шлыков Шмаков Шмелев Шубин Шубкин Шувалов
279
+ Шукшин Шулёв Шульдешов Шульгин Шурупов Шушалев Щеглов Щеголев
280
+ Щеголихин Щедрин Щедров Щекочихин Щепкин Щербаков Щербин Щетинин
281
+ Щеткин Щукин Щуров Энтин Ювелев Юганцев Югов Юдачёв Юдашкин Юдин
282
+ Юнкин Юракин Юрнаев Юрьев Юсупов Ютилов Юферев Якимов Яковлев
283
+ Якубов Якунин Якушев Якушин Янаев Янков Яромеев Ярцев Ясенев
284
+ Яснеев Яшин} +
285
+ [ [ "Аксенчук", '', '' ],
286
+ [ "Антонович", '', '' ],
287
+ [ "Бебчук", '', '' ],
288
+ [ "Безродн", 'ый', 'ая' ],
289
+ [ "Беломестн", 'ый', 'ая' ],
290
+ [ "Беломестных", '', '' ],
291
+ [ "Бережн", 'ой', 'ая' ],
292
+ [ "Бобр", '', '' ],
293
+ [ "Бобрик", '', '' ],
294
+ [ "Бойдало", '', '' ],
295
+ [ "Бок", '', '' ],
296
+ [ "Бортник", '', '' ],
297
+ [ "Букирь", '', '' ],
298
+ [ "Бухало", '', '' ],
299
+ [ "Валевач", '', '' ],
300
+ [ "Головаха", '', '' ],
301
+ [ "Голумбовск", 'ий', 'ая' ],
302
+ [ "Гретченко", '', '' ],
303
+ [ "Гречко", '', '' ],
304
+ [ "Григолюк", '', '' ],
305
+ [ "Громыко", '', '' ],
306
+ [ "Гурковск", 'ий', 'ая' ],
307
+ [ "Дубровск", 'ий', 'ая' ],
308
+ [ "Думановск", 'ий', 'ая' ],
309
+ [ "Едемск", 'ий', 'ая' ],
310
+ [ "Емельяненко", '', '' ],
311
+ [ "Ешевск", 'ий', 'ая' ],
312
+ [ "Завражн", 'ый', 'ая' ],
313
+ [ "Задорожн", 'ый', 'ая' ],
314
+ [ "Закревск", 'ий', 'ая' ],
315
+ [ "Зинченко", '', '' ],
316
+ [ "Илькун", '', '' ],
317
+ [ "Калашник", '', '' ],
318
+ [ "Каменских", '', '' ],
319
+ [ "Кандинск", 'ий', 'ая' ],
320
+ [ "Капица", '', '' ],
321
+ [ "Касат", 'ый', 'ая' ],
322
+ [ "Кирилловск", 'ий', 'ая' ],
323
+ [ "Ковалевск", 'ий', 'ая' ],
324
+ [ "Козарь", '', '' ],
325
+ [ "Козловск", 'ий', 'ая' ],
326
+ [ "Косяк", '', '' ],
327
+ [ "Кравчук", '', '' ],
328
+ [ "Кузьмич", '', '' ],
329
+ [ "Лапидус", '', '' ],
330
+ [ "Лебединск", 'ий', 'ая' ],
331
+ [ "Леснич", 'ий', 'ая' ],
332
+ [ "Лобан", '', '' ],
333
+ [ "Логиновск", 'ий', 'ая' ],
334
+ [ "Лосевск", 'ий', 'ая' ],
335
+ [ "Майсак", '', '' ],
336
+ [ "Маслак", '', '' ],
337
+ [ "Машир", '', '' ],
338
+ [ "Оболенск", 'ий', 'ая' ],
339
+ [ "Ольховск", 'ий', 'ая' ],
340
+ [ "Остапюк", '', '' ],
341
+ [ "Островск", 'ий', 'ая' ],
342
+ [ "Панькив", '', '' ],
343
+ [ "Первак", '', '' ],
344
+ [ "Покровск", 'ий', 'ая' ],
345
+ [ "Полищук", '', '' ],
346
+ [ "Полторак", '', '' ],
347
+ [ "Приходько", '', '' ],
348
+ [ "Рабинович", '', '' ],
349
+ [ "Родзянко", '', '' ],
350
+ [ "Рокоссовск", 'ий', 'ая' ],
351
+ [ "Русских", '', '' ],
352
+ [ "Сай", '', '' ],
353
+ [ "Салко", '', '' ],
354
+ [ "Семичаевск", 'ий', 'ая' ],
355
+ [ "Сиз", 'ый', 'ая' ],
356
+ [ "Случевск", 'ий', 'ая' ],
357
+ [ "Смирнитск", 'ий', 'ая' ],
358
+ [ "Соболевск", 'ий', 'ая' ],
359
+ [ "Солодских", '', '' ],
360
+ [ "Тихвинск", 'ий', 'ая' ],
361
+ [ "Ткаченко", '', '' ],
362
+ [ "Толст", 'ой', 'ая' ],
363
+ [ "Торчинович", '', '' ],
364
+ [ "Тредиаковск", 'ий', 'ая' ],
365
+ [ "Циолковск", 'ий', 'ая' ],
366
+ [ "Чал", 'ый', 'ая' ],
367
+ [ "Челомей", '', '' ],
368
+ [ "Черных", '', '' ],
369
+ [ "Чиркаш", '', '' ],
370
+ [ "Шевелёк", '', '' ],
371
+ [ "Шуйск", 'ий', 'ая' ],
372
+ [ "Шуличенко", '', '' ],
373
+ [ "Шульга", '', '' ],
374
+ [ "Шурша", '', '' ],
375
+ [ "Щавельск", 'ий', 'ая' ],
376
+ [ "Щегельск", 'ий', 'ая' ],
377
+ [ "Щербатых", '', '' ],
378
+ [ "Экель", '', '' ],
379
+ [ "Эмануиль", '', '' ],
380
+ [ "Эсце", '', '' ],
381
+ [ "Этуш", '', '' ],
382
+ [ "Якименко", '', '' ],
383
+ [ "Якубович", '', '' ],
384
+ [ "Янковск", 'ий', 'ая' ],
385
+ [ "Янукович", '', '' ],
386
+ [ "Ярмольник", '', '' ] ]
387
+
388
+ # http://b23.ru/qtq
389
+ CitiesByRegion = {
390
+ # Центральный федеральный округ
391
+ 'Белгородская обл.' => %w(Белгород Алексеевка Бирюч Валуйки Грайворон Губкин Короча Строитель Шебекино
392
+ Новый_Оскол Старый_Оскол),
393
+
394
+ 'Брянская обл.' => %w(Брянск Дятьково Жуковка Злынка Карачев Клинцы Мглин Новозыбков Почеп Севск Сельцо
395
+ Стародуб Сураж Трубчевск Унеча Фокино),
396
+
397
+ 'Владимирская обл.' => %w(Владимир Александров Вязники Гороховец Гусь-Хрустальный Камешково Карабаново
398
+ Киржач Ковров Кольчугино Костерево Курлово Лакинск Меленки Муром Петушки
399
+ Покров Радужный Собинка Струнино Судогда Суздаль Юрьев-Польский),
400
+
401
+ 'Воронежская обл.' => %w(Воронеж Бобров Богучар Борисоглебск Бутурлиновка Калач Лиски Нововоронеж
402
+ Новохоперск Острогожск Павловск Поворино Россошь Семилуки Эртиль),
403
+
404
+ 'Ивановская обл.' => %w(Иваново Вичуга Заволжск Кинешма Комсомольск Кохма Наволоки Плес Приволжск
405
+ Пучеж Родники Тейково Фурманов Шуя Южа Юрьевец Гаврилов_Посад),
406
+
407
+ 'Калужская обл.' => %w(Калуга Балабаново Белоусово Боровск Ермолино Жиздра Жуков Киров Козельск
408
+ Кондрово Кремёнки Людиново Малоярославец Медынь Мещовск Мосальск Обнинск
409
+ Сосенский Спас-Деменск Сухиничи Таруса Юхнов),
410
+
411
+ 'Костромская обл.' => %w(Кострома Буй Волгореченск Галич Кологрив Макарьев Мантурово Нерехта Нея
412
+ Солигалич Чухлома Шарья),
413
+
414
+ 'Курская обл.' => %w(Курск Дмитриев-Льговский Железногорск Курчатов Льгов Обоянь Рыльск Суджа Фатеж Щигры),
415
+
416
+ 'Липецкая обл.' => %w(Липецк Грязи Данков Елец Задонск Лебедянь Усмань Чаплыгин),
417
+
418
+ 'Московская обл.' => %w(Москва Апрелевка Балашиха Бронницы Верея Видное Волоколамск Воскресенск
419
+ Высоковск Дедовск Дзержинский Дмитров Долгопрудный Домодедово Дрезна Дубна
420
+ Егорьевск Железнодорожный Жуковский Зарайск Звенигород Ивантеевка Истра Кашира
421
+ Климовск Клин Коломна Королёв Красноармейск Красногорск Краснозаводск
422
+ Краснознаменск Куровское Ликино-Дулёво Лобня Лосино-Петровский Луховицы Лыткарино
423
+ Люберцы Можайск Мытищи Наро-Фоминск Ногинск Одинцово Ожерелье Озёры Орехово-Зуево
424
+ Павловский_Посад Пересвет Подольск Протвино Пушкино Пущино Раменское Реутов Рошаль
425
+ Руза Сергиев_Посад Серпухов Солнечногорск Ступино Сходня Талдом Троицк Фрязино
426
+ Химки Хотьково Черноголовка Чехов Шатура Щёлково Щербинка Электрогорск
427
+ Электросталь Электроугли Юбилейный Яхрома),
428
+
429
+ 'Орловская обл.' => %w(Орёл Болхов Дмитровск Ливны Малоархангельск Мценск Новосиль),
430
+
431
+ 'Рязанская обл.' => %w(Рязань Касимов Кораблино Михайлов Новомичуринск Рыбное Ряжск Сасово Скопин
432
+ Спас-Клепики Спасск-Рязанский Шацк),
433
+
434
+ 'Смоленская обл.' => %w(Смоленск Велиж Вязьма Гагарин Демидов Десногорск Дорогобуж Духовщина Ельня
435
+ Починок Рославль Рудня Сафоново Сычевка Ярцево),
436
+
437
+ 'Тамбовская обл.' => %w(Тамбов Жердевка Кирсанов Котовск Мичуринск Моршанск Рассказово Уварово),
438
+
439
+ 'Тверская обл.' => %w(Тверь Андреаполь Бежецк Белый Бологое Весьегонск Вышний_Волочек Западная_Двина
440
+ Зубцов Калязин Кашин Кимры Конаково Красный_Холм Кувшиново Лихославль Нелидово
441
+ Осташков Ржев Старица Торжок Торопец Удомля),
442
+
443
+ 'Тульская обл.' => %w(Тула Алексин Белев Богородицк Болохово Венев Донской Ефремов Кимовск Киреевск
444
+ Липки Новомосковск Плавск Северо-Задонск Советск Сокольники Суворов Узловая
445
+ Чекалин Щекино Ясногорск),
446
+
447
+ 'Ярославская обл.' => %w(Ярославль Гаврилов-Ям Данилов Любим Мышкин Переславль-Залесский Пошехонье
448
+ Ростов Рыбинск Тутаев Углич),
449
+
450
+ # Северо-Западный федеральный округ
451
+ 'Республика Карелия' => [nil] + %w(Беломорск Кемь Кондопога Костомукша Лахденпохья Медвежьегорск
452
+ Олонец Петрозаводск Питкяранта Пудож Сегежа Сортавала Суоярви),
453
+
454
+ 'Республика Коми' => [nil] + %w(Воркута Вуктыл Емва Инта Микунь Печора Сосногорск Сыктывкар Усинск Ухта),
455
+
456
+ 'Архангельская обл.' => %w(Архангельск Вельск Каргополь Коряжма Котлас Мезень Мирный Новодвинск
457
+ Няндома Онега Северодвинск Сольвычегодск Шенкурск),
458
+
459
+ 'Ненецкий автономный округ' => [nil, 'Нарьян-Мар'],
460
+
461
+ 'Вологодская обл.' => %w(Вологда Бабаево Белозерск Великий_Устюг Вытегра Грязовец Кадников Кириллов
462
+ Красавино Никольск Сокол Тотьма Устюжна Харовск Череповец),
463
+
464
+ 'Калининградская обл.' => %w(Калининград Багратионовск Балтийск Гвардейск Гурьевск Гусев Зеленоградск
465
+ Краснознаменск Ладушкин Мамоново Неман Нестеров Озерск Пионерский Полесск
466
+ Правдинск Приморск Светлогорск Светлый Славск Советск Черняховск),
467
+
468
+ 'Ленинградская обл.' => %w(Санкт-Петербург Бокситогорск Волосово Волхов Всеволожск Выборг Высоцк Гатчина
469
+ Ивангород Каменногорск Кингисепп Кириши Кировск Коммунар Лодейное_Поле Луга Любань
470
+ Никольское Новая Ладога Отрадное Пикалево Подпорожье Приморск Приозерск Светогорск
471
+ Сертолово Сланцы Сосновый_Бор Сясьстрой Тихвин Тосно Шлиссельбург),
472
+
473
+ 'Мурманская обл.' => %w(Мурманск Апатиты Гаджиево Заозерск Заполярный Кандалакша Кировск Ковдор Кола Мончегорск
474
+ Оленегорск Островной Полярные_Зори Полярный Североморск Скалистый Снежногорск),
475
+
476
+ 'Новгородская обл.' => %w(Великий_Новгород Боровичи Валдай Малая Вишера Окуловка Пестово Сольцы
477
+ Старая_Русса Холм Чудово),
478
+
479
+ 'Псковская обл.' => %w(Псков Великие_Луки Гдов Дно Невель Новоржев Новосокольники Опочка Остров Печоры
480
+ Порхов Пустошка Пыталово Себеж),
481
+
482
+ # Южный федеральный округ
483
+ 'Республика Адыгея' => [nil] + %w(Адыгейск Майкоп),
484
+
485
+ 'Республика Дагестан' => [nil] + %w(Буйнакск Дагестанские_Огни Дербент Избербаш Каспийск Кизилюрт
486
+ Кизляр Махачкала Хасавюрт Южно-Сухокумск),
487
+
488
+ 'Республика Ингушетия' => [nil] + %w(Карабулак Магас Малгобек Назрань),
489
+
490
+ 'Кабардино-Балкарская Республика' => [nil] + %w(Баксан Майский Нальчик Нарткала Прохладный Терек Тырныауз Чегем),
491
+
492
+ 'Республика Калмыкия' => [nil] + %w(Городовиковск Лагань Элиста),
493
+
494
+ 'Карачаево-Черкесская Республика' => [nil] + %w(Карачаевск Теберда Усть-Джегута Черкесск),
495
+
496
+ 'Республика Северная Осетия-Алания' => [nil] + %w(Алагир Ардон Беслан Владикавказ Дигора Моздок),
497
+
498
+ 'Чеченская Республика' => [nil] + %w(Аргун Грозный Гудермес Урус-Мартан Шали),
499
+
500
+ 'Краснодарский край' => %w(Краснодар Абинск Анапа Апшеронск Армавир Белореченск Геленджик Горячий_Ключ
501
+ Гулькевичи Ейск Кореновск Кропоткин Крымск Курганинск Лабинск Новокубанск
502
+ Новороссийск Приморско-Ахтарск Славянск-на-Кубани Сочи Темрюк Тимашевск Тихорецк
503
+ Тихорецк Туапсе Усть-Лабинск Хадыженск),
504
+
505
+ 'Ставропольский край' => %w(Ставрополь Благодарный Будённовск Георгиевск Ессентуки Железноводск Зеленокумск
506
+ Изобильный Ипатово Кисловодск Лермонтов Минеральные_Воды Михайловск Невинномысск
507
+ Нефтекумск Новоалександровск Новопавловск Пятигорск Светлоград),
508
+
509
+ 'Астраханская обл.' => %w(Астрахань Ахтубинск Знаменск Камызяк Нариманов Харабали),
510
+
511
+ 'Волгоградская обл.' => %w(Волгоград Волжский Дубовка Жирновск Калач-на-Дону Камышин Котельниково Котово
512
+ Краснослободск Ленинск Михайловка Николаевск Новоаннинский Палласовка Петров_Вал
513
+ Серафимович Суровикино Урюпинск Фролово),
514
+
515
+ 'Ростовская обл.' => %w(Ростов-на-Дону Азов Аксай Батайск Белая_Калитва Волгодонск Гуково Донецк Зверево
516
+ Зерноград Каменск-Шахтинский Константиновск Красный_Сулин Миллерово Морозовск
517
+ Новочеркасск Новошахтинск Пролетарск Сальск Семикаракорск Таганрог Цимлянск Шахты),
518
+
519
+
520
+ # Приволжский федеральный округ
521
+ 'Республика Башкортостан' => [nil] + %w(Агидель Баймак Белебей Белорецк Бирск Благовещенск Давлеканово
522
+ Дюртюли Ишимбай Кумертау Межгорье Мелеуз Нефтекамск Октябрьский
523
+ Салават Сибай Стерлитамак Туймазы Уфа Учалы Учалы Янаул),
524
+
525
+ 'Республика Марий Эл' => [nil] + %w(Волжск Звенигово Йошкар-Ола Козьмодемьянск),
526
+
527
+ 'Республика Мордовия' => [nil] + %w(Ардатов Инсар Ковылкино Краснослободск Рузаевка Саранск Темников),
528
+
529
+ 'Республика Татарстан' => [nil] + %w(Агрыз Азнакаево Альметьевск Бавлы Болгар Бугульма Буинск Елабуга
530
+ Заинск Зеленодольск Казань Лениногорск Мамадыш Менделеевск Мензелинск
531
+ Набережные_Челны Нижнекамск Нурлат Тетюши Чистополь),
532
+
533
+ 'Удмуртская Республика' => [nil] + %w(Воткинск Глазов Ижевск Камбарка Можга Сарапул),
534
+
535
+ 'Чувашская Республика' => [nil] + %w(Алатырь Канаш Козловка Мариинский_Посад Новочебоксарск Цивильск
536
+ Чебоксары Шумерля Ядрин),
537
+
538
+ 'Пермский край' => %w(Пермь Александровск Березники Верещагино Горнозаводск Гремячинск Губаха Добрянка
539
+ Кизел Красновишерск Краснокамск Кудымкар Кунгур Лысьва Нытва Оса Оханск Очер
540
+ Соликамск Усолье Чайковский Чердынь Чермоз Чернушка Чусовой),
541
+
542
+ 'Кировская обл.' => %w(Киров Белая_Холуница Вятские_Поляны Зуевка Кирово-Чепецк Кирс Котельнич Луза Малмыж
543
+ Мураши Нолинск Омутнинск Орлов Слободской Советск Сосновка Уржум Яранск),
544
+
545
+ 'Нижегородская обл.' => %w(Нижний_Новгород Арзамас Балахна Богородск Бор Ветлуга Володарск Ворсма Выкса
546
+ Горбатов Городец Дзержинск Заволжье Княгинино Кстово Кулебаки Лукоянов Лысково
547
+ Навашино Павлово Первомайск Перевоз Саров Семенов Сергач Урень Чкаловск Шахунья),
548
+
549
+ 'Оренбургская обл.' => %w(Оренбург Абдулино Бугуруслан Бузулук Гай Кувандык Медногорск Новотроицк
550
+ Орск Соль-Илецк Сорочинск Ясный),
551
+
552
+ 'Пензенская обл.' => %w(Пенза Беднодемьяновск Белинский Городище Заречный Каменка Кузнецк Нижний_Ломов
553
+ Никольск Сердобск Сурск),
554
+
555
+ 'Самарская обл.' => %w(Самара Жигулевск Кинель Нефтегорск Новокуйбышевск Октябрьск Отрадный Похвистнево
556
+ Сызрань Тольятти Чапаевск),
557
+
558
+ 'Саратовская обл.' => %w(Саратов Аркадак Аткарск Балаково Балашов Вольск Ершов Калининск Красноармейск
559
+ Красный_Кут Маркс Новоузенск Петровск Пугачев Ртищево Хвалынск Шиханы Энгельс),
560
+
561
+ 'Ульяновская обл.' => %w(Ульяновск Барыш Димитровград Инза Новоульяновск Сенгилей Карсун Старая_Майна),
562
+
563
+ # Уральский федеральный округ
564
+ 'Курганская обл.' => %w(Курган Далматово Катайск Куртамыш Макушино Петухово Шадринск Шумиха Щучье),
565
+
566
+ 'Свердловская обл.' => %w(Екатеринбург Алапаевск Арамиль Артемовский Асбест Березовский Богданович
567
+ Верхний_Тагил Верхняя_Пышма Верхняя_Салда Верхняя_Тура Верхотурье Волчанск Дегтярск
568
+ Заречный Ивдель Ирбит Каменск-Уральский Камышлов Карпинск Качканар Кировград
569
+ Краснотурьинск Красноуральск Красноуфимск Кушва Лесной Михайловск Невьянск
570
+ Нижние_Серги Нижний_Тагил Нижняя_Салда Нижняя_Тура Новая_Ляля Новоуральск
571
+ Первоуральск Полевской Ревда Реж Североуральск Серов Среднеуральск Сухой_Лог
572
+ Сысерть Тавда Талица Туринск),
573
+
574
+ 'Тюменская обл.' => %w(Тюмень Заводоуковск Ишим Тобольск Ялуторовск),
575
+
576
+ 'Ханты-Мансийский автономный округ' => %w(Ханты-Мансийск Белоярский Когалым Лангепас Лянтор Мегион
577
+ Нефтеюганск Нижневартовск Нягань Покачи Пыть-Ях Радужный
578
+ Советский Сургут Урай Югорск),
579
+
580
+ 'Ямало-Ненецкий автономный округ' => [nil] + %w(Губкинский Лабытнанги Муравленко Надым Новый_Уренгой
581
+ Ноябрьск Салехард),
582
+
583
+ 'Челябинская обл.' => %w(Челябинск Аша Бакал Верхнеуральск Верхний_Уфалей Еманжелинск Златоуст Карабаш
584
+ Карталы Касли Катав-Ивановск Копейск Коркино Куса Кыштым Магнитогорск Миасс Миньяр
585
+ Нязепетровск Озерск Пласт Сатка Сим Снежинск Трехгорный Троицк Усть-Катав
586
+ Чебаркуль Южноуральск Юрюзань),
587
+
588
+ # Сибирский федеральный округ
589
+ 'Республика Алтай' => %w(Горно-Алтайск),
590
+
591
+ 'Республика Бурятия' => [nil] + %w(Бабушкин Гусиноозерск Закаменск Кяхта Северобайкальск Улан-Удэ),
592
+
593
+ 'Республика Тыва' => [nil] + %w(Ак-Довурак Кызыл Туран Чадан Шагонар),
594
+
595
+ 'Республика Хакасия' => [nil] + %w(Абаза Абакан Саяногорск Сорск Черногорск),
596
+
597
+ 'Алтайский край' => %w(Барнаул Алейск Белокуриха Бийск Горняк Заринск Змеиногорск Камень-на-Оби
598
+ Новоалтайск Рубцовск Славгород Яровое),
599
+
600
+ 'Забайкальский край' => %w(Чита Балей Борзя Краснокаменск Могоча Нерчинск Петровск-Забайкальский
601
+ Сретенск Хилок Шилка),
602
+
603
+ 'Красноярский край' => %w(Красноярск Артемовск Ачинск Боготол Бородино Дивногорск Дудинка Енисейск
604
+ Железногорск Заозерный Зеленогорск Игарка Иланский Кайеркан Канск Кодинск
605
+ Лесосибирск Минусинск Назарово Норильск Сосновоборск Талнах Ужур Уяр Шарыпово),
606
+
607
+ 'Иркутская обл.' => %w(Иркутск Алзамай Ангарск Байкальск Бирюсинск Бодайбо Братск Вихоревка
608
+ Железногорск-Илимский Зима Киренск Нижнеудинск Саянск Свирск Слюдянка Тайшет Тулун
609
+ Усолье-Сибирское Усть-Илимск Усть-Кут Черемхово Шелехов),
610
+
611
+ 'Кемеровская обл.' => %w(Кемерово Анжеро-Судженск Белово Березовский Гурьевск Калтан Киселевск
612
+ Ленинск-Кузнецкий Мариинск Междуреченск Мыски Новокузнецк Осинники Полысаево
613
+ Прокопьевск Салаир Тайга Таштагол Топки Юрга),
614
+
615
+ 'Новосибирская обл.' => %w(Новосибирск Барабинск Бердск Болотное Искитим Карасук Каргат Куйбышев
616
+ Купино Обь Татарск Тогучин Черепаново Чулым),
617
+
618
+ 'Омская обл.' => %w(Омск Исилькуль Калачинск Называевск Тара Тюкалинск),
619
+
620
+ 'Томская обл.' => %w(Томск Асино Кедровый Колпашево Северск Стрежевой),
621
+
622
+ # Дальневосточный федеральный округ
623
+ 'Республика Саха' => [nil] + %w(Алдан Верхоянск Вилюйск Ленск Мирный Нерюнгри Нюрба Олекминск Покровск
624
+ Среднеколымск Томмот Удачный Якутск),
625
+
626
+ 'Камчатский край' => %w(Петропавловск-Камчатский Вилючинск Елизово),
627
+
628
+ 'Приморский край' => %w(Владивосток Арсеньев Артем Большой_Камень Дальнегорск Дальнереченск Лесозаводск
629
+ Находка Партизанск Спасск-Дальний Уссурийск Фокино),
630
+
631
+ 'Хабаровский край' => %w(Хабаровск Амурск Бикин Вяземский Комсомольск-на-Амуре Николаевск-на-Амуре
632
+ Советская_Гавань),
633
+
634
+ 'Амурская обл.' => [nil] + %w(Белогорск Благовещенск Завитинск Зея Райчихинск Свободный Сковородино
635
+ Тында Шимановск),
636
+
637
+ 'Магаданская обл.' => %w(Магадан Сусуман),
638
+
639
+ 'Сахалинская обл.' => %w(Южно-Сахалинск Александровск-Сахалинский Анива Горнозаводск Долинск Корсаков
640
+ Красногорск Курильск Макаров Невельск Оха Поронайск Северо-Курильск Томари
641
+ Углегорск Холмск Чехов Шахтерск),
642
+
643
+ 'Еврейская автономная область' => [nil] + %w(Биробиджан Облучье),
644
+
645
+ 'Чукотский автономный округ' => [nil] + %w( Анадырь Билибино Певек)
646
+ }.freeze
647
+
648
+ unless defined? RegionByCities
649
+ region_by_cities = Hash.new { |hash, key| hash[key] = [] }
650
+
651
+ CitiesByRegion.each do |region, cities|
652
+ cities.each do |city|
653
+ region_by_cities[city] << region if city
654
+ end
655
+ end
656
+
657
+ RegionByCities = region_by_cities.freeze
658
+ AllCities = RegionByCities.keys.freeze
659
+ end
660
+
661
+ # http://feofanov.fizteh.ru/toall/street.html
662
+ StreetNames = ((%w{
663
+ Советская Молодежная Центральная Школьная Новая Садовая Лесная Набережная
664
+ Ленина Мира Октябрьская Зеленая Комсомольская Заречная Первомайская
665
+ Гагарина Полевая Луговая Пионерская Кирова Юбилейная Северная
666
+ Пролетарская Степная Пушкина Калинина Южная Колхозная Рабочая Солнечная
667
+ Железнодорожная Восточная Заводская Чапаева Нагорная Строителей Береговая
668
+ Победы Горького Кооперативная Красноармейская Совхозная Речная Спортивная
669
+ Озерная Строительная Парковая Чкалова Мичурина Подгорная Дружбы Почтовая
670
+ Партизанская Вокзальная Лермонтова Свободы Дорожная Дачная Маяковского
671
+ Западная Фрунзе Дзержинского Московская Свердлова Некрасова Гоголя
672
+ Красная Трудовая Шоссейная Чехова Коммунистическая Труда Комарова
673
+ Матросова Островского Сосновая Клубная Куйбышева Крупской Березовая
674
+ Больничная Интернациональная Суворова Цветочная Трактовая Ломоносова
675
+ Горная Космонавтов Энергетиков Шевченко Весенняя Механизаторов
676
+ Коммунальная Майская Энгельса Привокзальная Таежная Транспортная Овражная
677
+ Светлая Вишневая Чернышевского Урицкого Ключевая Ворошилова Тургенева
678
+ Толстого Песчаная Ленинградская Профсоюзная Буденного Орджоникидзе
679
+ Герцена Верхняя Ленинская Кирпичная Мостовая Щорса Станционная
680
+ Луначарского Энтузиастов Титова Лазо Уральская Линейная Пугачева
681
+ Володарского Кутузова Фабричная Чайковского Магистральная Сибирская
682
+ Крестьянская Мелиораторов Российская Новоселов Тихая Широкая Нижняя
683
+ Белинского Тельмана Тимирязева Котовского Народная Промышленная Кольцевая
684
+ Есенина Дальняя Крылова Декабристов Базарная Целинная Родниковая
685
+ Фурманова Революционная Социалистическая Звездная Студенческая Гайдара
686
+ Мирная Терешковой Кубанская Гаражная Фестивальная Гражданская Песочная
687
+ Сиреневая Ватутина Сельская Кузнечная Пушкинская Крайняя Коммунаров
688
+ Гвардейская Веселая Загородная Олимпийская Гастелло Жданова Радищева
689
+ Нефтяников Осипенко Приозерная Рябиновая Заозерная Нахимова Боровая
690
+ Жукова Павлова Урожайная Попова Торговая Жуковского Королева Донская
691
+ Пограничная Огородная Пригородная Грибоедова Стадионная Менделеева
692
+ Достоевского Репина Виноградная Циолковского Воровского Киевская
693
+ Революции Индустриальная Красногвардейская Волжская Кошевого Пархоменко
694
+ Свободная Кедровая Подлесная Полярная Раздольная Карьерная Мельничная
695
+ Серова Украинская Шахтерская Запрудная Элеваторная Театральная
696
+ Добролюбова Геологическая Болотная Красина Коминтерна Придорожная
697
+ Кленовая Разина Черняховского Казачья Ветеранов Малая Пирогова Геологов
698
+ Тукая Морская Волгоградская Димитрова Средняя Безымянная Краснофлотская
699
+ Братская Тенистая Учительская Маркса Кавказская Ушакова Короткая
700
+ Деповская Амурская Сенная Поселковая Юности Короленко Прудовая Шолохова
701
+ Депутатская Авиационная Черемушки Кольцова Плеханова Аэродромная Большая
702
+ Приморская Алтайская Макаренко Глинки Специалистов Халтурина Морозова
703
+ Тополиная Ростовская Тракторная Коммуны Мелиоративная Ольховая Славянская
704
+ Карбышева Баумана Радужная Правды Краснодарская Фадеева Стахановская
705
+ Ярославская Челюскинцев Коллективная Ангарская Новостройка Шмидта
706
+ Кузнецова Локомотивная Войкова Панфилова Ягодная Смоленская Тепличная
707
+ Водопроводная Республиканская Автомобилистов Космодемьянской Осенняя
708
+ Байкальская Седова Саратовская Казанская Блюхера Воронежская Брянская
709
+ Производственная Спартака Техническая Енисейская Николаева Бабушкина
710
+ Севастопольская Окружная Октября Щетинкина Орловская Хуторская Тупиковая
711
+ Каштановая Омская Гончарова Привольная Щербакова Курортная Ивановская
712
+ Выгонная Крымская Путейская Азина Проезжая Сурикова Краснознаменная
713
+ Одесская Января Подстанция Логовая Высокая Ясная Портовая Снежная
714
+ Санаторная Союзная Волкова Ульяновская Никитина Сахалинская Горняцкая
715
+ Рылеева Прибрежная Химиков Рыбацкая Полтавская Тамбовская Красноярская
716
+ Новосельская Проточная Черноморская Курчатова Минская Микрорайон Главная
717
+ Докучаева Вольная Просвещения Смирнова Хвойная Космическая Моховая
718
+ Макарова Курская Курганная Угловая Камская Инженерная Лесозаводская
719
+ Астраханская Иванова Гафури Высоцкого Белорусская Бажова Кочубея
720
+ Заовражная Азовская Ручейная Леонова Волочаевская Надежды Ставропольская
721
+ Металлистов Вавилова Слободская Ульянова Тульская Харьковская Петровская
722
+ Владимирская Семашко Высоковольтная Шаумяна Чайкиной Лазурная Ермака
723
+ Дорожников Покровская Новгородская Ленская Сплавная Ударная Калужская
724
+ Монтажников Прудная Шишкина Краснопартизанская Ореховая Таманская
725
+ Иркутская Металлургов Отрадная Беляева Большевистская Троицкая Лесхозная
726
+ Дружба Васильковая Серафимовича Ильича Механическая Невского Путевая
727
+ Кузнецкая Физкультурная Леваневского Водников Вахитова Станиславского
728
+ Черемуховая Советов Флотская Угольная Пожарского Папанина Просторная
729
+ Поперечная Городская Победа Абрикосовая Бульварная Прохладная Томская
730
+ Энергетическая Литейная Медицинская Заливная Журавлева Бригадная Культуры
731
+ Минина Машиностроителей Детская ДОС Тюленина Запорожская Дальневосточная
732
+ Громова Балтийская Февральская Толбухина Лунная Дарвина Высотная
733
+ Рязанская Малиновая Механизаторская Яблоневая Красногорская Липовая
734
+ Марата Горняков Переселенческая Новосибирская Рождественская Тухачевского
735
+ Лебедева Железнодорожников Бакинская Приречная Хабаровская Тверская
736
+ Малышева Айвазовского Самарская Складская Приовражная Хмельницкого
737
+ Фруктовая Ключевская Мечникова Газовиков Продольная Калининградская
738
+ Земляничная Авиаторов Бородина Связи Уфимская Демократическая Желябова
739
+ Дубовая Прямая Калининская Кировская Менжинского Молодогвардейская
740
+ Петрова Кравченко Лесопильная Дача Губкина Гористая Оренбургская Невская
741
+ Оборонная Паровозная Артиллерийская Пржевальского Текстильщиков
742
+ Спартаковская Янтарная Челюскина Костромская Никольская Новороссийская
743
+ Обская Беговая Свобода Уссурийская Иртышская Конституции Лагерная
744
+ Михайловская Либкнехта Пензенская Саянская Спасская Текстильная
745
+ Международная Донецкая Футбольная Доватора Расковой Красносельская
746
+ Мичуринская Лиманная Возрождения Арсеньева Пятигорская Ремесленная
747
+ Рощинская Тюменская Ярославского Краснодонская Кривая Делегатская Первая
748
+ Аксакова Артема Юлаева Челябинская Левитана Ладожская Летняя Лескова
749
+ Малиновского Мусоргского Крутая Еловая Животноводов Пионеров Нефтебаза
750
+ Офицерская Нестерова Связистов Стаханова Лобачевского Дружная Газовая
751
+ Пихтовая Армейская Рудничная Прогонная Телеграфная Институтская Каменная
752
+ Можайского Милицейская Лихачева Забайкальская Переездная Ветеринарная
753
+ Федорова Ямская Каменская Знаменская Межевая Громовой Онежская Надречная
754
+ Огарева Багратиона Торфяная Станичная Камчатская Джамбула Новаторов
755
+ Ботаническая Апрельская Салтыкова-Щедрина Сеченова Солдатская Танкистов
756
+ Березовская Андреева Аптечная Цимлянская Сосновская Чапаевская Захарова
757
+ Ипподромная Литвинова Гранитная Грибная Дежнева Васильева Рокоссовского
758
+ Промысловая Конечная Изумрудная Маслозаводская Охотничья Низовая
759
+ Перспективная Базовая Республики Читинская Карельская Кустарная МОПРА
760
+ Жемчужная Островная Парниковая Барнаульская Бородинская Аэропорт
761
+ Александровская Рижская Рассветная Сельскохозяйственная Пристанская
762
+ Хлебная Условная Зорге Козлова Заслонова Курганская Мурманская Дунайская
763
+ Жигулевская Егорова Добровольского Писарева Орлова Нариманова Пестеля
764
+ Автомобильная Большевиков Брестская Салавата Квартальная Люксембург
765
+ Кропоткина Культурная Мамина-Сибиряка Гончарная Пермская Водная
766
+ Беломорская Пугачевская Краснооктябрьская Кузбасская Днепровская
767
+ Объездная Армавирская Верещагина Проселочная Ползунова Учебная Тукаева
768
+ Филатова Стрельникова Львовская Кулибина Интернационала Водопьянова
769
+ Соловьиная Черниговская Каспийская Известковая Ильинская Инициативная
770
+ Луганская Покрышкина Новогодняя Обручева Алексеева Силикатная Ташкентская
771
+ Худайбердина Магнитогорская Горская Вологодская Державина Бебеля Славы
772
+ Русская Правобережная} +
773
+ [
774
+ '1 Мая', '30 лет Победы', '40 лет ВЛКСМ', '40 лет Победы', '40 лет Октября', '50 лет ВЛКСМ', '50 лет Победы',
775
+ '50 лет Октября', '60 лет СССР', '60 лет Октября', '70 лет Октября', '8 Марта', '9 Мая', 'Зои Космодемьянской',
776
+ 'Мусы Джалиля', 'Лизы Чайкиной', 'Льва Толстого', 'Розы Люксембург', 'Сакко и Ванцетти', 'Карла Маркса',
777
+ 'Клары Цеткин', 'Олега Кошевого', 'Карла Либкнехта', 'Сергея Лазо', 'Дружбы Народов', 'Красных Зорь',
778
+ 'Красная Горка', 'Маршала Жукова', 'Степана Разина', 'Демьяна Бедного', 'Молодой Гвардии', 'Красных Партизан',
779
+ 'Максима Горького', 'Павлика Морозова', 'Богдана Хмельницкого', 'Сосновый бор', 'Салавата Юлаева',
780
+ 'Советской Армии', 'Парижской Коммуны'
781
+ ]).map { |str| "ул. #{str}" } + %w{
782
+ Школьный Садовый Лесной Зеленый Советский Новый Октябрьский
783
+ Первомайский Комсомольский Пионерский Южный Северный Больничный Речной
784
+ Почтовый Восточный Молодежный Рабочий Солнечный Колхозный Заводской
785
+ Тихий Западный Степной Спортивный Центральный Луговой Кооперативный
786
+ Полевой Пролетарский Мирный Железнодорожный Клубный Совхозный
787
+ Красноармейский Дорожный Горный Заречный Озерный Майский Парковый
788
+ Набережный Дачный Строительный Юбилейный Малый Короткий Сосновый
789
+ Светлый Овражный Безымянный Березовый Береговой Пушкина Партизанский
790
+ Нагорный Красный Чапаева Кирова Вокзальный Коммунальный Строителей
791
+ Кузнечный Кирпичный Базарный Калинина Гагарина Песчаный Цветочный
792
+ Ленина Веселый Трудовой Мостовой Дальний Торговый Мира Мельничный
793
+ Вишневый Транспортный Московский Лермонтова Горького Некрасова Чехова
794
+ Маяковского Фабричный Чкалова Широкий Подгорный Дружбы Весенний
795
+ Тупиковый Шоссейный Средний Гоголя Матросова Ключевой Шевченко Крупской
796
+ Победы Свободный Узкий Звездный Коммунистический Линейный Таежный
797
+ Ленинский Свердлова Донской Островского Фрунзе Дзержинского Пушкинский
798
+ Станционный Мичурина Гаражный Казачий Кривой Глухой Верхний Тургенева
799
+ Суворова Кольцевой Куйбышева Виноградный Свободы Крайний Крестьянский
800
+ Песочный Интернациональный Кубанский Банный Чернышевского Гвардейский
801
+ Уральский Огородный Братский Театральный Крутой Пожарный Родниковый
802
+ Урицкого Промышленный Сибирский Ломоносова Кировский Карьерный
803
+ Механизаторов Болотный Привокзальный Энергетиков Гражданский Нижний
804
+ Володарского Энгельса Ленинградский Урожайный Тупой Щорса Буденного
805
+ Сенной Котовского Сельский Сиреневый Толстого Луначарского Волжский
806
+ Тракторный Стадионный Кедровый Комарова Герцена Марта Прямой
807
+ Революционный Целинный Элеваторный Киевский Крылова Детский Аптечный
808
+ Профсоюзный Учительский Каменный Кутузова Загородный Пугачева Радужный
809
+ Пригородный}.map { |str| str.end_with?("й") ? "#{str} пер." : "пер. #{str}" } +
810
+ [
811
+ 'пл. Ленина', 'пр-т Ленина', 'Советская пл.', 'Школьный проезд', 'Микрорайон', 'пр-т Мира',
812
+ '1 линия', '2 линия', 'пл. Революции', '3 линия', 'пл. Победы', 'мкр. Северный', 'Садовый проезд',
813
+ 'Лесной проезд', 'Московское ш.', 'пл. Свободы пл', 'Северный проезд'
814
+ ]
815
+ ).freeze
816
+ end
817
+ end