The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# automatically generated file, don't edit



# Copyright 2011 David Cantrell, derived from data from libphonenumber
# http://code.google.com/p/libphonenumber/
#
# 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.
package Number::Phone::StubCountry::RU;
use base qw(Number::Phone::StubCountry);

use strict;
use warnings;
use utf8;
our $VERSION = 1.20180203200235;

my $formatters = [
                {
                  'format' => '$1-$2-$3',
                  'leading_digits' => '[1-79]',
                  'pattern' => '(\\d{3})(\\d{2})(\\d{2})',
                  'national_rule' => '$1',
                  'intl_format' => 'NA'
                },
                {
                  'leading_digits' => '[3489]',
                  'pattern' => '([3489]\\d{2})(\\d{3})(\\d{2})(\\d{2})',
                  'format' => '$1 $2-$3-$4',
                  'national_rule' => '8 ($1)'
                },
                {
                  'national_rule' => '8 ($1)',
                  'format' => '$1 $2 $3',
                  'leading_digits' => '7',
                  'pattern' => '(7\\d{2})(\\d{3})(\\d{4})'
                }
              ];

my $validators = {
                'mobile' => '9\\d{9}',
                'personal_number' => '808\\d{7}',
                'specialrate' => '(80[39]\\d{7})',
                'fixed_line' => '
          (?:
            3(?:
              0[12]|
              4[1-35-79]|
              5[1-3]|
              65|
              8[1-58]|
              9[0145]
            )|
            4(?:
              01|
              1[1356]|
              2[13467]|
              7[1-5]|
              8[1-7]|
              9[1-689]
            )|
            8(?:
              1[1-8]|
              2[01]|
              3[13-6]|
              4[0-8]|
              5[15]|
              6[1-35-79]|
              7[1-37-9]
            )
          )\\d{7}
        ',
                'toll_free' => '80[04]\\d{7}',
                'geographic' => '
          (?:
            3(?:
              0[12]|
              4[1-35-79]|
              5[1-3]|
              65|
              8[1-58]|
              9[0145]
            )|
            4(?:
              01|
              1[1356]|
              2[13467]|
              7[1-5]|
              8[1-7]|
              9[1-689]
            )|
            8(?:
              1[1-8]|
              2[01]|
              3[13-6]|
              4[0-8]|
              5[15]|
              6[1-35-79]|
              7[1-37-9]
            )
          )\\d{7}
        ',
                'pager' => '',
                'voip' => ''
              };
my %areanames = (
  7301 => "Republic\ of\ Buryatia",
  7302 => "Chita",
  733622 => "Baikonur",
  7341 => "Udmurtian\ Republic",
  7342 => "Perm",
  7343 => "Ekaterinburg",
  7345 => "Tyumen",
  7346 => "Surgut",
  7347 => "Republic\ of\ Bashkortostan",
  7349 => "Yamalo\-Nenets\ Autonomous\ District",
  7351 => "Chelyabinsk",
  7352 => "Kurgan",
  7353 => "Orenburg",
  7381 => "Omsk",
  7382 => "Tomsk",
  7383 => "Novosibirsk",
  7384 => "Kemerovo",
  7385 => "Altai\ Territory",
  7388 => "Republic\ of\ Altai",
  7390 => "Republic\ of\ Khakassia",
  7391 => "Krasnoyarsk\ Territory",
  7394 => "Republic\ of\ Tuva",
  7401 => "Kaliningrad",
  7411 => "Republic\ of\ Sakha",
  7413 => "Magadan",
  7415 => "Kamchatka\ Region",
  7416 => "Amur\ Region",
  7421 => "Khabarovsk\ Territory",
  7423 => "Primorie\ territory",
  7424 => "Sakhalin\ Region",
  7426 => "Jewish\ Autonomous\ Region",
  7427 => "Chukotka\ Autonomous\ District",
  7471 => "Kursk",
  7472 => "Belgorod",
  7473 => "Voronezh",
  7474 => "Lipetsk",
  7475 => "Tambov",
  7481 => "Smolensk",
  7482 => "Tver",
  7483 => "Bryansk",
  7484 => "Kaluga",
  7485 => "Yaroslavl",
  7486 => "Orel",
  7487 => "Tula",
  7491 => "Ryazan",
  7492 => "Vladimir",
  7494 => "Kostroma",
  7495 => "Moscow",
  7496 => "Moscow",
  7498 => "Moscow",
  7499 => "Moscow",
  77102 => "Zhezkazgan",
  771030 => "Atasu",
  771031 => "Aksu\-Ayuly",
  771032 => "Karazhal",
  771033 => "Agadyr",
  771034 => "Zhezdy",
  771035 => "Ulytau",
  771036 => "Balkhash",
  771037 => "Aktogai",
  771038 => "Shashubai",
  771039 => "Priozersk",
  771040 => "Zhairem\ \(GOK\)",
  771041 => "Aktau\,\ Zhezkazgan",
  771042 => "Zharyk",
  771043 => "Zhairem",
  771063 => "Satpaev",
  77112 => "Uralsk",
  771130 => "Peremetnoye",
  771131 => "Darinskoye",
  771132 => "Fyodorovka",
  771133 => "Aksai",
  771134 => "Zhympity",
  771135 => "Zhanibek",
  771136 => "Chapayev",
  771137 => "Chingirlau",
  771138 => "Zhalpaktal",
  771139 => "Taskala",
  771140 => "Saikhin",
  771141 => "Zhangala",
  771142 => "Taipak",
  771143 => "Akzhaik",
  771144 => "Kaztalovka",
  771145 => "Karatobe\ District",
  771146 => "Akzhaiksky\ District",
  771147 => "Akzhaiksky\ District",
  771149 => "Zelenovsky\ District",
  7712 => "Atyrau\ Region",
  77122 => "Atyrau",
  7712302 => "Tengizshevroil",
  7712303 => "Tengizs",
  771231 => "Akkystau",
  771233 => "Ganyushkino",
  771234 => "Indernborski",
  771235 => "Dossor",
  771236 => "Makhambet",
  771237 => "Kulsary",
  771238 => "Miyaly",
  771239 => "Makat",
  7713 => "Aktobe\ Region",
  77132 => "Aktobe\/Kargalinskoye",
  771330 => "Khromtau\ District",
  771331 => "Martuk",
  771332 => "Uil",
  771333 => "Kandyagash",
  771334 => "Emba",
  771335 => "Shalkar",
  771336 => "Khromtau",
  771337 => "Alga",
  771339 => "Komsomolskoye",
  771340 => "Khobdinsky\ District",
  771341 => "Khobda",
  771342 => "Badamsha",
  771343 => "Irgiz",
  771345 => "Karauylkeldy",
  771346 => "Shubarkuduk",
  771347 => "Aitekebisky\ District",
  771348 => "Shalkarsky\ District",
  771349 => "Shalkarsky\ District",
  7714 => "Kostanai\ Region",
  77142 => "Kostanai",
  771430 => "Arkalyk",
  771431 => "Rudny",
  771433 => "Lisakovsk",
  771434 => "Denisovka",
  771435 => "Zhitikara",
  771436 => "Taranovskoye",
  771437 => "Kamysty",
  771438 => "Amangeldy",
  771439 => "Torgai",
  771440 => "Amangeldy",
  771441 => "Karabalyk",
  771442 => "Fyodorovka",
  771443 => "Borovskoi",
  771444 => "Uzunkol",
  771445 => "Ubaganskoye",
  771446 => "Uzunkolsky\ District",
  771447 => "Karabalyksky\ District",
  771448 => "Oktyabrskoye",
  771449 => "Taranovskoye",
  771451 => "Sarykol",
  771452 => "Karasu",
  771453 => "Auliekol",
  771454 => "Karamendy",
  771455 => "Zatobolsk",
  771456 => "Kachar",
  771457 => "Dzhangildinsky\ District",
  77145834 => "Krasnogorsk",
  77152 => "Petropavlovsk",
  771531 => "Bulayevo",
  771532 => "Smirnovo",
  771533 => "Saumalkol",
  771534 => "Sergeyevka",
  771535 => "Novoishimski",
  771536 => "Taiynsha",
  771537 => "Timiryazevo",
  771538 => "Beskol",
  771539 => "Beskol",
  771540 => "Kishkenekol",
  771541 => "Mamlutka",
  771542 => "Kishkenekol",
  771543 => "Yavlenka",
  771544 => "Presnovka",
  771545 => "Zhambylsky\ District",
  771546 => "Talshik",
  771547 => "Zhambylsky\ District",
  77162 => "Kokshetau\/Krasni\ Yar",
  771630 => "Burabay",
  771631 => "Shortandy",
  771632 => "Zerenda",
  771633 => "Ereimentau",
  771635 => "Zhaksy",
  771636 => "Shuchinsk",
  771637 => "Korgalzhyn",
  771638 => "Akkol",
  771639 => "Stepnyak",
  771640 => "Balkashino",
  771641 => "Astrakhanka",
  771642 => "Egendykol",
  771643 => "Atbasar",
  771644 => "Arshaly",
  771645 => "Stepnogorsk",
  771646 => "Makinsk",
  771647 => "Esil",
  771648 => "Derzhavinsk",
  771649 => "Zhaksynsky\ District",
  771651 => "Kabanbai\ Batyr",
  77172 => "Astana",
  7718 => "Pavlodar\ Region",
  77182 => "Pavlodar",
  771831 => "Zhelezinka",
  771832 => "Irtyshsk",
  771833 => "Terenkol",
  771834 => "Uspenka",
  771836 => "Sharbakty",
  771837 => "Aksu",
  771838 => "Koktobe",
  771839 => "Akku",
  771840 => "Bayanaul",
  771841 => "Aktogai",
  771842 => "Aktogaisky\ District",
  771843 => "Maisky\ District",
  771844 => "Irtyshsky\ District",
  771845 => "Pavlodar\ Area",
  77187 => "Ekibastuz",
  7721 => "Karaganda\ Region",
  77212 => "Karaganda",
  77213 => "Aktau\/Temirtau",
  772131 => "Abai",
  772132 => "Nurinsky\ District",
  772137 => "Saran",
  772138 => "Gabidena\ Mustafina",
  772144 => "Kiyevka",
  772146 => "Karkaralinsk",
  772147 => "Egindybulak",
  772148 => "Molodezhnoye",
  772149 => "Osakarovka",
  772153 => "Topar",
  772154 => "Botakara",
  772156 => "Shakhtinsk",
  77222 => "Semey",
  772230 => "Urdzhar",
  772236 => "Beskaragai",
  772237 => "Ayagoz",
  772239 => "Makanchi",
  772246 => "Barshatas",
  772251 => "Kurchatov",
  772252 => "Karaul",
  772256 => "Kainar",
  772257 => "Shulbinsk",
  77232 => "Ust\-Kamenogorsk",
  772330 => "Zyryanovsky\ District",
  772331 => "Glubokoye",
  772332 => "Shemonaikha",
  772333 => "Samarskoye",
  772334 => "Tavricheskoye",
  772335 => "Zyryanovsk",
  772336 => "Ridder",
  772337 => "Serebryansk",
  772338 => "Bozanbai\/Molodezhnyi",
  772339 => "Kurchum",
  772340 => "Zaisan",
  772341 => "Ulken\ Naryn",
  772342 => "Katon\-Karagai",
  772343 => "Terekty",
  772344 => "Akzhar",
  772345 => "Shar",
  772346 => "Aksuat",
  772347 => "Kalbatau",
  772348 => "Kokpekty",
  772351 => "Borodulikha",
  772353 => "Novaya\ Shulba",
  7724 => "Kyzylorda\ Region",
  77242 => "Kyzylorda",
  772431 => "Zhalagash",
  772432 => "Shiyeli",
  772433 => "Aralsk",
  772435 => "Zhanakorgan",
  772436 => "Terenozek",
  772437 => "Zhosaly",
  772438 => "Aiteke\ bi",
  772439 => "Aralsky\ District",
  77252 => "Shymkent",
  772530 => "Temirlanovka",
  772531 => "Aksukent",
  772532 => "Abai",
  772533 => "Turkestan",
  772534 => "Zhetysai",
  772535 => "Shardara",
  772536 => "Kentau",
  772537 => "Saryagash",
  772538 => "Turara\ Ryskulova",
  772539 => "Kazygurt",
  772540 => "Arys",
  772541 => "Myrzakent",
  772542 => "Asykata",
  772544 => "Shaulder",
  772546 => "Sholakkorgan",
  772547 => "Lenger",
  772548 => "Shayan",
  77262 => "Taraz",
  772631 => "Kulan",
  772632 => "Merke",
  772633 => "Asa",
  772634 => "Zhanatas",
  772635 => "Bauyrzhan\ Mamyshuly",
  772636 => "Kordai",
  772637 => "Sarykemer",
  772638 => "Tole\ bi",
  772639 => "Saudakent",
  772640 => "Moiynkumsky\ District",
  772641 => "Akkol",
  772642 => "Moiynkum",
  772643 => "Shu",
  772644 => "Karatau",
  7727 => "Almaty\ Region",
  77272 => "Almaty",
  772725 => "Otegen\ Batyra",
  77272956 => "Talgar",
  77272983 => "Kaskelen",
  77273 => "Almaty",
  772740 => "Karassaisky\ District",
  772752 => "Otegen\ Batyra",
  772757 => "Akshi",
  772770 => "Uzynagash",
  772771 => "Kaskelen",
  772772 => "Kapchagai",
  772773 => "Bakanas",
  772774 => "Talgar",
  772775 => "Esik",
  772776 => "Shelek",
  772777 => "Kegen",
  772778 => "Chundzha",
  772779 => "Narynkol",
  77279 => "Almaty",
  77282 => "Taldykorgan",
  772830 => "Alakolsky\ District",
  772831 => "Zharkent",
  772832 => "Zhansugurov",
  772833 => "Usharal",
  772834 => "Ushtobe",
  772835 => "Tekeli",
  772836 => "Karabulak",
  772837 => "Kabanbai",
  772838 => "Balpyk\ bi",
  772839 => "Sarkand",
  772840 => "Saryozek",
  772841 => "Kapal",
  772842 => "Kogaly",
  772843 => "Lepsy",
  77292 => "Aktau",
  772931 => "Shetpe",
  772932 => "Beineu",
  772934 => "Zhanaozen",
  772935 => "Zhetybai",
  772937 => "Kuryk",
  772938 => "Fort\ Shevchenko",
  7811 => "Pskov",
  7812 => "St\ Petersburg",
  7813 => "Leningrad\ region",
  7814 => "Republic\ of\ Karelia",
  7815 => "Murmansk",
  7816 => "Veliky\ Novgorod",
  7817 => "Vologda",
  7818 => "Arkhangelsk",
  7820 => "Cherepovets",
  7821 => "Komi\ Republic",
  7831 => "Nizhni\ Novgorod",
  7833 => "Kirov",
  7834 => "Republic\ of\ Mordovia",
  7835 => "Chuvashi\ Republic",
  7836 => "Republic\ of\ Marij\ El",
  7841 => "Penza",
  7842 => "Ulyanovsk",
  7843 => "Republic\ of\ Tatarstan",
  7844 => "Volgograd",
  7845 => "Saratov",
  7846 => "Samara",
  7847 => "Republic\ of\ Kalmykia",
  7848 => "Tolyatti",
  7851 => "Astrakhan",
  7855 => "Naberezhnye\ Chelny",
  7861 => "Krasnodar\ Territory",
  7862 => "Sochi",
  7863 => "Rostov",
  7865 => "Stavropol\ territory",
  7866 => "Kabardino\-Balkarian\ Republic",
  7867 => "Republic\ of\ North\ Ossetia",
  7871 => "Chechen\ Republic",
  7872 => "Republic\ of\ Daghestan",
  7873 => "Ingushi\ Republic",
  7877 => "Republic\ of\ Adygeya",
  7878 => "Karachayevo\-Cherkessian\ Republic",
  7879 => "Mineranye\ Vody",
);
    sub new {
      my $class = shift;
      my $number = shift;
      $number =~ s/(^\+7|\D)//g;
      my $self = bless({ number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
  
      return $self if ($self->is_valid());
      {
        no warnings 'uninitialized';
        $number =~ s/^(?:8)//;
      }
      $self = bless({ number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
    return $self->is_valid() ? $self : undef;
}
1;