summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorStefan Wintermeyer <stefan.wintermeyer@amooma.de>2012-12-17 12:05:14 +0100
committerStefan Wintermeyer <stefan.wintermeyer@amooma.de>2012-12-17 12:05:14 +0100
commiteaad37485fe59d0306c37cc038dda6d210052910 (patch)
tree072c4b0e33d442528555b82c415f5e7a1712b2b0 /lib
parent3e706c2025ecc5523e81ad649639ef2ff75e7bac (diff)
parentb80bd744ad873f6fc43018bc4bfb90677de167bd (diff)
Merge branch 'develop'
Diffstat (limited to 'lib')
-rw-r--r--lib/activerecord_extensions.rb72
-rw-r--r--lib/agi_server.rb123
-rw-r--r--lib/assets/.gitkeep0
-rw-r--r--lib/freeswitch_event.rb133
-rw-r--r--lib/generators/nifty.rb28
-rw-r--r--lib/generators/nifty/authentication/USAGE50
-rw-r--r--lib/generators/nifty/authentication/authentication_generator.rb154
-rw-r--r--lib/generators/nifty/authentication/templates/authlogic_session.rb2
-rw-r--r--lib/generators/nifty/authentication/templates/controller_authentication.rb60
-rw-r--r--lib/generators/nifty/authentication/templates/fixtures.yml24
-rw-r--r--lib/generators/nifty/authentication/templates/migration.rb20
-rw-r--r--lib/generators/nifty/authentication/templates/sessions_controller.rb41
-rw-r--r--lib/generators/nifty/authentication/templates/sessions_helper.rb2
-rw-r--r--lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb39
-rw-r--r--lib/generators/nifty/authentication/templates/tests/rspec/user.rb83
-rw-r--r--lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb56
-rw-r--r--lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb40
-rw-r--r--lib/generators/nifty/authentication/templates/tests/shoulda/user.rb85
-rw-r--r--lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb61
-rw-r--r--lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb36
-rw-r--r--lib/generators/nifty/authentication/templates/tests/testunit/user.rb88
-rw-r--r--lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb53
-rw-r--r--lib/generators/nifty/authentication/templates/user.rb38
-rw-r--r--lib/generators/nifty/authentication/templates/users_controller.rb32
-rw-r--r--lib/generators/nifty/authentication/templates/users_helper.rb2
-rw-r--r--lib/generators/nifty/authentication/templates/views/erb/_form.html.erb20
-rw-r--r--lib/generators/nifty/authentication/templates/views/erb/edit.html.erb3
-rw-r--r--lib/generators/nifty/authentication/templates/views/erb/login.html.erb30
-rw-r--r--lib/generators/nifty/authentication/templates/views/erb/signup.html.erb5
-rw-r--r--lib/generators/nifty/authentication/templates/views/haml/_form.html.haml16
-rw-r--r--lib/generators/nifty/authentication/templates/views/haml/edit.html.haml3
-rw-r--r--lib/generators/nifty/authentication/templates/views/haml/login.html.haml26
-rw-r--r--lib/generators/nifty/authentication/templates/views/haml/signup.html.haml5
-rw-r--r--lib/generators/nifty/config/USAGE23
-rw-r--r--lib/generators/nifty/config/config_generator.rb24
-rw-r--r--lib/generators/nifty/config/templates/config.yml8
-rw-r--r--lib/generators/nifty/config/templates/load_config.rb2
-rw-r--r--lib/generators/nifty/layout/USAGE25
-rw-r--r--lib/generators/nifty/layout/layout_generator.rb29
-rw-r--r--lib/generators/nifty/layout/templates/error_messages_helper.rb23
-rw-r--r--lib/generators/nifty/layout/templates/layout.html.haml21
-rw-r--r--lib/generators/nifty/layout/templates/layout_helper.rb38
-rw-r--r--lib/generators/nifty/layout/templates/stylesheet.css83
-rw-r--r--lib/generators/nifty/layout/templates/stylesheet.sass73
-rw-r--r--lib/generators/nifty/scaffold/USAGE51
-rw-r--r--lib/generators/nifty/scaffold/scaffold_generator.rb344
-rw-r--r--lib/generators/nifty/scaffold/templates/actions/create.rb8
-rw-r--r--lib/generators/nifty/scaffold/templates/actions/destroy.rb5
-rw-r--r--lib/generators/nifty/scaffold/templates/actions/edit.rb3
-rw-r--r--lib/generators/nifty/scaffold/templates/actions/index.rb3
-rw-r--r--lib/generators/nifty/scaffold/templates/actions/new.rb3
-rw-r--r--lib/generators/nifty/scaffold/templates/actions/show.rb3
-rw-r--r--lib/generators/nifty/scaffold/templates/actions/update.rb8
-rw-r--r--lib/generators/nifty/scaffold/templates/controller.rb3
-rw-r--r--lib/generators/nifty/scaffold/templates/fixtures.yml9
-rw-r--r--lib/generators/nifty/scaffold/templates/helper.rb2
-rw-r--r--lib/generators/nifty/scaffold/templates/locale.yml46
-rw-r--r--lib/generators/nifty/scaffold/templates/locale_de.yml46
-rw-r--r--lib/generators/nifty/scaffold/templates/migration.rb16
-rw-r--r--lib/generators/nifty/scaffold/templates/model.rb4
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb11
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb6
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb4
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb4
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb4
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb4
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb11
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb8
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/rspec/model.rb7
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb13
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb8
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb6
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb6
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb6
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb6
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb13
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb5
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb7
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb11
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb6
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb4
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb4
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb4
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb4
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb11
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb49
-rw-r--r--lib/generators/nifty/scaffold/templates/tests/testunit/model.rb7
-rw-r--r--lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml7
-rw-r--r--lib/generators/nifty/scaffold/templates/views/haml/_form_core.html.haml4
-rw-r--r--lib/generators/nifty/scaffold/templates/views/haml/_index_core.html.haml13
-rw-r--r--lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml3
-rw-r--r--lib/generators/nifty/scaffold/templates/views/haml/index.html.haml6
-rw-r--r--lib/generators/nifty/scaffold/templates/views/haml/new.html.haml3
-rw-r--r--lib/generators/nifty/scaffold/templates/views/haml/show.html.haml9
-rw-r--r--lib/phone_controllers/snom_phone.rb23
-rw-r--r--lib/tasks/.gitkeep0
-rw-r--r--lib/tasks/cvs_user_import.rake331
-rw-r--r--lib/tasks/fax.rake74
-rw-r--r--lib/tasks/gs_cluster.rake333
-rw-r--r--lib/tasks/originate.rake13
-rw-r--r--lib/tasks/populate_area_codes_de.rake5211
-rw-r--r--lib/tasks/populate_area_codes_pl.rake59
-rw-r--r--lib/tasks/populate_country_codes.rake244
-rw-r--r--lib/tasks/send_fax_notifications.rake49
-rw-r--r--lib/tasks/send_voicemail_notifications.rake52
-rw-r--r--lib/templates/erb/scaffold/_form.html.erb13
-rw-r--r--lib/uacsta.rb83
107 files changed, 9092 insertions, 0 deletions
diff --git a/lib/activerecord_extensions.rb b/lib/activerecord_extensions.rb
new file mode 100644
index 0000000..50c44be
--- /dev/null
+++ b/lib/activerecord_extensions.rb
@@ -0,0 +1,72 @@
+class ActiveRecord::Base
+
+ before_validation :populate_uuid, :on => :create
+ before_validation :populate_gs_node_id, :on => :create
+
+ # Set a UUID.
+ #
+ def populate_uuid
+ if self.attribute_names.include?('uuid') && self.uuid.blank?
+ uuid = UUID.new
+ self.uuid = uuid.generate
+ end
+ end
+
+ # Set the gs_node_id if not already set.
+ #
+ def populate_gs_node_id
+ if self.attribute_names.include?('gs_node_id') && self.gs_node_id.blank?
+ self.gs_node_id = GsNode.where(:ip_address => HOMEBASE_IP_ADDRESS).first.try(:id)
+ end
+ end
+
+ # Create a new GsClusterSyncLogEntry.
+ # This will be populated automatically to GsNode.all.where(...)
+ #
+ def create_on_other_gs_nodes(association_method = nil, association_uuid = nil)
+ action_on_other_gs_nodes('create', self.to_json, nil, association_method, association_uuid)
+ end
+
+ def destroy_on_other_gs_nodes
+ action_on_other_gs_nodes('destroy', self.to_json)
+ end
+
+ def update_on_other_gs_nodes(association_method = nil, association_uuid = nil)
+ action_on_other_gs_nodes('update', self.changes.to_json, 'Changed: ' + self.changed.to_json, association_method, association_uuid)
+ end
+
+ def action_on_other_gs_nodes(action, content, history = nil, association_method = nil, association_uuid = nil)
+ # One doesn't make sense without the other.
+ #
+ if association_method.blank? || association_uuid.blank?
+ association_method = nil
+ association_uuid = nil
+ end
+ history = nil if history.blank?
+ if !self.attribute_names.include?('is_native')
+ logger.error "Couldn't #{action} #{self.class} with the ID #{self.id} on other GsNodes because #{self.class} doesn't have a is_native attribute."
+ else
+ if self.is_native != false
+ if defined? WRITE_GS_CLUSTER_SYNC_LOG && WRITE_GS_CLUSTER_SYNC_LOG == true
+ if !(defined? $gs_cluster_loop_protection) || $gs_cluster_loop_protection != true
+ begin
+ GsClusterSyncLogEntry.create(
+ :class_name => self.class.name,
+ :action => action,
+ :content => content,
+ :history => history,
+ :homebase_ip_address => HOMEBASE_IP_ADDRESS,
+ :waiting_to_be_synced => true,
+ :association_method => association_method,
+ :association_uuid => association_uuid
+ )
+ rescue
+ logger.error "Couldn't add action: #{action} for #{self.class} with the ID #{self.id} to gs_cluster_log_entries."
+ end
+ end
+ end
+ end
+ end
+ end
+
+end \ No newline at end of file
diff --git a/lib/agi_server.rb b/lib/agi_server.rb
new file mode 100644
index 0000000..29c06c4
--- /dev/null
+++ b/lib/agi_server.rb
@@ -0,0 +1,123 @@
+module AGIServer
+ DEFAULT_AGI_SERVER_HOST = nil
+ DEFAULT_AGI_SERVER_PORT = 4573
+
+ def self.log_debug(message)
+ puts "DEBUG-AGI-Server: #{message.to_s}"
+ #Rails.logger.debug "AGI-Server: #{message}"
+ end
+
+ def self.log_error(message)
+ puts "ERROR-AGI-Server: #{message.to_s}"
+ #Rails.logger.error "AGI-Server: #{message}"
+ end
+
+ class Client
+ AGI_AVAILABLE_METHODS = ['directory_lookup']
+ @client = nil
+ @options = nil
+
+ def set_variable(variable_name, variable_value)
+ if !@client
+ return false
+ end
+ @client.puts "SET VARIABLE #{variable_name.to_s} \"#{variable_value.to_s}\""
+ end
+
+ def directory_lookup
+ number = @options['agi_arg_1'].to_s.gsub(/[^0-9A-Za-z\*_-]/, '')
+ number_type = @options['agi_arg_3'].to_s
+ client_id = @options['agi_arg_2'].to_i
+
+ if number.blank?
+ number = @options['agi_dnid'].to_s.gsub(/[^0-9A-Za-z\*_-]/, '')
+ number_type = "unknown"
+ client_id = 1
+ end
+
+ if client_id > 0
+ if number != ""
+ phone_number = PhoneNumber.where(:number => number, :phone_numberable_type => "SipAccount").first
+ if phone_number.blank?
+ set_variable(:directory_status, 'unknown')
+ set_variable(:directory_message, 'Number not found in directory')
+ return nil
+ end
+
+ set_variable(:directory_status, 'exact_match')
+ set_variable(:directory_message, 'Exact match')
+ set_variable(:directory_number_type, phone_number.phone_numberable_type)
+ set_variable(:directory_number_destination, phone_number.phone_numberable.to_s)
+ set_variable(:directory_number_host, "1")
+ set_variable(:directory_number_name, phone_number.name)
+ set_variable(:directory_number_number, phone_number.number)
+ set_variable(:directory_number_country_code, phone_number.country_code)
+ set_variable(:directory_number_area_code, phone_number.area_code)
+ set_variable(:directory_number_central_office_code, phone_number.central_office_code)
+ set_variable(:directory_number_subscriber_number, phone_number.subscriber_number)
+ set_variable(:directory_number_extension, phone_number.extension)
+
+ if phone_number.phone_numberable_type == "SipAccount"
+ set_variable(:directory_caller_name, phone_number.phone_numberable.caller_name)
+ end
+ else
+ set_variable(:directory_status, 'error')
+ set_variable(:directory_message, 'No number specified')
+ end
+ else
+ set_variable(:directory_status, 'error')
+ set_variable(:directory_message, 'No ID')
+ end
+ end
+
+ def handler(client)
+ @client = client
+ @options = Hash.new
+ while @client
+ buffer = @client.gets().strip
+ if buffer == ""
+ if @options['agi_network_script'] && AGI_AVAILABLE_METHODS.include?(@options['agi_network_script'].to_s.downcase)
+ self.send(@options['agi_network_script'].to_s.downcase)
+ end
+ break
+ elsif buffer =~ /^.*:\s/
+ key, value = buffer.split(': ')
+ @options[key]= value
+ end
+ end
+ @client.close
+ end
+ end
+
+ def self.server( host = DEFAULT_AGI_SERVER_HOST, port = DEFAULT_AGI_SERVER_PORT )
+
+ log_debug("Starting server process.")
+ require 'socket'
+ server = TCPServer.open(4573)
+ if server
+ run_server = true
+ end
+
+ client_handler_id = 0
+ while run_server
+ log_debug("Server listening on: #{server.local_address.ip_address}:#{server.local_address.ip_port}")
+
+ Thread.start(server.accept) do |client|
+ remote_ip = client.remote_address.ip_address
+ remote_port = client.remote_address.ip_port
+
+ begin
+ client_handler = Client.new
+ client_handler_id = client_handler.object_id
+ log_debug("[#{client_handler_id}] Connection opened: #{remote_ip}:#{remote_port}")
+ client_handler.handler(client)
+ log_debug("[#{client_handler_id}] Connection closed: #{remote_ip}:#{remote_port}")
+ rescue => e
+ log_error("[#{client_handler_id}] #{e.class.to_s}: #{e.to_s}, closing connection: #{remote_ip}:#{remote_port}")
+ ensure
+ client.close()
+ end
+ end
+ end
+ end
+end
diff --git a/lib/assets/.gitkeep b/lib/assets/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/assets/.gitkeep
diff --git a/lib/freeswitch_event.rb b/lib/freeswitch_event.rb
new file mode 100644
index 0000000..b6e5cbc
--- /dev/null
+++ b/lib/freeswitch_event.rb
@@ -0,0 +1,133 @@
+class FreeswitchEventSocket
+ DEFAULT_HOST = "127.0.0.1"
+ DEFAULT_PORT = 8021
+ DEFAULT_PASSWORD = "ClueCon"
+ DEFAULT_SOCKET_TIMEOUT = 20
+ @socket = nil
+
+ def auth(password)
+ self.command("auth #{password}")
+ result = self.result()
+
+ if result && result["Reply-Text"] == "+OK accepted"
+ return true
+ end
+ return false
+ end
+
+ def connect(password = DEFAULT_PASSWORD, event_host = DEFAULT_HOST, event_port = DEFAULT_PORT)
+ begin
+ @socket = TCPSocket.open(event_host, event_port)
+ rescue
+ return false
+ end
+
+ if not @socket
+ return false
+ end
+
+ result = self.result()
+ if result && result["Content-Type"] == "auth/request" then
+ if not self.auth(password)
+ return false
+ end
+ end
+
+ return true
+ end
+
+ def command(command)
+ @socket.puts("#{command}\n\n")
+ end
+
+ def close()
+ @socket.close
+ end
+
+ def read()
+ return @socket.recv(1024)
+ end
+
+ def result()
+ reply = self.read()
+ if reply.class == String
+ message = Hash.new()
+ header, body = reply.split("\n\n", 2)
+ if ! body.blank?
+ message['_BODY'] = body
+ end
+ header.split("\n").each do |line|
+ key, value = line.split(/\: */, 2)
+ message[key] = value
+ end
+ return message
+ end
+ return nil
+ end
+end
+
+class FreeswitchEvent
+ def initialize(event_type)
+ @event_type = event_type
+ @event_header = Array.new()
+ @event_body = nil
+ @event_header.push("sendevent #{@event_type}")
+ end
+
+ def add_header(name, value)
+ @event_header.push("#{name}: #{value}")
+ end
+
+ def add_body(body)
+ @event_body = body
+ end
+
+ def fire()
+ if @event_body && @event_body.length > 0
+ self.add_header("content-length", @event_body.length);
+ end
+
+ event = FreeswitchEventSocket.new()
+ if event && event.connect()
+ event.command(@event_header.join("\n"))
+ event.command( @event_body)
+ result = event.result()
+ event.close()
+
+ if result && result["Reply-Text"] == "+OK"
+ return true
+ end
+ end
+ return false
+ end
+end
+
+class FreeswitchAPI
+ def self.execute(command, arguments, bgapi = false)
+
+ event = FreeswitchEventSocket.new()
+ if event && event.connect()
+ api = bgapi ? 'bgapi' : 'api'
+ event.command( "#{api} #{command} #{arguments}")
+ result = event.result()
+ if result && result["Content-Type"] == 'api/response' && result["_BODY"].blank?
+ result = event.result()
+ end
+ event.close()
+
+ if result
+ if result.has_key?('Reply-Text') && result['Reply-Text'] =~ /^\+OK/
+ if result.has_key?('Job-UUID') && ! result['Job-UUID'].blank?
+ return result['Job-UUID'];
+ else
+ return true;
+ end
+ elsif result.has_key?('_BODY') && result['_BODY'] =~ /^\+OK/
+ return true;
+ end
+ end
+ end
+
+ return false
+ end
+end
diff --git a/lib/generators/nifty.rb b/lib/generators/nifty.rb
new file mode 100644
index 0000000..1c3d6d7
--- /dev/null
+++ b/lib/generators/nifty.rb
@@ -0,0 +1,28 @@
+require 'rails/generators/base'
+
+module Nifty
+ module Generators
+ class Base < Rails::Generators::Base #:nodoc:
+ def self.source_root
+ @_nifty_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'nifty', generator_name, 'templates'))
+ end
+
+ def self.banner
+ "rails generate nifty:#{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]"
+ end
+
+ private
+
+ def add_gem(name, options = {})
+ gemfile_content = File.read(destination_path("Gemfile"))
+ File.open(destination_path("Gemfile"), 'a') { |f| f.write("\n") } unless gemfile_content =~ /\n\Z/
+ gem name, options unless gemfile_content.include? name
+ end
+
+ def print_usage
+ self.class.help(Thor::Base.shell.new)
+ exit
+ end
+ end
+ end
+end
diff --git a/lib/generators/nifty/authentication/USAGE b/lib/generators/nifty/authentication/USAGE
new file mode 100644
index 0000000..89f0a64
--- /dev/null
+++ b/lib/generators/nifty/authentication/USAGE
@@ -0,0 +1,50 @@
+Description:
+ Generates a user model, users controller, and sessions controller. The
+ users controller handles the registration and the sessions controller
+ handles authentication. This is similar to restful_authentication, but
+ simpler.
+
+ IMPORTANT: This generator uses the "title" helper method which is generated
+ by the nifty_layout generator. You may want to run that generator first.
+
+Usage:
+ If you do not pass any arguments, the model name will default to "user", and
+ the authentication controller will default to "session". You can override
+ each of these respectively by passing one or two arguments. Either name can
+ be CamelCased or under_scored.
+
+ Make sure to setup the authlogic gem if you are using that option.
+
+ gem "authlogic" # in Gemfile
+
+Examples:
+ rails generate nifty:authentication
+
+ Creates user model, users_controller, and sessions_controller.
+
+ rails generate nifty:authentication account
+
+ Creates account model, accounts_controller, and sessions_controller.
+
+ rails generate nifty:authentication Account UserSession
+
+ Creates account model, accounts_controller, and user_sessions_controller.
+
+Methods:
+ There are several methods generated which you can use in your application.
+ Here's a common example of what you might add to your layout.
+
+ <% if logged_in? %>
+ Welcome <%= current_user.username %>! Not you?
+ <%= link_to "Log out", logout_path %>
+ <% else %>
+ <%= link_to "Sign up", signup_path %> or
+ <%= link_to "log in", login_path %>.
+ <% end %>
+
+ You can also restrict unregistered users from accessing a controller using
+ a before filter. For example.
+
+ before_filter :login_required, :except => [:index, :show]
+
+ See the generated file lib/authentication.rb for details. \ No newline at end of file
diff --git a/lib/generators/nifty/authentication/authentication_generator.rb b/lib/generators/nifty/authentication/authentication_generator.rb
new file mode 100644
index 0000000..d4dcbde
--- /dev/null
+++ b/lib/generators/nifty/authentication/authentication_generator.rb
@@ -0,0 +1,154 @@
+require 'generators/nifty'
+require 'rails/generators/migration'
+
+module Nifty
+ module Generators
+ class AuthenticationGenerator < Base
+ include Rails::Generators::Migration
+
+ argument :user_name, :type => :string, :default => 'user', :banner => 'user_name'
+ argument :session_name, :type => :string, :default => '[[DEFAULT]]', :banner => 'sessions_controller_name'
+
+ class_option :testunit, :desc => 'Use test/unit for test files.', :group => 'Test framework', :type => :boolean
+ class_option :rspec, :desc => 'Use RSpec for test files.', :group => 'Test framework', :type => :boolean
+ class_option :shoulda, :desc => 'Use shoulda for test files.', :group => 'Test framework', :type => :boolean
+
+ class_option :haml, :desc => 'Generate HAML views instead of ERB.', :type => :boolean
+ class_option :authlogic, :desc => 'Use Authlogic for authentication.', :type => :boolean
+
+ def add_gems
+ add_gem "bcrypt-ruby", :require => "bcrypt"
+ add_gem "mocha", :group => :test
+ end
+
+ def create_model_files
+ template 'user.rb', "app/models/#{user_singular_name}.rb"
+ template 'authlogic_session.rb', "app/models/#{user_singular_name}_session.rb" if options.authlogic?
+ end
+
+ def create_controller_files
+ template 'users_controller.rb', "app/controllers/#{user_plural_name}_controller.rb"
+ template 'sessions_controller.rb', "app/controllers/#{session_plural_name}_controller.rb"
+ end
+
+ def create_helper_files
+ template 'users_helper.rb', "app/helpers/#{user_plural_name}_helper.rb"
+ template 'sessions_helper.rb', "app/helpers/#{session_plural_name}_helper.rb"
+ end
+
+ def create_view_files
+ template "views/#{view_language}/signup.html.#{view_language}", "app/views/#{user_plural_name}/new.html.#{view_language}"
+ template "views/#{view_language}/edit.html.#{view_language}", "app/views/#{user_plural_name}/edit.html.#{view_language}"
+ template "views/#{view_language}/_form.html.#{view_language}", "app/views/#{user_plural_name}/_form.html.#{view_language}"
+ template "views/#{view_language}/login.html.#{view_language}", "app/views/#{session_plural_name}/new.html.#{view_language}"
+ end
+
+ def create_lib_files
+ template 'controller_authentication.rb', 'lib/controller_authentication.rb'
+ end
+
+ def create_routes
+ route "resources #{user_plural_name.to_sym.inspect}"
+ route "resources #{session_plural_name.to_sym.inspect}"
+ route "match 'login' => '#{session_plural_name}#new', :as => :login"
+ route "match 'logout' => '#{session_plural_name}#destroy', :as => :logout"
+ route "match 'signup' => '#{user_plural_name}#new', :as => :signup"
+ route "match '#{user_singular_name}/edit' => '#{user_plural_name}#edit', :as => :edit_current_#{user_singular_name}"
+ end
+
+ def create_migration
+ migration_template 'migration.rb', "db/migrate/create_#{user_plural_name}.rb"
+ end
+
+ def load_and_include_authentication
+ inject_into_class "config/application.rb", "Application", " config.autoload_paths << \"\#{config.root}/lib\""
+ inject_into_class "app/controllers/application_controller.rb", "ApplicationController", " include ControllerAuthentication\n"
+ end
+
+ def create_test_files
+ if test_framework == :rspec
+ template 'fixtures.yml', "spec/fixtures/#{user_plural_name}.yml"
+ template 'tests/rspec/user.rb', "spec/models/#{user_singular_name}_spec.rb"
+ template 'tests/rspec/users_controller.rb', "spec/controllers/#{user_plural_name}_controller_spec.rb"
+ template 'tests/rspec/sessions_controller.rb', "spec/controllers/#{session_plural_name}_controller_spec.rb"
+ else
+ template 'fixtures.yml', "test/fixtures/#{user_plural_name}.yml"
+ template "tests/#{test_framework}/user.rb", "test/unit/#{user_singular_name}_test.rb"
+ template "tests/#{test_framework}/users_controller.rb", "test/functional/#{user_plural_name}_controller_test.rb"
+ template "tests/#{test_framework}/sessions_controller.rb", "test/functional/#{session_plural_name}_controller_test.rb"
+ end
+ end
+
+ private
+
+ def session_name
+ @_session_name ||= @session_name == '[[DEFAULT]]' ?
+ (options.authlogic? ? user_name + '_session' : 'session') :
+ @session_name
+ end
+
+ def user_singular_name
+ user_name.underscore
+ end
+
+ def user_plural_name
+ user_singular_name.pluralize
+ end
+
+ def user_class_name
+ user_name.camelize
+ end
+
+ def user_plural_class_name
+ user_plural_name.camelize
+ end
+
+ def session_singular_name
+ session_name.underscore
+ end
+
+ def session_plural_name
+ session_singular_name.pluralize
+ end
+
+ def session_class_name
+ session_name.camelize
+ end
+
+ def session_plural_class_name
+ session_plural_name.camelize
+ end
+
+ def view_language
+ options.haml? ? 'haml' : 'erb'
+ end
+
+ def test_framework
+ return @test_framework if defined?(@test_framework)
+ if options.testunit?
+ return @test_framework = :testunit
+ elsif options.rspec?
+ return @test_framework = :rspec
+ elsif options.shoulda?
+ return @test_framework = :shoulda
+ else
+ return @test_framework = File.exist?(destination_path('spec')) ? :rspec : :testunit
+ end
+ end
+
+ def destination_path(path)
+ File.join(destination_root, path)
+ end
+
+ # FIXME: Should be proxied to ActiveRecord::Generators::Base
+ # Implement the required interface for Rails::Generators::Migration.
+ def self.next_migration_number(dirname) #:nodoc:
+ if ActiveRecord::Base.timestamped_migrations
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
+ else
+ "%.3d" % (current_migration_number(dirname) + 1)
+ end
+ end
+ end
+ end
+end
diff --git a/lib/generators/nifty/authentication/templates/authlogic_session.rb b/lib/generators/nifty/authentication/templates/authlogic_session.rb
new file mode 100644
index 0000000..676cfd0
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/authlogic_session.rb
@@ -0,0 +1,2 @@
+class <%= session_class_name %> < Authlogic::Session::Base
+end
diff --git a/lib/generators/nifty/authentication/templates/controller_authentication.rb b/lib/generators/nifty/authentication/templates/controller_authentication.rb
new file mode 100644
index 0000000..6d34ab0
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/controller_authentication.rb
@@ -0,0 +1,60 @@
+# This module is included in your application controller which makes
+# several methods available to all controllers and views. Here's a
+# common example you might add to your application layout file.
+#
+# <%% if logged_in? %>
+# Welcome <%%= current_<%= user_singular_name %>.username %>.
+# <%%= link_to "Edit profile", edit_current_<%= user_singular_name %>_path %> or
+# <%%= link_to "Log out", logout_path %>
+# <%% else %>
+# <%%= link_to "Sign up", signup_path %> or
+# <%%= link_to "log in", login_path %>.
+# <%% end %>
+#
+# You can also restrict unregistered users from accessing a controller using
+# a before filter. For example.
+#
+# before_filter :login_required, :except => [:index, :show]
+module ControllerAuthentication
+ def self.included(controller)
+ controller.send :helper_method, :current_<%= user_singular_name %>, :logged_in?, :redirect_to_target_or_default
+ end
+
+<%- if options[:authlogic] -%>
+ def current_<%= session_singular_name %>
+ return @current_<%= session_singular_name %> if defined?(@current_<%= session_singular_name %>)
+ @current_<%= session_singular_name %> = <%= session_class_name %>.find
+ end
+
+ def current_<%= user_singular_name %>
+ return @current_<%= user_singular_name %> if defined?(@current_<%= user_singular_name %>)
+ @current_<%= user_singular_name %> = current_<%= session_singular_name %> && current_<%= session_singular_name %>.record
+ end
+<%- else -%>
+ def current_<%= user_singular_name %>
+ @current_<%= user_singular_name %> ||= <%= user_class_name %>.find(session[:<%= user_singular_name %>_id]) if session[:<%= user_singular_name %>_id]
+ end
+<%- end -%>
+
+ def logged_in?
+ current_<%= user_singular_name %>
+ end
+
+ def login_required
+ unless logged_in?
+ store_target_location
+ redirect_to login_url, :alert => "You must first log in or sign up before accessing this page."
+ end
+ end
+
+ def redirect_to_target_or_default(default, *args)
+ redirect_to(session[:return_to] || default, *args)
+ session[:return_to] = nil
+ end
+
+ private
+
+ def store_target_location
+ session[:return_to] = request.url
+ end
+end
diff --git a/lib/generators/nifty/authentication/templates/fixtures.yml b/lib/generators/nifty/authentication/templates/fixtures.yml
new file mode 100644
index 0000000..c52532b
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/fixtures.yml
@@ -0,0 +1,24 @@
+# password: "secret"
+foo:
+ username: foo
+ email: foo@example.com
+<%- if options[:authlogic] -%>
+ persistence_token: d5ddba13ed4408ea2b0a12ab18ed2d2eda086279736bdc121ca726a11f1e4b99217d9c534c2cc4ebb22729349c8c5fdbe1529e1f2c3c5859c62ef4dd9feea25c
+ crypted_password: 3d16c326648cccafe3d4b4cb024475c381dda92f430dfedf6f933e1f61203bacb6bae2437849bdb43b06be335e23790e4aa03902b3c28c3bbbbe27d501e521f3
+ password_salt: n6z_wtpWoIsHgQb5IcFd
+<%- else -%>
+ password_hash: 3488f5f7efecab14b91eb96169e5e1ee518a569f
+ password_salt: bef65e058905c379436d80d1a32e7374b139e7b0
+<%- end -%>
+
+bar:
+ username: bar
+ email: bar@example.com
+<%- if options[:authlogic] -%>
+ persistence_token: 19e074bd7cb506ab3e7e53e41f24f0ab3221c8cb68111f4c1aa43965114ad734233979a50a9463537487cdca18c279ac91c4bc83693d589625d446493322394c
+ crypted_password: 3bc9f4113ca645a186765df3d31a9352d0067bf2304ba0cdd6b08a7f3d58c6668ab1762fa3e76aef466ea2ff188399d8e6c40244fa59312bb4112292dac9f7f0
+ password_salt: UiAh9ejabnKRxqsiK0xO
+<%- else -%>
+ password_hash: 3488f5f7efecab14b91eb96169e5e1ee518a569f
+ password_salt: bef65e058905c379436d80d1a32e7374b139e7b0
+<%- end -%>
diff --git a/lib/generators/nifty/authentication/templates/migration.rb b/lib/generators/nifty/authentication/templates/migration.rb
new file mode 100644
index 0000000..c945df3
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/migration.rb
@@ -0,0 +1,20 @@
+class Create<%= user_plural_class_name %> < ActiveRecord::Migration
+ def self.up
+ create_table :<%= user_plural_name %> do |t|
+ t.string :username
+ t.string :email
+ <%- if options[:authlogic] -%>
+ t.string :persistence_token
+ t.string :crypted_password
+ <%- else -%>
+ t.string :password_hash
+ <%- end -%>
+ t.string :password_salt
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :<%= user_plural_name %>
+ end
+end
diff --git a/lib/generators/nifty/authentication/templates/sessions_controller.rb b/lib/generators/nifty/authentication/templates/sessions_controller.rb
new file mode 100644
index 0000000..65e77c1
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/sessions_controller.rb
@@ -0,0 +1,41 @@
+class <%= session_plural_class_name %>Controller < ApplicationController
+<%- if options[:authlogic] -%>
+ def new
+ @<%= session_singular_name %> = <%= session_class_name %>.new
+ end
+
+ def create
+ @<%= session_singular_name %> = <%= session_class_name %>.new(params[:<%= session_singular_name %>])
+ if @<%= session_singular_name %>.save
+ redirect_to_target_or_default root_url, :notice => "Logged in successfully."
+ else
+ render :new
+ end
+ end
+
+ def destroy
+ @<%= session_singular_name %> = <%= session_class_name %>.find
+ @<%= session_singular_name %>.destroy
+ redirect_to root_url, :notice => "You have been logged out."
+ end
+<%- else -%>
+ def new
+ end
+
+ def create
+ <%= user_singular_name %> = <%= user_class_name %>.authenticate(params[:login], params[:password])
+ if <%= user_singular_name %>
+ session[:<%= user_singular_name %>_id] = <%= user_singular_name %>.id
+ redirect_to_target_or_default root_url, :notice => "Logged in successfully."
+ else
+ flash.now[:alert] = "Invalid login or password."
+ render :new
+ end
+ end
+
+ def destroy
+ session[:<%= user_singular_name %>_id] = nil
+ redirect_to root_url, :notice => "You have been logged out."
+ end
+<%- end -%>
+end
diff --git a/lib/generators/nifty/authentication/templates/sessions_helper.rb b/lib/generators/nifty/authentication/templates/sessions_helper.rb
new file mode 100644
index 0000000..0958537
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/sessions_helper.rb
@@ -0,0 +1,2 @@
+module <%= session_plural_class_name %>Helper
+end
diff --git a/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb b/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb
new file mode 100644
index 0000000..e0953cc
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/tests/rspec/sessions_controller.rb
@@ -0,0 +1,39 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe <%= session_plural_class_name %>Controller do
+ fixtures :all
+ render_views
+
+ it "new action should render new template" do
+ get :new
+ response.should render_template(:new)
+ end
+
+<%- if options[:authlogic] -%>
+ it "create action should render new template when authentication is invalid" do
+ post :create, :<%= session_singular_name %> => { :username => "foo", :password => "badpassword" }
+ response.should render_template(:new)
+ <%= session_class_name %>.find.should be_nil
+ end
+
+ it "create action should redirect when authentication is valid" do
+ post :create, :<%= session_singular_name %> => { :username => "foo", :password => "secret" }
+ response.should redirect_to(root_url)
+ <%= session_class_name %>.find.<%= user_singular_name %>.should == <%= user_plural_name %>(:foo)
+ end
+<%- else -%>
+ it "create action should render new template when authentication is invalid" do
+ <%= user_class_name %>.stubs(:authenticate).returns(nil)
+ post :create
+ response.should render_template(:new)
+ session['<%= user_singular_name %>_id'].should be_nil
+ end
+
+ it "create action should redirect when authentication is valid" do
+ <%= user_class_name %>.stubs(:authenticate).returns(<%= user_class_name %>.first)
+ post :create
+ response.should redirect_to(root_url)
+ session['<%= user_singular_name %>_id'].should == <%= user_class_name %>.first.id
+ end
+<%- end -%>
+end
diff --git a/lib/generators/nifty/authentication/templates/tests/rspec/user.rb b/lib/generators/nifty/authentication/templates/tests/rspec/user.rb
new file mode 100644
index 0000000..a3f7e92
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/tests/rspec/user.rb
@@ -0,0 +1,83 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe <%= user_class_name %> do
+<%- unless options[:authlogic] -%>
+ def new_<%= user_singular_name %>(attributes = {})
+ attributes[:username] ||= 'foo'
+ attributes[:email] ||= 'foo@example.com'
+ attributes[:password] ||= 'abc123'
+ attributes[:password_confirmation] ||= attributes[:password]
+ <%= user_class_name %>.new(attributes)
+ end
+
+ before(:each) do
+ <%= user_class_name %>.delete_all
+ end
+
+ it "should be valid" do
+ new_<%= user_singular_name %>.should be_valid
+ end
+
+ it "should require username" do
+ new_<%= user_singular_name %>(:username => '').should have(1).error_on(:username)
+ end
+
+ it "should require password" do
+ new_<%= user_singular_name %>(:password => '').should have(1).error_on(:password)
+ end
+
+ it "should require well formed email" do
+ new_<%= user_singular_name %>(:email => 'foo@bar@example.com').should have(1).error_on(:email)
+ end
+
+ it "should validate uniqueness of email" do
+ new_<%= user_singular_name %>(:email => 'bar@example.com').save!
+ new_<%= user_singular_name %>(:email => 'bar@example.com').should have(1).error_on(:email)
+ end
+
+ it "should validate uniqueness of username" do
+ new_<%= user_singular_name %>(:username => 'uniquename').save!
+ new_<%= user_singular_name %>(:username => 'uniquename').should have(1).error_on(:username)
+ end
+
+ it "should not allow odd characters in username" do
+ new_<%= user_singular_name %>(:username => 'odd ^&(@)').should have(1).error_on(:username)
+ end
+
+ it "should validate password is longer than 3 characters" do
+ new_<%= user_singular_name %>(:password => 'bad').should have(1).error_on(:password)
+ end
+
+ it "should require matching password confirmation" do
+ new_<%= user_singular_name %>(:password_confirmation => 'nonmatching').should have(1).error_on(:password)
+ end
+
+ it "should generate password hash and salt on create" do
+ <%= user_singular_name %> = new_<%= user_singular_name %>
+ <%= user_singular_name %>.save!
+ <%= user_singular_name %>.password_hash.should_not be_nil
+ <%= user_singular_name %>.password_salt.should_not be_nil
+ end
+
+ it "should authenticate by username" do
+ <%= user_singular_name %> = new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret')
+ <%= user_singular_name %>.save!
+ <%= user_class_name %>.authenticate('foobar', 'secret').should == <%= user_singular_name %>
+ end
+
+ it "should authenticate by email" do
+ <%= user_singular_name %> = new_<%= user_singular_name %>(:email => 'foo@bar.com', :password => 'secret')
+ <%= user_singular_name %>.save!
+ <%= user_class_name %>.authenticate('foo@bar.com', 'secret').should == <%= user_singular_name %>
+ end
+
+ it "should not authenticate bad username" do
+ <%= user_class_name %>.authenticate('nonexisting', 'secret').should be_nil
+ end
+
+ it "should not authenticate bad password" do
+ new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret').save!
+ <%= user_class_name %>.authenticate('foobar', 'badpassword').should be_nil
+ end
+<%- end -%>
+end
diff --git a/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb b/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb
new file mode 100644
index 0000000..60bcff9
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/tests/rspec/users_controller.rb
@@ -0,0 +1,56 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe <%= user_plural_class_name %>Controller do
+ fixtures :all
+ render_views
+
+ it "new action should render new template" do
+ get :new
+ response.should render_template(:new)
+ end
+
+ it "create action should render new template when model is invalid" do
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
+ post :create
+ response.should render_template(:new)
+ end
+
+ it "create action should redirect when model is valid" do
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
+ post :create
+ response.should redirect_to(root_url)
+ <%- unless options[:authlogic] -%>
+ session['<%= user_singular_name %>_id'].should == assigns['<%= user_singular_name %>'].id
+ <%- end -%>
+ end
+
+ it "edit action should redirect when not logged in" do
+ get :edit, :id => "ignored"
+ response.should redirect_to(login_url)
+ end
+
+ it "edit action should render edit template" do
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
+ get :edit, :id => "ignored"
+ response.should render_template(:edit)
+ end
+
+ it "update action should redirect when not logged in" do
+ put :update, :id => "ignored"
+ response.should redirect_to(login_url)
+ end
+
+ it "update action should render edit template when <%= user_singular_name %> is invalid" do
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
+ put :update, :id => "ignored"
+ response.should render_template(:edit)
+ end
+
+ it "update action should redirect when <%= user_singular_name %> is valid" do
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
+ put :update, :id => "ignored"
+ response.should redirect_to(root_url)
+ end
+end
diff --git a/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb b/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb
new file mode 100644
index 0000000..e2f9005
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/tests/shoulda/sessions_controller.rb
@@ -0,0 +1,40 @@
+require 'test_helper'
+
+class <%= session_plural_class_name %>ControllerTest < ActionController::TestCase
+ context "new action" do
+ should "render new template" do
+ get :new
+ assert_template 'new'
+ end
+ end
+
+ context "create action" do
+ <%- if options[:authlogic] -%>
+ should "render new template when authentication is invalid" do
+ post :create, :<%= session_singular_name %> => { :username => "foo", :password => "badpassword" }
+ assert_template 'new'
+ assert_nil <%= session_class_name %>.find
+ end
+
+ should "redirect when authentication is valid" do
+ post :create, :<%= session_singular_name %> => { :username => "foo", :password => "secret" }
+ assert_redirected_to root_url
+ assert_equal <%= user_plural_name %>(:foo), <%= session_class_name %>.find.<%= user_singular_name %>
+ end
+ <%- else -%>
+ should "render new template when authentication is invalid" do
+ <%= user_class_name %>.stubs(:authenticate).returns(nil)
+ post :create
+ assert_template 'new'
+ assert_nil session['<%= user_singular_name %>_id']
+ end
+
+ should "redirect when authentication is valid" do
+ <%= user_class_name %>.stubs(:authenticate).returns(<%= user_class_name %>.first)
+ post :create
+ assert_redirected_to root_url
+ assert_equal <%= user_class_name %>.first.id, session['<%= user_singular_name %>_id']
+ end
+ <%- end -%>
+ end
+end
diff --git a/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb b/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb
new file mode 100644
index 0000000..beb8bf4
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/tests/shoulda/user.rb
@@ -0,0 +1,85 @@
+require 'test_helper'
+
+class <%= user_class_name %>Test < ActiveSupport::TestCase
+<%- unless options[:authlogic] -%>
+ def new_<%= user_singular_name %>(attributes = {})
+ attributes[:username] ||= 'foo'
+ attributes[:email] ||= 'foo@example.com'
+ attributes[:password] ||= 'abc123'
+ attributes[:password_confirmation] ||= attributes[:password]
+ <%= user_singular_name %> = <%= user_class_name %>.new(attributes)
+ <%= user_singular_name %>.valid? # run validations
+ <%= user_singular_name %>
+ end
+
+ def setup
+ <%= user_class_name %>.delete_all
+ end
+
+ should "be valid" do
+ assert new_<%= user_singular_name %>.valid?
+ end
+
+ should "require username" do
+ assert_equal ["can't be blank"], new_<%= user_singular_name %>(:username => '').errors[:username]
+ end
+
+ should "require password" do
+ assert_equal ["can't be blank"], new_<%= user_singular_name %>(:password => '').errors[:password]
+ end
+
+ should "require well formed email" do
+ assert_equal ["is invalid"], new_<%= user_singular_name %>(:email => 'foo@bar@example.com').errors[:email]
+ end
+
+ should "validate uniqueness of email" do
+ new_<%= user_singular_name %>(:email => 'bar@example.com').save!
+ assert_equal ["has already been taken"], new_<%= user_singular_name %>(:email => 'bar@example.com').errors[:email]
+ end
+
+ should "validate uniqueness of username" do
+ new_<%= user_singular_name %>(:username => 'uniquename').save!
+ assert_equal ["has already been taken"], new_<%= user_singular_name %>(:username => 'uniquename').errors[:username]
+ end
+
+ should "not allow odd characters in username" do
+ assert_equal ["should only contain letters, numbers, or .-_@"], new_<%= user_singular_name %>(:username => 'odd ^&(@)').errors[:username]
+ end
+
+ should "validate password is longer than 3 characters" do
+ assert_equal ["is too short (minimum is 4 characters)"], new_<%= user_singular_name %>(:password => 'bad').errors[:password]
+ end
+
+ should "require matching password confirmation" do
+ assert_equal ["doesn't match confirmation"], new_<%= user_singular_name %>(:password_confirmation => 'nonmatching').errors[:password]
+ end
+
+ should "generate password hash and salt on create" do
+ <%= user_singular_name %> = new_<%= user_singular_name %>
+ <%= user_singular_name %>.save!
+ assert <%= user_singular_name %>.password_hash
+ assert <%= user_singular_name %>.password_salt
+ end
+
+ should "authenticate by username" do
+ <%= user_singular_name %> = new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret')
+ <%= user_singular_name %>.save!
+ assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foobar', 'secret')
+ end
+
+ should "authenticate by email" do
+ <%= user_singular_name %> = new_<%= user_singular_name %>(:email => 'foo@bar.com', :password => 'secret')
+ <%= user_singular_name %>.save!
+ assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foo@bar.com', 'secret')
+ end
+
+ should "not authenticate bad username" do
+ assert_nil <%= user_class_name %>.authenticate('nonexisting', 'secret')
+ end
+
+ should "not authenticate bad password" do
+ new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret').save!
+ assert_nil <%= user_class_name %>.authenticate('foobar', 'badpassword')
+ end
+<%- end -%>
+end
diff --git a/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb b/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb
new file mode 100644
index 0000000..1728329
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/tests/shoulda/users_controller.rb
@@ -0,0 +1,61 @@
+require 'test_helper'
+
+class <%= user_plural_class_name %>ControllerTest < ActionController::TestCase
+ context "new action" do
+ should "render new template" do
+ get :new
+ assert_template 'new'
+ end
+ end
+
+ context "create action" do
+ should "render new template when <%= user_singular_name %> is invalid" do
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
+ post :create
+ assert_template 'new'
+ end
+
+ should "redirect when <%= user_singular_name %> is valid" do
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
+ post :create
+ assert_redirected_to root_url
+ <%- unless options[:authlogic] -%>
+ assert_equal assigns['<%= user_singular_name %>'].id, session['<%= user_singular_name %>_id']
+ <%- end -%>
+ end
+ end
+
+ context "edit action" do
+ should "redirect when not logged in" do
+ get :edit, :id => "ignored"
+ assert_redirected_to login_url
+ end
+
+ should "render edit template" do
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
+ get :edit, :id => "ignored"
+ assert_template 'edit'
+ end
+ end
+
+ context "update action" do
+ should "redirect when not logged in" do
+ put :update, :id => "ignored"
+ assert_redirected_to login_url
+ end
+
+ should "render edit template when <%= user_singular_name %> is invalid" do
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
+ put :update, :id => "ignored"
+ assert_template 'edit'
+ end
+
+ should "redirect when <%= user_singular_name %> is valid" do
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
+ put :update, :id => "ignored"
+ assert_redirected_to root_url
+ end
+ end
+end
diff --git a/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb b/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb
new file mode 100644
index 0000000..fe2a65b
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/tests/testunit/sessions_controller.rb
@@ -0,0 +1,36 @@
+require 'test_helper'
+
+class <%= session_plural_class_name %>ControllerTest < ActionController::TestCase
+ def test_new
+ get :new
+ assert_template 'new'
+ end
+
+<%- if options[:authlogic] -%>
+ def test_create_invalid
+ post :create, :<%= session_singular_name %> => { :username => "foo", :password => "badpassword" }
+ assert_template 'new'
+ assert_nil <%= session_class_name %>.find
+ end
+
+ def test_create_valid
+ post :create, :<%= session_singular_name %> => { :username => "foo", :password => "secret" }
+ assert_redirected_to root_url
+ assert_equal <%= user_plural_name %>(:foo), <%= session_class_name %>.find.<%= user_singular_name %>
+ end
+<%- else -%>
+ def test_create_invalid
+ <%= user_class_name %>.stubs(:authenticate).returns(nil)
+ post :create
+ assert_template 'new'
+ assert_nil session['<%= user_singular_name %>_id']
+ end
+
+ def test_create_valid
+ <%= user_class_name %>.stubs(:authenticate).returns(<%= user_class_name %>.first)
+ post :create
+ assert_redirected_to root_url
+ assert_equal <%= user_class_name %>.first.id, session['<%= user_singular_name %>_id']
+ end
+<%- end -%>
+end
diff --git a/lib/generators/nifty/authentication/templates/tests/testunit/user.rb b/lib/generators/nifty/authentication/templates/tests/testunit/user.rb
new file mode 100644
index 0000000..c036cf1
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/tests/testunit/user.rb
@@ -0,0 +1,88 @@
+require 'test_helper'
+
+class <%= user_class_name %>Test < ActiveSupport::TestCase
+<%- unless options[:authlogic] -%>
+ def new_<%= user_singular_name %>(attributes = {})
+ attributes[:username] ||= 'foo'
+ attributes[:email] ||= 'foo@example.com'
+ attributes[:password] ||= 'abc123'
+ attributes[:password_confirmation] ||= attributes[:password]
+ <%= user_singular_name %> = <%= user_class_name %>.new(attributes)
+ <%= user_singular_name %>.valid? # run validations
+ <%= user_singular_name %>
+ end
+
+ def setup
+ <%= user_class_name %>.delete_all
+ end
+
+ def test_valid
+ assert new_<%= user_singular_name %>.valid?
+ end
+
+ def test_require_username
+ assert_equal ["can't be blank"], new_<%= user_singular_name %>(:username => '').errors[:username]
+ end
+
+ def test_require_password
+ assert_equal ["can't be blank"], new_<%= user_singular_name %>(:password => '').errors[:password]
+ end
+
+ def test_require_well_formed_email
+ assert_equal ["is invalid"], new_<%= user_singular_name %>(:email => 'foo@bar@example.com').errors[:email]
+ end
+
+ def test_validate_uniqueness_of_email
+ new_<%= user_singular_name %>(:email => 'bar@example.com').save!
+ assert_equal ["has already been taken"], new_<%= user_singular_name %>(:email => 'bar@example.com').errors[:email]
+ end
+
+ def test_validate_uniqueness_of_username
+ new_<%= user_singular_name %>(:username => 'uniquename').save!
+ assert_equal ["has already been taken"], new_<%= user_singular_name %>(:username => 'uniquename').errors[:username]
+ end
+
+ def test_validate_odd_characters_in_username
+ assert_equal ["should only contain letters, numbers, or .-_@"], new_<%= user_singular_name %>(:username => 'odd ^&(@)').errors[:username]
+ end
+
+ def test_validate_password_length
+ assert_equal ["is too short (minimum is 4 characters)"], new_<%= user_singular_name %>(:password => 'bad').errors[:password]
+ end
+
+ def test_require_matching_password_confirmation
+ assert_equal ["doesn't match confirmation"], new_<%= user_singular_name %>(:password_confirmation => 'nonmatching').errors[:password]
+ end
+
+ def test_generate_password_hash_and_salt_on_create
+ <%= user_singular_name %> = new_<%= user_singular_name %>
+ <%= user_singular_name %>.save!
+ assert <%= user_singular_name %>.password_hash
+ assert <%= user_singular_name %>.password_salt
+ end
+
+ def test_authenticate_by_username
+ <%= user_class_name %>.delete_all
+ <%= user_singular_name %> = new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret')
+ <%= user_singular_name %>.save!
+ assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foobar', 'secret')
+ end
+
+ def test_authenticate_by_email
+ <%= user_class_name %>.delete_all
+ <%= user_singular_name %> = new_<%= user_singular_name %>(:email => 'foo@bar.com', :password => 'secret')
+ <%= user_singular_name %>.save!
+ assert_equal <%= user_singular_name %>, <%= user_class_name %>.authenticate('foo@bar.com', 'secret')
+ end
+
+ def test_authenticate_bad_username
+ assert_nil <%= user_class_name %>.authenticate('nonexisting', 'secret')
+ end
+
+ def test_authenticate_bad_password
+ <%= user_class_name %>.delete_all
+ new_<%= user_singular_name %>(:username => 'foobar', :password => 'secret').save!
+ assert_nil <%= user_class_name %>.authenticate('foobar', 'badpassword')
+ end
+<%- end -%>
+end
diff --git a/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb b/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb
new file mode 100644
index 0000000..ef8a3f7
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/tests/testunit/users_controller.rb
@@ -0,0 +1,53 @@
+require 'test_helper'
+
+class <%= user_plural_class_name %>ControllerTest < ActionController::TestCase
+ def test_new
+ get :new
+ assert_template 'new'
+ end
+
+ def test_create_invalid
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
+ post :create
+ assert_template 'new'
+ end
+
+ def test_create_valid
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
+ post :create
+ assert_redirected_to root_url
+ <%- unless options[:authlogic] -%>
+ assert_equal assigns['<%= user_singular_name %>'].id, session['<%= user_singular_name %>_id']
+ <%- end -%>
+ end
+
+ def test_edit_without_user
+ get :edit, :id => "ignored"
+ assert_redirected_to login_url
+ end
+
+ def test_edit
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
+ get :edit, :id => "ignored"
+ assert_template 'edit'
+ end
+
+ def test_update_without_user
+ put :update, :id => "ignored"
+ assert_redirected_to login_url
+ end
+
+ def test_update_invalid
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(false)
+ put :update, :id => "ignored"
+ assert_template 'edit'
+ end
+
+ def test_update_valid
+ @controller.stubs(:current_<%= user_singular_name %>).returns(<%= user_class_name %>.first)
+ <%= user_class_name %>.any_instance.stubs(:valid?).returns(true)
+ put :update, :id => "ignored"
+ assert_redirected_to root_url
+ end
+end
diff --git a/lib/generators/nifty/authentication/templates/user.rb b/lib/generators/nifty/authentication/templates/user.rb
new file mode 100644
index 0000000..ec18524
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/user.rb
@@ -0,0 +1,38 @@
+class <%= user_class_name %> < ActiveRecord::Base
+<%- if options[:authlogic] -%>
+ acts_as_authentic
+<%- else -%>
+ # new columns need to be added here to be writable through mass assignment
+ attr_accessible :username, :email, :password, :password_confirmation
+
+ attr_accessor :password
+ before_save :prepare_password
+
+ validates_presence_of :username
+ validates_uniqueness_of :username, :email, :allow_blank => true
+ validates_format_of :username, :with => /^[-\w\._@]+$/i, :allow_blank => true, :message => "should only contain letters, numbers, or .-_@"
+ validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
+ validates_presence_of :password, :on => :create
+ validates_confirmation_of :password
+ validates_length_of :password, :minimum => 4, :allow_blank => true
+
+ # login can be either username or email address
+ def self.authenticate(login, pass)
+ <%= user_singular_name %> = find_by_username(login) || find_by_email(login)
+ return <%= user_singular_name %> if <%= user_singular_name %> && <%= user_singular_name %>.password_hash == <%= user_singular_name %>.encrypt_password(pass)
+ end
+
+ def encrypt_password(pass)
+ BCrypt::Engine.hash_secret(pass, password_salt)
+ end
+
+ private
+
+ def prepare_password
+ unless password.blank?
+ self.password_salt = BCrypt::Engine.generate_salt
+ self.password_hash = encrypt_password(password)
+ end
+ end
+<%- end -%>
+end
diff --git a/lib/generators/nifty/authentication/templates/users_controller.rb b/lib/generators/nifty/authentication/templates/users_controller.rb
new file mode 100644
index 0000000..2faed00
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/users_controller.rb
@@ -0,0 +1,32 @@
+class <%= user_plural_class_name %>Controller < ApplicationController
+ before_filter :login_required, :except => [:new, :create]
+
+ def new
+ @<%= user_singular_name %> = <%= user_class_name %>.new
+ end
+
+ def create
+ @<%= user_singular_name %> = <%= user_class_name %>.new(params[:<%= user_singular_name %>])
+ if @<%= user_singular_name %>.save
+ <%- unless options[:authlogic] -%>
+ session[:<%= user_singular_name %>_id] = @<%= user_singular_name %>.id
+ <%- end -%>
+ redirect_to root_url, :notice => "Thank you for signing up! You are now logged in."
+ else
+ render :new
+ end
+ end
+
+ def edit
+ @<%= user_singular_name %> = current_<%= user_singular_name %>
+ end
+
+ def update
+ @<%= user_singular_name %> = current_<%= user_singular_name %>
+ if @<%= user_singular_name %>.update_attributes(params[:<%= user_singular_name %>])
+ redirect_to root_url, :notice => "Your profile has been updated."
+ else
+ render :edit
+ end
+ end
+end
diff --git a/lib/generators/nifty/authentication/templates/users_helper.rb b/lib/generators/nifty/authentication/templates/users_helper.rb
new file mode 100644
index 0000000..7eb9040
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/users_helper.rb
@@ -0,0 +1,2 @@
+module <%= user_plural_class_name %>Helper
+end
diff --git a/lib/generators/nifty/authentication/templates/views/erb/_form.html.erb b/lib/generators/nifty/authentication/templates/views/erb/_form.html.erb
new file mode 100644
index 0000000..4e1c47d
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/views/erb/_form.html.erb
@@ -0,0 +1,20 @@
+<%%= form_for @<%= user_singular_name %> do |f| %>
+ <%%= f.error_messages %>
+ <div class="field">
+ <%%= f.label :username %>
+ <%%= f.text_field :username %>
+ </div>
+ <div class="field">
+ <%%= f.label :email, "Email Address" %>
+ <%%= f.text_field :email %>
+ </div>
+ <div class="field">
+ <%%= f.label :password %>
+ <%%= f.password_field :password %>
+ </div>
+ <div class="field">
+ <%%= f.label :password_confirmation, "Confirm Password" %>
+ <%%= f.password_field :password_confirmation %>
+ </div>
+ <div class="actions"><%%= f.submit (@<%= user_singular_name %>.new_record? ? "Sign up" : "Update") %></div>
+<%% end %>
diff --git a/lib/generators/nifty/authentication/templates/views/erb/edit.html.erb b/lib/generators/nifty/authentication/templates/views/erb/edit.html.erb
new file mode 100644
index 0000000..75de67e
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/views/erb/edit.html.erb
@@ -0,0 +1,3 @@
+<%% title "Update Profile" %>
+
+<%%= render "form" %>
diff --git a/lib/generators/nifty/authentication/templates/views/erb/login.html.erb b/lib/generators/nifty/authentication/templates/views/erb/login.html.erb
new file mode 100644
index 0000000..1cbc428
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/views/erb/login.html.erb
@@ -0,0 +1,30 @@
+<%% title "Log in" %>
+
+<p>Don't have an account? <%%= link_to "Sign up!", signup_path %></p>
+
+<%- if options[:authlogic] -%>
+<%%= form_for @<%= session_singular_name %> do |f| %>
+ <%%= f.error_messages %>
+ <div class="field">
+ <%%= f.label :username %>
+ <%%= f.text_field :username %>
+ </div>
+ <div class="field">
+ <%%= f.label :password %>
+ <%%= f.password_field :password %>
+ </div>
+ <div class="actions"><%%= f.submit "Log in" %></div>
+<%% end %>
+<%- else -%>
+<%%= form_tag <%= session_plural_name %>_path do %>
+ <div class="field">
+ <%%= label_tag :login, "Username or Email Address" %>
+ <%%= text_field_tag :login, params[:login] %>
+ </div>
+ <div class="field">
+ <%%= label_tag :password %>
+ <%%= password_field_tag :password %>
+ </div>
+ <div class="actions"><%%= submit_tag "Log in" %></div>
+<%% end %>
+<%- end -%>
diff --git a/lib/generators/nifty/authentication/templates/views/erb/signup.html.erb b/lib/generators/nifty/authentication/templates/views/erb/signup.html.erb
new file mode 100644
index 0000000..6f282b5
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/views/erb/signup.html.erb
@@ -0,0 +1,5 @@
+<%% title "Sign up" %>
+
+<p>Already have an account? <%%= link_to "Log in", login_path %>.</p>
+
+<%%= render "form" %>
diff --git a/lib/generators/nifty/authentication/templates/views/haml/_form.html.haml b/lib/generators/nifty/authentication/templates/views/haml/_form.html.haml
new file mode 100644
index 0000000..992ee9c
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/views/haml/_form.html.haml
@@ -0,0 +1,16 @@
+= form_for @<%= user_singular_name %> do |f|
+ = f.error_messages
+ .field
+ = f.label :username
+ = f.text_field :username
+ .field
+ = f.label :email, "Email Address"
+ = f.text_field :email
+ .field
+ = f.label :password
+ = f.password_field :password
+ .field
+ = f.label :password_confirmation, "Confirm Password"
+ = f.password_field :password_confirmation
+ .actions
+ = f.submit (@<%= user_singular_name %>.new_record? ? "Sign up" : "Update")
diff --git a/lib/generators/nifty/authentication/templates/views/haml/edit.html.haml b/lib/generators/nifty/authentication/templates/views/haml/edit.html.haml
new file mode 100644
index 0000000..4b43a3b
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/views/haml/edit.html.haml
@@ -0,0 +1,3 @@
+- title "Sign up"
+
+= render "form"
diff --git a/lib/generators/nifty/authentication/templates/views/haml/login.html.haml b/lib/generators/nifty/authentication/templates/views/haml/login.html.haml
new file mode 100644
index 0000000..22fc95b
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/views/haml/login.html.haml
@@ -0,0 +1,26 @@
+- title "Log in"
+
+%p== Don't have an account? #{link_to "Sign up!", signup_path}
+
+<%- if options[:authlogic] -%>
+= form_for @<%= session_singular_name %> do |f|
+ = f.error_messages
+ .field
+ = f.label :username
+ = f.text_field :username
+ .field
+ = f.label :password
+ = f.password_field :password
+ .actions
+ = f.submit "Log in"
+<%- else -%>
+- form_tag <%= session_plural_name %>_path do
+ .field
+ = label_tag :login, "Username or Email Address"
+ = text_field_tag :login, params[:login]
+ .field
+ = label_tag :password
+ = password_field_tag :password
+ .actions
+ = submit_tag "Log in"
+<%- end -%>
diff --git a/lib/generators/nifty/authentication/templates/views/haml/signup.html.haml b/lib/generators/nifty/authentication/templates/views/haml/signup.html.haml
new file mode 100644
index 0000000..dc75c13
--- /dev/null
+++ b/lib/generators/nifty/authentication/templates/views/haml/signup.html.haml
@@ -0,0 +1,5 @@
+- title "Sign up"
+
+%p== Already have an account? #{link_to "Log in", login_path}.
+
+= render "form"
diff --git a/lib/generators/nifty/config/USAGE b/lib/generators/nifty/config/USAGE
new file mode 100644
index 0000000..f98972c
--- /dev/null
+++ b/lib/generators/nifty/config/USAGE
@@ -0,0 +1,23 @@
+Description:
+ The nifty_config generator creates YAML file in your config
+ directory and an initializer to load this config. The config has a
+ separate section for each environment. This is a great place to put
+ any config settings you don't want in your app.
+
+ The config is loaded into a constant called APP_CONFIG by default,
+ this changes depending on the name you choose to pass the generator.
+ Use this constant to access the config settings like this.
+
+ APP_CONFIG[:some_setting]
+
+
+Examples:
+ rails generate nifty:config
+
+ Config: config/app_config.yml
+ Initializer: config/initializers/load_app_config.rb
+
+ rails generate nifty:config passwords
+
+ Config: config/passwords_config.yml
+ Initializer: config/initializers/load_passwords_config.rb
diff --git a/lib/generators/nifty/config/config_generator.rb b/lib/generators/nifty/config/config_generator.rb
new file mode 100644
index 0000000..811c80e
--- /dev/null
+++ b/lib/generators/nifty/config/config_generator.rb
@@ -0,0 +1,24 @@
+require 'generators/nifty'
+
+module Nifty
+ module Generators
+ class ConfigGenerator < Base
+ argument :config_name, :type => :string, :default => 'app', :banner => 'config_name'
+
+ def create_config
+ template "load_config.rb", "config/initializers/load_#{file_name}_config.rb"
+ copy_file "config.yml", "config/#{file_name}_config.yml"
+ end
+
+ private
+
+ def file_name
+ config_name.underscore
+ end
+
+ def constant_name
+ config_name.underscore.upcase
+ end
+ end
+ end
+end
diff --git a/lib/generators/nifty/config/templates/config.yml b/lib/generators/nifty/config/templates/config.yml
new file mode 100644
index 0000000..3a26ebc
--- /dev/null
+++ b/lib/generators/nifty/config/templates/config.yml
@@ -0,0 +1,8 @@
+development:
+ domain: localhost:3000
+
+test:
+ domain: test.host
+
+production:
+ domain: example.com
diff --git a/lib/generators/nifty/config/templates/load_config.rb b/lib/generators/nifty/config/templates/load_config.rb
new file mode 100644
index 0000000..06e6a52
--- /dev/null
+++ b/lib/generators/nifty/config/templates/load_config.rb
@@ -0,0 +1,2 @@
+raw_config = File.read("#{Rails.root}/config/<%= file_name %>_config.yml")
+<%= constant_name %>_CONFIG = YAML.load(raw_config)[Rails.env].symbolize_keys
diff --git a/lib/generators/nifty/layout/USAGE b/lib/generators/nifty/layout/USAGE
new file mode 100644
index 0000000..f94af0d
--- /dev/null
+++ b/lib/generators/nifty/layout/USAGE
@@ -0,0 +1,25 @@
+Description:
+ The nifty_layout generator creates a basic layout, stylesheet and
+ helper which will give some structure to a starting Rails app.
+
+ The generator takes one argument which will be the name of the
+ layout and stylesheet files. If no argument is passed then it defaults
+ to "application".
+
+ The helper module includes some methods which can be called in any
+ template or partial to set variables to be used in the layout, such as
+ page title and javascript/stylesheet includes.
+
+Examples:
+ rails generate nifty:layout
+
+ Layout: app/views/layouts/application.html.erb
+ Stylesheet: public/stylesheets/application.css
+ Helper: app/helpers/layout_helper.rb
+
+
+ rails generate nifty:layout admin
+
+ Layout: app/views/layouts/admin.html.erb
+ Stylesheet: public/stylesheets/admin.css
+ Helper: app/helpers/layout_helper.rb
diff --git a/lib/generators/nifty/layout/layout_generator.rb b/lib/generators/nifty/layout/layout_generator.rb
new file mode 100644
index 0000000..fb7f9f4
--- /dev/null
+++ b/lib/generators/nifty/layout/layout_generator.rb
@@ -0,0 +1,29 @@
+require 'generators/nifty'
+
+module Nifty
+ module Generators
+ class LayoutGenerator < Base
+ argument :layout_name, :type => :string, :default => 'application', :banner => 'layout_name'
+
+ class_option :haml, :desc => 'Generate HAML for view, and SASS for stylesheet.', :type => :boolean, :default => true
+
+ def create_layout
+ if options.haml?
+ template 'layout.html.haml', "app/views/layouts/#{file_name}.html.haml"
+ copy_file 'stylesheet.sass', "public/stylesheets/sass/#{file_name}.sass"
+ else
+ template 'layout.html.erb', "app/views/layouts/#{file_name}.html.erb"
+ copy_file 'stylesheet.css', "public/stylesheets/#{file_name}.css"
+ end
+ copy_file 'layout_helper.rb', 'app/helpers/layout_helper.rb'
+ copy_file 'error_messages_helper.rb', 'app/helpers/error_messages_helper.rb'
+ end
+
+ private
+
+ def file_name
+ layout_name.underscore
+ end
+ end
+ end
+end
diff --git a/lib/generators/nifty/layout/templates/error_messages_helper.rb b/lib/generators/nifty/layout/templates/error_messages_helper.rb
new file mode 100644
index 0000000..8e9c4d3
--- /dev/null
+++ b/lib/generators/nifty/layout/templates/error_messages_helper.rb
@@ -0,0 +1,23 @@
+module ErrorMessagesHelper
+ # Render error messages for the given objects. The :message and :header_message options are allowed.
+ def error_messages_for(*objects)
+ options = objects.extract_options!
+ options[:header_message] ||= I18n.t(:"activerecord.errors.header", :default => "Invalid Fields")
+ options[:message] ||= I18n.t(:"activerecord.errors.message", :default => "Correct the following errors and try again.")
+ messages = objects.compact.map { |o| o.errors.full_messages }.flatten
+ unless messages.empty?
+ content_tag(:div, :class => "error_messages") do
+ list_items = messages.map { |msg| content_tag(:li, msg.html_safe) }
+ content_tag(:h2, options[:header_message].html_safe) + content_tag(:p, options[:message].html_safe) + content_tag(:ul, list_items.join.html_safe)
+ end
+ end
+ end
+
+ module FormBuilderAdditions
+ def error_messages(options = {})
+ @template.error_messages_for(@object, options)
+ end
+ end
+end
+
+ActionView::Helpers::FormBuilder.send(:include, ErrorMessagesHelper::FormBuilderAdditions)
diff --git a/lib/generators/nifty/layout/templates/layout.html.haml b/lib/generators/nifty/layout/templates/layout.html.haml
new file mode 100644
index 0000000..24ec1d6
--- /dev/null
+++ b/lib/generators/nifty/layout/templates/layout.html.haml
@@ -0,0 +1,21 @@
+!!!
+%html
+
+ %head
+ %title
+ = content_for?(:title) ? yield(:title) : "Untitled"
+ %meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/
+ = stylesheet_link_tag "application"
+ = javascript_include_tag "application"
+ = csrf_meta_tag
+ = yield(:head)
+
+ %body
+ #container
+ - flash.each do |name, msg|
+ = content_tag :div, msg, :id => "flash_#{name}"
+
+ - if show_title?
+ %h1= yield(:title)
+
+ = yield
diff --git a/lib/generators/nifty/layout/templates/layout_helper.rb b/lib/generators/nifty/layout/templates/layout_helper.rb
new file mode 100644
index 0000000..93011d6
--- /dev/null
+++ b/lib/generators/nifty/layout/templates/layout_helper.rb
@@ -0,0 +1,38 @@
+# These helper methods can be called in your template to set variables to be used in the layout
+# This module should be included in all views globally,
+# to do so you may need to add this line to your ApplicationController
+# helper :layout
+module LayoutHelper
+
+ def title(page_title, show_title = true)
+ content_for(:title) { strip_tags(page_title.to_s) }
+ @show_title = show_title
+ end
+
+ def show_title?
+ @show_title
+ end
+
+ def stylesheet(*args)
+ content_for(:head) { stylesheet_link_tag(*args) }
+ end
+
+ def javascript(*args)
+ content_for(:head) { javascript_include_tag(*args) }
+ end
+
+ def translation_missing?(output)
+ (output =~ /span/ or output.empty?)
+ end
+
+ def conditional_hint(translation_key)
+ output = t(translation_key)
+ return output unless translation_missing?(output)
+ false
+ end
+
+ def conditional_t(translation_key)
+ output = t(translation_key)
+ strip_tags(output)
+ end
+end \ No newline at end of file
diff --git a/lib/generators/nifty/layout/templates/stylesheet.css b/lib/generators/nifty/layout/templates/stylesheet.css
new file mode 100644
index 0000000..448a53f
--- /dev/null
+++ b/lib/generators/nifty/layout/templates/stylesheet.css
@@ -0,0 +1,83 @@
+html, body {
+ background-color: #4B7399;
+ font-family: Verdana, Helvetica, Arial;
+ font-size: 14px;
+}
+
+a img {
+ border: none;
+}
+
+a {
+ color: #0000FF;
+}
+
+.clear {
+ clear: both;
+ height: 0;
+ overflow: hidden;
+}
+
+#container {
+ width: 75%;
+ margin: 0 auto;
+ background-color: #FFF;
+ padding: 20px 40px;
+ border: solid 1px black;
+ margin-top: 20px;
+}
+
+#flash_notice, #flash_error, #flash_alert {
+ padding: 5px 8px;
+ margin: 10px 0;
+}
+
+#flash_notice {
+ background-color: #CFC;
+ border: solid 1px #6C6;
+}
+
+#flash_error, #flash_alert {
+ background-color: #FCC;
+ border: solid 1px #C66;
+}
+
+.error_messages {
+ width: 400px;
+ border: 2px solid #CF0000;
+ padding: 0px;
+ padding-bottom: 12px;
+ margin-bottom: 20px;
+ background-color: #f0f0f0;
+ font-size: 12px;
+}
+
+.error_messages h2 {
+ text-align: left;
+ font-weight: bold;
+ padding: 5px 10px;
+ font-size: 12px;
+ margin: 0;
+ background-color: #c00;
+ color: #fff;
+}
+
+.error_messages p {
+ margin: 8px 10px;
+}
+
+.error_messages ul {
+ margin: 0;
+}
+
+.field_with_errors {
+ display: inline;
+}
+
+form .field, form .actions {
+ margin: 10px 0;
+}
+
+form label {
+ display: block;
+}
diff --git a/lib/generators/nifty/layout/templates/stylesheet.sass b/lib/generators/nifty/layout/templates/stylesheet.sass
new file mode 100644
index 0000000..383bfd3
--- /dev/null
+++ b/lib/generators/nifty/layout/templates/stylesheet.sass
@@ -0,0 +1,73 @@
+$primary_color: #4b7399
+
+body
+ background-color: $primary_color
+ font:
+ family: Verdana, Helvetica, Arial
+ size: 14px
+
+a
+ color: blue
+ img
+ border: none
+
+.clear
+ clear: both
+ height: 0
+ overflow: hidden
+
+#container
+ width: 75%
+ margin: 0 auto
+ background: white
+ padding: 20px 40px
+ border: solid 1px black
+ margin-top: 20px
+
+#flash_notice,
+#flash_error,
+#flash_alert
+ padding: 5px 8px
+ margin: 10px 0
+
+#flash_notice
+ background-color: #ccffcc
+ border: solid 1px #66cc66
+
+#flash_error,
+#flash_alert
+ background-color: #ffcccc
+ border: solid 1px #cc6666
+
+.error_messages
+ width: 400px
+ border: 2px solid #cf0000
+ padding: 0
+ padding-bottom: 12px
+ margin-bottom: 20px
+ background-color: #f0f0f0
+ font:
+ size: 12px
+ h2
+ text-align: left
+ padding: 5px 5px 5px 15px
+ margin: 0
+ font:
+ weight: bold
+ size: 12px
+ background-color: #cc0000
+ color: white
+ p
+ margin: 8px 10px
+ ul
+ margin: 0
+
+.field_with_errors
+ display: inline
+
+form .field,
+form .actions
+ margin: 10px 0
+
+form label
+ display: block
diff --git a/lib/generators/nifty/scaffold/USAGE b/lib/generators/nifty/scaffold/USAGE
new file mode 100644
index 0000000..363fd26
--- /dev/null
+++ b/lib/generators/nifty/scaffold/USAGE
@@ -0,0 +1,51 @@
+Description:
+ Scaffolds an entire resource, from model and migration to controller and
+ views. The resource is ready to use as a starting point for your restful,
+ resource-oriented application. Tests or specs are also generated depending
+ on if you have a "spec" directory or not.
+
+ IMPORTANT: This generator uses the "title" helper method which is generated
+ by the nifty_layout generator. You may want to run that generator first.
+
+Usage:
+ Pass the name of the model, either CamelCased or under_scored, as the first
+ argument along with an optional list of attribute pairs and controller actions.
+
+ If no controller actions are specified, they will default to index, show,
+ new, create, edit, update, and destroy.
+
+ IMPORTANT: If no attribute pairs are specified, no model will be generated.
+ It will try to determine the attributes from an existing model.
+
+ Attribute pairs are column_name:sql_type arguments specifying the
+ model's attributes. Timestamps are added by default, so you don't have to
+ specify them by hand as 'created_at:datetime updated_at:datetime'.
+
+ For example, `nifty:scaffold post name:string content:text hidden:boolean`
+ gives you a model with those three attributes, a controller that handles
+ the create/show/update/destroy, forms to create and edit your posts, and
+ an index that lists them all, as well as a map.resources :posts
+ declaration in config/routes.rb.
+
+ Adding an "!" in the mix of arguments will invert the passed controller
+ actions. This will include all 7 controller actitons except the ones
+ mentioned. This option doesn't affect model attributes.
+
+Examples:
+ rails generate nifty:scaffold post
+
+ Will create a controller called "posts" it will contain all seven
+ CRUD actions along with the views. A model will NOT be created,
+ instead it will look for an existing model and use those attributes.
+
+ rails generate nifty:scaffold post name:string content:text index new edit
+
+ Will create a Post model and migration file with the name and content
+ attributes. It will also create a controller with index, new, create,
+ edit, and update actions. Notice the create and update actions are
+ added automatically with new and edit.
+
+ rails generate nifty:scaffold post ! show new
+
+ Creates a posts controller (no model) with index, edit, update, and
+ destroy actions.
diff --git a/lib/generators/nifty/scaffold/scaffold_generator.rb b/lib/generators/nifty/scaffold/scaffold_generator.rb
new file mode 100644
index 0000000..1283e17
--- /dev/null
+++ b/lib/generators/nifty/scaffold/scaffold_generator.rb
@@ -0,0 +1,344 @@
+require 'generators/nifty'
+require 'rails/generators/migration'
+require 'rails/generators/generated_attribute'
+
+module Nifty
+ module Generators
+ class ScaffoldGenerator < Base
+ include Rails::Generators::Migration
+ no_tasks { attr_accessor :scaffold_name, :model_attributes, :controller_actions }
+
+ argument :scaffold_name, :type => :string, :required => true, :banner => 'ModelName'
+ argument :args_for_c_m, :type => :array, :default => [], :banner => 'controller_actions and model:attributes'
+
+ class_option :skip_model, :desc => 'Don\'t generate a model or migration file.', :type => :boolean
+ class_option :skip_migration, :desc => 'Don\'t generate migration file for model.', :type => :boolean
+ class_option :skip_timestamps, :desc => 'Don\'t add timestamps to migration file.', :type => :boolean
+ class_option :skip_controller, :desc => 'Don\'t generate controller, helper, or views.', :type => :boolean
+ class_option :invert, :desc => 'Generate all controller actions except these mentioned.', :type => :boolean
+ class_option :namespace_model, :desc => 'If the resource is namespaced, include the model in the namespace.', :type => :boolean
+ class_option :haml, :desc => 'Generate HAML views instead of ERB.', :type => :boolean, :default => true
+
+ class_option :testunit, :desc => 'Use test/unit for test files.', :group => 'Test framework', :type => :boolean
+ class_option :rspec, :desc => 'Use RSpec for test files.', :group => 'Test framework', :type => :boolean
+ class_option :shoulda, :desc => 'Use shoulda for test files.', :group => 'Test framework', :type => :boolean
+
+ def initialize(*args, &block)
+ super
+
+ print_usage unless scaffold_name.underscore =~ /^[a-z][a-z0-9_\/]+$/
+
+ @controller_actions = []
+ @model_attributes = []
+ @skip_model = options.skip_model?
+ @namespace_model = options.namespace_model?
+ @invert_actions = options.invert?
+
+ args_for_c_m.each do |arg|
+ if arg == '!'
+ @invert_actions = true
+ elsif arg.include?(':')
+ @model_attributes << Rails::Generators::GeneratedAttribute.new(*arg.split(':'))
+ else
+ @controller_actions << arg
+ @controller_actions << 'create' if arg == 'new'
+ @controller_actions << 'update' if arg == 'edit'
+ end
+ end
+
+ @controller_actions.uniq!
+ @model_attributes.uniq!
+
+ if @invert_actions || @controller_actions.empty?
+ @controller_actions = all_actions - @controller_actions
+ end
+
+ if @model_attributes.empty?
+ @skip_model = true # skip model if no attributes
+ if model_exists?
+ model_columns_for_attributes.each do |column|
+ @model_attributes << Rails::Generators::GeneratedAttribute.new(column.name.to_s, column.type.to_s)
+ end
+ else
+ @model_attributes << Rails::Generators::GeneratedAttribute.new('name', 'string')
+ end
+ end
+ end
+
+ def add_gems
+ # add_gem "mocha", :group => :test
+ add_gem 'haml'
+ add_gem 'simple_form'
+ add_gem 'cancan'
+ end
+
+ def create_model
+ unless @skip_model
+ template 'model.rb', "app/models/#{model_path}.rb"
+ if test_framework == :rspec
+ template "tests/rspec/model.rb", "spec/models/#{model_path}_spec.rb"
+ # FUCK YOU FIXTURES, WE USE FACTORY GIRL.
+ # template 'fixtures.yml', "spec/fixtures/#{model_path.pluralize}.yml"
+ else
+ template "tests/#{test_framework}/model.rb", "test/unit/#{model_path}_test.rb"
+ template 'fixtures.yml', "test/fixtures/#{model_path.pluralize}.yml"
+ end
+ end
+ end
+
+ def create_migration
+ unless @skip_model || options.skip_migration?
+ migration_template 'migration.rb', "db/migrate/create_#{model_path.pluralize.gsub('/', '_')}.rb"
+ end
+ end
+
+ def create_controller
+ unless options.skip_controller?
+ template 'controller.rb', "app/controllers/#{plural_name}_controller.rb"
+
+ template 'helper.rb', "app/helpers/#{plural_name}_helper.rb"
+
+ controller_actions.each do |action|
+ if %w[index show new edit].include?(action) # Actions with templates
+ template "views/#{view_language}/#{action}.html.#{view_language}", "app/views/#{plural_name}/#{action}.html.#{view_language}"
+ end
+ end
+
+ # Move the index_core (can't do it on the top.)
+ template "views/#{view_language}/_index_core.html.#{view_language}", "app/views/#{plural_name}/_index_core.html.#{view_language}"
+
+
+ if form_partial?
+ template "views/#{view_language}/_form.html.#{view_language}", "app/views/#{plural_name}/_form.html.#{view_language}"
+ template "views/#{view_language}/_form_core.html.#{view_language}", "app/views/#{plural_name}/_form_core.html.#{view_language}"
+ end
+
+ namespaces = plural_name.split('/')
+ resource = namespaces.pop
+ route namespaces.reverse.inject("resources :#{resource}") { |acc, namespace|
+ "namespace(:#{namespace}){ #{acc} }"
+ }
+
+ if test_framework == :rspec
+ template "tests/#{test_framework}/controller.rb", "spec/controllers/#{plural_name}_controller_spec.rb"
+ else
+ template "tests/#{test_framework}/controller.rb", "test/functional/#{plural_name}_controller_test.rb"
+ end
+ end
+ end
+
+ def create_locales
+ template 'locale.yml', "config/locales/views/#{plural_name}/en.yml"
+ template 'locale_de.yml', "config/locales/views/#{plural_name}/de.yml"
+ # template 'locale.yml', "config/locales/views/#{plural_name}/es.yml"
+ # gsub_file("config/locales/views/#{plural_name}/es.yml", 'en:', 'es:')
+ # gsub_file("config/locales/views/#{plural_name}/de.yml", 'en:', 'de:')
+ end
+
+ def configuration
+ gsub_file('config/application.rb', "# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]",
+ "config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*', '*', '*.{rb,yml}').to_s]")
+ end
+
+ private
+
+ def form_partial?
+ actions? :new, :edit
+ end
+
+ def all_actions
+ %w[index show new create edit update destroy]
+ end
+
+ def action?(name)
+ controller_actions.include? name.to_s
+ end
+
+ def actions?(*names)
+ names.all? { |name| action? name }
+ end
+
+ def singular_name
+ scaffold_name.underscore
+ end
+
+ def plural_name
+ scaffold_name.underscore.pluralize
+ end
+
+ def human_name
+ scaffold_name.humanize
+ end
+
+ def table_name
+ if scaffold_name.include?('::') && @namespace_model
+ plural_name.gsub('/', '_')
+ end
+ end
+
+ def class_name
+ if @namespace_model
+ scaffold_name.camelize
+ else
+ scaffold_name.split('::').last.camelize
+ end
+ end
+
+ def model_path
+ class_name.underscore
+ end
+
+ def plural_class_name
+ plural_name.camelize
+ end
+
+ def instance_name
+ if @namespace_model
+ singular_name.gsub('/','_')
+ else
+ singular_name.split('/').last
+ end
+ end
+
+ def instances_name
+ instance_name.pluralize
+ end
+
+ def controller_methods(dir_name)
+ controller_actions.map do |action|
+ read_template("#{dir_name}/#{action}.rb")
+ end.join("\n").strip
+ end
+
+ def render_form
+ if form_partial?
+ if options.haml?
+ "= render \"form\""
+ else
+ "<%= render \"form\" %>"
+ end
+ else
+ read_template("views/#{view_language}/_form.html.#{view_language}")
+ end
+ end
+
+ def item_resource
+ scaffold_name.underscore.gsub('/','_')
+ end
+
+ def items_path
+ if action? :index
+ "#{item_resource.pluralize}_path"
+ else
+ "root_path"
+ end
+ end
+
+ def item_path(options = {})
+ name = options[:instance_variable] ? "@#{instance_name}" : instance_name
+ suffix = options[:full_url] ? "url" : "path"
+ if options[:action].to_s == "new"
+ "new_#{item_resource}_#{suffix}"
+ elsif options[:action].to_s == "edit"
+ "edit_#{item_resource}_#{suffix}(#{name})"
+ else
+ if scaffold_name.include?('::') && !@namespace_model
+ namespace = singular_name.split('/')[0..-2]
+ "[:#{namespace.join(', :')}, #{name}]"
+ else
+ name
+ end
+ end
+ end
+
+ def item_url
+ if action? :show
+ item_path(:full_url => true, :instance_variable => true)
+ else
+ items_url
+ end
+ end
+
+ def items_url
+ if action? :index
+ item_resource.pluralize + '_url'
+ else
+ "root_url"
+ end
+ end
+
+ def item_path_for_spec(suffix = 'path')
+ if action? :show
+ "#{item_resource}_#{suffix}(assigns[:#{instance_name}])"
+ else
+ if suffix == 'path'
+ items_path
+ else
+ items_url
+ end
+ end
+ end
+
+ def item_path_for_test(suffix = 'path')
+ if action? :show
+ "#{item_resource}_#{suffix}(assigns(:#{instance_name}))"
+ else
+ if suffix == 'path'
+ items_path
+ else
+ items_url
+ end
+ end
+ end
+
+ def model_columns_for_attributes
+ class_name.constantize.columns.reject do |column|
+ column.name.to_s =~ /^(id|created_at|updated_at)$/
+ end
+ end
+
+ def view_language
+ options.haml? ? 'haml' : 'erb'
+ end
+
+ def test_framework
+ return @test_framework if defined?(@test_framework)
+ if options.testunit?
+ return @test_framework = :testunit
+ elsif options.rspec?
+ return @test_framework = :rspec
+ elsif options.shoulda?
+ return @test_framework = :shoulda
+ else
+ return @test_framework = default_test_framework
+ end
+ end
+
+ def default_test_framework
+ File.exist?(destination_path("spec")) ? :rspec : :testunit
+ end
+
+ def model_exists?
+ File.exist? destination_path("app/models/#{singular_name}.rb")
+ end
+
+ def read_template(relative_path)
+ ERB.new(File.read(find_in_source_paths(relative_path)), nil, '-').result(binding)
+ end
+
+ def destination_path(path)
+ File.join(destination_root, path)
+ end
+
+ # FIXME: Should be proxied to ActiveRecord::Generators::Base
+ # Implement the required interface for Rails::Generators::Migration.
+ def self.next_migration_number(dirname) #:nodoc:
+ if ActiveRecord::Base.timestamped_migrations
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
+ else
+ "%.3d" % (current_migration_number(dirname) + 1)
+ end
+ end
+ end
+ end
+end
diff --git a/lib/generators/nifty/scaffold/templates/actions/create.rb b/lib/generators/nifty/scaffold/templates/actions/create.rb
new file mode 100644
index 0000000..8365f0b
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/actions/create.rb
@@ -0,0 +1,8 @@
+ def create
+ @<%= instance_name %> = <%= class_name %>.new(params[:<%= instance_name %>])
+ if @<%= instance_name %>.save
+ redirect_to <%= item_url %>, :notice => t('<%= plural_name %>.controller.successfuly_created')
+ else
+ render :new
+ end
+ end
diff --git a/lib/generators/nifty/scaffold/templates/actions/destroy.rb b/lib/generators/nifty/scaffold/templates/actions/destroy.rb
new file mode 100644
index 0000000..8a236e0
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/actions/destroy.rb
@@ -0,0 +1,5 @@
+ def destroy
+ @<%= instance_name %> = <%= class_name %>.find(params[:id])
+ @<%= instance_name %>.destroy
+ redirect_to <%= items_url %>, :notice => t('<%= plural_name %>.controller.successfuly_destroyed')
+ end
diff --git a/lib/generators/nifty/scaffold/templates/actions/edit.rb b/lib/generators/nifty/scaffold/templates/actions/edit.rb
new file mode 100644
index 0000000..907e928
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/actions/edit.rb
@@ -0,0 +1,3 @@
+ def edit
+ @<%= instance_name %> = <%= class_name %>.find(params[:id])
+ end
diff --git a/lib/generators/nifty/scaffold/templates/actions/index.rb b/lib/generators/nifty/scaffold/templates/actions/index.rb
new file mode 100644
index 0000000..0a8420c
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/actions/index.rb
@@ -0,0 +1,3 @@
+ def index
+ @<%= instances_name %> = <%= class_name %>.all
+ end
diff --git a/lib/generators/nifty/scaffold/templates/actions/new.rb b/lib/generators/nifty/scaffold/templates/actions/new.rb
new file mode 100644
index 0000000..c0991bc
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/actions/new.rb
@@ -0,0 +1,3 @@
+ def new
+ @<%= instance_name %> = <%= class_name %>.new
+ end
diff --git a/lib/generators/nifty/scaffold/templates/actions/show.rb b/lib/generators/nifty/scaffold/templates/actions/show.rb
new file mode 100644
index 0000000..27a0467
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/actions/show.rb
@@ -0,0 +1,3 @@
+ def show
+ @<%= instance_name %> = <%= class_name %>.find(params[:id])
+ end
diff --git a/lib/generators/nifty/scaffold/templates/actions/update.rb b/lib/generators/nifty/scaffold/templates/actions/update.rb
new file mode 100644
index 0000000..a1473a6
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/actions/update.rb
@@ -0,0 +1,8 @@
+ def update
+ @<%= instance_name %> = <%= class_name %>.find(params[:id])
+ if @<%= instance_name %>.update_attributes(params[:<%= instance_name %>])
+ redirect_to <%= item_url %>, :notice => t('<%= plural_name %>.controller.successfuly_updated')
+ else
+ render :edit
+ end
+ end
diff --git a/lib/generators/nifty/scaffold/templates/controller.rb b/lib/generators/nifty/scaffold/templates/controller.rb
new file mode 100644
index 0000000..a54de70
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/controller.rb
@@ -0,0 +1,3 @@
+class <%= plural_class_name %>Controller < ApplicationController
+ <%= controller_methods :actions %>
+end
diff --git a/lib/generators/nifty/scaffold/templates/fixtures.yml b/lib/generators/nifty/scaffold/templates/fixtures.yml
new file mode 100644
index 0000000..447eaf9
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/fixtures.yml
@@ -0,0 +1,9 @@
+one:
+<%- for attribute in model_attributes -%>
+ <%= attribute.name %>: <%= attribute.default %>
+<%- end -%>
+
+two:
+<%- for attribute in model_attributes -%>
+ <%= attribute.name %>: <%= attribute.default %>
+<%- end -%>
diff --git a/lib/generators/nifty/scaffold/templates/helper.rb b/lib/generators/nifty/scaffold/templates/helper.rb
new file mode 100644
index 0000000..084b485
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/helper.rb
@@ -0,0 +1,2 @@
+module <%= plural_class_name %>Helper
+end
diff --git a/lib/generators/nifty/scaffold/templates/locale.yml b/lib/generators/nifty/scaffold/templates/locale.yml
new file mode 100644
index 0000000..46e4ce3
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/locale.yml
@@ -0,0 +1,46 @@
+en:
+ <%= plural_name %>:
+ name: '<%= human_name %>'
+ controller:
+ successfuly_created: 'Successfully created <%= human_name %>.'
+ successfuly_updated: 'Successfully updated <%= human_name %>.'
+ successfuly_destroyed: 'Successfully destroyed <%= human_name %>.'
+ index:
+ page_title: 'Listing <%= human_name %>'
+ <%- for attribute in model_attributes -%>
+ <%= attribute.name %>: '<%= attribute.human_name %>'
+ <%- end -%>
+ actions:
+ confirm: 'Are you sure you want to delete this <%= human_name %>?'
+ destroy: 'Delete'
+ edit: 'Edit'
+ show: 'View'
+ create: 'New'
+ create_for: 'New <%= human_name %> for %{resource}'
+ show:
+ page_title: 'Show <%= human_name %>'
+ <%- for attribute in model_attributes -%>
+ <%= attribute.name %>: '<%= attribute.human_name %>'
+ <%- end -%>
+ actions:
+ confirm: 'Are you sure you want to delete this element?'
+ destroy: 'Delete'
+ edit: 'Edit'
+ view_all: 'View All'
+ new:
+ page_title: 'New <%= human_name %>'
+ actions:
+ back_to_list: 'Back to Index'
+ edit:
+ page_title: 'Editing <%= human_name %>'
+ actions:
+ back_to_list: 'Back to Index'
+ edit: 'Edit'
+ view_all: 'View All'
+ form:
+ <%- for attribute in model_attributes -%>
+ <%= attribute.name %>:
+ label: '<%= attribute.human_name %>'
+ hint: ''
+ <%- end -%>
+ button: 'Submit' \ No newline at end of file
diff --git a/lib/generators/nifty/scaffold/templates/locale_de.yml b/lib/generators/nifty/scaffold/templates/locale_de.yml
new file mode 100644
index 0000000..027d36d
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/locale_de.yml
@@ -0,0 +1,46 @@
+de:
+ <%= plural_name %>:
+ name: '<%= human_name %>'
+ controller:
+ successfuly_created: '<%= human_name %> wurde angelegt.'
+ successfuly_updated: '<%= human_name %> wurde aktualisiert.'
+ successfuly_destroyed: '<%= human_name %> wurde gelöscht.'
+ index:
+ page_title: 'Übersicht von <%= human_name %>'
+ <%- for attribute in model_attributes -%>
+ <%= attribute.name %>: '<%= attribute.human_name %>'
+ <%- end -%>
+ actions:
+ confirm: 'Sind Sie sicher, dass Sie folgendes löschen möchten: <%= human_name %>'
+ destroy: 'Löschen'
+ edit: 'Bearbeiten'
+ show: 'Anzeigen'
+ create: 'Neu anlegen'
+ create_for: '<%= human_name %> neu anlegen für %{resource}'
+ show:
+ page_title: '<%= human_name %> bearbeiten'
+ <%- for attribute in model_attributes -%>
+ <%= attribute.name %>: '<%= attribute.human_name %>'
+ <%- end -%>
+ actions:
+ confirm: 'Sind Sie sicher, dass die dieses Element löschen möchten?'
+ destroy: 'Löschen'
+ edit: 'Bearbeiten'
+ view_all: 'Alle anzeigen'
+ new:
+ page_title: '<%= human_name %> neu anlegen'
+ actions:
+ back_to_list: 'Zurück zur Übersicht'
+ edit:
+ page_title: '<%= human_name %> bearbeiten'
+ actions:
+ back_to_list: 'Zurück zur Übersicht'
+ edit: 'Bearbeiten'
+ view_all: 'Alle anzeigen'
+ form:
+ <%- for attribute in model_attributes -%>
+ <%= attribute.name %>:
+ label: '<%= attribute.human_name %>'
+ hint: ''
+ <%- end -%>
+ button: 'Absenden' \ No newline at end of file
diff --git a/lib/generators/nifty/scaffold/templates/migration.rb b/lib/generators/nifty/scaffold/templates/migration.rb
new file mode 100644
index 0000000..02fd6bd
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/migration.rb
@@ -0,0 +1,16 @@
+class Create<%= class_name.pluralize.delete('::') %> < ActiveRecord::Migration
+ def self.up
+ create_table :<%= table_name || plural_name.split('/').last %> do |t|
+ <%- for attribute in model_attributes -%>
+ t.<%= attribute.type %> :<%= attribute.name %>
+ <%- end -%>
+ <%- unless options[:skip_timestamps] -%>
+ t.timestamps
+ <%- end -%>
+ end
+ end
+
+ def self.down
+ drop_table :<%= table_name || plural_name.split('/').last %>
+ end
+end
diff --git a/lib/generators/nifty/scaffold/templates/model.rb b/lib/generators/nifty/scaffold/templates/model.rb
new file mode 100644
index 0000000..fe5f980
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/model.rb
@@ -0,0 +1,4 @@
+class <%= class_name %> < ActiveRecord::Base
+<%= " set_table_name :#{table_name}\n" if table_name -%>
+ attr_accessible <%= model_attributes.map { |a| ":#{a.name}" }.join(", ") %>
+end
diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb
new file mode 100644
index 0000000..ef5a906
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb
@@ -0,0 +1,11 @@
+ it "create action should render new template when model is invalid" do
+ <%= class_name %>.any_instance.stubs(:valid?).returns(false)
+ post :create
+ response.should render_template(:new)
+ end
+
+ it "create action should redirect when model is valid" do
+ <%= class_name %>.any_instance.stubs(:valid?).returns(true)
+ post :create
+ response.should redirect_to(<%= item_path_for_spec('url') %>)
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb
new file mode 100644
index 0000000..8372953
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb
@@ -0,0 +1,6 @@
+ it "destroy action should destroy model and redirect to index action" do
+ <%= instance_name %> = <%= class_name %>.first
+ delete :destroy, :id => <%= instance_name %>
+ response.should redirect_to(<%= items_url %>)
+ <%= class_name %>.exists?(<%= instance_name %>.id).should be_false
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb
new file mode 100644
index 0000000..e144904
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb
@@ -0,0 +1,4 @@
+ it "edit action should render edit template" do
+ get :edit, :id => <%= class_name %>.first
+ response.should render_template(:edit)
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb
new file mode 100644
index 0000000..a40ea16
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb
@@ -0,0 +1,4 @@
+ it "index action should render index template" do
+ get :index
+ response.should render_template(:index)
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb
new file mode 100644
index 0000000..22e1b40
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb
@@ -0,0 +1,4 @@
+ it "new action should render new template" do
+ get :new
+ response.should render_template(:new)
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb
new file mode 100644
index 0000000..eaa3d93
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb
@@ -0,0 +1,4 @@
+ it "show action should render show template" do
+ get :show, :id => <%= class_name %>.first
+ response.should render_template(:show)
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb
new file mode 100644
index 0000000..c919962
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb
@@ -0,0 +1,11 @@
+ it "update action should render edit template when model is invalid" do
+ <%= class_name %>.any_instance.stubs(:valid?).returns(false)
+ put :update, :id => <%= class_name %>.first
+ response.should render_template(:edit)
+ end
+
+ it "update action should redirect when model is valid" do
+ <%= class_name %>.any_instance.stubs(:valid?).returns(true)
+ put :update, :id => <%= class_name %>.first
+ response.should redirect_to(<%= item_path_for_spec('url') %>)
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb
new file mode 100644
index 0000000..5d97f63
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb
@@ -0,0 +1,8 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe <%= plural_class_name %>Controller do
+ fixtures :all
+ render_views
+
+ <%= controller_methods 'tests/rspec/actions' %>
+end
diff --git a/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb b/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb
new file mode 100644
index 0000000..25c3cc4
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb
@@ -0,0 +1,7 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+
+describe <%= class_name %> do
+ it "should be valid" do
+ <%= class_name %>.new.should be_valid
+ end
+end
diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb
new file mode 100644
index 0000000..f305367
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb
@@ -0,0 +1,13 @@
+ context "create action" do
+ should "render new template when model is invalid" do
+ <%= class_name %>.any_instance.stubs(:valid?).returns(false)
+ post :create
+ assert_template 'new'
+ end
+
+ should "redirect when model is valid" do
+ <%= class_name %>.any_instance.stubs(:valid?).returns(true)
+ post :create
+ assert_redirected_to <%= item_path_for_test('url') %>
+ end
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb
new file mode 100644
index 0000000..ea20133
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb
@@ -0,0 +1,8 @@
+ context "destroy action" do
+ should "destroy model and redirect to index action" do
+ <%= instance_name %> = <%= class_name %>.first
+ delete :destroy, :id => <%= instance_name %>
+ assert_redirected_to <%= items_url %>
+ assert !<%= class_name %>.exists?(<%= instance_name %>.id)
+ end
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb
new file mode 100644
index 0000000..47597d0
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb
@@ -0,0 +1,6 @@
+ context "edit action" do
+ should "render edit template" do
+ get :edit, :id => <%= class_name %>.first
+ assert_template 'edit'
+ end
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb
new file mode 100644
index 0000000..44b056b
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb
@@ -0,0 +1,6 @@
+ context "index action" do
+ should "render index template" do
+ get :index
+ assert_template 'index'
+ end
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb
new file mode 100644
index 0000000..5857a55
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb
@@ -0,0 +1,6 @@
+ context "new action" do
+ should "render new template" do
+ get :new
+ assert_template 'new'
+ end
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb
new file mode 100644
index 0000000..75b37f6
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb
@@ -0,0 +1,6 @@
+ context "show action" do
+ should "render show template" do
+ get :show, :id => <%= class_name %>.first
+ assert_template 'show'
+ end
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb
new file mode 100644
index 0000000..fc46f72
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb
@@ -0,0 +1,13 @@
+ context "update action" do
+ should "render edit template when model is invalid" do
+ <%= class_name %>.any_instance.stubs(:valid?).returns(false)
+ put :update, :id => <%= class_name %>.first
+ assert_template 'edit'
+ end
+
+ should "redirect when model is valid" do
+ <%= class_name %>.any_instance.stubs(:valid?).returns(true)
+ put :update, :id => <%= class_name %>.first
+ assert_redirected_to <%= item_path_for_test('url') %>
+ end
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb
new file mode 100644
index 0000000..e9f9764
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb
@@ -0,0 +1,5 @@
+require 'test_helper'
+
+class <%= plural_class_name %>ControllerTest < ActionController::TestCase
+ <%= controller_methods 'tests/shoulda/actions' %>
+end
diff --git a/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb b/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb
new file mode 100644
index 0000000..9065963
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class <%= class_name %>Test < ActiveSupport::TestCase
+ should "be valid" do
+ assert <%= class_name %>.new.valid?
+ end
+end
diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb
new file mode 100644
index 0000000..5a6d2ac
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb
@@ -0,0 +1,11 @@
+ def test_create_invalid
+ <%= class_name %>.any_instance.stubs(:valid?).returns(false)
+ post :create
+ assert_template 'new'
+ end
+
+ def test_create_valid
+ <%= class_name %>.any_instance.stubs(:valid?).returns(true)
+ post :create
+ assert_redirected_to <%= item_path_for_test('url') %>
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb
new file mode 100644
index 0000000..adedf91
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb
@@ -0,0 +1,6 @@
+ def test_destroy
+ <%= instance_name %> = <%= class_name %>.first
+ delete :destroy, :id => <%= instance_name %>
+ assert_redirected_to <%= items_url %>
+ assert !<%= class_name %>.exists?(<%= instance_name %>.id)
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb
new file mode 100644
index 0000000..55ed24a
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb
@@ -0,0 +1,4 @@
+ def test_edit
+ get :edit, :id => <%= class_name %>.first
+ assert_template 'edit'
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb
new file mode 100644
index 0000000..22d3bad
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb
@@ -0,0 +1,4 @@
+ def test_index
+ get :index
+ assert_template 'index'
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb
new file mode 100644
index 0000000..c551327
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb
@@ -0,0 +1,4 @@
+ def test_new
+ get :new
+ assert_template 'new'
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb
new file mode 100644
index 0000000..b74f371
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb
@@ -0,0 +1,4 @@
+ def test_show
+ get :show, :id => <%= class_name %>.first
+ assert_template 'show'
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb
new file mode 100644
index 0000000..b588bfc
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb
@@ -0,0 +1,11 @@
+ def test_update_invalid
+ <%= class_name %>.any_instance.stubs(:valid?).returns(false)
+ put :update, :id => <%= class_name %>.first
+ assert_template 'edit'
+ end
+
+ def test_update_valid
+ <%= class_name %>.any_instance.stubs(:valid?).returns(true)
+ put :update, :id => <%= class_name %>.first
+ assert_redirected_to <%= item_path_for_test('url') %>
+ end
diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb
new file mode 100644
index 0000000..8b99836
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb
@@ -0,0 +1,49 @@
+require 'test_helper'
+
+class <%= plural_class_name %>ControllerTest < ActionController::TestCase
+ setup do
+ <%= item_path :instance_variable => true %> = <%= plural_name %>(:one)
+ end
+
+ test "should get index" do
+ get :index
+ assert_response :success
+ assert_not_nil assigns(:<%= plural_name %>)
+ end
+
+ test "should get new" do
+ get :new
+ assert_response :success
+ end
+
+ test "should create <%= item_path %>" do
+ assert_difference('<%= class_name %>.count') do
+ post :create, <%= item_path %>: @<%= item_path %>.attributes
+ end
+
+ assert_redirected_to <%= item_path %>_path(assigns(:<%= item_path %>))
+ end
+
+ test "should show <%= item_path %>" do
+ get :show, id: @<%= item_path %>.to_param
+ assert_response :success
+ end
+
+ test "should get edit" do
+ get :edit, id: @<%= item_path %>.to_param
+ assert_response :success
+ end
+
+ test "should update <%= item_path %>" do
+ put :update, id: @<%= item_path %>.to_param, <%= item_path %>: @<%= item_path %>.attributes
+ assert_redirected_to <%= item_path %>_path(assigns(:<%= item_path %>))
+ end
+
+ test "should destroy <%= item_path %>" do
+ assert_difference('<%= class_name %>.count', -1) do
+ delete :destroy, id: @<%= item_path %>.to_param
+ end
+
+ assert_redirected_to <%= plural_name %>_path
+ end
+end
diff --git a/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb b/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb
new file mode 100644
index 0000000..09b835c
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class <%= class_name %>Test < ActiveSupport::TestCase
+ def test_should_be_valid
+ assert <%= class_name %>.new.valid?
+ end
+end
diff --git a/lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml
new file mode 100644
index 0000000..57cb828
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/views/haml/_form.html.haml
@@ -0,0 +1,7 @@
+= simple_form_for(<%= item_path :instance_variable => true %>) do |f|
+ = f.error_notification
+
+ = render "form_core", :f => f
+
+ .actions
+ = f.button :submit, conditional_t('<%= plural_name %>.form.submit') \ No newline at end of file
diff --git a/lib/generators/nifty/scaffold/templates/views/haml/_form_core.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/_form_core.html.haml
new file mode 100644
index 0000000..ca7f253
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/views/haml/_form_core.html.haml
@@ -0,0 +1,4 @@
+.inputs
+<%- model_attributes.each do |attribute| -%>
+ = f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %>, :label => t('<%= plural_name %>.form.<%= attribute.name %>.label'), :hint => conditional_hint('<%= plural_name %>.form.<%= attribute.name %>.hint')
+<%- end -%>
diff --git a/lib/generators/nifty/scaffold/templates/views/haml/_index_core.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/_index_core.html.haml
new file mode 100644
index 0000000..9cbea63
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/views/haml/_index_core.html.haml
@@ -0,0 +1,13 @@
+%table
+ %tr
+ <%- for attribute in model_attributes -%>
+ %th= t('<%= plural_name %>.index.<%= attribute.name %>')
+ <%- end -%>
+
+ - reset_cycle
+ - for <%= instance_name %> in <%= instances_name %>
+ %tr{:class => cycle('odd', 'even')}
+ <%- for attribute in model_attributes -%>
+ %td= <%= instance_name %>.<%= attribute.name %>
+ <%- end -%>
+ =render :partial => 'shared/index_view_edit_destroy_part', :locals => {:child => <%= instance_name %>} \ No newline at end of file
diff --git a/lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml
new file mode 100644
index 0000000..dc7de62
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/views/haml/edit.html.haml
@@ -0,0 +1,3 @@
+- title t("<%= plural_name %>.edit.page_title")
+
+<%= render_form %> \ No newline at end of file
diff --git a/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml
new file mode 100644
index 0000000..86c6b9e
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml
@@ -0,0 +1,6 @@
+- title t("<%= plural_name %>.index.page_title")
+
+- if @<%= instances_name %> && @<%= instances_name %>.count > 0
+ = render "index_core", :<%= instances_name %> => @<%= instances_name %>
+
+= render :partial => 'shared/create_link', :locals => {:child_class => <%= instances_name.classify %>} \ No newline at end of file
diff --git a/lib/generators/nifty/scaffold/templates/views/haml/new.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/new.html.haml
new file mode 100644
index 0000000..4e7f871
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/views/haml/new.html.haml
@@ -0,0 +1,3 @@
+- title t("<%= plural_name %>.new.page_title")
+
+<%= render_form %> \ No newline at end of file
diff --git a/lib/generators/nifty/scaffold/templates/views/haml/show.html.haml b/lib/generators/nifty/scaffold/templates/views/haml/show.html.haml
new file mode 100644
index 0000000..3d01340
--- /dev/null
+++ b/lib/generators/nifty/scaffold/templates/views/haml/show.html.haml
@@ -0,0 +1,9 @@
+- title t("<%= plural_name %>.show.page_title")
+
+<%- for attribute in model_attributes -%>
+%p
+ %strong= t('<%= plural_name %>.show.<%= attribute.name %>') + ":"
+ = @<%= instance_name %>.<%= attribute.name %>
+<%- end -%>
+
+= render :partial => 'shared/show_edit_destroy_part', :locals => { :child => @<%= instance_name %> } \ No newline at end of file
diff --git a/lib/phone_controllers/snom_phone.rb b/lib/phone_controllers/snom_phone.rb
new file mode 100644
index 0000000..9c41e02
--- /dev/null
+++ b/lib/phone_controllers/snom_phone.rb
@@ -0,0 +1,23 @@
+class SnomPhone
+
+ attr_accessor :phone, :destination_number
+
+ def initialize( attributes = {} )
+ @phone = attributes[:phone]
+ @destination_number = attributes[:destination_number]
+ end
+
+ def initiate_call
+ # TODO Initiate a new call to the destination_number.
+ # Do what ever it takes.
+ 42
+ end
+
+ # persisted is important not to get "undefined method
+ # `to_key' for" error
+ # -- Huh? #TODO Add a better description.
+ def persisted?
+ false
+ end
+
+end
diff --git a/lib/tasks/.gitkeep b/lib/tasks/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/tasks/.gitkeep
diff --git a/lib/tasks/cvs_user_import.rake b/lib/tasks/cvs_user_import.rake
new file mode 100644
index 0000000..2475a43
--- /dev/null
+++ b/lib/tasks/cvs_user_import.rake
@@ -0,0 +1,331 @@
+namespace :user_import do
+ desc "Import users from a CSV file."
+ task :csv => :environment do
+ require 'csv'
+ require 'digest/md5'
+
+ # Example CSV format in the file:
+ # UserName,LastName,FirstName,AcademicTitel,PhoneOffice,VoipNr1,VoipNr2,VoipNr3,VoipTelco,CellPhone,HardFax,SoftFax,Email,PIN
+ # 123456,Mustermann,Max,Dr.,+49 123 1001234,20,21,22,23,+49 160 12345678,+49 123 1001238,29,max.mustermann@example.com,1324
+
+ # A generic hook to manipulate each given phone number with Ruby tools.
+ #
+ def regex_convert_phone_numbers(phone_number = nil)
+ if phone_number.class == String && !phone_number.blank?
+ # 123 Example
+ #
+ # if !phone_number.match(/^123(..)$/).nil?
+ # phone_number = phone_number.gsub(/^123(..)$/,'123'+$1)
+ # end
+ end
+
+ phone_number
+ end
+
+ # Read the CSV data and store them in the new_users hash.
+ #
+ csv_data = CSV.read(IMPORT_CSV_FILE, encoding: IMPORT_CSV_ENCODING)
+ headers = csv_data.shift.map {|i| i.to_s }
+ string_data = csv_data.map {|row| row.map {|cell| cell.to_s } }
+ new_users = string_data.map {|row| Hash[*headers.zip(row).flatten] }
+ gs_node_id = GsNode.where(:ip_address => HOMEBASE_IP_ADDRESS).first.try(:id)
+
+ if File.exists?(DOUBLE_CHECK_POSITIVE_USERS_CSV)
+ csv_data = CSV.read(DOUBLE_CHECK_POSITIVE_USERS_CSV, encoding: IMPORT_CSV_ENCODING)
+ if csv_data.blank?
+ double_checked_user_names = []
+ else
+ headers = csv_data.shift.map {|i| i.to_s }
+ string_data = csv_data.map {|row| row.map {|cell| cell.to_s } }
+ double_check_positiv_users = string_data.map {|row| Hash[*headers.zip(row).flatten] }
+
+ double_checked_user_names = double_check_positiv_users.map{|user| user['UserName']}
+ end
+ else
+ double_checked_user_names = new_users.map{|user| user['UserName']}
+ end
+
+ tenant = Tenant.find(DEFAULT_API_TENANT_ID)
+
+ # Destroy deleted user by making a diff of where(:importer_checksum)
+ # and users in the CSV file.
+ #
+ if defined?(USER_NAME_PREFIX) && !USER_NAME_PREFIX.blank?
+ new_users_user_names = new_users.map{|x| USER_NAME_PREFIX.to_s + x['UserName'].to_s}
+ else
+ new_users_user_names = new_users.map{|x| x['UserName']}
+ end
+ csv_imported_user_names_in_the_database = User.where('importer_checksum != ?', '').pluck(:user_name)
+
+
+ to_be_destroyed_user_names = csv_imported_user_names_in_the_database - new_users_user_names
+
+ User.where(:user_name => to_be_destroyed_user_names, :gs_node_id => gs_node_id).destroy_all
+
+ # Loop through all entries in the CSV file.
+ #
+ new_users.each do |csv_user|
+ if !(csv_user['UserName'].blank? || csv_user['Email'].blank?) && double_checked_user_names.include?(csv_user['UserName'])
+ csv_user['Email'] = csv_user['Email'].downcase
+ if defined?(USER_NAME_PREFIX) && !USER_NAME_PREFIX.blank?
+ csv_user['UserName'] = USER_NAME_PREFIX.to_s + csv_user['UserName']
+ end
+
+ md5_sum = Digest::MD5.hexdigest(csv_user.to_yaml)
+ user = nil
+
+ # Check if this user already exists and has a changed checksum.
+ #
+ if tenant.users.where(:user_name => csv_user['UserName']).first.try(:importer_checksum).to_s != md5_sum.to_s
+ # Find or create the user
+ #
+ if tenant.users.where(:user_name => csv_user['UserName']).count > 0
+ user = tenant.users.where(:user_name => csv_user['UserName']).first
+ if defined? IMPORT_IGNORE_PIN_ON_UPDATE && IMPORT_IGNORE_PIN_ON_UPDATE == true
+ user.update_attributes(
+ :last_name => csv_user['LastName'],
+ :first_name => csv_user['FirstName'],
+ :email => csv_user['Email'],
+ :importer_checksum => md5_sum,
+ :gs_node_id => gs_node_id,
+ )
+ else
+ user.update_attributes(
+ :last_name => csv_user['LastName'],
+ :first_name => csv_user['FirstName'],
+ :email => csv_user['Email'],
+ :new_pin => csv_user['PIN'],
+ :new_pin_confirmation => csv_user['PIN'],
+ :password => csv_user['PIN'],
+ :password_confirmation => csv_user['PIN'],
+ :importer_checksum => md5_sum,
+ :gs_node_id => gs_node_id,
+ )
+ end
+ else
+ if csv_user['PIN'].blank?
+ csv_user['PIN'] = (1..6).map{|i| (0 .. 9).to_a.sample}.join
+ end
+ user = tenant.users.create(
+ :user_name => csv_user['UserName'],
+ :last_name => csv_user['LastName'],
+ :first_name => csv_user['FirstName'],
+ :email => csv_user['Email'],
+ :new_pin => csv_user['PIN'],
+ :new_pin_confirmation => csv_user['PIN'],
+ :password => csv_user['PIN'],
+ :password_confirmation => csv_user['PIN'],
+ :language_id => tenant.language_id,
+ :importer_checksum => md5_sum,
+ :gs_node_id => gs_node_id,
+ :send_voicemail_as_email_attachment => true,
+ )
+ end
+
+ # Create group membership
+ if tenant.user_groups.exists?(:name => 'Users')
+ tenant.user_groups.where(:name => 'Users').first.user_group_memberships.create(:user => user)
+ end
+ end
+
+ if user
+ # Find or create a sip_accounts
+ ['VoipNr1', 'VoipNr2', 'VoipNr3'].each_with_index do |phone_number_type, index|
+
+ if index > 0
+ auth_name = "#{csv_user['UserName']}_#{index}"
+ else
+ auth_name = csv_user['UserName'].to_s
+ end
+
+ if !phone_number_type.blank? && !csv_user[phone_number_type].blank?
+ sip_account = user.sip_accounts.where(:auth_name => auth_name).first
+ if sip_account
+ if sip_account.caller_name.to_s != user.to_s
+ sip_account.update_attributes(:caller_name => user.to_s)
+ end
+ else
+ sip_account = user.sip_accounts.create(
+ :caller_name => user.to_s,
+ :voicemail_pin => csv_user['PIN'],
+ :auth_name => auth_name,
+ :password => csv_user['PIN'],
+ :clip => true,
+ :hotdeskable => true,
+ :callforward_rules_act_per_sip_account => true,
+ :gs_node_id => gs_node_id,
+ )
+ end
+
+ phone_numbers = Array.new()
+ phone_numbers.push(csv_user[phone_number_type].to_s.gsub(/[^0-9\+]/, ''))
+
+ # Find or create phone numbers
+ converted_phone_number = regex_convert_phone_numbers(csv_user[phone_number_type])
+ if converted_phone_number != csv_user[phone_number_type]
+ phone_numbers.push(converted_phone_number.gsub(/[^0-9\+]/, ''))
+ end
+ phone_numbers_count = sip_account.phone_numbers.count
+ phone_numbers.each do |phone_number_number|
+ phone_number = sip_account.phone_numbers.where(:number => phone_number_number).first
+ if !phone_number
+ phone_number = sip_account.phone_numbers.create(:number => phone_number_number, :gs_node_id => gs_node_id)
+ end
+ end
+
+ # Create default call forwarding entries
+ if phone_numbers_count < sip_account.phone_numbers.count
+ call_forward_case_offline = CallForwardCase.find_by_value('offline')
+ if call_forward_case_offline
+ sip_account.phone_numbers.first.call_forwards.create(:call_forward_case_id => call_forward_case_offline.id, :call_forwardable_type => 'Voicemail', :active => true, :depth => DEFAULT_CALL_FORWARD_DEPTH)
+ end
+ end
+ else
+ user.sip_accounts.where(:auth_name => auth_name).destroy_all
+ end
+ end
+
+ if !csv_user['SoftFax'].blank?
+ phone_numbers = Array.new()
+ phone_numbers.push(csv_user['SoftFax'].to_s.gsub(/[^0-9\+]/, ''))
+ converted_phone_number = regex_convert_phone_numbers(csv_user['SoftFax'])
+ if converted_phone_number != csv_user['SoftFax']
+ phone_numbers.push(converted_phone_number.gsub(/[^0-9\+]/, ''))
+ end
+
+ fax_account = user.fax_accounts.first
+ if fax_account
+ if fax_account.name != user.to_s || fax_account.email != user.email
+ fax_account.update_attributes(:name => user.to_s, :email => user.email)
+ end
+ else
+ fax_account = user.fax_accounts.create(
+ :name => user.to_s,
+ :station_id => converted_phone_number.gsub(/[^0-9\+]/,''),
+ :email => user.email,
+ :days_till_auto_delete => 90,
+ :retries => 3,
+ )
+ end
+
+ if fax_account
+ fax_account.phone_numbers.each do |phone_number|
+ if !phone_numbers.include?(phone_number.number)
+ phone_number.delete
+ end
+ end
+ phone_numbers.each do |phone_number_number|
+ phone_number = fax_account.phone_numbers.where(:number => phone_number_number).first
+ if !phone_number
+ phone_number = fax_account.phone_numbers.create(:number => phone_number_number)
+ end
+ end
+ end
+ else
+ user.fax_accounts.destroy_all
+ end
+
+ if !csv_user['HardFax'].blank?
+ phone_numbers = Array.new()
+ phone_numbers.push(csv_user['HardFax'].to_s.gsub(/[^0-9\+]/, ''))
+ converted_phone_number = regex_convert_phone_numbers(csv_user['HardFax'])
+ if converted_phone_number != csv_user['HardFax']
+ phone_numbers.push(converted_phone_number.gsub(/[^0-9\+]/, ''))
+ end
+
+ # Create a sip_account for a hardware fax.
+ #
+ fax_sip_account = user.sip_accounts.where(:description => 'Hardware-Fax').first
+ if fax_sip_account
+ if fax_sip_account.caller_name != "Hardware Fax of #{user.to_s}"
+ fax_sip_account.update_attributes(:caller_name => "Hardware Fax of #{user.to_s}")
+ end
+ else
+ fax_sip_account = user.sip_accounts.create(
+ :caller_name => "Hardware Fax of #{user.to_s}",
+ :description => 'Hardware-Fax',
+ :auth_name => 'HARDFAX' + csv_user['UserName'],
+ :password => csv_user['PIN'],
+ :clip => true,
+ :hotdeskable => false,
+ :callforward_rules_act_per_sip_account => true,
+ :gs_node_id => gs_node_id,
+ )
+ end
+
+ if fax_sip_account
+ fax_sip_account.phone_numbers.each do |phone_number|
+ if !phone_numbers.include?(phone_number.number)
+ phone_number.delete
+ end
+ end
+ phone_numbers.each do |phone_number_number|
+ phone_number = fax_sip_account.phone_numbers.where(:number => phone_number_number).first
+ if !phone_number
+ phone_number = fax_sip_account.phone_numbers.create(:number => phone_number_number)
+ end
+ end
+ end
+ else
+ user.sip_accounts.where(:description => 'Hardware-Fax').destroy_all
+ end
+
+ if !csv_user['VoipTelco'].blank?
+ conference = user.conferences.first
+ if conference.nil?
+ # Create a conference room for this user.
+ #
+ conference = user.conferences.build
+ conference.name = "Default Conference for #{user.to_s}"
+ conference.start = nil
+ conference.end = nil
+ conference.open_for_anybody = true
+ conference.max_members = DEFAULT_MAX_CONFERENCE_MEMBERS
+ conference.pin = (1..MINIMUM_PIN_LENGTH).map{|i| (0 .. 9).to_a.sample}.join
+ conference.save
+ end
+
+ phone_numbers = Array.new()
+ phone_numbers.push(csv_user['VoipTelco'].to_s.gsub(/[^0-9\+]/, ''))
+ converted_phone_number = regex_convert_phone_numbers(csv_user['VoipTelco'])
+ if converted_phone_number != csv_user['VoipTelco']
+ phone_numbers.push(converted_phone_number.gsub(/[^0-9\+]/, ''))
+ end
+
+ if conference
+ conference.phone_numbers.each do |phone_number|
+ if !phone_numbers.include?(phone_number.number)
+ phone_number.delete
+ end
+ end
+ phone_numbers.each do |phone_number_number|
+ phone_number = conference.phone_numbers.where(:number => phone_number_number).first
+ if !phone_number
+ phone_number = conference.phone_numbers.create(:number => phone_number_number)
+ end
+ end
+ end
+ else
+ user.conferences.destroy_all
+ end
+
+ # Create Whitelist Entry for default Callthrough
+ #
+ cell_phone_number = csv_user['CellPhone'].to_s.gsub(/[^0-9\+]/, '')
+
+ if !cell_phone_number.blank?
+ callthrough = tenant.callthroughs.find_or_create_by_name(CALLTHROUGH_NAME_TO_BE_USED_FOR_DEFAULT_ACTIVATION)
+
+ access_authorization = callthrough.access_authorizations.find_or_create_by_name('Cellphones')
+
+ new_phone_number = access_authorization.phone_numbers.find_or_create_by_number(cell_phone_number, :name => user.to_s, :access_authorization_user_id => user.id)
+ end
+ end
+ else
+ # puts "#{csv_user['UserName']} (#{csv_user['Email']}) has not changed."
+ end
+ end
+
+
+ end
+end \ No newline at end of file
diff --git a/lib/tasks/fax.rake b/lib/tasks/fax.rake
new file mode 100644
index 0000000..1f1c282
--- /dev/null
+++ b/lib/tasks/fax.rake
@@ -0,0 +1,74 @@
+# encoding: UTF-8
+
+desc "Import inbound fax"
+
+task :import_inbound_fax, [
+ :fax_account_id,
+ :result_code,
+ :document_total_pages,
+ :document_transferred_pages,
+ :ecm_requested,
+ :ecm_used,
+ :image_resolution,
+ :remote_station_id,
+ :transfer_rate,
+ :transmission_time,
+ :document,
+ :caller_id_number,
+ :caller_id_name,
+ ] => :environment do |t, a|
+
+ TIFF_FUFFIX = ".tiff"
+ PDF_SUFFIX = ".pdf"
+
+ fax_arguments = a.to_hash
+
+ tiff_file = fax_arguments[:document]
+
+ if !tiff_file or !File.exists?( tiff_file )
+ $stderr.puts "File \"#{tiff_file}\" does not exist"
+ exit 1
+ end
+
+ paper_size = "letter"
+ pdf_file = "#{File.dirname(tiff_file)}/#{File.basename(tiff_file, TIFF_FUFFIX)}#{PDF_SUFFIX}"
+
+ system "tiff2pdf \\
+ -o \"#{pdf_file}\" \\
+ -p #{paper_size} \\
+ -a \"#{fax_arguments[:remote_station_id]}\" \\
+ -c \"AMOOMA Gemeinschaft version #{GEMEINSCHAFT_VERSION}\" \\
+ -t \"#{fax_arguments[:remote_station_id]}\" \"#{tiff_file}\""
+
+ if !File.exists?( pdf_file )
+ $stderr.puts "File \"#{pdf_file}\" does not exist"
+ exit 1
+ end
+
+ fax_account = FaxAccount.find(fax_arguments[:fax_account_id])
+ if !fax_account
+ $stderr.puts "Fax account \"#{fax_arguments[:fax_account_id]}\" does not exist"
+ exit 1
+ end
+
+ fax_arguments[:document] = nil
+ fax_arguments[:success] = true
+ fax_arguments[:inbound] = true
+ fax_arguments[:sent_at] = Time.now
+ fax_arguments[:local_station_id] = fax_account.station_id
+ fax_arguments[:retry_counter] = 0
+ fax_arguments[:fax_resolution_id] = FaxResolution.first.id
+ fax_arguments[:image_size] = File.size(tiff_file)
+ fax_arguments[:ecm_used] = fax_arguments[:ecm_used] == "on" ? true : false
+ fax_document = fax_account.fax_documents.build(fax_arguments)
+ fax_document.document = File.open(pdf_file)
+
+ if fax_document.save
+ fax_document.mark_as_inbound!
+ exit 0
+ else
+ $stderr.puts "Error(s) creating fax document:"
+ $stderr.puts fax_document.errors.inspect
+ exit 1
+ end
+end
diff --git a/lib/tasks/gs_cluster.rake b/lib/tasks/gs_cluster.rake
new file mode 100644
index 0000000..565fd83
--- /dev/null
+++ b/lib/tasks/gs_cluster.rake
@@ -0,0 +1,333 @@
+namespace :gs_cluster do
+ desc "Sync local data to other gs cluster nodes."
+ task :push_waiting_data_to_other_nodes => :environment do
+ infinity_loop_protection_counter = GsClusterSyncLogEntry.where(:homebase_ip_address => HOMEBASE_IP_ADDRESS,
+ :waiting_to_be_synced => true).count + 10
+
+ # One bite at a time.
+ #
+ while GsClusterSyncLogEntry.where(:homebase_ip_address => HOMEBASE_IP_ADDRESS,
+ :waiting_to_be_synced => true).any? &&
+ infinity_loop_protection_counter > 0
+ GsClusterSyncLogEntry.where(:homebase_ip_address => HOMEBASE_IP_ADDRESS,
+ :waiting_to_be_synced => true).first.populate_other_cluster_nodes
+ infinity_loop_protection_counter -= 1
+ end
+
+ end
+
+ desc "Reset gs_cluster_sync_log."
+ task :reset_sync_log => :environment do
+ GsClusterSyncLogEntry.destroy_all
+
+ User.where('is_native IS NOT FALSE').each do |user|
+ puts("Processing User=#{user.id}/#{user.uuid} - #{user.user_name}")
+ user.create_on_other_gs_nodes
+ end
+
+ SipAccount.where('is_native IS NOT FALSE').each do |sip_account|
+ puts("Processing SipAccount=#{sip_account.id}/#{sip_account.uuid} - #{sip_account.auth_name}");
+ sip_account.create_on_other_gs_nodes
+ end
+
+ PhoneNumber.where('is_native IS NOT FALSE AND phone_numberable_type IN ("SipAccount", "Conference", "FaxAccount", "Callthrough", "HuntGroup", "AutomaticCallDistributor")').each do |phone_number|
+ puts("Processing PhoneNumber=#{phone_number.id}/#{phone_number.uuid} - #{phone_number.number}");
+ phone_number.create_on_other_gs_nodes
+ end
+ end
+
+ desc "Pull objects from nodes."
+ task :pull => :environment do
+ local_node = GsNode.where(:ip_address => HOMEBASE_IP_ADDRESS).first
+ GsNode.where(:accepts_updates_from => true).each do |remote_node|
+ if remote_node.id == local_node.id
+ next
+ end
+
+ puts "Processing node: #{remote_node.name}"
+ pull_node(remote_node, local_node)
+ end
+ end
+
+ def pull_node(remote_node, local_node)
+ require 'nokogiri'
+ require 'open-uri'
+
+ is_native = false
+ remote_site = remote_node.site
+ local_node_id = local_node.id
+ last_sync = remote_node.last_sync.to_i
+
+ remote_objects(remote_site, local_node_id, last_sync, Tenant).each do |tenant|
+ puts "Processing Tenant: #{tenant[:name]}"
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, UserGroup).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+ tenant = Tenant.where(:name => attributes[:tenant]).first
+ process_object(UserGroup, tenant.user_groups, UserGroup.where(:name => attributes[:name], :tenant_id => tenant.try(:id)).first, attributes)
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, User).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+
+ tenant = Tenant.where(:name => attributes[:current_tenant]).first
+ attributes[:language_id] = Language.where(:code => attributes[:language]).first.try(:id)
+ attributes.delete(:language)
+ attributes.delete(:current_tenant)
+
+ if tenant
+ if ! attributes[:gs_node].blank?
+ attributes[:gs_node_id] = GsNode.where(:name => attributes[:gs_node]).first.try(:id)
+ attributes.delete(:gs_node)
+ end
+
+ process_object(User, tenant.users, User.where(:uuid => attributes[:uuid]).first, attributes, { :is_native => is_native })
+ else
+ $stderr.puts "NO_PROCESSING User #{attributes[:uuid]} - no current tenant"
+ end
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, UserGroupMembership).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+ attributes[:user_id] = User.where(:uuid => attributes[:user_uuid]).first.try(:id)
+ attributes[:user_group_id] = UserGroup.where(:name => attributes[:user_group]).first.try(:id)
+ attributes.delete(:user_uuid)
+ attributes.delete(:user_group)
+
+ if attributes[:user_id] && attributes[:user_group_id]
+ process_object(UserGroupMembership, UserGroupMembership, UserGroupMembership.where(:user_id => attributes[:user_id], :user_group_id => attributes[:user_group_id]).first, attributes)
+ end
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, SipAccount).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+ attributes[:tenant_id] = Tenant.where(:name => attributes[:tenant]).first.try(:id)
+ attributes[:sip_domain] = SipDomain.where(:host => attributes[:sip_domain]).first
+
+ if ! attributes[:sip_accountable_uuid].blank?
+ attributes[:sip_accountable_id] = attributes[:sip_accountable_type].constantize.where(:uuid => attributes[:sip_accountable_uuid]).first.try(:id)
+ end
+
+ if attributes[:sip_accountable_id]
+ if ! attributes[:gs_node].blank?
+ attributes[:gs_node_id] = GsNode.where(:name => attributes[:gs_node]).first.try(:id)
+ attributes.delete(:gs_node)
+ end
+
+ attributes.delete(:sip_accountable_uuid)
+ attributes.delete(:tenant)
+ process_object(SipAccount, SipAccount, SipAccount.where(:uuid => attributes[:uuid]).first, attributes, { :is_native => is_native })
+ end
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, Conference).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+
+ if ! attributes[:conferenceable_uuid].blank?
+ attributes[:conferenceable_id] = attributes[:conferenceable_type].constantize.where(:uuid => attributes[:conferenceable_uuid]).first.try(:id)
+ end
+ attributes.delete(:conferenceable_uuid)
+
+ process_object(Conference, Conference, Conference.where(:uuid => attributes[:uuid]).first, attributes)
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, FaxAccount).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+ attributes[:tenant_id] = Tenant.where(:name => attributes[:tenant]).first.try(:id)
+ if ! attributes[:fax_accountable_uuid].blank?
+ attributes[:fax_accountable_id] = attributes[:fax_accountable_type].constantize.where(:uuid => attributes[:fax_accountable_uuid]).first.try(:id)
+ end
+ attributes.delete(:fax_accountable_uuid)
+ attributes.delete(:tenant)
+ process_object(FaxAccount, FaxAccount, FaxAccount.where(:uuid => attributes[:uuid]).first, attributes)
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, PhoneBook).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+
+ if ! attributes[:phone_bookable_uuid].blank?
+ attributes[:phone_bookable_id] = attributes[:phone_bookable_type].constantize.where(:uuid => attributes[:phone_bookable_uuid]).first.try(:id)
+ end
+ attributes.delete(:phone_bookable_uuid)
+ process_object(PhoneBook, PhoneBook, PhoneBook.where(:uuid => attributes[:uuid]).first, attributes)
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, PhoneBookEntry).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+ attributes[:phone_book_id] = PhoneBook.where(:uuid => attributes[:phone_book_uuid]).first.try(:id)
+ attributes.delete(:phone_book_uuid)
+ process_object(PhoneBookEntry, PhoneBookEntry, PhoneBookEntry.where(:uuid => attributes[:uuid]).first, attributes)
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, PhoneNumber).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+
+ if ! attributes[:phone_numberable_uuid].blank?
+ attributes[:phone_numberable_id] = attributes[:phone_numberable_type].constantize.where(:uuid => attributes[:phone_numberable_uuid]).first.try(:id)
+ end
+
+ if ! attributes[:gs_node].blank?
+ attributes[:gs_node_id] = GsNode.where(:name => attributes[:gs_node]).first.try(:id)
+ attributes.delete(:gs_node)
+ end
+
+ if !attributes[:phone_numberable_id]
+ puts "WARNING PhoneNumber #{attributes[:number]} has no local parent object #{attributes[:phone_numberable_type]}/#{attributes[:phone_numberable_uuid]}"
+ end
+
+ attributes.delete(:phone_numberable_uuid)
+ process_object(PhoneNumber, PhoneNumber, PhoneNumber.where(:uuid => attributes[:uuid]).first, attributes, { :is_native => is_native })
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, CallForward).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+
+ attributes[:phone_number_id] = PhoneNumber.where(:uuid => attributes[:phone_number_uuid]).first.try(:id)
+
+ if ! attributes[:call_forwardable_uuid].blank?
+ attributes[:call_forwardable_id] = attributes[:call_forwardable_type].constantize.where(:uuid => attributes[:call_forwardable_uuid]).first.try(:id)
+ attributes.delete(:call_forwardable_uuid)
+ end
+
+ attributes[:call_forward_case_id] = CallForwardCase.where(:value => attributes[:service]).first.try(:id)
+
+ attributes.delete(:phone_number_uuid)
+ attributes.delete(:service)
+
+ process_object(CallForward, CallForward, CallForward.where(:uuid => attributes[:uuid]).first, attributes)
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, Softkey).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+ attributes[:sip_account_id] = SipAccount.where(:uuid => attributes[:sip_account_uuid]).first.try(:id)
+ attributes[:call_forward_id] = CallForward.where(:uuid => attributes[:call_forward_uuid]).first.try(:id)
+ attributes[:softkey_function_id] = SoftkeyFunction.where(:name => attributes[:function]).first.try(:id)
+ attributes.delete(:sip_account_uuid)
+ attributes.delete(:call_forward_uuid)
+ attributes.delete(:softkey_function)
+ process_object(Softkey, Softkey, Softkey.where(:uuid => attributes[:uuid]).first, attributes)
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, Ringtone).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+ if ! attributes[:ringtoneable_uuid].blank?
+ attributes[:ringtoneable_id] = attributes[:ringtoneable_type].constantize.where(:uuid => attributes[:ringtoneable_uuid]).first.try(:id)
+ end
+
+ if !attributes[:ringtoneable_id]
+ puts "WARNING Ringtone #{attributes[:number]} has no local parent object #{attributes[:ringtoneable_type]}/#{attributes[:ringtoneable_uuid]}"
+ else
+ attributes.delete(:ringtoneable_uuid)
+ process_object(Ringtone, Ringtone, Ringtone.where(:ringtoneable_type => attributes[:ringtoneable_type], :ringtoneable_id => attributes[:ringtoneable_id]).first, attributes)
+ end
+ end
+
+ remote_objects(remote_site, local_node_id, last_sync, ConferenceInvitee).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+ attributes[:conference_id] = Conference.where(:uuid => attributes[:conference_uuid]).first.try(:id)
+ attributes[:phone_number] = PhoneNumber.where(:uuid => attributes[:phone_number_uuid]).first
+ if !attributes[:conference_id]
+ puts "WARNING ConferenceInvitee #{attributes[:uuid]} has no local Conference object #{attributes[:conference_uuid]}"
+ else
+ attributes[:phone_book_entry_id] = PhoneBookEntry.where(:uuid => attributes[:phone_book_entry_uuid]).first.try(:id)
+ attributes.delete(:conference_uuid)
+ attributes.delete(:phone_number_uuid)
+ attributes.delete(:phone_book_entry_uuid)
+ process_object(ConferenceInvitee, ConferenceInvitee, ConferenceInvitee.where(:uuid => attributes[:uuid]).first, attributes)
+ end
+ end
+
+ #remote_objects(remote_site, local_node_id, last_sync, FaxDocument).each do |remote_object|
+ # attributes = make_hash(remote_object.attributes)
+ # attributes[:fax_account_id] = FaxAccount.where(:uuid => attributes[:fax_account_uuid]).first.try(:id)
+ # attributes[:fax_resolution_id] = FaxResolution.where(:resolution_value => attributes[:fax_resolution]).first.try(:id)
+ # attributes.delete(:fax_account_uuid)
+ # attributes.delete(:fax_resolution)
+ # process_object(FaxDocument, FaxDocument, FaxDocument.where(:uuid => attributes[:uuid]).first, attributes)
+ #end
+
+ #remote_objects(remote_site, local_node_id, last_sync, CallHistory).each do |remote_object|
+ # attributes = make_hash(remote_object.attributes)
+ # process_object(CallHistory, CallHistory, CallHistory.where(:caller_channel_uuid => attributes[:caller_channel_uuid], :call_historyable_type => attributes[:caller_channel_type], :call_historyable_id => call_historyable.try(:id)).first, attributes)
+ #end
+
+ remote_objects(remote_site, local_node_id, last_sync, DeletedItem).each do |remote_object|
+ attributes = make_hash(remote_object.attributes)
+ deleted_item = remote_object[:class_name].constantize.where(:uuid => attributes[:uuid]).first
+
+ if deleted_item
+ print "DELETE #{deleted_item.class.to_s} #{deleted_item.to_s} : "
+
+ if deleted_item.destroy
+ puts "OK"
+ else
+ $stderr.puts "Couldn't delete #{deleted_item.class.to_s}. #{deleted_item.errors.inspect}"
+ end
+ else
+ puts "NO_DELETE #{remote_object[:class_name]} #{remote_object[:uuid]}"
+ end
+ end
+
+ if ! remote_node.synced
+ $stderr.puts "Errors updating node #{remote_node.name}. #{remote_node.errors.inspect}"
+ end
+ end
+
+ def make_hash(attributes, new_hash = Hash.new)
+ attributes.each do |key, value|
+ new_hash[key.to_sym] = value.to_s
+ end
+ return new_hash
+ end
+
+ def remote_objects(remote_site, local_node_id, last_sync, object_class)
+ class_name = object_class.to_s.underscore
+ section_name = class_name.pluralize
+ doc = Nokogiri::XML(open("#{remote_site}/gs_nodes/#{local_node_id}/sync.xml?newer=#{last_sync}&image=false&class=#{section_name}", :proxy => nil, :read_timeout => 120))
+ return doc.xpath("//gemeinschaft_sync/#{section_name}/#{class_name}")
+ end
+
+ def process_object(object_class, belongs_to, local_object, attributes, local_attributes = Hash.new)
+ if local_object
+ if local_object.updated_at < attributes[:updated_at]
+ print "UPDATE #{object_class.to_s} #{local_object.to_s} : "
+ update_object(local_object, attributes, local_attributes)
+ else
+ print "NO_UPDATE #{object_class.to_s}: #{local_object.to_s} - last update: #{local_object.updated_at}, remote: #{attributes[:updated_at]}"
+ end
+ else
+ print "CREATE #{object_class.to_s} #{attributes[:name].to_s} #{attributes[:uuid].to_s} : "
+ create_object(belongs_to, attributes, local_attributes)
+ end
+ puts "."
+ end
+
+ def create_object(object_class, attributes, local_attributes)
+ attributes = attributes.merge(local_attributes)
+
+ new_local_copy = object_class.create(attributes, :without_protection => true)
+ if new_local_copy && new_local_copy.errors.count == 0
+ print "Created object, #{new_local_copy.class.to_s} #{new_local_copy.to_s}"
+ return true
+ else
+ $stderr.print "Couldn't create object. #{new_local_copy.errors.messages.inspect}"
+ return false
+ end
+ end
+
+ def update_object(local_object, attributes, local_attributes)
+ attributes = attributes.merge(local_attributes)
+
+ if local_object.update_attributes(attributes, :without_protection => true)
+ print "Updated #{local_object.class.to_s}, ID #{local_object.id}."
+ return true
+ else
+ $stderr.print "Couldn't update UserGroup. #{local_user_group.errors.inspect}"
+ return true
+ end
+ end
+
+ class DeletedItem
+ end
+end
diff --git a/lib/tasks/originate.rake b/lib/tasks/originate.rake
new file mode 100644
index 0000000..5e7dfe3
--- /dev/null
+++ b/lib/tasks/originate.rake
@@ -0,0 +1,13 @@
+desc "Originate call"
+
+task :originate, [
+ :sip_account_id,
+ :extension,
+ ] => :environment do |t, a|
+
+ extension = a.extension.to_s
+ sip_account = SipAccount.where(:id => a.sip_account_id.to_i).first
+
+ print "Originate #{sip_account} -> #{extension} ... "
+ puts sip_account.call(extension)
+end \ No newline at end of file
diff --git a/lib/tasks/populate_area_codes_de.rake b/lib/tasks/populate_area_codes_de.rake
new file mode 100644
index 0000000..7237f5d
--- /dev/null
+++ b/lib/tasks/populate_area_codes_de.rake
@@ -0,0 +1,5211 @@
+# encoding: UTF-8
+
+desc "Populate database with German area codes"
+task :areacodes_germany => :environment do
+ if ! germany = Country.where( :name => 'Germany' ).first
+ $stderr.puts "Error. Country not found."
+ exit 1
+ end
+
+ AreaCode.create(:country => germany, :name => "Essen", :area_code => "201")
+ AreaCode.create(:country => germany, :name => "Wuppertal", :area_code => "202")
+ AreaCode.create(:country => germany, :name => "Duisburg", :area_code => "203")
+ AreaCode.create(:country => germany, :name => "Bottrop", :area_code => "2041")
+ AreaCode.create(:country => germany, :name => "Gladbeck", :area_code => "2043")
+ AreaCode.create(:country => germany, :name => "Bottrop-Kirchhellen", :area_code => "2045")
+ AreaCode.create(:country => germany, :name => "Velbert", :area_code => "2051")
+ AreaCode.create(:country => germany, :name => "Velbert-Langenberg", :area_code => "2052")
+ AreaCode.create(:country => germany, :name => "Velbert-Neviges", :area_code => "2053")
+ AreaCode.create(:country => germany, :name => "Essen-Kettwig", :area_code => "2054")
+ AreaCode.create(:country => germany, :name => "Heiligenhaus", :area_code => "2056")
+ AreaCode.create(:country => germany, :name => "Wülfrath", :area_code => "2058")
+ AreaCode.create(:country => germany, :name => "Dinslaken", :area_code => "2064")
+ AreaCode.create(:country => germany, :name => "Duisburg-Rheinhausen", :area_code => "2065")
+ AreaCode.create(:country => germany, :name => "Duisburg-Homberg", :area_code => "2066")
+ AreaCode.create(:country => germany, :name => "Oberhausen Rheinl", :area_code => "208")
+ AreaCode.create(:country => germany, :name => "Gelsenkirchen", :area_code => "209")
+ AreaCode.create(:country => germany, :name => "Ratingen", :area_code => "2102")
+ AreaCode.create(:country => germany, :name => "Hilden", :area_code => "2103")
+ AreaCode.create(:country => germany, :name => "Mettmann", :area_code => "2104")
+ AreaCode.create(:country => germany, :name => "Düsseldorf", :area_code => "211")
+ AreaCode.create(:country => germany, :name => "Solingen", :area_code => "212")
+ AreaCode.create(:country => germany, :name => "Haan Rheinl", :area_code => "2129")
+ AreaCode.create(:country => germany, :name => "Neuss", :area_code => "2131")
+ AreaCode.create(:country => germany, :name => "Meerbusch-Büderich", :area_code => "2132")
+ AreaCode.create(:country => germany, :name => "Dormagen", :area_code => "2133")
+ AreaCode.create(:country => germany, :name => "Neuss-Norf", :area_code => "2137")
+ AreaCode.create(:country => germany, :name => "Leverkusen", :area_code => "214")
+ AreaCode.create(:country => germany, :name => "Meerbusch-Lank", :area_code => "2150")
+ AreaCode.create(:country => germany, :name => "Krefeld", :area_code => "2151")
+ AreaCode.create(:country => germany, :name => "Kempen", :area_code => "2152")
+ AreaCode.create(:country => germany, :name => "Nettetal-Lobberich", :area_code => "2153")
+ AreaCode.create(:country => germany, :name => "Willich", :area_code => "2154")
+ AreaCode.create(:country => germany, :name => "Willich-Anrath", :area_code => "2156")
+ AreaCode.create(:country => germany, :name => "Nettetal-Kaldenkirchen", :area_code => "2157")
+ AreaCode.create(:country => germany, :name => "Grefrath b Krefeld", :area_code => "2158")
+ AreaCode.create(:country => germany, :name => "Meerbusch-Osterath", :area_code => "2159")
+ AreaCode.create(:country => germany, :name => "Mönchengladbach", :area_code => "2161")
+ AreaCode.create(:country => germany, :name => "Viersen", :area_code => "2162")
+ AreaCode.create(:country => germany, :name => "Schwalmtal Niederrhein", :area_code => "2163")
+ AreaCode.create(:country => germany, :name => "Jüchen-Otzenrath", :area_code => "2164")
+ AreaCode.create(:country => germany, :name => "Jüchen", :area_code => "2165")
+ AreaCode.create(:country => germany, :name => "Mönchengladbach-Rheydt", :area_code => "2166")
+ AreaCode.create(:country => germany, :name => "Leverkusen-Opladen", :area_code => "2171")
+ AreaCode.create(:country => germany, :name => "Langenfeld Rheinland", :area_code => "2173")
+ AreaCode.create(:country => germany, :name => "Burscheid Rheinl", :area_code => "2174")
+ AreaCode.create(:country => germany, :name => "Leichlingen Rheinland", :area_code => "2175")
+ AreaCode.create(:country => germany, :name => "Grevenbroich", :area_code => "2181")
+ AreaCode.create(:country => germany, :name => "Grevenbroich-Kapellen", :area_code => "2182")
+ AreaCode.create(:country => germany, :name => "Rommerskirchen", :area_code => "2183")
+ AreaCode.create(:country => germany, :name => "Remscheid", :area_code => "2191")
+ AreaCode.create(:country => germany, :name => "Hückeswagen", :area_code => "2192")
+ AreaCode.create(:country => germany, :name => "Dabringhausen", :area_code => "2193")
+ AreaCode.create(:country => germany, :name => "Radevormwald", :area_code => "2195")
+ AreaCode.create(:country => germany, :name => "Wermelskirchen", :area_code => "2196")
+ AreaCode.create(:country => germany, :name => "Bergisch Gladbach", :area_code => "2202")
+ AreaCode.create(:country => germany, :name => "Köln-Porz", :area_code => "2203")
+ AreaCode.create(:country => germany, :name => "Bensberg", :area_code => "2204")
+ AreaCode.create(:country => germany, :name => "Rösrath", :area_code => "2205")
+ AreaCode.create(:country => germany, :name => "Overath", :area_code => "2206")
+ AreaCode.create(:country => germany, :name => "Kürten-Dürscheid", :area_code => "2207")
+ AreaCode.create(:country => germany, :name => "Niederkassel", :area_code => "2208")
+ AreaCode.create(:country => germany, :name => "Köln", :area_code => "221")
+ AreaCode.create(:country => germany, :name => "Bornheim Rheinl", :area_code => "2222")
+ AreaCode.create(:country => germany, :name => "Königswinter", :area_code => "2223")
+ AreaCode.create(:country => germany, :name => "Bad Honnef", :area_code => "2224")
+ AreaCode.create(:country => germany, :name => "Meckenheim Rheinl", :area_code => "2225")
+ AreaCode.create(:country => germany, :name => "Rheinbach", :area_code => "2226")
+ AreaCode.create(:country => germany, :name => "Bornheim-Merten", :area_code => "2227")
+ AreaCode.create(:country => germany, :name => "Remagen-Rolandseck", :area_code => "2228")
+ AreaCode.create(:country => germany, :name => "Brühl Rheinl", :area_code => "2232")
+ AreaCode.create(:country => germany, :name => "Hürth Rheinl", :area_code => "2233")
+ AreaCode.create(:country => germany, :name => "Frechen", :area_code => "2234")
+ AreaCode.create(:country => germany, :name => "Erftstadt", :area_code => "2235")
+ AreaCode.create(:country => germany, :name => "Wesseling Rheinl", :area_code => "2236")
+ AreaCode.create(:country => germany, :name => "Kerpen Rheinl-Türnich", :area_code => "2237")
+ AreaCode.create(:country => germany, :name => "Pulheim", :area_code => "2238")
+ AreaCode.create(:country => germany, :name => "Siegburg", :area_code => "2241")
+ AreaCode.create(:country => germany, :name => "Hennef Sieg", :area_code => "2242")
+ AreaCode.create(:country => germany, :name => "Eitorf", :area_code => "2243")
+ AreaCode.create(:country => germany, :name => "Königswinter-Oberpleis", :area_code => "2244")
+ AreaCode.create(:country => germany, :name => "Much", :area_code => "2245")
+ AreaCode.create(:country => germany, :name => "Lohmar", :area_code => "2246")
+ AreaCode.create(:country => germany, :name => "Neunkirchen-Seelscheid", :area_code => "2247")
+ AreaCode.create(:country => germany, :name => "Hennef-Uckerath", :area_code => "2248")
+ AreaCode.create(:country => germany, :name => "Euskirchen", :area_code => "2251")
+ AreaCode.create(:country => germany, :name => "Zülpich", :area_code => "2252")
+ AreaCode.create(:country => germany, :name => "Bad Münstereifel", :area_code => "2253")
+ AreaCode.create(:country => germany, :name => "Weilerswist", :area_code => "2254")
+ AreaCode.create(:country => germany, :name => "Euskirchen-Flamersheim", :area_code => "2255")
+ AreaCode.create(:country => germany, :name => "Mechernich-Satzvey", :area_code => "2256")
+ AreaCode.create(:country => germany, :name => "Reckerscheid", :area_code => "2257")
+ AreaCode.create(:country => germany, :name => "Gummersbach", :area_code => "2261")
+ AreaCode.create(:country => germany, :name => "Wiehl", :area_code => "2262")
+ AreaCode.create(:country => germany, :name => "Engelskirchen", :area_code => "2263")
+ AreaCode.create(:country => germany, :name => "Marienheide", :area_code => "2264")
+ AreaCode.create(:country => germany, :name => "Reichshof-Eckenhagen", :area_code => "2265")
+ AreaCode.create(:country => germany, :name => "Lindlar", :area_code => "2266")
+ AreaCode.create(:country => germany, :name => "Wipperfürth", :area_code => "2267")
+ AreaCode.create(:country => germany, :name => "Kürten", :area_code => "2268")
+ AreaCode.create(:country => germany, :name => "Kierspe-Rönsahl", :area_code => "2269")
+ AreaCode.create(:country => germany, :name => "Bergheim Erft", :area_code => "2271")
+ AreaCode.create(:country => germany, :name => "Bedburg Erft", :area_code => "2272")
+ AreaCode.create(:country => germany, :name => "Kerpen-Horrem", :area_code => "2273")
+ AreaCode.create(:country => germany, :name => "Elsdorf Rheinl", :area_code => "2274")
+ AreaCode.create(:country => germany, :name => "Kerpen-Buir", :area_code => "2275")
+ AreaCode.create(:country => germany, :name => "Bonn", :area_code => "228")
+ AreaCode.create(:country => germany, :name => "Waldbröl", :area_code => "2291")
+ AreaCode.create(:country => germany, :name => "Windeck Sieg", :area_code => "2292")
+ AreaCode.create(:country => germany, :name => "Nümbrecht", :area_code => "2293")
+ AreaCode.create(:country => germany, :name => "Morsbach Sieg", :area_code => "2294")
+ AreaCode.create(:country => germany, :name => "Ruppichteroth", :area_code => "2295")
+ AreaCode.create(:country => germany, :name => "Reichshof-Brüchermühle", :area_code => "2296")
+ AreaCode.create(:country => germany, :name => "Wildbergerhütte", :area_code => "2297")
+ AreaCode.create(:country => germany, :name => "Holzwickede", :area_code => "2301")
+ AreaCode.create(:country => germany, :name => "Witten", :area_code => "2302")
+ AreaCode.create(:country => germany, :name => "Unna", :area_code => "2303")
+ AreaCode.create(:country => germany, :name => "Schwerte", :area_code => "2304")
+ AreaCode.create(:country => germany, :name => "Castrop-Rauxel", :area_code => "2305")
+ AreaCode.create(:country => germany, :name => "Lünen", :area_code => "2306")
+ AreaCode.create(:country => germany, :name => "Kamen", :area_code => "2307")
+ AreaCode.create(:country => germany, :name => "Unna-Hemmerde", :area_code => "2308")
+ AreaCode.create(:country => germany, :name => "Waltrop", :area_code => "2309")
+ AreaCode.create(:country => germany, :name => "Dortmund", :area_code => "231")
+ AreaCode.create(:country => germany, :name => "Herne", :area_code => "2323")
+ AreaCode.create(:country => germany, :name => "Hattingen Ruhr", :area_code => "2324")
+ AreaCode.create(:country => germany, :name => "Wanne-Eickel", :area_code => "2325")
+ AreaCode.create(:country => germany, :name => "Bochum-Wattenscheid", :area_code => "2327")
+ AreaCode.create(:country => germany, :name => "Herdecke", :area_code => "2330")
+ AreaCode.create(:country => germany, :name => "Hagen Westf", :area_code => "2331")
+ AreaCode.create(:country => germany, :name => "Gevelsberg", :area_code => "2332")
+ AreaCode.create(:country => germany, :name => "Ennepetal", :area_code => "2333")
+ AreaCode.create(:country => germany, :name => "Hagen-Hohenlimburg", :area_code => "2334")
+ AreaCode.create(:country => germany, :name => "Wetter Ruhr", :area_code => "2335")
+ AreaCode.create(:country => germany, :name => "Schwelm", :area_code => "2336")
+ AreaCode.create(:country => germany, :name => "Hagen-Dahl", :area_code => "2337")
+ AreaCode.create(:country => germany, :name => "Breckerfeld", :area_code => "2338")
+ AreaCode.create(:country => germany, :name => "Sprockhövel-Haßlinghausen", :area_code => "2339")
+ AreaCode.create(:country => germany, :name => "Bochum", :area_code => "234")
+ AreaCode.create(:country => germany, :name => "Lüdenscheid", :area_code => "2351")
+ AreaCode.create(:country => germany, :name => "Altena Westf", :area_code => "2352")
+ AreaCode.create(:country => germany, :name => "Halver", :area_code => "2353")
+ AreaCode.create(:country => germany, :name => "Meinerzhagen", :area_code => "2354")
+ AreaCode.create(:country => germany, :name => "Schalksmühle", :area_code => "2355")
+ AreaCode.create(:country => germany, :name => "Herscheid Westf", :area_code => "2357")
+ AreaCode.create(:country => germany, :name => "Meinerzhagen-Valbert", :area_code => "2358")
+ AreaCode.create(:country => germany, :name => "Kierspe", :area_code => "2359")
+ AreaCode.create(:country => germany, :name => "Haltern-Lippramsdorf", :area_code => "2360")
+ AreaCode.create(:country => germany, :name => "Recklinghausen", :area_code => "2361")
+ AreaCode.create(:country => germany, :name => "Dorsten", :area_code => "2362")
+ AreaCode.create(:country => germany, :name => "Datteln", :area_code => "2363")
+ AreaCode.create(:country => germany, :name => "Haltern Westf", :area_code => "2364")
+ AreaCode.create(:country => germany, :name => "Marl", :area_code => "2365")
+ AreaCode.create(:country => germany, :name => "Herten Westf", :area_code => "2366")
+ AreaCode.create(:country => germany, :name => "Henrichenburg", :area_code => "2367")
+ AreaCode.create(:country => germany, :name => "Oer-Erkenschwick", :area_code => "2368")
+ AreaCode.create(:country => germany, :name => "Dorsten-Wulfen", :area_code => "2369")
+ AreaCode.create(:country => germany, :name => "Iserlohn", :area_code => "2371")
+ AreaCode.create(:country => germany, :name => "Hemer", :area_code => "2372")
+ AreaCode.create(:country => germany, :name => "Menden Sauerland", :area_code => "2373")
+ AreaCode.create(:country => germany, :name => "Iserlohn-Letmathe", :area_code => "2374")
+ AreaCode.create(:country => germany, :name => "Balve", :area_code => "2375")
+ AreaCode.create(:country => germany, :name => "Wickede Ruhr", :area_code => "2377")
+ AreaCode.create(:country => germany, :name => "Fröndenberg-Langschede", :area_code => "2378")
+ AreaCode.create(:country => germany, :name => "Menden-Asbeck", :area_code => "2379")
+ AreaCode.create(:country => germany, :name => "Hamm Westf", :area_code => "2381")
+ AreaCode.create(:country => germany, :name => "Ahlen Westf", :area_code => "2382")
+ AreaCode.create(:country => germany, :name => "Bönen", :area_code => "2383")
+ AreaCode.create(:country => germany, :name => "Welver", :area_code => "2384")
+ AreaCode.create(:country => germany, :name => "Hamm-Rhynern", :area_code => "2385")
+ AreaCode.create(:country => germany, :name => "Drensteinfurt-Walstedde", :area_code => "2387")
+ AreaCode.create(:country => germany, :name => "Hamm-Uentrop", :area_code => "2388")
+ AreaCode.create(:country => germany, :name => "Werne", :area_code => "2389")
+ AreaCode.create(:country => germany, :name => "Plettenberg", :area_code => "2391")
+ AreaCode.create(:country => germany, :name => "Werdohl", :area_code => "2392")
+ AreaCode.create(:country => germany, :name => "Sundern-Allendorf", :area_code => "2393")
+ AreaCode.create(:country => germany, :name => "Neuenrade-Affeln", :area_code => "2394")
+ AreaCode.create(:country => germany, :name => "Finnentrop-Rönkhausen", :area_code => "2395")
+ AreaCode.create(:country => germany, :name => "Baesweiler", :area_code => "2401")
+ AreaCode.create(:country => germany, :name => "Stolberg Rheinl", :area_code => "2402")
+ AreaCode.create(:country => germany, :name => "Eschweiler Rheinl", :area_code => "2403")
+ AreaCode.create(:country => germany, :name => "Alsdorf Rheinl", :area_code => "2404")
+ AreaCode.create(:country => germany, :name => "Würselen", :area_code => "2405")
+ AreaCode.create(:country => germany, :name => "Herzogenrath", :area_code => "2406")
+ AreaCode.create(:country => germany, :name => "Herzogenrath-Kohlscheid", :area_code => "2407")
+ AreaCode.create(:country => germany, :name => "Aachen-Kornelimünster", :area_code => "2408")
+ AreaCode.create(:country => germany, :name => "Stolberg-Gressenich", :area_code => "2409")
+ AreaCode.create(:country => germany, :name => "Aachen", :area_code => "241")
+ AreaCode.create(:country => germany, :name => "Düren", :area_code => "2421")
+ AreaCode.create(:country => germany, :name => "Kreuzau", :area_code => "2422")
+ AreaCode.create(:country => germany, :name => "Langerwehe", :area_code => "2423")
+ AreaCode.create(:country => germany, :name => "Vettweiss", :area_code => "2424")
+ AreaCode.create(:country => germany, :name => "Nideggen-Embken", :area_code => "2425")
+ AreaCode.create(:country => germany, :name => "Nörvenich", :area_code => "2426")
+ AreaCode.create(:country => germany, :name => "Nideggen", :area_code => "2427")
+ AreaCode.create(:country => germany, :name => "Niederzier", :area_code => "2428")
+ AreaCode.create(:country => germany, :name => "Hürtgenwald", :area_code => "2429")
+ AreaCode.create(:country => germany, :name => "Erkelenz", :area_code => "2431")
+ AreaCode.create(:country => germany, :name => "Wassenberg", :area_code => "2432")
+ AreaCode.create(:country => germany, :name => "Hückelhoven", :area_code => "2433")
+ AreaCode.create(:country => germany, :name => "Wegberg", :area_code => "2434")
+ AreaCode.create(:country => germany, :name => "Erkelenz-Lövenich", :area_code => "2435")
+ AreaCode.create(:country => germany, :name => "Wegberg-Rödgen", :area_code => "2436")
+ AreaCode.create(:country => germany, :name => "Nettersheim-Tondorf", :area_code => "2440")
+ AreaCode.create(:country => germany, :name => "Kall", :area_code => "2441")
+ AreaCode.create(:country => germany, :name => "Mechernich", :area_code => "2443")
+ AreaCode.create(:country => germany, :name => "Schleiden-Gemünd", :area_code => "2444")
+ AreaCode.create(:country => germany, :name => "Schleiden Eifel", :area_code => "2445")
+ AreaCode.create(:country => germany, :name => "Heimbach Eifel", :area_code => "2446")
+ AreaCode.create(:country => germany, :name => "Dahlem b Kall", :area_code => "2447")
+ AreaCode.create(:country => germany, :name => "Hellenthal-Rescheid", :area_code => "2448")
+ AreaCode.create(:country => germany, :name => "Blankenheim Ahr", :area_code => "2449")
+ AreaCode.create(:country => germany, :name => "Geilenkirchen", :area_code => "2451")
+ AreaCode.create(:country => germany, :name => "Heinsberg Rheinl", :area_code => "2452")
+ AreaCode.create(:country => germany, :name => "Heinsberg-Randerath", :area_code => "2453")
+ AreaCode.create(:country => germany, :name => "Gangelt", :area_code => "2454")
+ AreaCode.create(:country => germany, :name => "Waldfeucht", :area_code => "2455")
+ AreaCode.create(:country => germany, :name => "Selfkant", :area_code => "2456")
+ AreaCode.create(:country => germany, :name => "Jülich", :area_code => "2461")
+ AreaCode.create(:country => germany, :name => "Linnich", :area_code => "2462")
+ AreaCode.create(:country => germany, :name => "Titz", :area_code => "2463")
+ AreaCode.create(:country => germany, :name => "Aldenhoven b Jülich", :area_code => "2464")
+ AreaCode.create(:country => germany, :name => "Inden", :area_code => "2465")
+ AreaCode.create(:country => germany, :name => "Roetgen Eifel", :area_code => "2471")
+ AreaCode.create(:country => germany, :name => "Monschau", :area_code => "2472")
+ AreaCode.create(:country => germany, :name => "Simmerath", :area_code => "2473")
+ AreaCode.create(:country => germany, :name => "Nideggen-Schmidt", :area_code => "2474")
+ AreaCode.create(:country => germany, :name => "Hellenthal", :area_code => "2482")
+ AreaCode.create(:country => germany, :name => "Mechernich-Eiserfey", :area_code => "2484")
+ AreaCode.create(:country => germany, :name => "Schleiden-Dreiborn", :area_code => "2485")
+ AreaCode.create(:country => germany, :name => "Nettersheim", :area_code => "2486")
+ AreaCode.create(:country => germany, :name => "Münster-Hiltrup", :area_code => "2501")
+ AreaCode.create(:country => germany, :name => "Nottuln", :area_code => "2502")
+ AreaCode.create(:country => germany, :name => "Telgte", :area_code => "2504")
+ AreaCode.create(:country => germany, :name => "Altenberge Westf", :area_code => "2505")
+ AreaCode.create(:country => germany, :name => "Münster-Wolbeck", :area_code => "2506")
+ AreaCode.create(:country => germany, :name => "Havixbeck", :area_code => "2507")
+ AreaCode.create(:country => germany, :name => "Drensteinfurt", :area_code => "2508")
+ AreaCode.create(:country => germany, :name => "Nottuln-Appelhülsen", :area_code => "2509")
+ AreaCode.create(:country => germany, :name => "Münster", :area_code => "251")
+ AreaCode.create(:country => germany, :name => "Wadersloh-Diestedde", :area_code => "2520")
+ AreaCode.create(:country => germany, :name => "Beckum", :area_code => "2521")
+ AreaCode.create(:country => germany, :name => "Oelde", :area_code => "2522")
+ AreaCode.create(:country => germany, :name => "Wadersloh", :area_code => "2523")
+ AreaCode.create(:country => germany, :name => "Ennigerloh", :area_code => "2524")
+ AreaCode.create(:country => germany, :name => "Beckum-Neubeckum", :area_code => "2525")
+ AreaCode.create(:country => germany, :name => "Sendenhorst", :area_code => "2526")
+ AreaCode.create(:country => germany, :name => "Lippetal-Lippborg", :area_code => "2527")
+ AreaCode.create(:country => germany, :name => "Ennigerloh-Enniger", :area_code => "2528")
+ AreaCode.create(:country => germany, :name => "Oelde-Stromberg", :area_code => "2529")
+ AreaCode.create(:country => germany, :name => "Ostbevern", :area_code => "2532")
+ AreaCode.create(:country => germany, :name => "Münster-Nienberge", :area_code => "2533")
+ AreaCode.create(:country => germany, :name => "Münster-Roxel", :area_code => "2534")
+ AreaCode.create(:country => germany, :name => "Sendenhorst-Albersloh", :area_code => "2535")
+ AreaCode.create(:country => germany, :name => "Münster-Albachten", :area_code => "2536")
+ AreaCode.create(:country => germany, :name => "Drensteinfurt-Rinkerode", :area_code => "2538")
+ AreaCode.create(:country => germany, :name => "Coesfeld", :area_code => "2541")
+ AreaCode.create(:country => germany, :name => "Gescher", :area_code => "2542")
+ AreaCode.create(:country => germany, :name => "Billerbeck Westf", :area_code => "2543")
+ AreaCode.create(:country => germany, :name => "Rosendahl-Darfeld", :area_code => "2545")
+ AreaCode.create(:country => germany, :name => "Coesfeld-Lette", :area_code => "2546")
+ AreaCode.create(:country => germany, :name => "Rosendahl-Osterwick", :area_code => "2547")
+ AreaCode.create(:country => germany, :name => "Dülmen-Rorup", :area_code => "2548")
+ AreaCode.create(:country => germany, :name => "Steinfurt-Burgsteinfurt", :area_code => "2551")
+ AreaCode.create(:country => germany, :name => "Steinfurt-Borghorst", :area_code => "2552")
+ AreaCode.create(:country => germany, :name => "Ochtrup", :area_code => "2553")
+ AreaCode.create(:country => germany, :name => "Laer Kr Steinfurt", :area_code => "2554")
+ AreaCode.create(:country => germany, :name => "Schöppingen", :area_code => "2555")
+ AreaCode.create(:country => germany, :name => "Metelen", :area_code => "2556")
+ AreaCode.create(:country => germany, :name => "Wettringen Kr Steinfurt", :area_code => "2557")
+ AreaCode.create(:country => germany, :name => "Horstmar", :area_code => "2558")
+ AreaCode.create(:country => germany, :name => "Ahaus", :area_code => "2561")
+ AreaCode.create(:country => germany, :name => "Gronau Westfalen", :area_code => "2562")
+ AreaCode.create(:country => germany, :name => "Stadtlohn", :area_code => "2563")
+ AreaCode.create(:country => germany, :name => "Vreden", :area_code => "2564")
+ AreaCode.create(:country => germany, :name => "Gronau-Epe", :area_code => "2565")
+ AreaCode.create(:country => germany, :name => "Legden", :area_code => "2566")
+ AreaCode.create(:country => germany, :name => "Ahaus-Alstätte", :area_code => "2567")
+ AreaCode.create(:country => germany, :name => "Heek", :area_code => "2568")
+ AreaCode.create(:country => germany, :name => "Greven Westf", :area_code => "2571")
+ AreaCode.create(:country => germany, :name => "Emsdetten", :area_code => "2572")
+ AreaCode.create(:country => germany, :name => "Nordwalde", :area_code => "2573")
+ AreaCode.create(:country => germany, :name => "Saerbeck", :area_code => "2574")
+ AreaCode.create(:country => germany, :name => "Greven-Reckenfeld", :area_code => "2575")
+ AreaCode.create(:country => germany, :name => "Warendorf", :area_code => "2581")
+ AreaCode.create(:country => germany, :name => "Everswinkel", :area_code => "2582")
+ AreaCode.create(:country => germany, :name => "Sassenberg", :area_code => "2583")
+ AreaCode.create(:country => germany, :name => "Warendorf-Milte", :area_code => "2584")
+ AreaCode.create(:country => germany, :name => "Warendorf-Hoetmar", :area_code => "2585")
+ AreaCode.create(:country => germany, :name => "Beelen", :area_code => "2586")
+ AreaCode.create(:country => germany, :name => "Ennigerloh-Westkirchen", :area_code => "2587")
+ AreaCode.create(:country => germany, :name => "Harsewinkel-Greffen", :area_code => "2588")
+ AreaCode.create(:country => germany, :name => "Dülmen-Buldern", :area_code => "2590")
+ AreaCode.create(:country => germany, :name => "Lüdinghausen", :area_code => "2591")
+ AreaCode.create(:country => germany, :name => "Selm", :area_code => "2592")
+ AreaCode.create(:country => germany, :name => "Ascheberg Westf", :area_code => "2593")
+ AreaCode.create(:country => germany, :name => "Dülmen", :area_code => "2594")
+ AreaCode.create(:country => germany, :name => "Olfen", :area_code => "2595")
+ AreaCode.create(:country => germany, :name => "Nordkirchen", :area_code => "2596")
+ AreaCode.create(:country => germany, :name => "Senden Westf", :area_code => "2597")
+ AreaCode.create(:country => germany, :name => "Senden-Ottmarsbocholt", :area_code => "2598")
+ AreaCode.create(:country => germany, :name => "Ascheberg-Herbern", :area_code => "2599")
+ AreaCode.create(:country => germany, :name => "Nauort", :area_code => "2601")
+ AreaCode.create(:country => germany, :name => "Montabaur", :area_code => "2602")
+ AreaCode.create(:country => germany, :name => "Bad Ems", :area_code => "2603")
+ AreaCode.create(:country => germany, :name => "Nassau Lahn", :area_code => "2604")
+ AreaCode.create(:country => germany, :name => "Löf", :area_code => "2605")
+ AreaCode.create(:country => germany, :name => "Winningen Mosel", :area_code => "2606")
+ AreaCode.create(:country => germany, :name => "Kobern-Gondorf", :area_code => "2607")
+ AreaCode.create(:country => germany, :name => "Welschneudorf", :area_code => "2608")
+ AreaCode.create(:country => germany, :name => "Koblenz a Rhein", :area_code => "261")
+ AreaCode.create(:country => germany, :name => "Neuhäusel Westerw", :area_code => "2620")
+ AreaCode.create(:country => germany, :name => "Lahnstein", :area_code => "2621")
+ AreaCode.create(:country => germany, :name => "Bendorf Rhein", :area_code => "2622")
+ AreaCode.create(:country => germany, :name => "Ransbach-Baumbach", :area_code => "2623")
+ AreaCode.create(:country => germany, :name => "Höhr-Grenzhausen", :area_code => "2624")
+ AreaCode.create(:country => germany, :name => "Ochtendung", :area_code => "2625")
+ AreaCode.create(:country => germany, :name => "Selters Westerwald", :area_code => "2626")
+ AreaCode.create(:country => germany, :name => "Braubach", :area_code => "2627")
+ AreaCode.create(:country => germany, :name => "Rhens", :area_code => "2628")
+ AreaCode.create(:country => germany, :name => "Mülheim-Kärlich", :area_code => "2630")
+ AreaCode.create(:country => germany, :name => "Neuwied", :area_code => "2631")
+ AreaCode.create(:country => germany, :name => "Andernach", :area_code => "2632")
+ AreaCode.create(:country => germany, :name => "Brohl-Lützing", :area_code => "2633")
+ AreaCode.create(:country => germany, :name => "Rengsdorf", :area_code => "2634")
+ AreaCode.create(:country => germany, :name => "Rheinbrohl", :area_code => "2635")
+ AreaCode.create(:country => germany, :name => "Burgbrohl", :area_code => "2636")
+ AreaCode.create(:country => germany, :name => "Weissenthurm", :area_code => "2637")
+ AreaCode.create(:country => germany, :name => "Waldbreitbach", :area_code => "2638")
+ AreaCode.create(:country => germany, :name => "Anhausen Kr Neuwied", :area_code => "2639")
+ AreaCode.create(:country => germany, :name => "Bad Neuenahr-Ahrweiler", :area_code => "2641")
+ AreaCode.create(:country => germany, :name => "Remagen", :area_code => "2642")
+ AreaCode.create(:country => germany, :name => "Altenahr", :area_code => "2643")
+ AreaCode.create(:country => germany, :name => "Linz am Rhein", :area_code => "2644")
+ AreaCode.create(:country => germany, :name => "Vettelschoss", :area_code => "2645")
+ AreaCode.create(:country => germany, :name => "Königsfeld Eifel", :area_code => "2646")
+ AreaCode.create(:country => germany, :name => "Kesseling", :area_code => "2647")
+ AreaCode.create(:country => germany, :name => "Mayen", :area_code => "2651")
+ AreaCode.create(:country => germany, :name => "Mendig", :area_code => "2652")
+ AreaCode.create(:country => germany, :name => "Kaisersesch", :area_code => "2653")
+ AreaCode.create(:country => germany, :name => "Polch", :area_code => "2654")
+ AreaCode.create(:country => germany, :name => "Weibern", :area_code => "2655")
+ AreaCode.create(:country => germany, :name => "Virneburg", :area_code => "2656")
+ AreaCode.create(:country => germany, :name => "Uersfeld", :area_code => "2657")
+ AreaCode.create(:country => germany, :name => "Bad Marienberg Westerwald", :area_code => "2661")
+ AreaCode.create(:country => germany, :name => "Hachenburg", :area_code => "2662")
+ AreaCode.create(:country => germany, :name => "Westerburg Westerw", :area_code => "2663")
+ AreaCode.create(:country => germany, :name => "Rennerod", :area_code => "2664")
+ AreaCode.create(:country => germany, :name => "Freilingen Westerw", :area_code => "2666")
+ AreaCode.create(:country => germany, :name => "Stein-Neukirch", :area_code => "2667")
+ AreaCode.create(:country => germany, :name => "Cochem", :area_code => "2671")
+ AreaCode.create(:country => germany, :name => "Treis-Karden", :area_code => "2672")
+ AreaCode.create(:country => germany, :name => "Ellenz-Poltersdorf", :area_code => "2673")
+ AreaCode.create(:country => germany, :name => "Bad Bertrich", :area_code => "2674")
+ AreaCode.create(:country => germany, :name => "Ediger-Eller", :area_code => "2675")
+ AreaCode.create(:country => germany, :name => "Ulmen", :area_code => "2676")
+ AreaCode.create(:country => germany, :name => "Lutzerath", :area_code => "2677")
+ AreaCode.create(:country => germany, :name => "Büchel b Cochem", :area_code => "2678")
+ AreaCode.create(:country => germany, :name => "Mündersbach", :area_code => "2680")
+ AreaCode.create(:country => germany, :name => "Altenkirchen Westerwald", :area_code => "2681")
+ AreaCode.create(:country => germany, :name => "Hamm Sieg", :area_code => "2682")
+ AreaCode.create(:country => germany, :name => "Asbach Westerw", :area_code => "2683")
+ AreaCode.create(:country => germany, :name => "Puderbach Westerw", :area_code => "2684")
+ AreaCode.create(:country => germany, :name => "Flammersfeld", :area_code => "2685")
+ AreaCode.create(:country => germany, :name => "Weyerbusch", :area_code => "2686")
+ AreaCode.create(:country => germany, :name => "Horhausen Westerwald", :area_code => "2687")
+ AreaCode.create(:country => germany, :name => "Kroppach", :area_code => "2688")
+ AreaCode.create(:country => germany, :name => "Dierdorf", :area_code => "2689")
+ AreaCode.create(:country => germany, :name => "Adenau", :area_code => "2691")
+ AreaCode.create(:country => germany, :name => "Kelberg", :area_code => "2692")
+ AreaCode.create(:country => germany, :name => "Antweiler", :area_code => "2693")
+ AreaCode.create(:country => germany, :name => "Wershofen", :area_code => "2694")
+ AreaCode.create(:country => germany, :name => "Insul", :area_code => "2695")
+ AreaCode.create(:country => germany, :name => "Nohn Eifel", :area_code => "2696")
+ AreaCode.create(:country => germany, :name => "Blankenheim-Ahrhütte", :area_code => "2697")
+ AreaCode.create(:country => germany, :name => "Siegen", :area_code => "271")
+ AreaCode.create(:country => germany, :name => "Lennestadt", :area_code => "2721")
+ AreaCode.create(:country => germany, :name => "Attendorn", :area_code => "2722")
+ AreaCode.create(:country => germany, :name => "Kirchhundem", :area_code => "2723")
+ AreaCode.create(:country => germany, :name => "Finnentrop-Serkenrode", :area_code => "2724")
+ AreaCode.create(:country => germany, :name => "Lennestadt-Oedingen", :area_code => "2725")
+ AreaCode.create(:country => germany, :name => "Kreuztal", :area_code => "2732")
+ AreaCode.create(:country => germany, :name => "Hilchenbach", :area_code => "2733")
+ AreaCode.create(:country => germany, :name => "Freudenberg Westf", :area_code => "2734")
+ AreaCode.create(:country => germany, :name => "Neunkirchen Siegerl", :area_code => "2735")
+ AreaCode.create(:country => germany, :name => "Burbach Siegerl", :area_code => "2736")
+ AreaCode.create(:country => germany, :name => "Netphen-Deuz", :area_code => "2737")
+ AreaCode.create(:country => germany, :name => "Netphen", :area_code => "2738")
+ AreaCode.create(:country => germany, :name => "Wilnsdorf", :area_code => "2739")
+ AreaCode.create(:country => germany, :name => "Betzdorf", :area_code => "2741")
+ AreaCode.create(:country => germany, :name => "Wissen", :area_code => "2742")
+ AreaCode.create(:country => germany, :name => "Daaden", :area_code => "2743")
+ AreaCode.create(:country => germany, :name => "Herdorf", :area_code => "2744")
+ AreaCode.create(:country => germany, :name => "Brachbach Sieg", :area_code => "2745")
+ AreaCode.create(:country => germany, :name => "Molzhain", :area_code => "2747")
+ AreaCode.create(:country => germany, :name => "Diedenshausen", :area_code => "2750")
+ AreaCode.create(:country => germany, :name => "Bad Berleburg", :area_code => "2751")
+ AreaCode.create(:country => germany, :name => "Bad Laasphe", :area_code => "2752")
+ AreaCode.create(:country => germany, :name => "Erndtebrück", :area_code => "2753")
+ AreaCode.create(:country => germany, :name => "Bad Laasphe-Feudingen", :area_code => "2754")
+ AreaCode.create(:country => germany, :name => "Bad Berleburg-Schwarzenau", :area_code => "2755")
+ AreaCode.create(:country => germany, :name => "Bad Berleburg-Girkhausen", :area_code => "2758")
+ AreaCode.create(:country => germany, :name => "Bad Berleburg-Aue", :area_code => "2759")
+ AreaCode.create(:country => germany, :name => "Olpe Biggesee", :area_code => "2761")
+ AreaCode.create(:country => germany, :name => "Wenden Südsauerland", :area_code => "2762")
+ AreaCode.create(:country => germany, :name => "Drolshagen-Bleche", :area_code => "2763")
+ AreaCode.create(:country => germany, :name => "Welschen Ennest", :area_code => "2764")
+ AreaCode.create(:country => germany, :name => "Eschenburg", :area_code => "2770")
+ AreaCode.create(:country => germany, :name => "Dillenburg", :area_code => "2771")
+ AreaCode.create(:country => germany, :name => "Herborn Hess", :area_code => "2772")
+ AreaCode.create(:country => germany, :name => "Haiger", :area_code => "2773")
+ AreaCode.create(:country => germany, :name => "Dietzhölztal", :area_code => "2774")
+ AreaCode.create(:country => germany, :name => "Driedorf", :area_code => "2775")
+ AreaCode.create(:country => germany, :name => "Bad Endbach-Hartenrod", :area_code => "2776")
+ AreaCode.create(:country => germany, :name => "Breitscheid Hess", :area_code => "2777")
+ AreaCode.create(:country => germany, :name => "Siegbach", :area_code => "2778")
+ AreaCode.create(:country => germany, :name => "Greifenstein-Beilstein", :area_code => "2779")
+ AreaCode.create(:country => germany, :name => "Xanten", :area_code => "2801")
+ AreaCode.create(:country => germany, :name => "Alpen", :area_code => "2802")
+ AreaCode.create(:country => germany, :name => "Wesel-Büderich", :area_code => "2803")
+ AreaCode.create(:country => germany, :name => "Xanten-Marienbaum", :area_code => "2804")
+ AreaCode.create(:country => germany, :name => "Wesel", :area_code => "281")
+ AreaCode.create(:country => germany, :name => "Kleve Niederrhein", :area_code => "2821")
+ AreaCode.create(:country => germany, :name => "Emmerich", :area_code => "2822")
+ AreaCode.create(:country => germany, :name => "Goch", :area_code => "2823")
+ AreaCode.create(:country => germany, :name => "Kalkar", :area_code => "2824")
+ AreaCode.create(:country => germany, :name => "Uedem", :area_code => "2825")
+ AreaCode.create(:country => germany, :name => "Kranenburg Niederrhein", :area_code => "2826")
+ AreaCode.create(:country => germany, :name => "Goch-Hassum", :area_code => "2827")
+ AreaCode.create(:country => germany, :name => "Emmerich-Elten", :area_code => "2828")
+ AreaCode.create(:country => germany, :name => "Geldern", :area_code => "2831")
+ AreaCode.create(:country => germany, :name => "Kevelaer", :area_code => "2832")
+ AreaCode.create(:country => germany, :name => "Kerken", :area_code => "2833")
+ AreaCode.create(:country => germany, :name => "Straelen", :area_code => "2834")
+ AreaCode.create(:country => germany, :name => "Issum", :area_code => "2835")
+ AreaCode.create(:country => germany, :name => "Wachtendonk", :area_code => "2836")
+ AreaCode.create(:country => germany, :name => "Weeze", :area_code => "2837")
+ AreaCode.create(:country => germany, :name => "Sonsbeck", :area_code => "2838")
+ AreaCode.create(:country => germany, :name => "Straelen-Herongen", :area_code => "2839")
+ AreaCode.create(:country => germany, :name => "Moers", :area_code => "2841")
+ AreaCode.create(:country => germany, :name => "Kamp-Lintfort", :area_code => "2842")
+ AreaCode.create(:country => germany, :name => "Rheinberg", :area_code => "2843")
+ AreaCode.create(:country => germany, :name => "Rheinberg-Orsoy", :area_code => "2844")
+ AreaCode.create(:country => germany, :name => "Neukirchen-Vluyn", :area_code => "2845")
+ AreaCode.create(:country => germany, :name => "Rees-Haldern", :area_code => "2850")
+ AreaCode.create(:country => germany, :name => "Rees", :area_code => "2851")
+ AreaCode.create(:country => germany, :name => "Hamminkeln", :area_code => "2852")
+ AreaCode.create(:country => germany, :name => "Schermbeck", :area_code => "2853")
+ AreaCode.create(:country => germany, :name => "Voerde Niederrhein", :area_code => "2855")
+ AreaCode.create(:country => germany, :name => "Hamminkeln-Brünen", :area_code => "2856")
+ AreaCode.create(:country => germany, :name => "Rees-Mehr", :area_code => "2857")
+ AreaCode.create(:country => germany, :name => "Hünxe", :area_code => "2858")
+ AreaCode.create(:country => germany, :name => "Wesel-Bislich", :area_code => "2859")
+ AreaCode.create(:country => germany, :name => "Borken Westf", :area_code => "2861")
+ AreaCode.create(:country => germany, :name => "Südlohn", :area_code => "2862")
+ AreaCode.create(:country => germany, :name => "Velen", :area_code => "2863")
+ AreaCode.create(:country => germany, :name => "Reken", :area_code => "2864")
+ AreaCode.create(:country => germany, :name => "Raesfeld", :area_code => "2865")
+ AreaCode.create(:country => germany, :name => "Dorsten-Rhade", :area_code => "2866")
+ AreaCode.create(:country => germany, :name => "Heiden Kr Borken", :area_code => "2867")
+ AreaCode.create(:country => germany, :name => "Bocholt", :area_code => "2871")
+ AreaCode.create(:country => germany, :name => "Rhede Westf", :area_code => "2872")
+ AreaCode.create(:country => germany, :name => "Isselburg-Werth", :area_code => "2873")
+ AreaCode.create(:country => germany, :name => "Isselburg", :area_code => "2874")
+ AreaCode.create(:country => germany, :name => "Warstein", :area_code => "2902")
+ AreaCode.create(:country => germany, :name => "Meschede-Freienohl", :area_code => "2903")
+ AreaCode.create(:country => germany, :name => "Bestwig", :area_code => "2904")
+ AreaCode.create(:country => germany, :name => "Bestwig-Ramsbeck", :area_code => "2905")
+ AreaCode.create(:country => germany, :name => "Meschede", :area_code => "291")
+ AreaCode.create(:country => germany, :name => "Soest", :area_code => "2921")
+ AreaCode.create(:country => germany, :name => "Werl", :area_code => "2922")
+ AreaCode.create(:country => germany, :name => "Lippetal-Herzfeld", :area_code => "2923")
+ AreaCode.create(:country => germany, :name => "Möhnesee", :area_code => "2924")
+ AreaCode.create(:country => germany, :name => "Warstein-Allagen", :area_code => "2925")
+ AreaCode.create(:country => germany, :name => "Neuengeseke", :area_code => "2927")
+ AreaCode.create(:country => germany, :name => "Soest-Ostönnen", :area_code => "2928")
+ AreaCode.create(:country => germany, :name => "Arnsberg", :area_code => "2931")
+ AreaCode.create(:country => germany, :name => "Neheim-Hüsten", :area_code => "2932")
+ AreaCode.create(:country => germany, :name => "Sundern Sauerland", :area_code => "2933")
+ AreaCode.create(:country => germany, :name => "Sundern-Altenhellefeld", :area_code => "2934")
+ AreaCode.create(:country => germany, :name => "Sundern-Hachen", :area_code => "2935")
+ AreaCode.create(:country => germany, :name => "Arnsberg-Oeventrop", :area_code => "2937")
+ AreaCode.create(:country => germany, :name => "Ense", :area_code => "2938")
+ AreaCode.create(:country => germany, :name => "Lippstadt", :area_code => "2941")
+ AreaCode.create(:country => germany, :name => "Geseke", :area_code => "2942")
+ AreaCode.create(:country => germany, :name => "Erwitte", :area_code => "2943")
+ AreaCode.create(:country => germany, :name => "Rietberg-Mastholte", :area_code => "2944")
+ AreaCode.create(:country => germany, :name => "Lippstadt-Benninghausen", :area_code => "2945")
+ AreaCode.create(:country => germany, :name => "Anröchte", :area_code => "2947")
+ AreaCode.create(:country => germany, :name => "Lippstadt-Rebbeke", :area_code => "2948")
+ AreaCode.create(:country => germany, :name => "Büren", :area_code => "2951")
+ AreaCode.create(:country => germany, :name => "Rüthen", :area_code => "2952")
+ AreaCode.create(:country => germany, :name => "Wünnenberg", :area_code => "2953")
+ AreaCode.create(:country => germany, :name => "Rüthen-Oestereiden", :area_code => "2954")
+ AreaCode.create(:country => germany, :name => "Büren-Wewelsburg", :area_code => "2955")
+ AreaCode.create(:country => germany, :name => "Wünnenberg-Haaren", :area_code => "2957")
+ AreaCode.create(:country => germany, :name => "Büren-Harth", :area_code => "2958")
+ AreaCode.create(:country => germany, :name => "Brilon", :area_code => "2961")
+ AreaCode.create(:country => germany, :name => "Olsberg", :area_code => "2962")
+ AreaCode.create(:country => germany, :name => "Brilon-Messinghausen", :area_code => "2963")
+ AreaCode.create(:country => germany, :name => "Brilon-Alme", :area_code => "2964")
+ AreaCode.create(:country => germany, :name => "Schmallenberg-Dorlar", :area_code => "2971")
+ AreaCode.create(:country => germany, :name => "Schmallenberg", :area_code => "2972")
+ AreaCode.create(:country => germany, :name => "Eslohe Sauerland", :area_code => "2973")
+ AreaCode.create(:country => germany, :name => "Schmallenberg-Fredeburg", :area_code => "2974")
+ AreaCode.create(:country => germany, :name => "Schmallenberg-Oberkirchen", :area_code => "2975")
+ AreaCode.create(:country => germany, :name => "Schmallenberg-Bödefeld", :area_code => "2977")
+ AreaCode.create(:country => germany, :name => "Winterberg Westf", :area_code => "2981")
+ AreaCode.create(:country => germany, :name => "Medebach", :area_code => "2982")
+ AreaCode.create(:country => germany, :name => "Winterberg-Siedlinghausen", :area_code => "2983")
+ AreaCode.create(:country => germany, :name => "Hallenberg", :area_code => "2984")
+ AreaCode.create(:country => germany, :name => "Winterberg-Niedersfeld", :area_code => "2985")
+ AreaCode.create(:country => germany, :name => "Marsberg-Bredelar", :area_code => "2991")
+ AreaCode.create(:country => germany, :name => "Marsberg", :area_code => "2992")
+ AreaCode.create(:country => germany, :name => "Marsberg-Canstein", :area_code => "2993")
+ AreaCode.create(:country => germany, :name => "Marsberg-Westheim", :area_code => "2994")
+ AreaCode.create(:country => germany, :name => "Berlin", :area_code => "30")
+ AreaCode.create(:country => germany, :name => "Oranienburg", :area_code => "3301")
+ AreaCode.create(:country => germany, :name => "Hennigsdorf", :area_code => "3302")
+ AreaCode.create(:country => germany, :name => "Birkenwerder", :area_code => "3303")
+ AreaCode.create(:country => germany, :name => "Velten", :area_code => "3304")
+ AreaCode.create(:country => germany, :name => "Nassenheide", :area_code => "33051")
+ AreaCode.create(:country => germany, :name => "Zehlendorf Kr Oberhavel", :area_code => "33053")
+ AreaCode.create(:country => germany, :name => "Liebenwalde", :area_code => "33054")
+ AreaCode.create(:country => germany, :name => "Kremmen", :area_code => "33055")
+ AreaCode.create(:country => germany, :name => "Mühlenbeck Kr Oberhavel", :area_code => "33056")
+ AreaCode.create(:country => germany, :name => "Gransee", :area_code => "3306")
+ AreaCode.create(:country => germany, :name => "Zehdenick", :area_code => "3307")
+ AreaCode.create(:country => germany, :name => "Marienthal Kr Oberhavel", :area_code => "33080")
+ AreaCode.create(:country => germany, :name => "Menz Kr Oberhavel", :area_code => "33082")
+ AreaCode.create(:country => germany, :name => "Schulzendorf Kr Oberhavel", :area_code => "33083")
+ AreaCode.create(:country => germany, :name => "Gutengermendorf", :area_code => "33084")
+ AreaCode.create(:country => germany, :name => "Seilershof", :area_code => "33085")
+ AreaCode.create(:country => germany, :name => "Grieben Kr Oberhavel", :area_code => "33086")
+ AreaCode.create(:country => germany, :name => "Bredereiche", :area_code => "33087")
+ AreaCode.create(:country => germany, :name => "Falkenthal", :area_code => "33088")
+ AreaCode.create(:country => germany, :name => "Himmelpfort", :area_code => "33089")
+ AreaCode.create(:country => germany, :name => "Fürstenberg Havel", :area_code => "33093")
+ AreaCode.create(:country => germany, :name => "Löwenberg", :area_code => "33094")
+ AreaCode.create(:country => germany, :name => "Potsdam", :area_code => "331")
+ AreaCode.create(:country => germany, :name => "Bergholz-Rehbrücke", :area_code => "33200")
+ AreaCode.create(:country => germany, :name => "Gross Glienicke", :area_code => "33201")
+ AreaCode.create(:country => germany, :name => "Töplitz", :area_code => "33202")
+ AreaCode.create(:country => germany, :name => "Kleinmachnow", :area_code => "33203")
+ AreaCode.create(:country => germany, :name => "Beelitz Mark", :area_code => "33204")
+ AreaCode.create(:country => germany, :name => "Michendorf", :area_code => "33205")
+ AreaCode.create(:country => germany, :name => "Fichtenwalde", :area_code => "33206")
+ AreaCode.create(:country => germany, :name => "Gross Kreutz", :area_code => "33207")
+ AreaCode.create(:country => germany, :name => "Fahrland", :area_code => "33208")
+ AreaCode.create(:country => germany, :name => "Caputh", :area_code => "33209")
+ AreaCode.create(:country => germany, :name => "Nauen Brandenb", :area_code => "3321")
+ AreaCode.create(:country => germany, :name => "Falkensee", :area_code => "3322")
+ AreaCode.create(:country => germany, :name => "Börnicke Kr Havelland", :area_code => "33230")
+ AreaCode.create(:country => germany, :name => "Pausin", :area_code => "33231")
+ AreaCode.create(:country => germany, :name => "Brieselang", :area_code => "33232")
+ AreaCode.create(:country => germany, :name => "Ketzin", :area_code => "33233")
+ AreaCode.create(:country => germany, :name => "Wustermark", :area_code => "33234")
+ AreaCode.create(:country => germany, :name => "Friesack", :area_code => "33235")
+ AreaCode.create(:country => germany, :name => "Paulinenaue", :area_code => "33237")
+ AreaCode.create(:country => germany, :name => "Senzke", :area_code => "33238")
+ AreaCode.create(:country => germany, :name => "Gross Behnitz", :area_code => "33239")
+ AreaCode.create(:country => germany, :name => "Werder Havel", :area_code => "3327")
+ AreaCode.create(:country => germany, :name => "Teltow", :area_code => "3328")
+ AreaCode.create(:country => germany, :name => "Stahnsdorf", :area_code => "3329")
+ AreaCode.create(:country => germany, :name => "Angermünde", :area_code => "3331")
+ AreaCode.create(:country => germany, :name => "Schwedt/Oder", :area_code => "3332")
+ AreaCode.create(:country => germany, :name => "Casekow", :area_code => "33331")
+ AreaCode.create(:country => germany, :name => "Gartz Oder", :area_code => "33332")
+ AreaCode.create(:country => germany, :name => "Tantow", :area_code => "33333")
+ AreaCode.create(:country => germany, :name => "Greiffenberg", :area_code => "33334")
+ AreaCode.create(:country => germany, :name => "Pinnow Kr Uckermark", :area_code => "33335")
+ AreaCode.create(:country => germany, :name => "Passow Kr Uckermark", :area_code => "33336")
+ AreaCode.create(:country => germany, :name => "Altkünkendorf", :area_code => "33337")
+ AreaCode.create(:country => germany, :name => "Stolpe/Oder", :area_code => "33338")
+ AreaCode.create(:country => germany, :name => "Eberswalde", :area_code => "3334")
+ AreaCode.create(:country => germany, :name => "Finowfurt", :area_code => "3335")
+ AreaCode.create(:country => germany, :name => "Joachimsthal", :area_code => "33361")
+ AreaCode.create(:country => germany, :name => "Liepe Kr Barnim", :area_code => "33362")
+ AreaCode.create(:country => germany, :name => "Altenhof Kr Barnim", :area_code => "33363")
+ AreaCode.create(:country => germany, :name => "Gross Ziethen Kr Barnim", :area_code => "33364")
+ AreaCode.create(:country => germany, :name => "Lüdersdorf Kr Barnim", :area_code => "33365")
+ AreaCode.create(:country => germany, :name => "Chorin", :area_code => "33366")
+ AreaCode.create(:country => germany, :name => "Friedrichswalde Brandenb", :area_code => "33367")
+ AreaCode.create(:country => germany, :name => "Hohensaaten", :area_code => "33368")
+ AreaCode.create(:country => germany, :name => "Oderberg", :area_code => "33369")
+ AreaCode.create(:country => germany, :name => "Biesenthal Brandenb", :area_code => "3337")
+ AreaCode.create(:country => germany, :name => "Bernau Brandenb", :area_code => "3338")
+ AreaCode.create(:country => germany, :name => "Gross Schönebeck Kr Barnim", :area_code => "33393")
+ AreaCode.create(:country => germany, :name => "Blumberg Kr Barnim", :area_code => "33394")
+ AreaCode.create(:country => germany, :name => "Zerpenschleuse", :area_code => "33395")
+ AreaCode.create(:country => germany, :name => "Klosterfelde", :area_code => "33396")
+ AreaCode.create(:country => germany, :name => "Wandlitz", :area_code => "33397")
+ AreaCode.create(:country => germany, :name => "Werneuchen", :area_code => "33398")
+ AreaCode.create(:country => germany, :name => "Strausberg", :area_code => "3341")
+ AreaCode.create(:country => germany, :name => "Neuenhagen b Berlin", :area_code => "3342")
+ AreaCode.create(:country => germany, :name => "Müncheberg", :area_code => "33432")
+ AreaCode.create(:country => germany, :name => "Buckow Märk Schweiz", :area_code => "33433")
+ AreaCode.create(:country => germany, :name => "Herzfelde b Strausberg", :area_code => "33434")
+ AreaCode.create(:country => germany, :name => "Rehfelde", :area_code => "33435")
+ AreaCode.create(:country => germany, :name => "Prötzel", :area_code => "33436")
+ AreaCode.create(:country => germany, :name => "Reichenberg b Strausberg", :area_code => "33437")
+ AreaCode.create(:country => germany, :name => "Altlandsberg", :area_code => "33438")
+ AreaCode.create(:country => germany, :name => "Fredersdorf-Vogelsdorf", :area_code => "33439")
+ AreaCode.create(:country => germany, :name => "Bad Freienwalde", :area_code => "3344")
+ AreaCode.create(:country => germany, :name => "Heckelberg", :area_code => "33451")
+ AreaCode.create(:country => germany, :name => "Neulewin", :area_code => "33452")
+ AreaCode.create(:country => germany, :name => "Wölsickendorf/Wollenberg", :area_code => "33454")
+ AreaCode.create(:country => germany, :name => "Wriezen", :area_code => "33456")
+ AreaCode.create(:country => germany, :name => "Altreetz", :area_code => "33457")
+ AreaCode.create(:country => germany, :name => "Falkenberg Mark", :area_code => "33458")
+ AreaCode.create(:country => germany, :name => "Seelow", :area_code => "3346")
+ AreaCode.create(:country => germany, :name => "Lietzen", :area_code => "33470")
+ AreaCode.create(:country => germany, :name => "Golzow b Seelow", :area_code => "33472")
+ AreaCode.create(:country => germany, :name => "Zechin", :area_code => "33473")
+ AreaCode.create(:country => germany, :name => "Neutrebbin", :area_code => "33474")
+ AreaCode.create(:country => germany, :name => "Letschin", :area_code => "33475")
+ AreaCode.create(:country => germany, :name => "Neuhardenberg", :area_code => "33476")
+ AreaCode.create(:country => germany, :name => "Trebnitz b Müncheberg", :area_code => "33477")
+ AreaCode.create(:country => germany, :name => "Gross Neuendorf", :area_code => "33478")
+ AreaCode.create(:country => germany, :name => "Küstrin-Kietz", :area_code => "33479")
+ AreaCode.create(:country => germany, :name => "Frankfurt (Oder)", :area_code => "335")
+ AreaCode.create(:country => germany, :name => "Podelzig", :area_code => "33601")
+ AreaCode.create(:country => germany, :name => "Alt Zeschdorf", :area_code => "33602")
+ AreaCode.create(:country => germany, :name => "Falkenhagen b Seelow", :area_code => "33603")
+ AreaCode.create(:country => germany, :name => "Lebus", :area_code => "33604")
+ AreaCode.create(:country => germany, :name => "Boossen", :area_code => "33605")
+ AreaCode.create(:country => germany, :name => "Müllrose", :area_code => "33606")
+ AreaCode.create(:country => germany, :name => "Briesen Mark", :area_code => "33607")
+ AreaCode.create(:country => germany, :name => "Jacobsdorf Mark", :area_code => "33608")
+ AreaCode.create(:country => germany, :name => "Brieskow-Finkenheerd", :area_code => "33609")
+ AreaCode.create(:country => germany, :name => "Fürstenwalde Spree", :area_code => "3361")
+ AreaCode.create(:country => germany, :name => "Erkner", :area_code => "3362")
+ AreaCode.create(:country => germany, :name => "Bad Saarow-Pieskow", :area_code => "33631")
+ AreaCode.create(:country => germany, :name => "Hangelsberg", :area_code => "33632")
+ AreaCode.create(:country => germany, :name => "Spreenhagen", :area_code => "33633")
+ AreaCode.create(:country => germany, :name => "Berkenbrück Kr Oder-Spree", :area_code => "33634")
+ AreaCode.create(:country => germany, :name => "Arensdorf Kr Oder-Spree", :area_code => "33635")
+ AreaCode.create(:country => germany, :name => "Steinhöfel Kr Oder-Spree", :area_code => "33636")
+ AreaCode.create(:country => germany, :name => "Beerfelde", :area_code => "33637")
+ AreaCode.create(:country => germany, :name => "Rüdersdorf b Berlin", :area_code => "33638")
+ AreaCode.create(:country => germany, :name => "Eisenhüttenstadt", :area_code => "3364")
+ AreaCode.create(:country => germany, :name => "Neuzelle", :area_code => "33652")
+ AreaCode.create(:country => germany, :name => "Ziltendorf", :area_code => "33653")
+ AreaCode.create(:country => germany, :name => "Fünfeichen", :area_code => "33654")
+ AreaCode.create(:country => germany, :name => "Grunow Kr Oder-Spree", :area_code => "33655")
+ AreaCode.create(:country => germany, :name => "Bahro", :area_code => "33656")
+ AreaCode.create(:country => germany, :name => "Steinsdorf Brandenb", :area_code => "33657")
+ AreaCode.create(:country => germany, :name => "Beeskow", :area_code => "3366")
+ AreaCode.create(:country => germany, :name => "Lieberose", :area_code => "33671")
+ AreaCode.create(:country => germany, :name => "Pfaffendorf b Beeskow", :area_code => "33672")
+ AreaCode.create(:country => germany, :name => "Weichensdorf", :area_code => "33673")
+ AreaCode.create(:country => germany, :name => "Trebatsch", :area_code => "33674")
+ AreaCode.create(:country => germany, :name => "Tauche", :area_code => "33675")
+ AreaCode.create(:country => germany, :name => "Friedland b Beeskow", :area_code => "33676")
+ AreaCode.create(:country => germany, :name => "Glienicke b Beeskow", :area_code => "33677")
+ AreaCode.create(:country => germany, :name => "Storkow Mark", :area_code => "33678")
+ AreaCode.create(:country => germany, :name => "Wendisch Rietz", :area_code => "33679")
+ AreaCode.create(:country => germany, :name => "Grossbeeren", :area_code => "33701")
+ AreaCode.create(:country => germany, :name => "Wünsdorf", :area_code => "33702")
+ AreaCode.create(:country => germany, :name => "Sperenberg", :area_code => "33703")
+ AreaCode.create(:country => germany, :name => "Baruth Mark", :area_code => "33704")
+ AreaCode.create(:country => germany, :name => "Rangsdorf", :area_code => "33708")
+ AreaCode.create(:country => germany, :name => "Luckenwalde", :area_code => "3371")
+ AreaCode.create(:country => germany, :name => "Jüterbog", :area_code => "3372")
+ AreaCode.create(:country => germany, :name => "Trebbin", :area_code => "33731")
+ AreaCode.create(:country => germany, :name => "Hennickendorf b Luckenwalde", :area_code => "33732")
+ AreaCode.create(:country => germany, :name => "Stülpe", :area_code => "33733")
+ AreaCode.create(:country => germany, :name => "Felgentreu", :area_code => "33734")
+ AreaCode.create(:country => germany, :name => "Niedergörsdorf", :area_code => "33741")
+ AreaCode.create(:country => germany, :name => "Oehna Brandenb", :area_code => "33742")
+ AreaCode.create(:country => germany, :name => "Blönsdorf", :area_code => "33743")
+ AreaCode.create(:country => germany, :name => "Hohenseefeld", :area_code => "33744")
+ AreaCode.create(:country => germany, :name => "Petkus", :area_code => "33745")
+ AreaCode.create(:country => germany, :name => "Werbig b Jüterbog", :area_code => "33746")
+ AreaCode.create(:country => germany, :name => "Marzahna", :area_code => "33747")
+ AreaCode.create(:country => germany, :name => "Treuenbrietzen", :area_code => "33748")
+ AreaCode.create(:country => germany, :name => "Königs Wusterhausen", :area_code => "3375")
+ AreaCode.create(:country => germany, :name => "Münchehofe Kr Dahme-Spreewald", :area_code => "33760")
+ AreaCode.create(:country => germany, :name => "Zeuthen", :area_code => "33762")
+ AreaCode.create(:country => germany, :name => "Bestensee", :area_code => "33763")
+ AreaCode.create(:country => germany, :name => "Mittenwalde Mark", :area_code => "33764")
+ AreaCode.create(:country => germany, :name => "Märkisch Buchholz", :area_code => "33765")
+ AreaCode.create(:country => germany, :name => "Teupitz", :area_code => "33766")
+ AreaCode.create(:country => germany, :name => "Friedersdorf b Berlin", :area_code => "33767")
+ AreaCode.create(:country => germany, :name => "Prieros", :area_code => "33768")
+ AreaCode.create(:country => germany, :name => "Töpchin", :area_code => "33769")
+ AreaCode.create(:country => germany, :name => "Zossen Brandenb", :area_code => "3377")
+ AreaCode.create(:country => germany, :name => "Ludwigsfelde", :area_code => "3378")
+ AreaCode.create(:country => germany, :name => "Mahlow", :area_code => "3379")
+ AreaCode.create(:country => germany, :name => "Brandenburg an der Havel", :area_code => "3381")
+ AreaCode.create(:country => germany, :name => "Lehnin", :area_code => "3382")
+ AreaCode.create(:country => germany, :name => "Ziesar", :area_code => "33830")
+ AreaCode.create(:country => germany, :name => "Weseram", :area_code => "33831")
+ AreaCode.create(:country => germany, :name => "Rogäsen", :area_code => "33832")
+ AreaCode.create(:country => germany, :name => "Wollin b Brandenburg", :area_code => "33833")
+ AreaCode.create(:country => germany, :name => "Pritzerbe", :area_code => "33834")
+ AreaCode.create(:country => germany, :name => "Golzow b Brandenburg", :area_code => "33835")
+ AreaCode.create(:country => germany, :name => "Butzow b Brandenburg", :area_code => "33836")
+ AreaCode.create(:country => germany, :name => "Brielow", :area_code => "33837")
+ AreaCode.create(:country => germany, :name => "Päwesin", :area_code => "33838")
+ AreaCode.create(:country => germany, :name => "Wusterwitz", :area_code => "33839")
+ AreaCode.create(:country => germany, :name => "Belzig", :area_code => "33841")
+ AreaCode.create(:country => germany, :name => "Niemegk", :area_code => "33843")
+ AreaCode.create(:country => germany, :name => "Brück Brandenb", :area_code => "33844")
+ AreaCode.create(:country => germany, :name => "Borkheide", :area_code => "33845")
+ AreaCode.create(:country => germany, :name => "Dippmannsdorf", :area_code => "33846")
+ AreaCode.create(:country => germany, :name => "Görzke", :area_code => "33847")
+ AreaCode.create(:country => germany, :name => "Raben", :area_code => "33848")
+ AreaCode.create(:country => germany, :name => "Wiesenburg Mark", :area_code => "33849")
+ AreaCode.create(:country => germany, :name => "Rathenow", :area_code => "3385")
+ AreaCode.create(:country => germany, :name => "Premnitz", :area_code => "3386")
+ AreaCode.create(:country => germany, :name => "Zollchow b Rathenow", :area_code => "33870")
+ AreaCode.create(:country => germany, :name => "Hohennauen", :area_code => "33872")
+ AreaCode.create(:country => germany, :name => "Grosswudicke", :area_code => "33873")
+ AreaCode.create(:country => germany, :name => "Stechow Brandenb", :area_code => "33874")
+ AreaCode.create(:country => germany, :name => "Rhinow", :area_code => "33875")
+ AreaCode.create(:country => germany, :name => "Buschow", :area_code => "33876")
+ AreaCode.create(:country => germany, :name => "Nitzahn", :area_code => "33877")
+ AreaCode.create(:country => germany, :name => "Nennhausen", :area_code => "33878")
+ AreaCode.create(:country => germany, :name => "Neuruppin", :area_code => "3391")
+ AreaCode.create(:country => germany, :name => "Walsleben b Neuruppin", :area_code => "33920")
+ AreaCode.create(:country => germany, :name => "Zechlinerhütte", :area_code => "33921")
+ AreaCode.create(:country => germany, :name => "Karwesee", :area_code => "33922")
+ AreaCode.create(:country => germany, :name => "Flecken Zechlin", :area_code => "33923")
+ AreaCode.create(:country => germany, :name => "Rägelin", :area_code => "33924")
+ AreaCode.create(:country => germany, :name => "Wustrau-Altfriesack", :area_code => "33925")
+ AreaCode.create(:country => germany, :name => "Herzberg Mark", :area_code => "33926")
+ AreaCode.create(:country => germany, :name => "Wildberg Brandenb", :area_code => "33928")
+ AreaCode.create(:country => germany, :name => "Gühlen-Glienicke", :area_code => "33929")
+ AreaCode.create(:country => germany, :name => "Rheinsberg Mark", :area_code => "33931")
+ AreaCode.create(:country => germany, :name => "Fehrbellin", :area_code => "33932")
+ AreaCode.create(:country => germany, :name => "Lindow Mark", :area_code => "33933")
+ AreaCode.create(:country => germany, :name => "Wittstock Dosse", :area_code => "3394")
+ AreaCode.create(:country => germany, :name => "Pritzwalk", :area_code => "3395")
+ AreaCode.create(:country => germany, :name => "Heiligengrabe", :area_code => "33962")
+ AreaCode.create(:country => germany, :name => "Wulfersdorf b Wittstock", :area_code => "33963")
+ AreaCode.create(:country => germany, :name => "Fretzdorf", :area_code => "33964")
+ AreaCode.create(:country => germany, :name => "Herzsprung b Wittstock", :area_code => "33965")
+ AreaCode.create(:country => germany, :name => "Dranse", :area_code => "33966")
+ AreaCode.create(:country => germany, :name => "Freyenstein", :area_code => "33967")
+ AreaCode.create(:country => germany, :name => "Meyenburg Kr Prignitz", :area_code => "33968")
+ AreaCode.create(:country => germany, :name => "Stepenitz", :area_code => "33969")
+ AreaCode.create(:country => germany, :name => "Neustadt Dosse", :area_code => "33970")
+ AreaCode.create(:country => germany, :name => "Kyritz Brandenb", :area_code => "33971")
+ AreaCode.create(:country => germany, :name => "Breddin", :area_code => "33972")
+ AreaCode.create(:country => germany, :name => "Zernitz b Neustadt Dosse", :area_code => "33973")
+ AreaCode.create(:country => germany, :name => "Dessow", :area_code => "33974")
+ AreaCode.create(:country => germany, :name => "Dannenwalde Kr Prignitz", :area_code => "33975")
+ AreaCode.create(:country => germany, :name => "Wutike", :area_code => "33976")
+ AreaCode.create(:country => germany, :name => "Gumtow", :area_code => "33977")
+ AreaCode.create(:country => germany, :name => "Segeletz", :area_code => "33978")
+ AreaCode.create(:country => germany, :name => "Wusterhausen Dosse", :area_code => "33979")
+ AreaCode.create(:country => germany, :name => "Putlitz", :area_code => "33981")
+ AreaCode.create(:country => germany, :name => "Hoppenrade Kr Prignitz", :area_code => "33982")
+ AreaCode.create(:country => germany, :name => "Gross Pankow Kr Prignitz", :area_code => "33983")
+ AreaCode.create(:country => germany, :name => "Blumenthal b Pritzwalk", :area_code => "33984")
+ AreaCode.create(:country => germany, :name => "Falkenhagen Kr Prignitz", :area_code => "33986")
+ AreaCode.create(:country => germany, :name => "Sadenbeck", :area_code => "33989")
+ AreaCode.create(:country => germany, :name => "Dessau Anh", :area_code => "340")
+ AreaCode.create(:country => germany, :name => "Leipzig", :area_code => "341")
+ AreaCode.create(:country => germany, :name => "Delitzsch", :area_code => "34202")
+ AreaCode.create(:country => germany, :name => "Zwenkau", :area_code => "34203")
+ AreaCode.create(:country => germany, :name => "Schkeuditz", :area_code => "34204")
+ AreaCode.create(:country => germany, :name => "Markranstädt", :area_code => "34205")
+ AreaCode.create(:country => germany, :name => "Rötha", :area_code => "34206")
+ AreaCode.create(:country => germany, :name => "Zwochau", :area_code => "34207")
+ AreaCode.create(:country => germany, :name => "Löbnitz b Delitzsch", :area_code => "34208")
+ AreaCode.create(:country => germany, :name => "Torgau", :area_code => "3421")
+ AreaCode.create(:country => germany, :name => "Schildau Gneisenaustadt", :area_code => "34221")
+ AreaCode.create(:country => germany, :name => "Arzberg b Torgau", :area_code => "34222")
+ AreaCode.create(:country => germany, :name => "Dommitzsch", :area_code => "34223")
+ AreaCode.create(:country => germany, :name => "Belgern Sachs", :area_code => "34224")
+ AreaCode.create(:country => germany, :name => "Eilenburg", :area_code => "3423")
+ AreaCode.create(:country => germany, :name => "Jesewitz", :area_code => "34241")
+ AreaCode.create(:country => germany, :name => "Hohenpriessnitz", :area_code => "34242")
+ AreaCode.create(:country => germany, :name => "Bad Düben", :area_code => "34243")
+ AreaCode.create(:country => germany, :name => "Mockrehna", :area_code => "34244")
+ AreaCode.create(:country => germany, :name => "Wurzen", :area_code => "3425")
+ AreaCode.create(:country => germany, :name => "Kühren b Wurzen", :area_code => "34261")
+ AreaCode.create(:country => germany, :name => "Falkenhain b Wurzen", :area_code => "34262")
+ AreaCode.create(:country => germany, :name => "Hohburg", :area_code => "34263")
+ AreaCode.create(:country => germany, :name => "Borsdorf", :area_code => "34291")
+ AreaCode.create(:country => germany, :name => "Brandis b Wurzen", :area_code => "34292")
+ AreaCode.create(:country => germany, :name => "Naunhof b Grimma", :area_code => "34293")
+ AreaCode.create(:country => germany, :name => "Rackwitz", :area_code => "34294")
+ AreaCode.create(:country => germany, :name => "Krensitz", :area_code => "34295")
+ AreaCode.create(:country => germany, :name => "Groitzsch b Pegau", :area_code => "34296")
+ AreaCode.create(:country => germany, :name => "Liebertwolkwitz", :area_code => "34297")
+ AreaCode.create(:country => germany, :name => "Taucha b Leipzig", :area_code => "34298")
+ AreaCode.create(:country => germany, :name => "Gaschwitz", :area_code => "34299")
+ AreaCode.create(:country => germany, :name => "Döbeln", :area_code => "3431")
+ AreaCode.create(:country => germany, :name => "Leisnig", :area_code => "34321")
+ AreaCode.create(:country => germany, :name => "Rosswein", :area_code => "34322")
+ AreaCode.create(:country => germany, :name => "Ostrau Sachs", :area_code => "34324")
+ AreaCode.create(:country => germany, :name => "Mochau-Lüttewitz", :area_code => "34325")
+ AreaCode.create(:country => germany, :name => "Waldheim Sachs", :area_code => "34327")
+ AreaCode.create(:country => germany, :name => "Hartha b Döbeln", :area_code => "34328")
+ AreaCode.create(:country => germany, :name => "Borna Stadt", :area_code => "3433")
+ AreaCode.create(:country => germany, :name => "Geithain", :area_code => "34341")
+ AreaCode.create(:country => germany, :name => "Neukieritzsch", :area_code => "34342")
+ AreaCode.create(:country => germany, :name => "Regis-Breitingen", :area_code => "34343")
+ AreaCode.create(:country => germany, :name => "Kohren-Sahlis", :area_code => "34344")
+ AreaCode.create(:country => germany, :name => "Bad Lausick", :area_code => "34345")
+ AreaCode.create(:country => germany, :name => "Narsdorf", :area_code => "34346")
+ AreaCode.create(:country => germany, :name => "Oelzschau b Borna", :area_code => "34347")
+ AreaCode.create(:country => germany, :name => "Frohburg", :area_code => "34348")
+ AreaCode.create(:country => germany, :name => "Oschatz", :area_code => "3435")
+ AreaCode.create(:country => germany, :name => "Dahlen Sachs", :area_code => "34361")
+ AreaCode.create(:country => germany, :name => "Mügeln b Oschatz", :area_code => "34362")
+ AreaCode.create(:country => germany, :name => "Cavertitz", :area_code => "34363")
+ AreaCode.create(:country => germany, :name => "Wermsdorf", :area_code => "34364")
+ AreaCode.create(:country => germany, :name => "Grimma", :area_code => "3437")
+ AreaCode.create(:country => germany, :name => "Colditz", :area_code => "34381")
+ AreaCode.create(:country => germany, :name => "Nerchau", :area_code => "34382")
+ AreaCode.create(:country => germany, :name => "Trebsen Mulde", :area_code => "34383")
+ AreaCode.create(:country => germany, :name => "Grossbothen", :area_code => "34384")
+ AreaCode.create(:country => germany, :name => "Mutzschen", :area_code => "34385")
+ AreaCode.create(:country => germany, :name => "Dürrweitzschen b Grimma", :area_code => "34386")
+ AreaCode.create(:country => germany, :name => "Zeitz", :area_code => "3441")
+ AreaCode.create(:country => germany, :name => "Osterfeld", :area_code => "34422")
+ AreaCode.create(:country => germany, :name => "Heuckewalde", :area_code => "34423")
+ AreaCode.create(:country => germany, :name => "Reuden b Zeitz", :area_code => "34424")
+ AreaCode.create(:country => germany, :name => "Droyssig", :area_code => "34425")
+ AreaCode.create(:country => germany, :name => "Kayna", :area_code => "34426")
+ AreaCode.create(:country => germany, :name => "Weissenfels Sachs-Anh", :area_code => "3443")
+ AreaCode.create(:country => germany, :name => "Hohenmölsen", :area_code => "34441")
+ AreaCode.create(:country => germany, :name => "Teuchern", :area_code => "34443")
+ AreaCode.create(:country => germany, :name => "Lützen", :area_code => "34444")
+ AreaCode.create(:country => germany, :name => "Stößen", :area_code => "34445")
+ AreaCode.create(:country => germany, :name => "Grosskorbetha", :area_code => "34446")
+ AreaCode.create(:country => germany, :name => "Naumburg Saale", :area_code => "3445")
+ AreaCode.create(:country => germany, :name => "Nebra Unstrut", :area_code => "34461")
+ AreaCode.create(:country => germany, :name => "Laucha Unstrut", :area_code => "34462")
+ AreaCode.create(:country => germany, :name => "Bad Kösen", :area_code => "34463")
+ AreaCode.create(:country => germany, :name => "Freyburg Unstrut", :area_code => "34464")
+ AreaCode.create(:country => germany, :name => "Bad Bibra", :area_code => "34465")
+ AreaCode.create(:country => germany, :name => "Janisroda", :area_code => "34466")
+ AreaCode.create(:country => germany, :name => "Eckartsberga", :area_code => "34467")
+ AreaCode.create(:country => germany, :name => "Altenburg Thür", :area_code => "3447")
+ AreaCode.create(:country => germany, :name => "Meuselwitz Thür", :area_code => "3448")
+ AreaCode.create(:country => germany, :name => "Schmölln Thür", :area_code => "34491")
+ AreaCode.create(:country => germany, :name => "Lucka", :area_code => "34492")
+ AreaCode.create(:country => germany, :name => "Gößnitz Thür", :area_code => "34493")
+ AreaCode.create(:country => germany, :name => "Ehrenhain", :area_code => "34494")
+ AreaCode.create(:country => germany, :name => "Dobitschen", :area_code => "34495")
+ AreaCode.create(:country => germany, :name => "Nöbdenitz", :area_code => "34496")
+ AreaCode.create(:country => germany, :name => "Langenleuba-Niederhain", :area_code => "34497")
+ AreaCode.create(:country => germany, :name => "Rositz", :area_code => "34498")
+ AreaCode.create(:country => germany, :name => "Halle Saale", :area_code => "345")
+ AreaCode.create(:country => germany, :name => "Ostrau Saalkreis", :area_code => "34600")
+ AreaCode.create(:country => germany, :name => "Teutschenthal", :area_code => "34601")
+ AreaCode.create(:country => germany, :name => "Landsberg Sachs-Anh", :area_code => "34602")
+ AreaCode.create(:country => germany, :name => "Nauendorf Sachs-Anh", :area_code => "34603")
+ AreaCode.create(:country => germany, :name => "Niemberg", :area_code => "34604")
+ AreaCode.create(:country => germany, :name => "Gröbers", :area_code => "34605")
+ AreaCode.create(:country => germany, :name => "Teicha Sachs-Anh", :area_code => "34606")
+ AreaCode.create(:country => germany, :name => "Wettin", :area_code => "34607")
+ AreaCode.create(:country => germany, :name => "Salzmünde", :area_code => "34609")
+ AreaCode.create(:country => germany, :name => "Merseburg Saale", :area_code => "3461")
+ AreaCode.create(:country => germany, :name => "Bad Dürrenberg", :area_code => "3462")
+ AreaCode.create(:country => germany, :name => "Mücheln Geiseltal", :area_code => "34632")
+ AreaCode.create(:country => germany, :name => "Braunsbedra", :area_code => "34633")
+ AreaCode.create(:country => germany, :name => "Bad Lauchstädt", :area_code => "34635")
+ AreaCode.create(:country => germany, :name => "Schafstädt", :area_code => "34636")
+ AreaCode.create(:country => germany, :name => "Frankleben", :area_code => "34637")
+ AreaCode.create(:country => germany, :name => "Zöschen", :area_code => "34638")
+ AreaCode.create(:country => germany, :name => "Wallendorf Luppe", :area_code => "34639")
+ AreaCode.create(:country => germany, :name => "Sangerhausen", :area_code => "3464")
+ AreaCode.create(:country => germany, :name => "Rossla", :area_code => "34651")
+ AreaCode.create(:country => germany, :name => "Allstedt", :area_code => "34652")
+ AreaCode.create(:country => germany, :name => "Rottleberode", :area_code => "34653")
+ AreaCode.create(:country => germany, :name => "Stolberg Harz", :area_code => "34654")
+ AreaCode.create(:country => germany, :name => "Wallhausen Sachs-Anh", :area_code => "34656")
+ AreaCode.create(:country => germany, :name => "Hayn Harz", :area_code => "34658")
+ AreaCode.create(:country => germany, :name => "Blankenheim b Sangerhausen", :area_code => "34659")
+ AreaCode.create(:country => germany, :name => "Artern Unstrut", :area_code => "3466")
+ AreaCode.create(:country => germany, :name => "Bad Frankenhausen Kyffhäuser", :area_code => "34671")
+ AreaCode.create(:country => germany, :name => "Rossleben", :area_code => "34672")
+ AreaCode.create(:country => germany, :name => "Heldrungen", :area_code => "34673")
+ AreaCode.create(:country => germany, :name => "Könnern", :area_code => "34691")
+ AreaCode.create(:country => germany, :name => "Alsleben Saale", :area_code => "34692")
+ AreaCode.create(:country => germany, :name => "Bernburg Saale", :area_code => "3471")
+ AreaCode.create(:country => germany, :name => "Nienburg Saale", :area_code => "34721")
+ AreaCode.create(:country => germany, :name => "Preusslitz", :area_code => "34722")
+ AreaCode.create(:country => germany, :name => "Aschersleben Sachs-Anh", :area_code => "3473")
+ AreaCode.create(:country => germany, :name => "Frose", :area_code => "34741")
+ AreaCode.create(:country => germany, :name => "Sylda", :area_code => "34742")
+ AreaCode.create(:country => germany, :name => "Ermsleben", :area_code => "34743")
+ AreaCode.create(:country => germany, :name => "Winningen Sachs-Anh", :area_code => "34745")
+ AreaCode.create(:country => germany, :name => "Giersleben", :area_code => "34746")
+ AreaCode.create(:country => germany, :name => "Lutherstadt Eisleben", :area_code => "3475")
+ AreaCode.create(:country => germany, :name => "Hettstedt Sachs-Anh", :area_code => "3476")
+ AreaCode.create(:country => germany, :name => "Querfurt", :area_code => "34771")
+ AreaCode.create(:country => germany, :name => "Helbra", :area_code => "34772")
+ AreaCode.create(:country => germany, :name => "Schwittersdorf", :area_code => "34773")
+ AreaCode.create(:country => germany, :name => "Röblingen am See", :area_code => "34774")
+ AreaCode.create(:country => germany, :name => "Wippra", :area_code => "34775")
+ AreaCode.create(:country => germany, :name => "Rothenschirmbach", :area_code => "34776")
+ AreaCode.create(:country => germany, :name => "Abberode", :area_code => "34779")
+ AreaCode.create(:country => germany, :name => "Greifenhagen", :area_code => "34781")
+ AreaCode.create(:country => germany, :name => "Mansfeld Südharz", :area_code => "34782")
+ AreaCode.create(:country => germany, :name => "Gerbstedt", :area_code => "34783")
+ AreaCode.create(:country => germany, :name => "Sandersleben", :area_code => "34785")
+ AreaCode.create(:country => germany, :name => "Roßlau Elbe", :area_code => "34901")
+ AreaCode.create(:country => germany, :name => "Coswig Anhalt", :area_code => "34903")
+ AreaCode.create(:country => germany, :name => "Oranienbaum", :area_code => "34904")
+ AreaCode.create(:country => germany, :name => "Wörlitz", :area_code => "34905")
+ AreaCode.create(:country => germany, :name => "Raguhn", :area_code => "34906")
+ AreaCode.create(:country => germany, :name => "Jeber-Bergfrieden", :area_code => "34907")
+ AreaCode.create(:country => germany, :name => "Aken Elbe", :area_code => "34909")
+ AreaCode.create(:country => germany, :name => "Lutherstadt Wittenberg", :area_code => "3491")
+ AreaCode.create(:country => germany, :name => "Kropstädt", :area_code => "34920")
+ AreaCode.create(:country => germany, :name => "Kemberg", :area_code => "34921")
+ AreaCode.create(:country => germany, :name => "Mühlanger", :area_code => "34922")
+ AreaCode.create(:country => germany, :name => "Cobbelsdorf", :area_code => "34923")
+ AreaCode.create(:country => germany, :name => "Zahna", :area_code => "34924")
+ AreaCode.create(:country => germany, :name => "Bad Schmiedeberg", :area_code => "34925")
+ AreaCode.create(:country => germany, :name => "Pretzsch Elbe", :area_code => "34926")
+ AreaCode.create(:country => germany, :name => "Globig-Bleddin", :area_code => "34927")
+ AreaCode.create(:country => germany, :name => "Seegrehna", :area_code => "34928")
+ AreaCode.create(:country => germany, :name => "Straach", :area_code => "34929")
+ AreaCode.create(:country => germany, :name => "Bitterfeld", :area_code => "3493")
+ AreaCode.create(:country => germany, :name => "Wolfen", :area_code => "3494")
+ AreaCode.create(:country => germany, :name => "Gräfenhainichen", :area_code => "34953")
+ AreaCode.create(:country => germany, :name => "Roitzsch b Bitterfeld", :area_code => "34954")
+ AreaCode.create(:country => germany, :name => "Gossa", :area_code => "34955")
+ AreaCode.create(:country => germany, :name => "Zörbig", :area_code => "34956")
+ AreaCode.create(:country => germany, :name => "Köthen Anhalt", :area_code => "3496")
+ AreaCode.create(:country => germany, :name => "Osternienburg", :area_code => "34973")
+ AreaCode.create(:country => germany, :name => "Görzig Kr Köthen", :area_code => "34975")
+ AreaCode.create(:country => germany, :name => "Gröbzig", :area_code => "34976")
+ AreaCode.create(:country => germany, :name => "Quellendorf", :area_code => "34977")
+ AreaCode.create(:country => germany, :name => "Radegast Kr Köthen", :area_code => "34978")
+ AreaCode.create(:country => germany, :name => "Wulfen Sachs-Anh", :area_code => "34979")
+ AreaCode.create(:country => germany, :name => "Pirna", :area_code => "3501")
+ AreaCode.create(:country => germany, :name => "Struppen", :area_code => "35020")
+ AreaCode.create(:country => germany, :name => "Königstein Sächs Schweiz", :area_code => "35021")
+ AreaCode.create(:country => germany, :name => "Bad Schandau", :area_code => "35022")
+ AreaCode.create(:country => germany, :name => "Bad Gottleuba", :area_code => "35023")
+ AreaCode.create(:country => germany, :name => "Stadt Wehlen", :area_code => "35024")
+ AreaCode.create(:country => germany, :name => "Liebstadt", :area_code => "35025")
+ AreaCode.create(:country => germany, :name => "Dürrröhrsdorf-Dittersbach", :area_code => "35026")
+ AreaCode.create(:country => germany, :name => "Weesenstein", :area_code => "35027")
+ AreaCode.create(:country => germany, :name => "Krippen", :area_code => "35028")
+ AreaCode.create(:country => germany, :name => "Langenhennersdorf", :area_code => "35032")
+ AreaCode.create(:country => germany, :name => "Rosenthal Sächs Schweiz", :area_code => "35033")
+ AreaCode.create(:country => germany, :name => "Dippoldiswalde", :area_code => "3504")
+ AreaCode.create(:country => germany, :name => "Kipsdorf Kurort", :area_code => "35052")
+ AreaCode.create(:country => germany, :name => "Glashütte Sachs", :area_code => "35053")
+ AreaCode.create(:country => germany, :name => "Lauenstein Sachs", :area_code => "35054")
+ AreaCode.create(:country => germany, :name => "Höckendorf b Dippoldiswalde", :area_code => "35055")
+ AreaCode.create(:country => germany, :name => "Altenberg Sachs", :area_code => "35056")
+ AreaCode.create(:country => germany, :name => "Hermsdorf Erzgeb", :area_code => "35057")
+ AreaCode.create(:country => germany, :name => "Pretzschendorf", :area_code => "35058")
+ AreaCode.create(:country => germany, :name => "Dresden", :area_code => "351")
+ AreaCode.create(:country => germany, :name => "Arnsdorf b Dresden", :area_code => "35200")
+ AreaCode.create(:country => germany, :name => "Langebrück", :area_code => "35201")
+ AreaCode.create(:country => germany, :name => "Klingenberg Sachs", :area_code => "35202")
+ AreaCode.create(:country => germany, :name => "Tharandt", :area_code => "35203")
+ AreaCode.create(:country => germany, :name => "Wilsdruff", :area_code => "35204")
+ AreaCode.create(:country => germany, :name => "Ottendorf-Okrilla", :area_code => "35205")
+ AreaCode.create(:country => germany, :name => "Kreischa b Dresden", :area_code => "35206")
+ AreaCode.create(:country => germany, :name => "Moritzburg", :area_code => "35207")
+ AreaCode.create(:country => germany, :name => "Radeburg", :area_code => "35208")
+ AreaCode.create(:country => germany, :name => "Mohorn", :area_code => "35209")
+ AreaCode.create(:country => germany, :name => "Meissen", :area_code => "3521")
+ AreaCode.create(:country => germany, :name => "Grossenhain Sachs", :area_code => "3522")
+ AreaCode.create(:country => germany, :name => "Coswig b Dresden", :area_code => "3523")
+ AreaCode.create(:country => germany, :name => "Tauscha b Großenhain", :area_code => "35240")
+ AreaCode.create(:country => germany, :name => "Lommatzsch", :area_code => "35241")
+ AreaCode.create(:country => germany, :name => "Nossen", :area_code => "35242")
+ AreaCode.create(:country => germany, :name => "Weinböhla", :area_code => "35243")
+ AreaCode.create(:country => germany, :name => "Krögis", :area_code => "35244")
+ AreaCode.create(:country => germany, :name => "Burkhardswalde-Munzig", :area_code => "35245")
+ AreaCode.create(:country => germany, :name => "Ziegenhain Sachs", :area_code => "35246")
+ AreaCode.create(:country => germany, :name => "Zehren Sachs", :area_code => "35247")
+ AreaCode.create(:country => germany, :name => "Schönfeld b Großenhain", :area_code => "35248")
+ AreaCode.create(:country => germany, :name => "Basslitz", :area_code => "35249")
+ AreaCode.create(:country => germany, :name => "Riesa", :area_code => "3525")
+ AreaCode.create(:country => germany, :name => "Gröditz b Riesa", :area_code => "35263")
+ AreaCode.create(:country => germany, :name => "Strehla", :area_code => "35264")
+ AreaCode.create(:country => germany, :name => "Glaubitz", :area_code => "35265")
+ AreaCode.create(:country => germany, :name => "Heyda b Riesa", :area_code => "35266")
+ AreaCode.create(:country => germany, :name => "Diesbar-Seusslitz", :area_code => "35267")
+ AreaCode.create(:country => germany, :name => "Stauchitz", :area_code => "35268")
+ AreaCode.create(:country => germany, :name => "Radeberg", :area_code => "3528")
+ AreaCode.create(:country => germany, :name => "Heidenau Sachs", :area_code => "3529")
+ AreaCode.create(:country => germany, :name => "Finsterwalde", :area_code => "3531")
+ AreaCode.create(:country => germany, :name => "Doberlug-Kirchhain", :area_code => "35322")
+ AreaCode.create(:country => germany, :name => "Sonnewalde", :area_code => "35323")
+ AreaCode.create(:country => germany, :name => "Crinitz", :area_code => "35324")
+ AreaCode.create(:country => germany, :name => "Rückersdorf b Finsterwalde", :area_code => "35325")
+ AreaCode.create(:country => germany, :name => "Schönborn Kr Elbe-Elster", :area_code => "35326")
+ AreaCode.create(:country => germany, :name => "Priessen", :area_code => "35327")
+ AreaCode.create(:country => germany, :name => "Dollenchen", :area_code => "35329")
+ AreaCode.create(:country => germany, :name => "Elsterwerda", :area_code => "3533")
+ AreaCode.create(:country => germany, :name => "Bad Liebenwerda", :area_code => "35341")
+ AreaCode.create(:country => germany, :name => "Mühlberg Elbe", :area_code => "35342")
+ AreaCode.create(:country => germany, :name => "Hirschfeld b Elsterwerda", :area_code => "35343")
+ AreaCode.create(:country => germany, :name => "Herzberg Elster", :area_code => "3535")
+ AreaCode.create(:country => germany, :name => "Schlieben", :area_code => "35361")
+ AreaCode.create(:country => germany, :name => "Schönewalde b Herzberg", :area_code => "35362")
+ AreaCode.create(:country => germany, :name => "Fermerswalde", :area_code => "35363")
+ AreaCode.create(:country => germany, :name => "Lebusa", :area_code => "35364")
+ AreaCode.create(:country => germany, :name => "Falkenberg Elster", :area_code => "35365")
+ AreaCode.create(:country => germany, :name => "Jessen Elster", :area_code => "3537")
+ AreaCode.create(:country => germany, :name => "Elster Elbe", :area_code => "35383")
+ AreaCode.create(:country => germany, :name => "Steinsdorf b Jessen", :area_code => "35384")
+ AreaCode.create(:country => germany, :name => "Annaburg", :area_code => "35385")
+ AreaCode.create(:country => germany, :name => "Prettin", :area_code => "35386")
+ AreaCode.create(:country => germany, :name => "Seyda", :area_code => "35387")
+ AreaCode.create(:country => germany, :name => "Klöden", :area_code => "35388")
+ AreaCode.create(:country => germany, :name => "Holzdorf Elster", :area_code => "35389")
+ AreaCode.create(:country => germany, :name => "Calau", :area_code => "3541")
+ AreaCode.create(:country => germany, :name => "Lübbenau Spreewald", :area_code => "3542")
+ AreaCode.create(:country => germany, :name => "Vetschau", :area_code => "35433")
+ AreaCode.create(:country => germany, :name => "Altdöbern", :area_code => "35434")
+ AreaCode.create(:country => germany, :name => "Gollmitz b Calau", :area_code => "35435")
+ AreaCode.create(:country => germany, :name => "Laasow b Calau", :area_code => "35436")
+ AreaCode.create(:country => germany, :name => "Zinnitz", :area_code => "35439")
+ AreaCode.create(:country => germany, :name => "Luckau Brandenb", :area_code => "3544")
+ AreaCode.create(:country => germany, :name => "Dahme Brandenb", :area_code => "35451")
+ AreaCode.create(:country => germany, :name => "Golssen", :area_code => "35452")
+ AreaCode.create(:country => germany, :name => "Drahnsdorf", :area_code => "35453")
+ AreaCode.create(:country => germany, :name => "Uckro", :area_code => "35454")
+ AreaCode.create(:country => germany, :name => "Walddrehna", :area_code => "35455")
+ AreaCode.create(:country => germany, :name => "Terpt", :area_code => "35456")
+ AreaCode.create(:country => germany, :name => "Lübben Spreewald", :area_code => "3546")
+ AreaCode.create(:country => germany, :name => "Birkenhainchen", :area_code => "35471")
+ AreaCode.create(:country => germany, :name => "Schlepzig", :area_code => "35472")
+ AreaCode.create(:country => germany, :name => "Neu Lübbenau", :area_code => "35473")
+ AreaCode.create(:country => germany, :name => "Schönwalde b Lübben", :area_code => "35474")
+ AreaCode.create(:country => germany, :name => "Straupitz", :area_code => "35475")
+ AreaCode.create(:country => germany, :name => "Wittmannsdorf-Bückchen", :area_code => "35476")
+ AreaCode.create(:country => germany, :name => "Rietzneuendorf-Friedrichshof", :area_code => "35477")
+ AreaCode.create(:country => germany, :name => "Goyatz", :area_code => "35478")
+ AreaCode.create(:country => germany, :name => "Cottbus", :area_code => "355")
+ AreaCode.create(:country => germany, :name => "Döbern NL", :area_code => "35600")
+ AreaCode.create(:country => germany, :name => "Peitz", :area_code => "35601")
+ AreaCode.create(:country => germany, :name => "Drebkau", :area_code => "35602")
+ AreaCode.create(:country => germany, :name => "Burg Spreewald", :area_code => "35603")
+ AreaCode.create(:country => germany, :name => "Krieschow", :area_code => "35604")
+ AreaCode.create(:country => germany, :name => "Komptendorf", :area_code => "35605")
+ AreaCode.create(:country => germany, :name => "Briesen b Cottbus", :area_code => "35606")
+ AreaCode.create(:country => germany, :name => "Jänschwalde", :area_code => "35607")
+ AreaCode.create(:country => germany, :name => "Gross Ossnig", :area_code => "35608")
+ AreaCode.create(:country => germany, :name => "Drachhausen", :area_code => "35609")
+ AreaCode.create(:country => germany, :name => "Guben", :area_code => "3561")
+ AreaCode.create(:country => germany, :name => "Forst Lausitz", :area_code => "3562")
+ AreaCode.create(:country => germany, :name => "Spremberg", :area_code => "3563")
+ AreaCode.create(:country => germany, :name => "Schwarze Pumpe", :area_code => "3564")
+ AreaCode.create(:country => germany, :name => "Bärenklau NL", :area_code => "35691")
+ AreaCode.create(:country => germany, :name => "Kerkwitz", :area_code => "35692")
+ AreaCode.create(:country => germany, :name => "Lauschütz", :area_code => "35693")
+ AreaCode.create(:country => germany, :name => "Gosda b Klinge", :area_code => "35694")
+ AreaCode.create(:country => germany, :name => "Simmersdorf", :area_code => "35695")
+ AreaCode.create(:country => germany, :name => "Briesnig", :area_code => "35696")
+ AreaCode.create(:country => germany, :name => "Bagenz", :area_code => "35697")
+ AreaCode.create(:country => germany, :name => "Hornow", :area_code => "35698")
+ AreaCode.create(:country => germany, :name => "Hoyerswerda", :area_code => "3571")
+ AreaCode.create(:country => germany, :name => "Lauta b Hoyerswerda", :area_code => "35722")
+ AreaCode.create(:country => germany, :name => "Bernsdorf OL", :area_code => "35723")
+ AreaCode.create(:country => germany, :name => "Lohsa", :area_code => "35724")
+ AreaCode.create(:country => germany, :name => "Wittichenau", :area_code => "35725")
+ AreaCode.create(:country => germany, :name => "Groß Särchen", :area_code => "35726")
+ AreaCode.create(:country => germany, :name => "Burghammer", :area_code => "35727")
+ AreaCode.create(:country => germany, :name => "Uhyst Spree", :area_code => "35728")
+ AreaCode.create(:country => germany, :name => "Senftenberg", :area_code => "3573")
+ AreaCode.create(:country => germany, :name => "Lauchhammer", :area_code => "3574")
+ AreaCode.create(:country => germany, :name => "Welzow", :area_code => "35751")
+ AreaCode.create(:country => germany, :name => "Ruhland", :area_code => "35752")
+ AreaCode.create(:country => germany, :name => "Großräschen", :area_code => "35753")
+ AreaCode.create(:country => germany, :name => "Klettwitz", :area_code => "35754")
+ AreaCode.create(:country => germany, :name => "Ortrand", :area_code => "35755")
+ AreaCode.create(:country => germany, :name => "Hosena", :area_code => "35756")
+ AreaCode.create(:country => germany, :name => "Weisswasser", :area_code => "3576")
+ AreaCode.create(:country => germany, :name => "Bad Muskau", :area_code => "35771")
+ AreaCode.create(:country => germany, :name => "Rietschen", :area_code => "35772")
+ AreaCode.create(:country => germany, :name => "Schleife", :area_code => "35773")
+ AreaCode.create(:country => germany, :name => "Boxberg Sachs", :area_code => "35774")
+ AreaCode.create(:country => germany, :name => "Pechern", :area_code => "35775")
+ AreaCode.create(:country => germany, :name => "Kamenz", :area_code => "3578")
+ AreaCode.create(:country => germany, :name => "Ossling", :area_code => "35792")
+ AreaCode.create(:country => germany, :name => "Elstra", :area_code => "35793")
+ AreaCode.create(:country => germany, :name => "Königsbrück", :area_code => "35795")
+ AreaCode.create(:country => germany, :name => "Panschwitz-Kuckau", :area_code => "35796")
+ AreaCode.create(:country => germany, :name => "Schwepnitz", :area_code => "35797")
+ AreaCode.create(:country => germany, :name => "Görlitz", :area_code => "3581")
+ AreaCode.create(:country => germany, :name => "Zodel", :area_code => "35820")
+ AreaCode.create(:country => germany, :name => "Hagenwerder", :area_code => "35822")
+ AreaCode.create(:country => germany, :name => "Ostritz", :area_code => "35823")
+ AreaCode.create(:country => germany, :name => "Kodersdorf", :area_code => "35825")
+ AreaCode.create(:country => germany, :name => "Königshain b Görlitz", :area_code => "35826")
+ AreaCode.create(:country => germany, :name => "Nieder-Seifersdorf", :area_code => "35827")
+ AreaCode.create(:country => germany, :name => "Reichenbach OL", :area_code => "35828")
+ AreaCode.create(:country => germany, :name => "Gersdorf b Görlitz", :area_code => "35829")
+ AreaCode.create(:country => germany, :name => "Zittau", :area_code => "3583")
+ AreaCode.create(:country => germany, :name => "Großschönau Sachs", :area_code => "35841")
+ AreaCode.create(:country => germany, :name => "Oderwitz", :area_code => "35842")
+ AreaCode.create(:country => germany, :name => "Hirschfelde b Zittau", :area_code => "35843")
+ AreaCode.create(:country => germany, :name => "Oybin Kurort", :area_code => "35844")
+ AreaCode.create(:country => germany, :name => "Löbau", :area_code => "3585")
+ AreaCode.create(:country => germany, :name => "Neugersdorf ,Sachs", :area_code => "3586")
+ AreaCode.create(:country => germany, :name => "Neusalza-Spremberg", :area_code => "35872")
+ AreaCode.create(:country => germany, :name => "Herrnhut", :area_code => "35873")
+ AreaCode.create(:country => germany, :name => "Bernstadt a d Eigen", :area_code => "35874")
+ AreaCode.create(:country => germany, :name => "Obercunnersdorf b Löbau", :area_code => "35875")
+ AreaCode.create(:country => germany, :name => "Weissenberg Sachs", :area_code => "35876")
+ AreaCode.create(:country => germany, :name => "Cunewalde", :area_code => "35877")
+ AreaCode.create(:country => germany, :name => "Niesky", :area_code => "3588")
+ AreaCode.create(:country => germany, :name => "Rothenburg OL", :area_code => "35891")
+ AreaCode.create(:country => germany, :name => "Horka OL", :area_code => "35892")
+ AreaCode.create(:country => germany, :name => "Mücka", :area_code => "35893")
+ AreaCode.create(:country => germany, :name => "Hähnichen", :area_code => "35894")
+ AreaCode.create(:country => germany, :name => "Klitten", :area_code => "35895")
+ AreaCode.create(:country => germany, :name => "Bautzen", :area_code => "3591")
+ AreaCode.create(:country => germany, :name => "Kirschau", :area_code => "3592")
+ AreaCode.create(:country => germany, :name => "Seitschen", :area_code => "35930")
+ AreaCode.create(:country => germany, :name => "Königswartha", :area_code => "35931")
+ AreaCode.create(:country => germany, :name => "Guttau", :area_code => "35932")
+ AreaCode.create(:country => germany, :name => "Neschwitz", :area_code => "35933")
+ AreaCode.create(:country => germany, :name => "Grossdubrau", :area_code => "35934")
+ AreaCode.create(:country => germany, :name => "Kleinwelka", :area_code => "35935")
+ AreaCode.create(:country => germany, :name => "Sohland Spree", :area_code => "35936")
+ AreaCode.create(:country => germany, :name => "Prischwitz", :area_code => "35937")
+ AreaCode.create(:country => germany, :name => "Großpostwitz OL", :area_code => "35938")
+ AreaCode.create(:country => germany, :name => "Hochkirch", :area_code => "35939")
+ AreaCode.create(:country => germany, :name => "Bischofswerda", :area_code => "3594")
+ AreaCode.create(:country => germany, :name => "Neukirch Lausitz", :area_code => "35951")
+ AreaCode.create(:country => germany, :name => "Großröhrsdorf OL", :area_code => "35952")
+ AreaCode.create(:country => germany, :name => "Burkau", :area_code => "35953")
+ AreaCode.create(:country => germany, :name => "Grossharthau", :area_code => "35954")
+ AreaCode.create(:country => germany, :name => "Pulsnitz", :area_code => "35955")
+ AreaCode.create(:country => germany, :name => "Neustadt i Sa", :area_code => "3596")
+ AreaCode.create(:country => germany, :name => "Sebnitz", :area_code => "35971")
+ AreaCode.create(:country => germany, :name => "Stolpen", :area_code => "35973")
+ AreaCode.create(:country => germany, :name => "Hinterhermsdorf", :area_code => "35974")
+ AreaCode.create(:country => germany, :name => "Hohnstein", :area_code => "35975")
+ AreaCode.create(:country => germany, :name => "Mühlhausen Thür", :area_code => "3601")
+ AreaCode.create(:country => germany, :name => "Ebeleben", :area_code => "36020")
+ AreaCode.create(:country => germany, :name => "Schlotheim", :area_code => "36021")
+ AreaCode.create(:country => germany, :name => "Grossengottern", :area_code => "36022")
+ AreaCode.create(:country => germany, :name => "Horsmar", :area_code => "36023")
+ AreaCode.create(:country => germany, :name => "Diedorf b Mühlhausen Thür", :area_code => "36024")
+ AreaCode.create(:country => germany, :name => "Körner", :area_code => "36025")
+ AreaCode.create(:country => germany, :name => "Struth b Mühlhausen Thür", :area_code => "36026")
+ AreaCode.create(:country => germany, :name => "Lengenfeld Unterm Stein", :area_code => "36027")
+ AreaCode.create(:country => germany, :name => "Kammerforst Thür", :area_code => "36028")
+ AreaCode.create(:country => germany, :name => "Menteroda", :area_code => "36029")
+ AreaCode.create(:country => germany, :name => "Bad Langensalza", :area_code => "3603")
+ AreaCode.create(:country => germany, :name => "Bad Tennstedt", :area_code => "36041")
+ AreaCode.create(:country => germany, :name => "Tonna", :area_code => "36042")
+ AreaCode.create(:country => germany, :name => "Kirchheilingen", :area_code => "36043")
+ AreaCode.create(:country => germany, :name => "Leinefelde", :area_code => "3605")
+ AreaCode.create(:country => germany, :name => "Heiligenstadt Heilbad", :area_code => "3606")
+ AreaCode.create(:country => germany, :name => "Teistungen", :area_code => "36071")
+ AreaCode.create(:country => germany, :name => "Weißenborn-Lüderode", :area_code => "36072")
+ AreaCode.create(:country => germany, :name => "Worbis", :area_code => "36074")
+ AreaCode.create(:country => germany, :name => "Dingelstädt Eichsfeld", :area_code => "36075")
+ AreaCode.create(:country => germany, :name => "Niederorschel", :area_code => "36076")
+ AreaCode.create(:country => germany, :name => "Grossbodungen", :area_code => "36077")
+ AreaCode.create(:country => germany, :name => "Arenshausen", :area_code => "36081")
+ AreaCode.create(:country => germany, :name => "Ershausen", :area_code => "36082")
+ AreaCode.create(:country => germany, :name => "Uder", :area_code => "36083")
+ AreaCode.create(:country => germany, :name => "Heuthen", :area_code => "36084")
+ AreaCode.create(:country => germany, :name => "Reinholterode", :area_code => "36085")
+ AreaCode.create(:country => germany, :name => "Wüstheuterode", :area_code => "36087")
+ AreaCode.create(:country => germany, :name => "Erfurt", :area_code => "361")
+ AreaCode.create(:country => germany, :name => "Elxleben b Arnstadt", :area_code => "36200")
+ AreaCode.create(:country => germany, :name => "Walschleben", :area_code => "36201")
+ AreaCode.create(:country => germany, :name => "Neudietendorf", :area_code => "36202")
+ AreaCode.create(:country => germany, :name => "Vieselbach", :area_code => "36203")
+ AreaCode.create(:country => germany, :name => "Stotternheim", :area_code => "36204")
+ AreaCode.create(:country => germany, :name => "Gräfenroda", :area_code => "36205")
+ AreaCode.create(:country => germany, :name => "Grossfahner", :area_code => "36206")
+ AreaCode.create(:country => germany, :name => "Plaue Thür", :area_code => "36207")
+ AreaCode.create(:country => germany, :name => "Ermstedt", :area_code => "36208")
+ AreaCode.create(:country => germany, :name => "Klettbach", :area_code => "36209")
+ AreaCode.create(:country => germany, :name => "Gotha Thür", :area_code => "3621")
+ AreaCode.create(:country => germany, :name => "Waltershausen Thür", :area_code => "3622")
+ AreaCode.create(:country => germany, :name => "Friedrichroda", :area_code => "3623")
+ AreaCode.create(:country => germany, :name => "Ohrdruf", :area_code => "3624")
+ AreaCode.create(:country => germany, :name => "Tambach-Dietharz Thür Wald", :area_code => "36252")
+ AreaCode.create(:country => germany, :name => "Georgenthal Thür Wald", :area_code => "36253")
+ AreaCode.create(:country => germany, :name => "Friedrichswerth", :area_code => "36254")
+ AreaCode.create(:country => germany, :name => "Goldbach b Gotha", :area_code => "36255")
+ AreaCode.create(:country => germany, :name => "Wechmar", :area_code => "36256")
+ AreaCode.create(:country => germany, :name => "Luisenthal Thür", :area_code => "36257")
+ AreaCode.create(:country => germany, :name => "Friemar", :area_code => "36258")
+ AreaCode.create(:country => germany, :name => "Tabarz Thür Wald", :area_code => "36259")
+ AreaCode.create(:country => germany, :name => "Arnstadt", :area_code => "3628")
+ AreaCode.create(:country => germany, :name => "Stadtilm", :area_code => "3629")
+ AreaCode.create(:country => germany, :name => "Nordhausen Thür", :area_code => "3631")
+ AreaCode.create(:country => germany, :name => "Sondershausen", :area_code => "3632")
+ AreaCode.create(:country => germany, :name => "Grossberndten", :area_code => "36330")
+ AreaCode.create(:country => germany, :name => "Ilfeld", :area_code => "36331")
+ AreaCode.create(:country => germany, :name => "Ellrich", :area_code => "36332")
+ AreaCode.create(:country => germany, :name => "Heringen Helme", :area_code => "36333")
+ AreaCode.create(:country => germany, :name => "Wolkramshausen", :area_code => "36334")
+ AreaCode.create(:country => germany, :name => "Grosswechsungen", :area_code => "36335")
+ AreaCode.create(:country => germany, :name => "Klettenberg", :area_code => "36336")
+ AreaCode.create(:country => germany, :name => "Schiedungen", :area_code => "36337")
+ AreaCode.create(:country => germany, :name => "Bleicherode", :area_code => "36338")
+ AreaCode.create(:country => germany, :name => "Sömmerda", :area_code => "3634")
+ AreaCode.create(:country => germany, :name => "Kölleda", :area_code => "3635")
+ AreaCode.create(:country => germany, :name => "Greussen", :area_code => "3636")
+ AreaCode.create(:country => germany, :name => "Grossenehrich", :area_code => "36370")
+ AreaCode.create(:country => germany, :name => "Schlossvippach", :area_code => "36371")
+ AreaCode.create(:country => germany, :name => "Kleinneuhausen", :area_code => "36372")
+ AreaCode.create(:country => germany, :name => "Buttstädt", :area_code => "36373")
+ AreaCode.create(:country => germany, :name => "Weissensee", :area_code => "36374")
+ AreaCode.create(:country => germany, :name => "Kindelbrück", :area_code => "36375")
+ AreaCode.create(:country => germany, :name => "Straussfurt", :area_code => "36376")
+ AreaCode.create(:country => germany, :name => "Rastenberg", :area_code => "36377")
+ AreaCode.create(:country => germany, :name => "Ostramondra", :area_code => "36378")
+ AreaCode.create(:country => germany, :name => "Holzengel", :area_code => "36379")
+ AreaCode.create(:country => germany, :name => "Jena", :area_code => "3641")
+ AreaCode.create(:country => germany, :name => "Camburg", :area_code => "36421")
+ AreaCode.create(:country => germany, :name => "Reinstädt Thür", :area_code => "36422")
+ AreaCode.create(:country => germany, :name => "Orlamünde", :area_code => "36423")
+ AreaCode.create(:country => germany, :name => "Kahla Thür", :area_code => "36424")
+ AreaCode.create(:country => germany, :name => "Isserstedt", :area_code => "36425")
+ AreaCode.create(:country => germany, :name => "Ottendorf b Stadtroda", :area_code => "36426")
+ AreaCode.create(:country => germany, :name => "Dornburg Saale", :area_code => "36427")
+ AreaCode.create(:country => germany, :name => "Stadtroda", :area_code => "36428")
+ AreaCode.create(:country => germany, :name => "Weimar Thür", :area_code => "3643")
+ AreaCode.create(:country => germany, :name => "Apolda", :area_code => "3644")
+ AreaCode.create(:country => germany, :name => "Kranichfeld", :area_code => "36450")
+ AreaCode.create(:country => germany, :name => "Buttelstedt", :area_code => "36451")
+ AreaCode.create(:country => germany, :name => "Berlstedt", :area_code => "36452")
+ AreaCode.create(:country => germany, :name => "Mellingen", :area_code => "36453")
+ AreaCode.create(:country => germany, :name => "Magdala", :area_code => "36454")
+ AreaCode.create(:country => germany, :name => "Bad Berka", :area_code => "36458")
+ AreaCode.create(:country => germany, :name => "Blankenhain Thür", :area_code => "36459")
+ AreaCode.create(:country => germany, :name => "Bad Sulza", :area_code => "36461")
+ AreaCode.create(:country => germany, :name => "Ossmannstedt", :area_code => "36462")
+ AreaCode.create(:country => germany, :name => "Gebstedt", :area_code => "36463")
+ AreaCode.create(:country => germany, :name => "Wormstedt", :area_code => "36464")
+ AreaCode.create(:country => germany, :name => "Oberndorf b Apolda", :area_code => "36465")
+ AreaCode.create(:country => germany, :name => "Pößneck", :area_code => "3647")
+ AreaCode.create(:country => germany, :name => "Neustadt an der Orla", :area_code => "36481")
+ AreaCode.create(:country => germany, :name => "Triptis", :area_code => "36482")
+ AreaCode.create(:country => germany, :name => "Ziegenrück", :area_code => "36483")
+ AreaCode.create(:country => germany, :name => "Knau b Pößneck", :area_code => "36484")
+ AreaCode.create(:country => germany, :name => "Gera", :area_code => "365")
+ AreaCode.create(:country => germany, :name => "Hermsdorf Thür", :area_code => "36601")
+ AreaCode.create(:country => germany, :name => "Ronneburg Thür", :area_code => "36602")
+ AreaCode.create(:country => germany, :name => "Weida", :area_code => "36603")
+ AreaCode.create(:country => germany, :name => "Münchenbernsdorf", :area_code => "36604")
+ AreaCode.create(:country => germany, :name => "Bad Köstritz", :area_code => "36605")
+ AreaCode.create(:country => germany, :name => "Kraftsdorf", :area_code => "36606")
+ AreaCode.create(:country => germany, :name => "Niederpöllnitz", :area_code => "36607")
+ AreaCode.create(:country => germany, :name => "Seelingstädt b Gera", :area_code => "36608")
+ AreaCode.create(:country => germany, :name => "Greiz", :area_code => "3661")
+ AreaCode.create(:country => germany, :name => "Elsterberg b Plauen", :area_code => "36621")
+ AreaCode.create(:country => germany, :name => "Triebes", :area_code => "36622")
+ AreaCode.create(:country => germany, :name => "Berga Elster", :area_code => "36623")
+ AreaCode.create(:country => germany, :name => "Teichwolframsdorf", :area_code => "36624")
+ AreaCode.create(:country => germany, :name => "Langenwetzendorf", :area_code => "36625")
+ AreaCode.create(:country => germany, :name => "Auma", :area_code => "36626")
+ AreaCode.create(:country => germany, :name => "Zeulenroda", :area_code => "36628")
+ AreaCode.create(:country => germany, :name => "Schleiz", :area_code => "3663")
+ AreaCode.create(:country => germany, :name => "Remptendorf", :area_code => "36640")
+ AreaCode.create(:country => germany, :name => "Harra", :area_code => "36642")
+ AreaCode.create(:country => germany, :name => "Thimmendorf", :area_code => "36643")
+ AreaCode.create(:country => germany, :name => "Hirschberg Saale", :area_code => "36644")
+ AreaCode.create(:country => germany, :name => "Mühltroff", :area_code => "36645")
+ AreaCode.create(:country => germany, :name => "Tanna b Schleiz", :area_code => "36646")
+ AreaCode.create(:country => germany, :name => "Saalburg Thür", :area_code => "36647")
+ AreaCode.create(:country => germany, :name => "Dittersdorf b Schleiz", :area_code => "36648")
+ AreaCode.create(:country => germany, :name => "Gefell b Schleiz", :area_code => "36649")
+ AreaCode.create(:country => germany, :name => "Lobenstein", :area_code => "36651")
+ AreaCode.create(:country => germany, :name => "Wurzbach", :area_code => "36652")
+ AreaCode.create(:country => germany, :name => "Lehesten Thür Wald", :area_code => "36653")
+ AreaCode.create(:country => germany, :name => "Eisenberg Thür", :area_code => "36691")
+ AreaCode.create(:country => germany, :name => "Bürgel", :area_code => "36692")
+ AreaCode.create(:country => germany, :name => "Crossen an der Elster", :area_code => "36693")
+ AreaCode.create(:country => germany, :name => "Schkölen Thür", :area_code => "36694")
+ AreaCode.create(:country => germany, :name => "Söllmnitz", :area_code => "36695")
+ AreaCode.create(:country => germany, :name => "Lichte", :area_code => "36701")
+ AreaCode.create(:country => germany, :name => "Lauscha", :area_code => "36702")
+ AreaCode.create(:country => germany, :name => "Gräfenthal", :area_code => "36703")
+ AreaCode.create(:country => germany, :name => "Steinheid", :area_code => "36704")
+ AreaCode.create(:country => germany, :name => "Oberweißbach Thür Wald", :area_code => "36705")
+ AreaCode.create(:country => germany, :name => "Saalfeld Saale", :area_code => "3671")
+ AreaCode.create(:country => germany, :name => "Rudolstadt", :area_code => "3672")
+ AreaCode.create(:country => germany, :name => "Sitzendorf", :area_code => "36730")
+ AreaCode.create(:country => germany, :name => "Unterloquitz", :area_code => "36731")
+ AreaCode.create(:country => germany, :name => "Könitz", :area_code => "36732")
+ AreaCode.create(:country => germany, :name => "Kaulsdorf", :area_code => "36733")
+ AreaCode.create(:country => germany, :name => "Leutenberg", :area_code => "36734")
+ AreaCode.create(:country => germany, :name => "Probstzella", :area_code => "36735")
+ AreaCode.create(:country => germany, :name => "Arnsgereuth", :area_code => "36736")
+ AreaCode.create(:country => germany, :name => "Drognitz", :area_code => "36737")
+ AreaCode.create(:country => germany, :name => "Königsee", :area_code => "36738")
+ AreaCode.create(:country => germany, :name => "Rottenbach", :area_code => "36739")
+ AreaCode.create(:country => germany, :name => "Bad Blankenburg", :area_code => "36741")
+ AreaCode.create(:country => germany, :name => "Uhlstädt", :area_code => "36742")
+ AreaCode.create(:country => germany, :name => "Teichel", :area_code => "36743")
+ AreaCode.create(:country => germany, :name => "Remda", :area_code => "36744")
+ AreaCode.create(:country => germany, :name => "Sonneberg Thür", :area_code => "3675")
+ AreaCode.create(:country => germany, :name => "Heubisch", :area_code => "36761")
+ AreaCode.create(:country => germany, :name => "Steinach Thür", :area_code => "36762")
+ AreaCode.create(:country => germany, :name => "Neuhaus-Schierschnitz", :area_code => "36764")
+ AreaCode.create(:country => germany, :name => "Schalkau", :area_code => "36766")
+ AreaCode.create(:country => germany, :name => "Ilmenau Thür", :area_code => "3677")
+ AreaCode.create(:country => germany, :name => "Grossbreitenbach", :area_code => "36781")
+ AreaCode.create(:country => germany, :name => "Schmiedefeld a Rennsteig", :area_code => "36782")
+ AreaCode.create(:country => germany, :name => "Gehren Thür", :area_code => "36783")
+ AreaCode.create(:country => germany, :name => "Stützerbach", :area_code => "36784")
+ AreaCode.create(:country => germany, :name => "Gräfinau-Angstedt", :area_code => "36785")
+ AreaCode.create(:country => germany, :name => "Neuhaus a Rennweg", :area_code => "3679")
+ AreaCode.create(:country => germany, :name => "Suhl", :area_code => "3681")
+ AreaCode.create(:country => germany, :name => "Zella-Mehlis", :area_code => "3682")
+ AreaCode.create(:country => germany, :name => "Schmalkalden", :area_code => "3683")
+ AreaCode.create(:country => germany, :name => "Trusetal", :area_code => "36840")
+ AreaCode.create(:country => germany, :name => "Schleusingen", :area_code => "36841")
+ AreaCode.create(:country => germany, :name => "Oberhof Thür", :area_code => "36842")
+ AreaCode.create(:country => germany, :name => "Benshausen", :area_code => "36843")
+ AreaCode.create(:country => germany, :name => "Rohr Thür", :area_code => "36844")
+ AreaCode.create(:country => germany, :name => "Gehlberg", :area_code => "36845")
+ AreaCode.create(:country => germany, :name => "Suhl-Dietzhausen", :area_code => "36846")
+ AreaCode.create(:country => germany, :name => "Steinbach-Hallenberg", :area_code => "36847")
+ AreaCode.create(:country => germany, :name => "Wernshausen", :area_code => "36848")
+ AreaCode.create(:country => germany, :name => "Kleinschmalkalden", :area_code => "36849")
+ AreaCode.create(:country => germany, :name => "Hildburghausen", :area_code => "3685")
+ AreaCode.create(:country => germany, :name => "Eisfeld", :area_code => "3686")
+ AreaCode.create(:country => germany, :name => "Masserberg", :area_code => "36870")
+ AreaCode.create(:country => germany, :name => "Bad Colberg-Heldburg", :area_code => "36871")
+ AreaCode.create(:country => germany, :name => "Themar", :area_code => "36873")
+ AreaCode.create(:country => germany, :name => "Schönbrunn b Hildburghaus", :area_code => "36874")
+ AreaCode.create(:country => germany, :name => "Straufhain-Streufdorf", :area_code => "36875")
+ AreaCode.create(:country => germany, :name => "Oberland", :area_code => "36878")
+ AreaCode.create(:country => germany, :name => "Eisenach Thür", :area_code => "3691")
+ AreaCode.create(:country => germany, :name => "Grossenlupnitz", :area_code => "36920")
+ AreaCode.create(:country => germany, :name => "Wutha-Farnroda", :area_code => "36921")
+ AreaCode.create(:country => germany, :name => "Gerstungen", :area_code => "36922")
+ AreaCode.create(:country => germany, :name => "Treffurt", :area_code => "36923")
+ AreaCode.create(:country => germany, :name => "Mihla", :area_code => "36924")
+ AreaCode.create(:country => germany, :name => "Marksuhl", :area_code => "36925")
+ AreaCode.create(:country => germany, :name => "Creuzburg", :area_code => "36926")
+ AreaCode.create(:country => germany, :name => "Unterellen", :area_code => "36927")
+ AreaCode.create(:country => germany, :name => "Neuenhof Thür", :area_code => "36928")
+ AreaCode.create(:country => germany, :name => "Ruhla", :area_code => "36929")
+ AreaCode.create(:country => germany, :name => "Meiningen", :area_code => "3693")
+ AreaCode.create(:country => germany, :name => "Oepfershausen", :area_code => "36940")
+ AreaCode.create(:country => germany, :name => "Wasungen", :area_code => "36941")
+ AreaCode.create(:country => germany, :name => "Bettenhausen Thür", :area_code => "36943")
+ AreaCode.create(:country => germany, :name => "Rentwertshausen", :area_code => "36944")
+ AreaCode.create(:country => germany, :name => "Henneberg", :area_code => "36945")
+ AreaCode.create(:country => germany, :name => "Erbenhausen Thür", :area_code => "36946")
+ AreaCode.create(:country => germany, :name => "Jüchsen", :area_code => "36947")
+ AreaCode.create(:country => germany, :name => "Römhild", :area_code => "36948")
+ AreaCode.create(:country => germany, :name => "Obermaßfeld-Grimmenthal", :area_code => "36949")
+ AreaCode.create(:country => germany, :name => "Bad Salzungen", :area_code => "3695")
+ AreaCode.create(:country => germany, :name => "Bad Liebenstein", :area_code => "36961")
+ AreaCode.create(:country => germany, :name => "Vacha", :area_code => "36962")
+ AreaCode.create(:country => germany, :name => "Dorndorf Rhön", :area_code => "36963")
+ AreaCode.create(:country => germany, :name => "Dermbach Rhön", :area_code => "36964")
+ AreaCode.create(:country => germany, :name => "Stadtlengsfeld", :area_code => "36965")
+ AreaCode.create(:country => germany, :name => "Kaltennordheim", :area_code => "36966")
+ AreaCode.create(:country => germany, :name => "Geisa", :area_code => "36967")
+ AreaCode.create(:country => germany, :name => "Rossdorf Rhön", :area_code => "36968")
+ AreaCode.create(:country => germany, :name => "Merkers", :area_code => "36969")
+ AreaCode.create(:country => germany, :name => "Chemnitz Sachs", :area_code => "371")
+ AreaCode.create(:country => germany, :name => "Wittgensdorf b Chemnitz", :area_code => "37200")
+ AreaCode.create(:country => germany, :name => "Claussnitz b Chemnitz", :area_code => "37202")
+ AreaCode.create(:country => germany, :name => "Gersdorf b Chemnitz", :area_code => "37203")
+ AreaCode.create(:country => germany, :name => "Lichtenstein Sachs", :area_code => "37204")
+ AreaCode.create(:country => germany, :name => "Frankenberg", :area_code => "37206")
+ AreaCode.create(:country => germany, :name => "Hainichen", :area_code => "37207")
+ AreaCode.create(:country => germany, :name => "Auerswalde", :area_code => "37208")
+ AreaCode.create(:country => germany, :name => "Einsiedel b Chemnitz", :area_code => "37209")
+ AreaCode.create(:country => germany, :name => "Meinersdorf", :area_code => "3721")
+ AreaCode.create(:country => germany, :name => "Limbach-Oberfrohna", :area_code => "3722")
+ AreaCode.create(:country => germany, :name => "Hohenstein-Ernstthal", :area_code => "3723")
+ AreaCode.create(:country => germany, :name => "Burgstädt", :area_code => "3724")
+ AreaCode.create(:country => germany, :name => "Zschopau", :area_code => "3725")
+ AreaCode.create(:country => germany, :name => "Flöha", :area_code => "3726")
+ AreaCode.create(:country => germany, :name => "Mittweida", :area_code => "3727")
+ AreaCode.create(:country => germany, :name => "Augustusburg", :area_code => "37291")
+ AreaCode.create(:country => germany, :name => "Oederan", :area_code => "37292")
+ AreaCode.create(:country => germany, :name => "Eppendorf Sachs", :area_code => "37293")
+ AreaCode.create(:country => germany, :name => "Grünhainichen", :area_code => "37294")
+ AreaCode.create(:country => germany, :name => "Lugau Erzgeb", :area_code => "37295")
+ AreaCode.create(:country => germany, :name => "Stollberg Erzgeb", :area_code => "37296")
+ AreaCode.create(:country => germany, :name => "Thum Sachs", :area_code => "37297")
+ AreaCode.create(:country => germany, :name => "Oelsnitz Erzgeb", :area_code => "37298")
+ AreaCode.create(:country => germany, :name => "Freiberg Sachs", :area_code => "3731")
+ AreaCode.create(:country => germany, :name => "Mulda Sachs", :area_code => "37320")
+ AreaCode.create(:country => germany, :name => "Frankenstein Sachs", :area_code => "37321")
+ AreaCode.create(:country => germany, :name => "Brand-Erbisdorf", :area_code => "37322")
+ AreaCode.create(:country => germany, :name => "Lichtenberg Erzgeb", :area_code => "37323")
+ AreaCode.create(:country => germany, :name => "Reinsberg Sachs", :area_code => "37324")
+ AreaCode.create(:country => germany, :name => "Niederbobritzsch", :area_code => "37325")
+ AreaCode.create(:country => germany, :name => "Frauenstein Sachs", :area_code => "37326")
+ AreaCode.create(:country => germany, :name => "Rechenberg-Bienenmühle", :area_code => "37327")
+ AreaCode.create(:country => germany, :name => "Grossschirma", :area_code => "37328")
+ AreaCode.create(:country => germany, :name => "Grosshartmannsdorf", :area_code => "37329")
+ AreaCode.create(:country => germany, :name => "Annaberg-Buchholz", :area_code => "3733")
+ AreaCode.create(:country => germany, :name => "Ehrenfriedersdorf", :area_code => "37341")
+ AreaCode.create(:country => germany, :name => "Cranzahl", :area_code => "37342")
+ AreaCode.create(:country => germany, :name => "Jöhstadt", :area_code => "37343")
+ AreaCode.create(:country => germany, :name => "Crottendorf Sachs", :area_code => "37344")
+ AreaCode.create(:country => germany, :name => "Geyer", :area_code => "37346")
+ AreaCode.create(:country => germany, :name => "Bärenstein Kr Annaberg", :area_code => "37347")
+ AreaCode.create(:country => germany, :name => "Oberwiesenthal Kurort", :area_code => "37348")
+ AreaCode.create(:country => germany, :name => "Scheibenberg", :area_code => "37349")
+ AreaCode.create(:country => germany, :name => "Marienberg Sachs", :area_code => "3735")
+ AreaCode.create(:country => germany, :name => "Olbernhau", :area_code => "37360")
+ AreaCode.create(:country => germany, :name => "Neuhausen Erzgeb", :area_code => "37361")
+ AreaCode.create(:country => germany, :name => "Seiffen Erzgeb", :area_code => "37362")
+ AreaCode.create(:country => germany, :name => "Zöblitz", :area_code => "37363")
+ AreaCode.create(:country => germany, :name => "Reitzenhain Erzgeb", :area_code => "37364")
+ AreaCode.create(:country => germany, :name => "Sayda", :area_code => "37365")
+ AreaCode.create(:country => germany, :name => "Rübenau", :area_code => "37366")
+ AreaCode.create(:country => germany, :name => "Lengefeld Erzgeb", :area_code => "37367")
+ AreaCode.create(:country => germany, :name => "Deutschneudorf", :area_code => "37368")
+ AreaCode.create(:country => germany, :name => "Wolkenstein", :area_code => "37369")
+ AreaCode.create(:country => germany, :name => "Rochlitz", :area_code => "3737")
+ AreaCode.create(:country => germany, :name => "Penig", :area_code => "37381")
+ AreaCode.create(:country => germany, :name => "Geringswalde", :area_code => "37382")
+ AreaCode.create(:country => germany, :name => "Lunzenau", :area_code => "37383")
+ AreaCode.create(:country => germany, :name => "Wechselburg", :area_code => "37384")
+ AreaCode.create(:country => germany, :name => "Plauen", :area_code => "3741")
+ AreaCode.create(:country => germany, :name => "Oelsnitz Vogtl", :area_code => "37421")
+ AreaCode.create(:country => germany, :name => "Markneukirchen", :area_code => "37422")
+ AreaCode.create(:country => germany, :name => "Adorf Vogtl", :area_code => "37423")
+ AreaCode.create(:country => germany, :name => "Eichigt", :area_code => "37430")
+ AreaCode.create(:country => germany, :name => "Mehltheuer Vogtl", :area_code => "37431")
+ AreaCode.create(:country => germany, :name => "Pausa Vogtl", :area_code => "37432")
+ AreaCode.create(:country => germany, :name => "Gutenfürst", :area_code => "37433")
+ AreaCode.create(:country => germany, :name => "Bobenneukirchen", :area_code => "37434")
+ AreaCode.create(:country => germany, :name => "Reuth b Plauen", :area_code => "37435")
+ AreaCode.create(:country => germany, :name => "Weischlitz", :area_code => "37436")
+ AreaCode.create(:country => germany, :name => "Bad Elster", :area_code => "37437")
+ AreaCode.create(:country => germany, :name => "Bad Brambach", :area_code => "37438")
+ AreaCode.create(:country => germany, :name => "Jocketa", :area_code => "37439")
+ AreaCode.create(:country => germany, :name => "Auerbach Vogtl.", :area_code => "3744")
+ AreaCode.create(:country => germany, :name => "Falkenstein Vogtl", :area_code => "3745")
+ AreaCode.create(:country => germany, :name => "Rothenkirchen Vogtl", :area_code => "37462")
+ AreaCode.create(:country => germany, :name => "Bergen Vogtl", :area_code => "37463")
+ AreaCode.create(:country => germany, :name => "Schöneck Vogtl", :area_code => "37464")
+ AreaCode.create(:country => germany, :name => "Tannenbergsthal Vogtl", :area_code => "37465")
+ AreaCode.create(:country => germany, :name => "Klingenthal Sachs", :area_code => "37467")
+ AreaCode.create(:country => germany, :name => "Treuen Vogtl", :area_code => "37468")
+ AreaCode.create(:country => germany, :name => "Zwickau", :area_code => "375")
+ AreaCode.create(:country => germany, :name => "Neumark Sachs", :area_code => "37600")
+ AreaCode.create(:country => germany, :name => "Mülsen Skt Jacob", :area_code => "37601")
+ AreaCode.create(:country => germany, :name => "Kirchberg Sachs", :area_code => "37602")
+ AreaCode.create(:country => germany, :name => "Wildenfels", :area_code => "37603")
+ AreaCode.create(:country => germany, :name => "Mosel", :area_code => "37604")
+ AreaCode.create(:country => germany, :name => "Hartenstein Sachs", :area_code => "37605")
+ AreaCode.create(:country => germany, :name => "Lengenfeld Vogtl", :area_code => "37606")
+ AreaCode.create(:country => germany, :name => "Ebersbrunn Sachs", :area_code => "37607")
+ AreaCode.create(:country => germany, :name => "Waldenburg Sachs", :area_code => "37608")
+ AreaCode.create(:country => germany, :name => "Wolkenburg Mulde", :area_code => "37609")
+ AreaCode.create(:country => germany, :name => "Werdau Sachs", :area_code => "3761")
+ AreaCode.create(:country => germany, :name => "Crimmitschau", :area_code => "3762")
+ AreaCode.create(:country => germany, :name => "Glauchau", :area_code => "3763")
+ AreaCode.create(:country => germany, :name => "Meerane", :area_code => "3764")
+ AreaCode.create(:country => germany, :name => "Reichenbach Vogtl", :area_code => "3765")
+ AreaCode.create(:country => germany, :name => "Aue Sachs", :area_code => "3771")
+ AreaCode.create(:country => germany, :name => "Schneeberg Erzgeb", :area_code => "3772")
+ AreaCode.create(:country => germany, :name => "Johanngeorgenstadt", :area_code => "3773")
+ AreaCode.create(:country => germany, :name => "Schwarzenberg", :area_code => "3774")
+ AreaCode.create(:country => germany, :name => "Eibenstock", :area_code => "37752")
+ AreaCode.create(:country => germany, :name => "Zwönitz", :area_code => "37754")
+ AreaCode.create(:country => germany, :name => "Schönheide Erzgeb", :area_code => "37755")
+ AreaCode.create(:country => germany, :name => "Breitenbrunn Erzgeb", :area_code => "37756")
+ AreaCode.create(:country => germany, :name => "Rittersgrün", :area_code => "37757")
+ AreaCode.create(:country => germany, :name => "Rostock", :area_code => "381")
+ AreaCode.create(:country => germany, :name => "Gelbensande", :area_code => "38201")
+ AreaCode.create(:country => germany, :name => "Volkenshagen", :area_code => "38202")
+ AreaCode.create(:country => germany, :name => "Bad Doberan", :area_code => "38203")
+ AreaCode.create(:country => germany, :name => "Broderstorf", :area_code => "38204")
+ AreaCode.create(:country => germany, :name => "Tessin b Rostock", :area_code => "38205")
+ AreaCode.create(:country => germany, :name => "Graal-Müritz Seeheilbad", :area_code => "38206")
+ AreaCode.create(:country => germany, :name => "Stäbelow", :area_code => "38207")
+ AreaCode.create(:country => germany, :name => "Kavelstorf", :area_code => "38208")
+ AreaCode.create(:country => germany, :name => "Sanitz b Rostock", :area_code => "38209")
+ AreaCode.create(:country => germany, :name => "Ribnitz-Damgarten", :area_code => "3821")
+ AreaCode.create(:country => germany, :name => "Wustrow Ostseebad", :area_code => "38220")
+ AreaCode.create(:country => germany, :name => "Marlow", :area_code => "38221")
+ AreaCode.create(:country => germany, :name => "Semlow", :area_code => "38222")
+ AreaCode.create(:country => germany, :name => "Saal Vorpom", :area_code => "38223")
+ AreaCode.create(:country => germany, :name => "Gresenhorst", :area_code => "38224")
+ AreaCode.create(:country => germany, :name => "Trinwillershagen", :area_code => "38225")
+ AreaCode.create(:country => germany, :name => "Dierhagen Ostseebad", :area_code => "38226")
+ AreaCode.create(:country => germany, :name => "Lüdershagen b Barth", :area_code => "38227")
+ AreaCode.create(:country => germany, :name => "Dettmannsdorf-Kölzow", :area_code => "38228")
+ AreaCode.create(:country => germany, :name => "Bad Sülze", :area_code => "38229")
+ AreaCode.create(:country => germany, :name => "Barth", :area_code => "38231")
+ AreaCode.create(:country => germany, :name => "Zingst Ostseebad", :area_code => "38232")
+ AreaCode.create(:country => germany, :name => "Prerow Ostseebad", :area_code => "38233")
+ AreaCode.create(:country => germany, :name => "Born a Darß", :area_code => "38234")
+ AreaCode.create(:country => germany, :name => "Kröpelin", :area_code => "38292")
+ AreaCode.create(:country => germany, :name => "Kühlungsborn Ostseebad", :area_code => "38293")
+ AreaCode.create(:country => germany, :name => "Neubukow", :area_code => "38294")
+ AreaCode.create(:country => germany, :name => "Satow b Bad Doberan", :area_code => "38295")
+ AreaCode.create(:country => germany, :name => "Rerik Ostseebad", :area_code => "38296")
+ AreaCode.create(:country => germany, :name => "Moitin", :area_code => "38297")
+ AreaCode.create(:country => germany, :name => "Insel Hiddensee", :area_code => "38300")
+ AreaCode.create(:country => germany, :name => "Putbus", :area_code => "38301")
+ AreaCode.create(:country => germany, :name => "Sagard", :area_code => "38302")
+ AreaCode.create(:country => germany, :name => "Sellin Ostseebad", :area_code => "38303")
+ AreaCode.create(:country => germany, :name => "Garz Rügen", :area_code => "38304")
+ AreaCode.create(:country => germany, :name => "Gingst", :area_code => "38305")
+ AreaCode.create(:country => germany, :name => "Samtens", :area_code => "38306")
+ AreaCode.create(:country => germany, :name => "Poseritz", :area_code => "38307")
+ AreaCode.create(:country => germany, :name => "Göhren Rügen", :area_code => "38308")
+ AreaCode.create(:country => germany, :name => "Trent", :area_code => "38309")
+ AreaCode.create(:country => germany, :name => "Stralsund", :area_code => "3831")
+ AreaCode.create(:country => germany, :name => "Tribsees", :area_code => "38320")
+ AreaCode.create(:country => germany, :name => "Martensdorf b Stralsund", :area_code => "38321")
+ AreaCode.create(:country => germany, :name => "Richtenberg", :area_code => "38322")
+ AreaCode.create(:country => germany, :name => "Prohn", :area_code => "38323")
+ AreaCode.create(:country => germany, :name => "Velgast", :area_code => "38324")
+ AreaCode.create(:country => germany, :name => "Rolofshagen", :area_code => "38325")
+ AreaCode.create(:country => germany, :name => "Grimmen", :area_code => "38326")
+ AreaCode.create(:country => germany, :name => "Elmenhorst Vorpom", :area_code => "38327")
+ AreaCode.create(:country => germany, :name => "Miltzow", :area_code => "38328")
+ AreaCode.create(:country => germany, :name => "Rakow Vorpom", :area_code => "38331")
+ AreaCode.create(:country => germany, :name => "Gross Bisdorf", :area_code => "38332")
+ AreaCode.create(:country => germany, :name => "Horst b Grimmen", :area_code => "38333")
+ AreaCode.create(:country => germany, :name => "Grammendorf", :area_code => "38334")
+ AreaCode.create(:country => germany, :name => "Greifswald", :area_code => "3834")
+ AreaCode.create(:country => germany, :name => "Mesekenhagen", :area_code => "38351")
+ AreaCode.create(:country => germany, :name => "Kemnitz b Greifswald", :area_code => "38352")
+ AreaCode.create(:country => germany, :name => "Gützkow b Greifswald", :area_code => "38353")
+ AreaCode.create(:country => germany, :name => "Wusterhusen", :area_code => "38354")
+ AreaCode.create(:country => germany, :name => "Züssow", :area_code => "38355")
+ AreaCode.create(:country => germany, :name => "Behrenhoff", :area_code => "38356")
+ AreaCode.create(:country => germany, :name => "Wolgast", :area_code => "3836")
+ AreaCode.create(:country => germany, :name => "Kröslin", :area_code => "38370")
+ AreaCode.create(:country => germany, :name => "Karlshagen", :area_code => "38371")
+ AreaCode.create(:country => germany, :name => "Usedom", :area_code => "38372")
+ AreaCode.create(:country => germany, :name => "Katzow", :area_code => "38373")
+ AreaCode.create(:country => germany, :name => "Lassan b Wolgast", :area_code => "38374")
+ AreaCode.create(:country => germany, :name => "Koserow", :area_code => "38375")
+ AreaCode.create(:country => germany, :name => "Zirchow", :area_code => "38376")
+ AreaCode.create(:country => germany, :name => "Zinnowitz", :area_code => "38377")
+ AreaCode.create(:country => germany, :name => "Heringsdorf Seebad", :area_code => "38378")
+ AreaCode.create(:country => germany, :name => "Benz Usedom", :area_code => "38379")
+ AreaCode.create(:country => germany, :name => "Bergen auf Rügen", :area_code => "3838")
+ AreaCode.create(:country => germany, :name => "Altenkirchen Rügen", :area_code => "38391")
+ AreaCode.create(:country => germany, :name => "Sassnitz", :area_code => "38392")
+ AreaCode.create(:country => germany, :name => "Binz Ostseebad", :area_code => "38393")
+ AreaCode.create(:country => germany, :name => "Wismar Meckl", :area_code => "3841")
+ AreaCode.create(:country => germany, :name => "Neukloster", :area_code => "38422")
+ AreaCode.create(:country => germany, :name => "Bad Kleinen", :area_code => "38423")
+ AreaCode.create(:country => germany, :name => "Bobitz", :area_code => "38424")
+ AreaCode.create(:country => germany, :name => "Kirchdorf Poel", :area_code => "38425")
+ AreaCode.create(:country => germany, :name => "Neuburg-Steinhausen", :area_code => "38426")
+ AreaCode.create(:country => germany, :name => "Blowatz", :area_code => "38427")
+ AreaCode.create(:country => germany, :name => "Hohenkirchen b Wismar", :area_code => "38428")
+ AreaCode.create(:country => germany, :name => "Glasin", :area_code => "38429")
+ AreaCode.create(:country => germany, :name => "Güstrow", :area_code => "3843")
+ AreaCode.create(:country => germany, :name => "Schwaan", :area_code => "3844")
+ AreaCode.create(:country => germany, :name => "Tarnow b Bützow", :area_code => "38450")
+ AreaCode.create(:country => germany, :name => "Hoppenrade b Güstrow", :area_code => "38451")
+ AreaCode.create(:country => germany, :name => "Lalendorf", :area_code => "38452")
+ AreaCode.create(:country => germany, :name => "Mistorf", :area_code => "38453")
+ AreaCode.create(:country => germany, :name => "Kritzkow", :area_code => "38454")
+ AreaCode.create(:country => germany, :name => "Plaaz", :area_code => "38455")
+ AreaCode.create(:country => germany, :name => "Langhagen b Güstrow", :area_code => "38456")
+ AreaCode.create(:country => germany, :name => "Krakow am See", :area_code => "38457")
+ AreaCode.create(:country => germany, :name => "Zehna", :area_code => "38458")
+ AreaCode.create(:country => germany, :name => "Laage", :area_code => "38459")
+ AreaCode.create(:country => germany, :name => "Bützow", :area_code => "38461")
+ AreaCode.create(:country => germany, :name => "Baumgarten Meckl", :area_code => "38462")
+ AreaCode.create(:country => germany, :name => "Bernitt", :area_code => "38464")
+ AreaCode.create(:country => germany, :name => "Jürgenshagen", :area_code => "38466")
+ AreaCode.create(:country => germany, :name => "Sternberg", :area_code => "3847")
+ AreaCode.create(:country => germany, :name => "Witzin", :area_code => "38481")
+ AreaCode.create(:country => germany, :name => "Warin", :area_code => "38482")
+ AreaCode.create(:country => germany, :name => "Brüel", :area_code => "38483")
+ AreaCode.create(:country => germany, :name => "Ventschow", :area_code => "38484")
+ AreaCode.create(:country => germany, :name => "Dabel", :area_code => "38485")
+ AreaCode.create(:country => germany, :name => "Gustävel", :area_code => "38486")
+ AreaCode.create(:country => germany, :name => "Demen", :area_code => "38488")
+ AreaCode.create(:country => germany, :name => "Schwerin Meckl", :area_code => "385")
+ AreaCode.create(:country => germany, :name => "Raben Steinfeld", :area_code => "3860")
+ AreaCode.create(:country => germany, :name => "Plate", :area_code => "3861")
+ AreaCode.create(:country => germany, :name => "Crivitz", :area_code => "3863")
+ AreaCode.create(:country => germany, :name => "Holthusen", :area_code => "3865")
+ AreaCode.create(:country => germany, :name => "Cambs", :area_code => "3866")
+ AreaCode.create(:country => germany, :name => "Lübstorf", :area_code => "3867")
+ AreaCode.create(:country => germany, :name => "Rastow", :area_code => "3868")
+ AreaCode.create(:country => germany, :name => "Dümmer", :area_code => "3869")
+ AreaCode.create(:country => germany, :name => "Parchim", :area_code => "3871")
+ AreaCode.create(:country => germany, :name => "Grebbin", :area_code => "38720")
+ AreaCode.create(:country => germany, :name => "Ziegendorf", :area_code => "38721")
+ AreaCode.create(:country => germany, :name => "Raduhn", :area_code => "38722")
+ AreaCode.create(:country => germany, :name => "Kladrum", :area_code => "38723")
+ AreaCode.create(:country => germany, :name => "Siggelkow", :area_code => "38724")
+ AreaCode.create(:country => germany, :name => "Gross Godems", :area_code => "38725")
+ AreaCode.create(:country => germany, :name => "Spornitz", :area_code => "38726")
+ AreaCode.create(:country => germany, :name => "Mestlin", :area_code => "38727")
+ AreaCode.create(:country => germany, :name => "Domsühl", :area_code => "38728")
+ AreaCode.create(:country => germany, :name => "Marnitz", :area_code => "38729")
+ AreaCode.create(:country => germany, :name => "Lübz", :area_code => "38731")
+ AreaCode.create(:country => germany, :name => "Gallin b Lübz", :area_code => "38732")
+ AreaCode.create(:country => germany, :name => "Karbow-Vietlübbe", :area_code => "38733")
+ AreaCode.create(:country => germany, :name => "Plau am See", :area_code => "38735")
+ AreaCode.create(:country => germany, :name => "Goldberg Meckl", :area_code => "38736")
+ AreaCode.create(:country => germany, :name => "Ganzlin", :area_code => "38737")
+ AreaCode.create(:country => germany, :name => "Karow b Lübz", :area_code => "38738")
+ AreaCode.create(:country => germany, :name => "Ludwigslust Meckl", :area_code => "3874")
+ AreaCode.create(:country => germany, :name => "Malliss", :area_code => "38750")
+ AreaCode.create(:country => germany, :name => "Picher", :area_code => "38751")
+ AreaCode.create(:country => germany, :name => "Zierzow b Ludwigslust", :area_code => "38752")
+ AreaCode.create(:country => germany, :name => "Wöbbelin", :area_code => "38753")
+ AreaCode.create(:country => germany, :name => "Leussow b Ludwigslust", :area_code => "38754")
+ AreaCode.create(:country => germany, :name => "Eldena", :area_code => "38755")
+ AreaCode.create(:country => germany, :name => "Grabow Meckl", :area_code => "38756")
+ AreaCode.create(:country => germany, :name => "Neustadt-Glewe", :area_code => "38757")
+ AreaCode.create(:country => germany, :name => "Dömitz", :area_code => "38758")
+ AreaCode.create(:country => germany, :name => "Tewswoos", :area_code => "38759")
+ AreaCode.create(:country => germany, :name => "Perleberg", :area_code => "3876")
+ AreaCode.create(:country => germany, :name => "Wittenberge", :area_code => "3877")
+ AreaCode.create(:country => germany, :name => "Lanz Brandenb", :area_code => "38780")
+ AreaCode.create(:country => germany, :name => "Mellen", :area_code => "38781")
+ AreaCode.create(:country => germany, :name => "Reetz b Perleberg", :area_code => "38782")
+ AreaCode.create(:country => germany, :name => "Dallmin", :area_code => "38783")
+ AreaCode.create(:country => germany, :name => "Kleinow Kr Prignitz", :area_code => "38784")
+ AreaCode.create(:country => germany, :name => "Berge b Perleberg", :area_code => "38785")
+ AreaCode.create(:country => germany, :name => "Glöwen", :area_code => "38787")
+ AreaCode.create(:country => germany, :name => "Gross Warnow", :area_code => "38788")
+ AreaCode.create(:country => germany, :name => "Wolfshagen b Perleberg", :area_code => "38789")
+ AreaCode.create(:country => germany, :name => "Bad Wilsnack", :area_code => "38791")
+ AreaCode.create(:country => germany, :name => "Lenzen (Elbe)", :area_code => "38792")
+ AreaCode.create(:country => germany, :name => "Dergenthin", :area_code => "38793")
+ AreaCode.create(:country => germany, :name => "Cumlosen", :area_code => "38794")
+ AreaCode.create(:country => germany, :name => "Viesecke", :area_code => "38796")
+ AreaCode.create(:country => germany, :name => "Karstädt Kr Prignitz", :area_code => "38797")
+ AreaCode.create(:country => germany, :name => "Grevesmühlen", :area_code => "3881")
+ AreaCode.create(:country => germany, :name => "Lüdersdorf Meckl", :area_code => "38821")
+ AreaCode.create(:country => germany, :name => "Diedrichshagen b Grevesmühlen", :area_code => "38822")
+ AreaCode.create(:country => germany, :name => "Selmsdorf", :area_code => "38823")
+ AreaCode.create(:country => germany, :name => "Mallentin", :area_code => "38824")
+ AreaCode.create(:country => germany, :name => "Klütz", :area_code => "38825")
+ AreaCode.create(:country => germany, :name => "Dassow", :area_code => "38826")
+ AreaCode.create(:country => germany, :name => "Kalkhorst", :area_code => "38827")
+ AreaCode.create(:country => germany, :name => "Schönberg Meckl", :area_code => "38828")
+ AreaCode.create(:country => germany, :name => "Hagenow", :area_code => "3883")
+ AreaCode.create(:country => germany, :name => "Neuhaus Elbe", :area_code => "38841")
+ AreaCode.create(:country => germany, :name => "Lüttenmark", :area_code => "38842")
+ AreaCode.create(:country => germany, :name => "Bennin", :area_code => "38843")
+ AreaCode.create(:country => germany, :name => "Gülze", :area_code => "38844")
+ AreaCode.create(:country => germany, :name => "Kaarssen", :area_code => "38845")
+ AreaCode.create(:country => germany, :name => "Boizenburg Elbe", :area_code => "38847")
+ AreaCode.create(:country => germany, :name => "Vellahn", :area_code => "38848")
+ AreaCode.create(:country => germany, :name => "Gammelin", :area_code => "38850")
+ AreaCode.create(:country => germany, :name => "Zarrentin Meckl", :area_code => "38851")
+ AreaCode.create(:country => germany, :name => "Wittenburg", :area_code => "38852")
+ AreaCode.create(:country => germany, :name => "Drönnewitz b Hagenow", :area_code => "38853")
+ AreaCode.create(:country => germany, :name => "Redefin", :area_code => "38854")
+ AreaCode.create(:country => germany, :name => "Lübtheen", :area_code => "38855")
+ AreaCode.create(:country => germany, :name => "Pritzier b Hagenow", :area_code => "38856")
+ AreaCode.create(:country => germany, :name => "Lassahn", :area_code => "38858")
+ AreaCode.create(:country => germany, :name => "Alt Zachun", :area_code => "38859")
+ AreaCode.create(:country => germany, :name => "Gadebusch", :area_code => "3886")
+ AreaCode.create(:country => germany, :name => "Mühlen Eichsen", :area_code => "38871")
+ AreaCode.create(:country => germany, :name => "Rehna", :area_code => "38872")
+ AreaCode.create(:country => germany, :name => "Carlow", :area_code => "38873")
+ AreaCode.create(:country => germany, :name => "Lützow", :area_code => "38874")
+ AreaCode.create(:country => germany, :name => "Schlagsdorf b Gadebusch", :area_code => "38875")
+ AreaCode.create(:country => germany, :name => "Roggendorf", :area_code => "38876")
+ AreaCode.create(:country => germany, :name => "Beetzendorf", :area_code => "39000")
+ AreaCode.create(:country => germany, :name => "Apenburg", :area_code => "39001")
+ AreaCode.create(:country => germany, :name => "Oebisfelde", :area_code => "39002")
+ AreaCode.create(:country => germany, :name => "Jübar", :area_code => "39003")
+ AreaCode.create(:country => germany, :name => "Köckte b Gardelegen", :area_code => "39004")
+ AreaCode.create(:country => germany, :name => "Kusey", :area_code => "39005")
+ AreaCode.create(:country => germany, :name => "Miesterhorst", :area_code => "39006")
+ AreaCode.create(:country => germany, :name => "Tangeln", :area_code => "39007")
+ AreaCode.create(:country => germany, :name => "Kunrau", :area_code => "39008")
+ AreaCode.create(:country => germany, :name => "Badel", :area_code => "39009")
+ AreaCode.create(:country => germany, :name => "Salzwedel", :area_code => "3901")
+ AreaCode.create(:country => germany, :name => "Diesdorf Altm", :area_code => "3902")
+ AreaCode.create(:country => germany, :name => "Brunau", :area_code => "39030")
+ AreaCode.create(:country => germany, :name => "Dähre", :area_code => "39031")
+ AreaCode.create(:country => germany, :name => "Mahlsdorf b Salzwedel", :area_code => "39032")
+ AreaCode.create(:country => germany, :name => "Wallstawe", :area_code => "39033")
+ AreaCode.create(:country => germany, :name => "Fleetmark", :area_code => "39034")
+ AreaCode.create(:country => germany, :name => "Kuhfelde", :area_code => "39035")
+ AreaCode.create(:country => germany, :name => "Binde", :area_code => "39036")
+ AreaCode.create(:country => germany, :name => "Pretzier", :area_code => "39037")
+ AreaCode.create(:country => germany, :name => "Henningen", :area_code => "39038")
+ AreaCode.create(:country => germany, :name => "Bonese", :area_code => "39039")
+ AreaCode.create(:country => germany, :name => "Haldensleben", :area_code => "3904")
+ AreaCode.create(:country => germany, :name => "Bartensleben", :area_code => "39050")
+ AreaCode.create(:country => germany, :name => "Calvörde", :area_code => "39051")
+ AreaCode.create(:country => germany, :name => "Erxleben b Haldensleben", :area_code => "39052")
+ AreaCode.create(:country => germany, :name => "Süplingen", :area_code => "39053")
+ AreaCode.create(:country => germany, :name => "Flechtingen", :area_code => "39054")
+ AreaCode.create(:country => germany, :name => "Hörsingen", :area_code => "39055")
+ AreaCode.create(:country => germany, :name => "Klüden", :area_code => "39056")
+ AreaCode.create(:country => germany, :name => "Rätzlingen Sachs-Anh", :area_code => "39057")
+ AreaCode.create(:country => germany, :name => "Uthmöden", :area_code => "39058")
+ AreaCode.create(:country => germany, :name => "Wegenstedt", :area_code => "39059")
+ AreaCode.create(:country => germany, :name => "Weferlingen", :area_code => "39061")
+ AreaCode.create(:country => germany, :name => "Bebertal", :area_code => "39062")
+ AreaCode.create(:country => germany, :name => "Gardelegen", :area_code => "3907")
+ AreaCode.create(:country => germany, :name => "Kalbe Milde", :area_code => "39080")
+ AreaCode.create(:country => germany, :name => "Kakerbeck Sachs-Anh", :area_code => "39081")
+ AreaCode.create(:country => germany, :name => "Mieste", :area_code => "39082")
+ AreaCode.create(:country => germany, :name => "Messdorf", :area_code => "39083")
+ AreaCode.create(:country => germany, :name => "Lindstedt", :area_code => "39084")
+ AreaCode.create(:country => germany, :name => "Zichtau", :area_code => "39085")
+ AreaCode.create(:country => germany, :name => "Jävenitz", :area_code => "39086")
+ AreaCode.create(:country => germany, :name => "Jerchel Altmark", :area_code => "39087")
+ AreaCode.create(:country => germany, :name => "Letzlingen", :area_code => "39088")
+ AreaCode.create(:country => germany, :name => "Bismark Altmark", :area_code => "39089")
+ AreaCode.create(:country => germany, :name => "Klötze Altmark", :area_code => "3909")
+ AreaCode.create(:country => germany, :name => "Magdeburg", :area_code => "391")
+ AreaCode.create(:country => germany, :name => "Gommern", :area_code => "39200")
+ AreaCode.create(:country => germany, :name => "Wolmirstedt", :area_code => "39201")
+ AreaCode.create(:country => germany, :name => "Gross Ammensleben", :area_code => "39202")
+ AreaCode.create(:country => germany, :name => "Barleben", :area_code => "39203")
+ AreaCode.create(:country => germany, :name => "Niederndodeleben", :area_code => "39204")
+ AreaCode.create(:country => germany, :name => "Langenweddingen", :area_code => "39205")
+ AreaCode.create(:country => germany, :name => "Eichenbarleben", :area_code => "39206")
+ AreaCode.create(:country => germany, :name => "Colbitz", :area_code => "39207")
+ AreaCode.create(:country => germany, :name => "Loitsche", :area_code => "39208")
+ AreaCode.create(:country => germany, :name => "Wanzleben", :area_code => "39209")
+ AreaCode.create(:country => germany, :name => "Burg b Magdeburg", :area_code => "3921")
+ AreaCode.create(:country => germany, :name => "Möckern b Magdeburg", :area_code => "39221")
+ AreaCode.create(:country => germany, :name => "Möser", :area_code => "39222")
+ AreaCode.create(:country => germany, :name => "Theessen", :area_code => "39223")
+ AreaCode.create(:country => germany, :name => "Büden", :area_code => "39224")
+ AreaCode.create(:country => germany, :name => "Altengrabow", :area_code => "39225")
+ AreaCode.create(:country => germany, :name => "Hohenziatz", :area_code => "39226")
+ AreaCode.create(:country => germany, :name => "Zerbst", :area_code => "3923")
+ AreaCode.create(:country => germany, :name => "Leitzkau", :area_code => "39241")
+ AreaCode.create(:country => germany, :name => "Prödel", :area_code => "39242")
+ AreaCode.create(:country => germany, :name => "Nedlitz b Zerbst", :area_code => "39243")
+ AreaCode.create(:country => germany, :name => "Steutz", :area_code => "39244")
+ AreaCode.create(:country => germany, :name => "Loburg", :area_code => "39245")
+ AreaCode.create(:country => germany, :name => "Lindau Anh", :area_code => "39246")
+ AreaCode.create(:country => germany, :name => "Güterglück", :area_code => "39247")
+ AreaCode.create(:country => germany, :name => "Dobritz", :area_code => "39248")
+ AreaCode.create(:country => germany, :name => "Stassfurt", :area_code => "3925")
+ AreaCode.create(:country => germany, :name => "Güsten Anh", :area_code => "39262")
+ AreaCode.create(:country => germany, :name => "Unseburg", :area_code => "39263")
+ AreaCode.create(:country => germany, :name => "Kroppenstedt", :area_code => "39264")
+ AreaCode.create(:country => germany, :name => "Löderburg", :area_code => "39265")
+ AreaCode.create(:country => germany, :name => "Förderstedt", :area_code => "39266")
+ AreaCode.create(:country => germany, :name => "Schneidlingen", :area_code => "39267")
+ AreaCode.create(:country => germany, :name => "Egeln", :area_code => "39268")
+ AreaCode.create(:country => germany, :name => "Schönebeck Elbe", :area_code => "3928")
+ AreaCode.create(:country => germany, :name => "Calbe Saale", :area_code => "39291")
+ AreaCode.create(:country => germany, :name => "Biederitz", :area_code => "39292")
+ AreaCode.create(:country => germany, :name => "Dreileben", :area_code => "39293")
+ AreaCode.create(:country => germany, :name => "Gross Rosenburg", :area_code => "39294")
+ AreaCode.create(:country => germany, :name => "Zuchau", :area_code => "39295")
+ AreaCode.create(:country => germany, :name => "Welsleben", :area_code => "39296")
+ AreaCode.create(:country => germany, :name => "Eickendorf Kr Schönebeck", :area_code => "39297")
+ AreaCode.create(:country => germany, :name => "Barby Elbe", :area_code => "39298")
+ AreaCode.create(:country => germany, :name => "Stendal", :area_code => "3931")
+ AreaCode.create(:country => germany, :name => "Schinne", :area_code => "39320")
+ AreaCode.create(:country => germany, :name => "Arneburg", :area_code => "39321")
+ AreaCode.create(:country => germany, :name => "Tangermünde", :area_code => "39322")
+ AreaCode.create(:country => germany, :name => "Schönhausen Elbe", :area_code => "39323")
+ AreaCode.create(:country => germany, :name => "Kläden b Stendal", :area_code => "39324")
+ AreaCode.create(:country => germany, :name => "Vinzelberg", :area_code => "39325")
+ AreaCode.create(:country => germany, :name => "Klietz", :area_code => "39327")
+ AreaCode.create(:country => germany, :name => "Rochau", :area_code => "39328")
+ AreaCode.create(:country => germany, :name => "Möringen", :area_code => "39329")
+ AreaCode.create(:country => germany, :name => "Genthin", :area_code => "3933")
+ AreaCode.create(:country => germany, :name => "Redekin", :area_code => "39341")
+ AreaCode.create(:country => germany, :name => "Gladau", :area_code => "39342")
+ AreaCode.create(:country => germany, :name => "Jerichow", :area_code => "39343")
+ AreaCode.create(:country => germany, :name => "Güsen", :area_code => "39344")
+ AreaCode.create(:country => germany, :name => "Parchen", :area_code => "39345")
+ AreaCode.create(:country => germany, :name => "Tucheim", :area_code => "39346")
+ AreaCode.create(:country => germany, :name => "Kade", :area_code => "39347")
+ AreaCode.create(:country => germany, :name => "Klitsche", :area_code => "39348")
+ AreaCode.create(:country => germany, :name => "Parey Elbe", :area_code => "39349")
+ AreaCode.create(:country => germany, :name => "Tangerhütte", :area_code => "3935")
+ AreaCode.create(:country => germany, :name => "Lüderitz", :area_code => "39361")
+ AreaCode.create(:country => germany, :name => "Grieben b Tangerhütte", :area_code => "39362")
+ AreaCode.create(:country => germany, :name => "Angern", :area_code => "39363")
+ AreaCode.create(:country => germany, :name => "Dolle", :area_code => "39364")
+ AreaCode.create(:country => germany, :name => "Bellingen b Stendal", :area_code => "39365")
+ AreaCode.create(:country => germany, :name => "Kehnert", :area_code => "39366")
+ AreaCode.create(:country => germany, :name => "Osterburg Altmark", :area_code => "3937")
+ AreaCode.create(:country => germany, :name => "Kamern", :area_code => "39382")
+ AreaCode.create(:country => germany, :name => "Sandau Elbe", :area_code => "39383")
+ AreaCode.create(:country => germany, :name => "Arendsee Altmark", :area_code => "39384")
+ AreaCode.create(:country => germany, :name => "Seehausen Altmark", :area_code => "39386")
+ AreaCode.create(:country => germany, :name => "Havelberg", :area_code => "39387")
+ AreaCode.create(:country => germany, :name => "Goldbeck Altm", :area_code => "39388")
+ AreaCode.create(:country => germany, :name => "Schollene", :area_code => "39389")
+ AreaCode.create(:country => germany, :name => "Iden", :area_code => "39390")
+ AreaCode.create(:country => germany, :name => "Lückstedt", :area_code => "39391")
+ AreaCode.create(:country => germany, :name => "Rönnebeck Sachs-Ahn", :area_code => "39392")
+ AreaCode.create(:country => germany, :name => "Werben Elbe", :area_code => "39393")
+ AreaCode.create(:country => germany, :name => "Hohenberg-Krusemark", :area_code => "39394")
+ AreaCode.create(:country => germany, :name => "Wanzer", :area_code => "39395")
+ AreaCode.create(:country => germany, :name => "Neukirchen Altmark", :area_code => "39396")
+ AreaCode.create(:country => germany, :name => "Geestgottberg", :area_code => "39397")
+ AreaCode.create(:country => germany, :name => "Gross Garz", :area_code => "39398")
+ AreaCode.create(:country => germany, :name => "Kleinau", :area_code => "39399")
+ AreaCode.create(:country => germany, :name => "Wefensleben", :area_code => "39400")
+ AreaCode.create(:country => germany, :name => "Neuwegersleben", :area_code => "39401")
+ AreaCode.create(:country => germany, :name => "Völpke", :area_code => "39402")
+ AreaCode.create(:country => germany, :name => "Gröningen Sachs-Ahn", :area_code => "39403")
+ AreaCode.create(:country => germany, :name => "Ausleben", :area_code => "39404")
+ AreaCode.create(:country => germany, :name => "Hötensleben", :area_code => "39405")
+ AreaCode.create(:country => germany, :name => "Harbke", :area_code => "39406")
+ AreaCode.create(:country => germany, :name => "Seehausen Börde", :area_code => "39407")
+ AreaCode.create(:country => germany, :name => "Hadmersleben", :area_code => "39408")
+ AreaCode.create(:country => germany, :name => "Eilsleben", :area_code => "39409")
+ AreaCode.create(:country => germany, :name => "Halberstadt", :area_code => "3941")
+ AreaCode.create(:country => germany, :name => "Osterwieck", :area_code => "39421")
+ AreaCode.create(:country => germany, :name => "Badersleben", :area_code => "39422")
+ AreaCode.create(:country => germany, :name => "Wegeleben", :area_code => "39423")
+ AreaCode.create(:country => germany, :name => "Schwanebeck Sachs-Anh", :area_code => "39424")
+ AreaCode.create(:country => germany, :name => "Dingelstedt a Huy", :area_code => "39425")
+ AreaCode.create(:country => germany, :name => "Hessen", :area_code => "39426")
+ AreaCode.create(:country => germany, :name => "Ströbeck", :area_code => "39427")
+ AreaCode.create(:country => germany, :name => "Pabstorf", :area_code => "39428")
+ AreaCode.create(:country => germany, :name => "Wernigerode", :area_code => "3943")
+ AreaCode.create(:country => germany, :name => "Blankenburg Harz", :area_code => "3944")
+ AreaCode.create(:country => germany, :name => "Wasserleben", :area_code => "39451")
+ AreaCode.create(:country => germany, :name => "Ilsenburg", :area_code => "39452")
+ AreaCode.create(:country => germany, :name => "Derenburg", :area_code => "39453")
+ AreaCode.create(:country => germany, :name => "Elbingerode Harz", :area_code => "39454")
+ AreaCode.create(:country => germany, :name => "Schierke", :area_code => "39455")
+ AreaCode.create(:country => germany, :name => "Altenbrak", :area_code => "39456")
+ AreaCode.create(:country => germany, :name => "Benneckenstein Harz", :area_code => "39457")
+ AreaCode.create(:country => germany, :name => "Heudeber", :area_code => "39458")
+ AreaCode.create(:country => germany, :name => "Hasselfelde", :area_code => "39459")
+ AreaCode.create(:country => germany, :name => "Quedlinburg", :area_code => "3946")
+ AreaCode.create(:country => germany, :name => "Thale", :area_code => "3947")
+ AreaCode.create(:country => germany, :name => "Hedersleben b Aschersleben", :area_code => "39481")
+ AreaCode.create(:country => germany, :name => "Gatersleben", :area_code => "39482")
+ AreaCode.create(:country => germany, :name => "Ballenstedt", :area_code => "39483")
+ AreaCode.create(:country => germany, :name => "Harzgerode", :area_code => "39484")
+ AreaCode.create(:country => germany, :name => "Gernrode Harz", :area_code => "39485")
+ AreaCode.create(:country => germany, :name => "Friedrichsbrunn", :area_code => "39487")
+ AreaCode.create(:country => germany, :name => "Güntersberge", :area_code => "39488")
+ AreaCode.create(:country => germany, :name => "Strassberg Harz", :area_code => "39489")
+ AreaCode.create(:country => germany, :name => "Oschersleben Bode", :area_code => "3949")
+ AreaCode.create(:country => germany, :name => "Neubrandenburg", :area_code => "395")
+ AreaCode.create(:country => germany, :name => "Zwiedorf", :area_code => "39600")
+ AreaCode.create(:country => germany, :name => "Friedland Meckl", :area_code => "39601")
+ AreaCode.create(:country => germany, :name => "Kleeth", :area_code => "39602")
+ AreaCode.create(:country => germany, :name => "Burg Stargard", :area_code => "39603")
+ AreaCode.create(:country => germany, :name => "Wildberg b Altentreptow", :area_code => "39604")
+ AreaCode.create(:country => germany, :name => "Gross Nemerow", :area_code => "39605")
+ AreaCode.create(:country => germany, :name => "Glienke", :area_code => "39606")
+ AreaCode.create(:country => germany, :name => "Kotelow", :area_code => "39607")
+ AreaCode.create(:country => germany, :name => "Staven", :area_code => "39608")
+ AreaCode.create(:country => germany, :name => "Altentreptow", :area_code => "3961")
+ AreaCode.create(:country => germany, :name => "Penzlin b Waren", :area_code => "3962")
+ AreaCode.create(:country => germany, :name => "Woldegk", :area_code => "3963")
+ AreaCode.create(:country => germany, :name => "Bredenfelde b Strasburg", :area_code => "3964")
+ AreaCode.create(:country => germany, :name => "Burow b Altentreptow", :area_code => "3965")
+ AreaCode.create(:country => germany, :name => "Cölpin", :area_code => "3966")
+ AreaCode.create(:country => germany, :name => "Oertzenhof b Strasburg", :area_code => "3967")
+ AreaCode.create(:country => germany, :name => "Schönbeck Meckl", :area_code => "3968")
+ AreaCode.create(:country => germany, :name => "Siedenbollentin", :area_code => "3969")
+ AreaCode.create(:country => germany, :name => "Anklam", :area_code => "3971")
+ AreaCode.create(:country => germany, :name => "Liepen b Anklam", :area_code => "39721")
+ AreaCode.create(:country => germany, :name => "Sarnow b Anklam", :area_code => "39722")
+ AreaCode.create(:country => germany, :name => "Krien", :area_code => "39723")
+ AreaCode.create(:country => germany, :name => "Klein Bünzow", :area_code => "39724")
+ AreaCode.create(:country => germany, :name => "Ducherow", :area_code => "39726")
+ AreaCode.create(:country => germany, :name => "Spantekow", :area_code => "39727")
+ AreaCode.create(:country => germany, :name => "Medow b Anklam", :area_code => "39728")
+ AreaCode.create(:country => germany, :name => "Pasewalk", :area_code => "3973")
+ AreaCode.create(:country => germany, :name => "Nechlin", :area_code => "39740")
+ AreaCode.create(:country => germany, :name => "Jatznick", :area_code => "39741")
+ AreaCode.create(:country => germany, :name => "Brüssow b Pasewalk", :area_code => "39742")
+ AreaCode.create(:country => germany, :name => "Zerrenthin", :area_code => "39743")
+ AreaCode.create(:country => germany, :name => "Rothenklempenow", :area_code => "39744")
+ AreaCode.create(:country => germany, :name => "Hetzdorf b Strasburg", :area_code => "39745")
+ AreaCode.create(:country => germany, :name => "Krackow", :area_code => "39746")
+ AreaCode.create(:country => germany, :name => "Züsedom", :area_code => "39747")
+ AreaCode.create(:country => germany, :name => "Viereck", :area_code => "39748")
+ AreaCode.create(:country => germany, :name => "Grambow b Pasewalk", :area_code => "39749")
+ AreaCode.create(:country => germany, :name => "Penkun", :area_code => "39751")
+ AreaCode.create(:country => germany, :name => "Blumenhagen b Strasburg", :area_code => "39752")
+ AreaCode.create(:country => germany, :name => "Strasburg", :area_code => "39753")
+ AreaCode.create(:country => germany, :name => "Löcknitz Vorpom", :area_code => "39754")
+ AreaCode.create(:country => germany, :name => "Torgelow b Ueckermünde", :area_code => "3976")
+ AreaCode.create(:country => germany, :name => "Ueckermünde", :area_code => "39771")
+ AreaCode.create(:country => germany, :name => "Rothemühl", :area_code => "39772")
+ AreaCode.create(:country => germany, :name => "Altwarp", :area_code => "39773")
+ AreaCode.create(:country => germany, :name => "Mönkebude", :area_code => "39774")
+ AreaCode.create(:country => germany, :name => "Ahlbeck b Torgelow", :area_code => "39775")
+ AreaCode.create(:country => germany, :name => "Hintersee", :area_code => "39776")
+ AreaCode.create(:country => germany, :name => "Borkenfriede", :area_code => "39777")
+ AreaCode.create(:country => germany, :name => "Ferdinandshof b Torgelow", :area_code => "39778")
+ AreaCode.create(:country => germany, :name => "Eggesin", :area_code => "39779")
+ AreaCode.create(:country => germany, :name => "Neustrelitz", :area_code => "3981")
+ AreaCode.create(:country => germany, :name => "Triepkendorf", :area_code => "39820")
+ AreaCode.create(:country => germany, :name => "Carpin", :area_code => "39821")
+ AreaCode.create(:country => germany, :name => "Kratzeburg", :area_code => "39822")
+ AreaCode.create(:country => germany, :name => "Rechlin", :area_code => "39823")
+ AreaCode.create(:country => germany, :name => "Hohenzieritz", :area_code => "39824")
+ AreaCode.create(:country => germany, :name => "Wokuhl", :area_code => "39825")
+ AreaCode.create(:country => germany, :name => "Blankensee b Neustrelitz", :area_code => "39826")
+ AreaCode.create(:country => germany, :name => "Schwarz b Neustrelitz", :area_code => "39827")
+ AreaCode.create(:country => germany, :name => "Wustrow Kr Mecklenburg-Strelitz", :area_code => "39828")
+ AreaCode.create(:country => germany, :name => "Blankenförde", :area_code => "39829")
+ AreaCode.create(:country => germany, :name => "Feldberg Meckl", :area_code => "39831")
+ AreaCode.create(:country => germany, :name => "Wesenberg Meckl", :area_code => "39832")
+ AreaCode.create(:country => germany, :name => "Mirow Kr Neustrelitz", :area_code => "39833")
+ AreaCode.create(:country => germany, :name => "Prenzlau", :area_code => "3984")
+ AreaCode.create(:country => germany, :name => "Göritz b Prenzlau", :area_code => "39851")
+ AreaCode.create(:country => germany, :name => "Schönermark b Prenzlau", :area_code => "39852")
+ AreaCode.create(:country => germany, :name => "Holzendorf b Prenzlau", :area_code => "39853")
+ AreaCode.create(:country => germany, :name => "Kleptow", :area_code => "39854")
+ AreaCode.create(:country => germany, :name => "Parmen-Weggun", :area_code => "39855")
+ AreaCode.create(:country => germany, :name => "Beenz b Prenzlau", :area_code => "39856")
+ AreaCode.create(:country => germany, :name => "Drense", :area_code => "39857")
+ AreaCode.create(:country => germany, :name => "Bietikow", :area_code => "39858")
+ AreaCode.create(:country => germany, :name => "Fürstenwerder", :area_code => "39859")
+ AreaCode.create(:country => germany, :name => "Gramzow b Prenzlau", :area_code => "39861")
+ AreaCode.create(:country => germany, :name => "Schmölln b Prenzlau", :area_code => "39862")
+ AreaCode.create(:country => germany, :name => "Seehausen b Prenzlau", :area_code => "39863")
+ AreaCode.create(:country => germany, :name => "Templin", :area_code => "3987")
+ AreaCode.create(:country => germany, :name => "Ringenwalde b Templin", :area_code => "39881")
+ AreaCode.create(:country => germany, :name => "Gollin", :area_code => "39882")
+ AreaCode.create(:country => germany, :name => "Groß Dölln", :area_code => "39883")
+ AreaCode.create(:country => germany, :name => "Hassleben b Prenzlau", :area_code => "39884")
+ AreaCode.create(:country => germany, :name => "Jakobshagen", :area_code => "39885")
+ AreaCode.create(:country => germany, :name => "Milmersdorf", :area_code => "39886")
+ AreaCode.create(:country => germany, :name => "Gerswalde", :area_code => "39887")
+ AreaCode.create(:country => germany, :name => "Lychen", :area_code => "39888")
+ AreaCode.create(:country => germany, :name => "Boitzenburg", :area_code => "39889")
+ AreaCode.create(:country => germany, :name => "Waren Müritz", :area_code => "3991")
+ AreaCode.create(:country => germany, :name => "Ankershagen", :area_code => "39921")
+ AreaCode.create(:country => germany, :name => "Dambeck b Röbel", :area_code => "39922")
+ AreaCode.create(:country => germany, :name => "Priborn", :area_code => "39923")
+ AreaCode.create(:country => germany, :name => "Stuer", :area_code => "39924")
+ AreaCode.create(:country => germany, :name => "Wredenhagen", :area_code => "39925")
+ AreaCode.create(:country => germany, :name => "Grabowhöfe", :area_code => "39926")
+ AreaCode.create(:country => germany, :name => "Nossentiner Hütte", :area_code => "39927")
+ AreaCode.create(:country => germany, :name => "Möllenhagen", :area_code => "39928")
+ AreaCode.create(:country => germany, :name => "Jabel b Waren", :area_code => "39929")
+ AreaCode.create(:country => germany, :name => "Röbel Müritz", :area_code => "39931")
+ AreaCode.create(:country => germany, :name => "Malchow b Waren", :area_code => "39932")
+ AreaCode.create(:country => germany, :name => "Vollrathsruhe", :area_code => "39933")
+ AreaCode.create(:country => germany, :name => "Groß Plasten", :area_code => "39934")
+ AreaCode.create(:country => germany, :name => "Malchin", :area_code => "3994")
+ AreaCode.create(:country => germany, :name => "Faulenrost", :area_code => "39951")
+ AreaCode.create(:country => germany, :name => "Grammentin", :area_code => "39952")
+ AreaCode.create(:country => germany, :name => "Schwinkendorf", :area_code => "39953")
+ AreaCode.create(:country => germany, :name => "Stavenhagen Reuterstadt", :area_code => "39954")
+ AreaCode.create(:country => germany, :name => "Jürgenstorf Meckl", :area_code => "39955")
+ AreaCode.create(:country => germany, :name => "Neukalen", :area_code => "39956")
+ AreaCode.create(:country => germany, :name => "Gielow", :area_code => "39957")
+ AreaCode.create(:country => germany, :name => "Dargun", :area_code => "39959")
+ AreaCode.create(:country => germany, :name => "Teterow", :area_code => "3996")
+ AreaCode.create(:country => germany, :name => "Gnoien", :area_code => "39971")
+ AreaCode.create(:country => germany, :name => "Walkendorf", :area_code => "39972")
+ AreaCode.create(:country => germany, :name => "Altkalen", :area_code => "39973")
+ AreaCode.create(:country => germany, :name => "Thürkow", :area_code => "39975")
+ AreaCode.create(:country => germany, :name => "Groß Bützin", :area_code => "39976")
+ AreaCode.create(:country => germany, :name => "Jördenstorf", :area_code => "39977")
+ AreaCode.create(:country => germany, :name => "Gross Roge", :area_code => "39978")
+ AreaCode.create(:country => germany, :name => "Demmin", :area_code => "3998")
+ AreaCode.create(:country => germany, :name => "Daberkow", :area_code => "39991")
+ AreaCode.create(:country => germany, :name => "Görmin", :area_code => "39992")
+ AreaCode.create(:country => germany, :name => "Hohenmocker", :area_code => "39993")
+ AreaCode.create(:country => germany, :name => "Metschow", :area_code => "39994")
+ AreaCode.create(:country => germany, :name => "Nossendorf", :area_code => "39995")
+ AreaCode.create(:country => germany, :name => "Törpin", :area_code => "39996")
+ AreaCode.create(:country => germany, :name => "Jarmen", :area_code => "39997")
+ AreaCode.create(:country => germany, :name => "Loitz b Demmin", :area_code => "39998")
+ AreaCode.create(:country => germany, :name => "Tutow", :area_code => "39999")
+ AreaCode.create(:country => germany, :name => "Hamburg", :area_code => "40")
+ AreaCode.create(:country => germany, :name => "Pinneberg", :area_code => "4101")
+ AreaCode.create(:country => germany, :name => "Ahrensburg", :area_code => "4102")
+ AreaCode.create(:country => germany, :name => "Wedel", :area_code => "4103")
+ AreaCode.create(:country => germany, :name => "Aumühle b Hamburg", :area_code => "4104")
+ AreaCode.create(:country => germany, :name => "Seevetal", :area_code => "4105")
+ AreaCode.create(:country => germany, :name => "Quickborn Kr Pinneberg", :area_code => "4106")
+ AreaCode.create(:country => germany, :name => "Siek Kr Stormarn", :area_code => "4107")
+ AreaCode.create(:country => germany, :name => "Rosengarten Kr Harburg", :area_code => "4108")
+ AreaCode.create(:country => germany, :name => "Tangstedt Bz Hamburg", :area_code => "4109")
+ AreaCode.create(:country => germany, :name => "Ellerhoop", :area_code => "4120")
+ AreaCode.create(:country => germany, :name => "Elmshorn", :area_code => "4121")
+ AreaCode.create(:country => germany, :name => "Uetersen", :area_code => "4122")
+ AreaCode.create(:country => germany, :name => "Barmstedt", :area_code => "4123")
+ AreaCode.create(:country => germany, :name => "Glückstadt", :area_code => "4124")
+ AreaCode.create(:country => germany, :name => "Seestermühe", :area_code => "4125")
+ AreaCode.create(:country => germany, :name => "Horst Holstein", :area_code => "4126")
+ AreaCode.create(:country => germany, :name => "Westerhorn", :area_code => "4127")
+ AreaCode.create(:country => germany, :name => "Kollmar", :area_code => "4128")
+ AreaCode.create(:country => germany, :name => "Haseldorf", :area_code => "4129")
+ AreaCode.create(:country => germany, :name => "Lüneburg", :area_code => "4131")
+ AreaCode.create(:country => germany, :name => "Amelinghausen", :area_code => "4132")
+ AreaCode.create(:country => germany, :name => "Wittorf Kr Lüneburg", :area_code => "4133")
+ AreaCode.create(:country => germany, :name => "Embsen Kr Lünebeburg", :area_code => "4134")
+ AreaCode.create(:country => germany, :name => "Kirchgellersen", :area_code => "4135")
+ AreaCode.create(:country => germany, :name => "Scharnebeck", :area_code => "4136")
+ AreaCode.create(:country => germany, :name => "Barendorf", :area_code => "4137")
+ AreaCode.create(:country => germany, :name => "Betzendorf Kr Lünebeburg", :area_code => "4138")
+ AreaCode.create(:country => germany, :name => "Hohnstorf Elbe", :area_code => "4139")
+ AreaCode.create(:country => germany, :name => "Estorf Kr Stade", :area_code => "4140")
+ AreaCode.create(:country => germany, :name => "Stade", :area_code => "4141")
+ AreaCode.create(:country => germany, :name => "Steinkirchen Kr Stade", :area_code => "4142")
+ AreaCode.create(:country => germany, :name => "Drochtersen", :area_code => "4143")
+ AreaCode.create(:country => germany, :name => "Himmelpforten", :area_code => "4144")
+ AreaCode.create(:country => germany, :name => "Stade-Bützfleth", :area_code => "4146")
+ AreaCode.create(:country => germany, :name => "Drochtersen-Assel", :area_code => "4148")
+ AreaCode.create(:country => germany, :name => "Fredenbeck", :area_code => "4149")
+ AreaCode.create(:country => germany, :name => "Schwarzenbek", :area_code => "4151")
+ AreaCode.create(:country => germany, :name => "Geesthacht", :area_code => "4152")
+ AreaCode.create(:country => germany, :name => "Lauenburg Elbe", :area_code => "4153")
+ AreaCode.create(:country => germany, :name => "Trittau", :area_code => "4154")
+ AreaCode.create(:country => germany, :name => "Büchen", :area_code => "4155")
+ AreaCode.create(:country => germany, :name => "Talkau", :area_code => "4156")
+ AreaCode.create(:country => germany, :name => "Roseburg", :area_code => "4158")
+ AreaCode.create(:country => germany, :name => "Basthorst", :area_code => "4159")
+ AreaCode.create(:country => germany, :name => "Buxtehude", :area_code => "4161")
+ AreaCode.create(:country => germany, :name => "Jork", :area_code => "4162")
+ AreaCode.create(:country => germany, :name => "Horneburg Niederelbe", :area_code => "4163")
+ AreaCode.create(:country => germany, :name => "Harsefeld", :area_code => "4164")
+ AreaCode.create(:country => germany, :name => "Hollenstedt Nordheide", :area_code => "4165")
+ AreaCode.create(:country => germany, :name => "Ahlerstedt", :area_code => "4166")
+ AreaCode.create(:country => germany, :name => "Apensen", :area_code => "4167")
+ AreaCode.create(:country => germany, :name => "Neu Wulmstorf-Elstorf", :area_code => "4168")
+ AreaCode.create(:country => germany, :name => "Sauensiek", :area_code => "4169")
+ AreaCode.create(:country => germany, :name => "Winsen Luhe", :area_code => "4171")
+ AreaCode.create(:country => germany, :name => "Salzhausen", :area_code => "4172")
+ AreaCode.create(:country => germany, :name => "Wulfsen", :area_code => "4173")
+ AreaCode.create(:country => germany, :name => "Stelle Kr Harburg", :area_code => "4174")
+ AreaCode.create(:country => germany, :name => "Egestorf Nordheide", :area_code => "4175")
+ AreaCode.create(:country => germany, :name => "Marschacht", :area_code => "4176")
+ AreaCode.create(:country => germany, :name => "Drage Elbe", :area_code => "4177")
+ AreaCode.create(:country => germany, :name => "Radbruch", :area_code => "4178")
+ AreaCode.create(:country => germany, :name => "Winsen-Tönnhausen", :area_code => "4179")
+ AreaCode.create(:country => germany, :name => "Königsmoor", :area_code => "4180")
+ AreaCode.create(:country => germany, :name => "Buchholz in der Nordheide", :area_code => "4181")
+ AreaCode.create(:country => germany, :name => "Tostedt", :area_code => "4182")
+ AreaCode.create(:country => germany, :name => "Jesteburg", :area_code => "4183")
+ AreaCode.create(:country => germany, :name => "Hanstedt Nordheide", :area_code => "4184")
+ AreaCode.create(:country => germany, :name => "Marxen Auetal", :area_code => "4185")
+ AreaCode.create(:country => germany, :name => "Buchholz-Trelde", :area_code => "4186")
+ AreaCode.create(:country => germany, :name => "Holm-Seppensen", :area_code => "4187")
+ AreaCode.create(:country => germany, :name => "Welle Nordheide", :area_code => "4188")
+ AreaCode.create(:country => germany, :name => "Undeloh", :area_code => "4189")
+ AreaCode.create(:country => germany, :name => "Kaltenkirchen Holst", :area_code => "4191")
+ AreaCode.create(:country => germany, :name => "Bad Bramstedt", :area_code => "4192")
+ AreaCode.create(:country => germany, :name => "Henstedt-Ulzburg", :area_code => "4193")
+ AreaCode.create(:country => germany, :name => "Sievershütten", :area_code => "4194")
+ AreaCode.create(:country => germany, :name => "Hartenholm", :area_code => "4195")
+ AreaCode.create(:country => germany, :name => "Achim b Bremen", :area_code => "4202")
+ AreaCode.create(:country => germany, :name => "Weyhe b Bremen", :area_code => "4203")
+ AreaCode.create(:country => germany, :name => "Thedinghausen", :area_code => "4204")
+ AreaCode.create(:country => germany, :name => "Ottersberg", :area_code => "4205")
+ AreaCode.create(:country => germany, :name => "Stuhr-Heiligenrode", :area_code => "4206")
+ AreaCode.create(:country => germany, :name => "Oyten", :area_code => "4207")
+ AreaCode.create(:country => germany, :name => "Grasberg", :area_code => "4208")
+ AreaCode.create(:country => germany, :name => "Schwanewede", :area_code => "4209")
+ AreaCode.create(:country => germany, :name => "Bremen", :area_code => "421")
+ AreaCode.create(:country => germany, :name => "Delmenhorst", :area_code => "4221")
+ AreaCode.create(:country => germany, :name => "Ganderkesee", :area_code => "4222")
+ AreaCode.create(:country => germany, :name => "Ganderkesee-Bookholzberg", :area_code => "4223")
+ AreaCode.create(:country => germany, :name => "Gross Ippener", :area_code => "4224")
+ AreaCode.create(:country => germany, :name => "Verden-Walle", :area_code => "4230")
+ AreaCode.create(:country => germany, :name => "Verden Aller", :area_code => "4231")
+ AreaCode.create(:country => germany, :name => "Langwedel Kr Verden", :area_code => "4232")
+ AreaCode.create(:country => germany, :name => "Blender", :area_code => "4233")
+ AreaCode.create(:country => germany, :name => "Dörverden", :area_code => "4234")
+ AreaCode.create(:country => germany, :name => "Langwedel-Etelsen", :area_code => "4235")
+ AreaCode.create(:country => germany, :name => "Kirchlinteln", :area_code => "4236")
+ AreaCode.create(:country => germany, :name => "Bendingbostel", :area_code => "4237")
+ AreaCode.create(:country => germany, :name => "Neddenaverbergen", :area_code => "4238")
+ AreaCode.create(:country => germany, :name => "Dörverden-Westen", :area_code => "4239")
+ AreaCode.create(:country => germany, :name => "Syke-Heiligenfelde", :area_code => "4240")
+ AreaCode.create(:country => germany, :name => "Bassum", :area_code => "4241")
+ AreaCode.create(:country => germany, :name => "Syke", :area_code => "4242")
+ AreaCode.create(:country => germany, :name => "Twistringen", :area_code => "4243")
+ AreaCode.create(:country => germany, :name => "Harpstedt", :area_code => "4244")
+ AreaCode.create(:country => germany, :name => "Neuenkirchen b Bassum", :area_code => "4245")
+ AreaCode.create(:country => germany, :name => "Twistringen-Heiligenloh", :area_code => "4246")
+ AreaCode.create(:country => germany, :name => "Affinghausen", :area_code => "4247")
+ AreaCode.create(:country => germany, :name => "Bassum-Neubruchhausen", :area_code => "4248")
+ AreaCode.create(:country => germany, :name => "Bassum-Nordwohlde", :area_code => "4249")
+ AreaCode.create(:country => germany, :name => "Hoya", :area_code => "4251")
+ AreaCode.create(:country => germany, :name => "Bruchhausen-Vilsen", :area_code => "4252")
+ AreaCode.create(:country => germany, :name => "Asendorf Kr Diepholz", :area_code => "4253")
+ AreaCode.create(:country => germany, :name => "Eystrup", :area_code => "4254")
+ AreaCode.create(:country => germany, :name => "Martfeld", :area_code => "4255")
+ AreaCode.create(:country => germany, :name => "Hilgermissen", :area_code => "4256")
+ AreaCode.create(:country => germany, :name => "Schweringen", :area_code => "4257")
+ AreaCode.create(:country => germany, :name => "Schwarme", :area_code => "4258")
+ AreaCode.create(:country => germany, :name => "Visselhövede-Wittorf", :area_code => "4260")
+ AreaCode.create(:country => germany, :name => "Rotenburg Wümme", :area_code => "4261")
+ AreaCode.create(:country => germany, :name => "Visselhövede", :area_code => "4262")
+ AreaCode.create(:country => germany, :name => "Scheessel", :area_code => "4263")
+ AreaCode.create(:country => germany, :name => "Sottrum Kr Rotenburg", :area_code => "4264")
+ AreaCode.create(:country => germany, :name => "Fintel", :area_code => "4265")
+ AreaCode.create(:country => germany, :name => "Brockel", :area_code => "4266")
+ AreaCode.create(:country => germany, :name => "Lauenbrück", :area_code => "4267")
+ AreaCode.create(:country => germany, :name => "Bötersen", :area_code => "4268")
+ AreaCode.create(:country => germany, :name => "Ahausen-Kirchwalsede", :area_code => "4269")
+ AreaCode.create(:country => germany, :name => "Sulingen", :area_code => "4271")
+ AreaCode.create(:country => germany, :name => "Siedenburg", :area_code => "4272")
+ AreaCode.create(:country => germany, :name => "Kirchdorf b Sulingen", :area_code => "4273")
+ AreaCode.create(:country => germany, :name => "Varrel b Sulingen", :area_code => "4274")
+ AreaCode.create(:country => germany, :name => "Ehrenburg", :area_code => "4275")
+ AreaCode.create(:country => germany, :name => "Borstel b Sulingen", :area_code => "4276")
+ AreaCode.create(:country => germany, :name => "Schwaförden", :area_code => "4277")
+ AreaCode.create(:country => germany, :name => "Zeven", :area_code => "4281")
+ AreaCode.create(:country => germany, :name => "Sittensen", :area_code => "4282")
+ AreaCode.create(:country => germany, :name => "Tarmstedt", :area_code => "4283")
+ AreaCode.create(:country => germany, :name => "Selsingen", :area_code => "4284")
+ AreaCode.create(:country => germany, :name => "Rhade b Zeven", :area_code => "4285")
+ AreaCode.create(:country => germany, :name => "Gyhum", :area_code => "4286")
+ AreaCode.create(:country => germany, :name => "Heeslingen-Boitzen", :area_code => "4287")
+ AreaCode.create(:country => germany, :name => "Horstedt Kr Rotenburg", :area_code => "4288")
+ AreaCode.create(:country => germany, :name => "Kirchtimke", :area_code => "4289")
+ AreaCode.create(:country => germany, :name => "Ritterhude", :area_code => "4292")
+ AreaCode.create(:country => germany, :name => "Ottersberg-Fischerhude", :area_code => "4293")
+ AreaCode.create(:country => germany, :name => "Riede Kr Verden", :area_code => "4294")
+ AreaCode.create(:country => germany, :name => "Emtinghausen", :area_code => "4295")
+ AreaCode.create(:country => germany, :name => "Schwanewede-Aschwarden", :area_code => "4296")
+ AreaCode.create(:country => germany, :name => "Ottersberg-Posthausen", :area_code => "4297")
+ AreaCode.create(:country => germany, :name => "Lilienthal", :area_code => "4298")
+ AreaCode.create(:country => germany, :name => "Kirchbarkau", :area_code => "4302")
+ AreaCode.create(:country => germany, :name => "Schlesen", :area_code => "4303")
+ AreaCode.create(:country => germany, :name => "Westensee", :area_code => "4305")
+ AreaCode.create(:country => germany, :name => "Raisdorf", :area_code => "4307")
+ AreaCode.create(:country => germany, :name => "Schwedeneck", :area_code => "4308")
+ AreaCode.create(:country => germany, :name => "Kiel", :area_code => "431")
+ AreaCode.create(:country => germany, :name => "Heidmühlen", :area_code => "4320")
+ AreaCode.create(:country => germany, :name => "Neumünster", :area_code => "4321")
+ AreaCode.create(:country => germany, :name => "Bordesholm", :area_code => "4322")
+ AreaCode.create(:country => germany, :name => "Bornhöved", :area_code => "4323")
+ AreaCode.create(:country => germany, :name => "Brokstedt", :area_code => "4324")
+ AreaCode.create(:country => germany, :name => "Wankendorf", :area_code => "4326")
+ AreaCode.create(:country => germany, :name => "Grossenaspe", :area_code => "4327")
+ AreaCode.create(:country => germany, :name => "Rickling", :area_code => "4328")
+ AreaCode.create(:country => germany, :name => "Langwedel Holst", :area_code => "4329")
+ AreaCode.create(:country => germany, :name => "Emkendorf", :area_code => "4330")
+ AreaCode.create(:country => germany, :name => "Rendsburg", :area_code => "4331")
+ AreaCode.create(:country => germany, :name => "Hamdorf b Rendsburg", :area_code => "4332")
+ AreaCode.create(:country => germany, :name => "Erfde", :area_code => "4333")
+ AreaCode.create(:country => germany, :name => "Bredenbek b Rendsburg", :area_code => "4334")
+ AreaCode.create(:country => germany, :name => "Hohn b Rendsburg", :area_code => "4335")
+ AreaCode.create(:country => germany, :name => "Owschlag", :area_code => "4336")
+ AreaCode.create(:country => germany, :name => "Jevenstedt", :area_code => "4337")
+ AreaCode.create(:country => germany, :name => "Alt Duvenstedt", :area_code => "4338")
+ AreaCode.create(:country => germany, :name => "Christiansholm", :area_code => "4339")
+ AreaCode.create(:country => germany, :name => "Achterwehr", :area_code => "4340")
+ AreaCode.create(:country => germany, :name => "Preetz Kr Plön", :area_code => "4342")
+ AreaCode.create(:country => germany, :name => "Laboe", :area_code => "4343")
+ AreaCode.create(:country => germany, :name => "Schönberg Holstein", :area_code => "4344")
+ AreaCode.create(:country => germany, :name => "Gettorf", :area_code => "4346")
+ AreaCode.create(:country => germany, :name => "Flintbek", :area_code => "4347")
+ AreaCode.create(:country => germany, :name => "Schönkirchen", :area_code => "4348")
+ AreaCode.create(:country => germany, :name => "Dänischenhagen", :area_code => "4349")
+ AreaCode.create(:country => germany, :name => "Eckernförde", :area_code => "4351")
+ AreaCode.create(:country => germany, :name => "Damp", :area_code => "4352")
+ AreaCode.create(:country => germany, :name => "Ascheffel", :area_code => "4353")
+ AreaCode.create(:country => germany, :name => "Fleckeby", :area_code => "4354")
+ AreaCode.create(:country => germany, :name => "Rieseby", :area_code => "4355")
+ AreaCode.create(:country => germany, :name => "Gross Wittensee", :area_code => "4356")
+ AreaCode.create(:country => germany, :name => "Sehestedt Eider", :area_code => "4357")
+ AreaCode.create(:country => germany, :name => "Loose b Eckernförde", :area_code => "4358")
+ AreaCode.create(:country => germany, :name => "Oldenburg in Holstein", :area_code => "4361")
+ AreaCode.create(:country => germany, :name => "Heiligenhafen", :area_code => "4362")
+ AreaCode.create(:country => germany, :name => "Lensahn", :area_code => "4363")
+ AreaCode.create(:country => germany, :name => "Dahme Kr Ostholstein", :area_code => "4364")
+ AreaCode.create(:country => germany, :name => "Heringsdorf Holst", :area_code => "4365")
+ AreaCode.create(:country => germany, :name => "Grömitz-Cismar", :area_code => "4366")
+ AreaCode.create(:country => germany, :name => "Grossenbrode", :area_code => "4367")
+ AreaCode.create(:country => germany, :name => "Burg auf Fehmarn", :area_code => "4371")
+ AreaCode.create(:country => germany, :name => "Westfehmarn", :area_code => "4372")
+ AreaCode.create(:country => germany, :name => "Lütjenburg", :area_code => "4381")
+ AreaCode.create(:country => germany, :name => "Wangels", :area_code => "4382")
+ AreaCode.create(:country => germany, :name => "Grebin", :area_code => "4383")
+ AreaCode.create(:country => germany, :name => "Selent", :area_code => "4384")
+ AreaCode.create(:country => germany, :name => "Hohenfelde b Kiel", :area_code => "4385")
+ AreaCode.create(:country => germany, :name => "Nortorf b Neumünster", :area_code => "4392")
+ AreaCode.create(:country => germany, :name => "Boostedt", :area_code => "4393")
+ AreaCode.create(:country => germany, :name => "Bokhorst", :area_code => "4394")
+ AreaCode.create(:country => germany, :name => "Brake Unterweser", :area_code => "4401")
+ AreaCode.create(:country => germany, :name => "Rastede", :area_code => "4402")
+ AreaCode.create(:country => germany, :name => "Bad Zwischenahn", :area_code => "4403")
+ AreaCode.create(:country => germany, :name => "Elsfleth", :area_code => "4404")
+ AreaCode.create(:country => germany, :name => "Edewecht", :area_code => "4405")
+ AreaCode.create(:country => germany, :name => "Berne", :area_code => "4406")
+ AreaCode.create(:country => germany, :name => "Wardenburg", :area_code => "4407")
+ AreaCode.create(:country => germany, :name => "Hude Oldenburg", :area_code => "4408")
+ AreaCode.create(:country => germany, :name => "Westerstede-Ocholt", :area_code => "4409")
+ AreaCode.create(:country => germany, :name => "Oldenburg (Oldb)", :area_code => "441")
+ AreaCode.create(:country => germany, :name => "Wilhelmshaven", :area_code => "4421")
+ AreaCode.create(:country => germany, :name => "Sande Kr Friesl", :area_code => "4422")
+ AreaCode.create(:country => germany, :name => "Fedderwarden", :area_code => "4423")
+ AreaCode.create(:country => germany, :name => "Wangerland-Hooksiel", :area_code => "4425")
+ AreaCode.create(:country => germany, :name => "Wangerland-Horumersiel", :area_code => "4426")
+ AreaCode.create(:country => germany, :name => "Wildeshausen", :area_code => "4431")
+ AreaCode.create(:country => germany, :name => "Dötlingen-Brettorf", :area_code => "4432")
+ AreaCode.create(:country => germany, :name => "Dötlingen", :area_code => "4433")
+ AreaCode.create(:country => germany, :name => "Colnrade", :area_code => "4434")
+ AreaCode.create(:country => germany, :name => "Grossenkneten", :area_code => "4435")
+ AreaCode.create(:country => germany, :name => "Vechta", :area_code => "4441")
+ AreaCode.create(:country => germany, :name => "Lohne Oldenburg", :area_code => "4442")
+ AreaCode.create(:country => germany, :name => "Dinklage", :area_code => "4443")
+ AreaCode.create(:country => germany, :name => "Goldenstedt", :area_code => "4444")
+ AreaCode.create(:country => germany, :name => "Visbek Kr Vechta", :area_code => "4445")
+ AreaCode.create(:country => germany, :name => "Bakum Kr Vechta", :area_code => "4446")
+ AreaCode.create(:country => germany, :name => "Vechta-Langförden", :area_code => "4447")
+ AreaCode.create(:country => germany, :name => "Varel Jadebusen", :area_code => "4451")
+ AreaCode.create(:country => germany, :name => "Zetel-Neuenburg", :area_code => "4452")
+ AreaCode.create(:country => germany, :name => "Zetel", :area_code => "4453")
+ AreaCode.create(:country => germany, :name => "Jade", :area_code => "4454")
+ AreaCode.create(:country => germany, :name => "Jade-Schweiburg", :area_code => "4455")
+ AreaCode.create(:country => germany, :name => "Varel-Altjührden", :area_code => "4456")
+ AreaCode.create(:country => germany, :name => "Wiefelstede-Spohle", :area_code => "4458")
+ AreaCode.create(:country => germany, :name => "Jever", :area_code => "4461")
+ AreaCode.create(:country => germany, :name => "Wittmund", :area_code => "4462")
+ AreaCode.create(:country => germany, :name => "Wangerland", :area_code => "4463")
+ AreaCode.create(:country => germany, :name => "Wittmund-Carolinensiel", :area_code => "4464")
+ AreaCode.create(:country => germany, :name => "Friedeburg Ostfriesl", :area_code => "4465")
+ AreaCode.create(:country => germany, :name => "Wittmund-Ardorf", :area_code => "4466")
+ AreaCode.create(:country => germany, :name => "Wittmund-Funnix", :area_code => "4467")
+ AreaCode.create(:country => germany, :name => "Friedeburg-Reepsholt", :area_code => "4468")
+ AreaCode.create(:country => germany, :name => "Wangerooge", :area_code => "4469")
+ AreaCode.create(:country => germany, :name => "Cloppenburg", :area_code => "4471")
+ AreaCode.create(:country => germany, :name => "Lastrup", :area_code => "4472")
+ AreaCode.create(:country => germany, :name => "Emstek", :area_code => "4473")
+ AreaCode.create(:country => germany, :name => "Garrel", :area_code => "4474")
+ AreaCode.create(:country => germany, :name => "Molbergen", :area_code => "4475")
+ AreaCode.create(:country => germany, :name => "Lastrup-Hemmelte", :area_code => "4477")
+ AreaCode.create(:country => germany, :name => "Cappeln Oldenburg", :area_code => "4478")
+ AreaCode.create(:country => germany, :name => "Molbergen-Peheim", :area_code => "4479")
+ AreaCode.create(:country => germany, :name => "Ovelgönne-Strückhausen", :area_code => "4480")
+ AreaCode.create(:country => germany, :name => "Hatten-Sandkrug", :area_code => "4481")
+ AreaCode.create(:country => germany, :name => "Hatten", :area_code => "4482")
+ AreaCode.create(:country => germany, :name => "Ovelgönne-Großenmeer", :area_code => "4483")
+ AreaCode.create(:country => germany, :name => "Hude-Wüsting", :area_code => "4484")
+ AreaCode.create(:country => germany, :name => "Elsfleth-Huntorf", :area_code => "4485")
+ AreaCode.create(:country => germany, :name => "Edewecht-Friedrichsfehn", :area_code => "4486")
+ AreaCode.create(:country => germany, :name => "Grossenkneten-Huntlosen", :area_code => "4487")
+ AreaCode.create(:country => germany, :name => "Westerstede", :area_code => "4488")
+ AreaCode.create(:country => germany, :name => "Apen", :area_code => "4489")
+ AreaCode.create(:country => germany, :name => "Friesoythe", :area_code => "4491")
+ AreaCode.create(:country => germany, :name => "Saterland", :area_code => "4492")
+ AreaCode.create(:country => germany, :name => "Friesoythe-Gehlenberg", :area_code => "4493")
+ AreaCode.create(:country => germany, :name => "Bösel Oldenburg", :area_code => "4494")
+ AreaCode.create(:country => germany, :name => "Friesoythe-Thüle", :area_code => "4495")
+ AreaCode.create(:country => germany, :name => "Friesoythe-Markhausen", :area_code => "4496")
+ AreaCode.create(:country => germany, :name => "Barßel-Harkebrügge", :area_code => "4497")
+ AreaCode.create(:country => germany, :name => "Saterland-Ramsloh", :area_code => "4498")
+ AreaCode.create(:country => germany, :name => "Barssel", :area_code => "4499")
+ AreaCode.create(:country => germany, :name => "Kastorf Holst", :area_code => "4501")
+ AreaCode.create(:country => germany, :name => "Lübeck-Travemünde", :area_code => "4502")
+ AreaCode.create(:country => germany, :name => "Timmendorfer Strand", :area_code => "4503")
+ AreaCode.create(:country => germany, :name => "Ratekau", :area_code => "4504")
+ AreaCode.create(:country => germany, :name => "Stockelsdorf-Curau", :area_code => "4505")
+ AreaCode.create(:country => germany, :name => "Stockelsdorf-Krumbeck", :area_code => "4506")
+ AreaCode.create(:country => germany, :name => "Krummesse", :area_code => "4508")
+ AreaCode.create(:country => germany, :name => "Groß Grönau", :area_code => "4509")
+ AreaCode.create(:country => germany, :name => "Lübeck", :area_code => "451")
+ AreaCode.create(:country => germany, :name => "Eutin", :area_code => "4521")
+ AreaCode.create(:country => germany, :name => "Plön", :area_code => "4522")
+ AreaCode.create(:country => germany, :name => "Malente", :area_code => "4523")
+ AreaCode.create(:country => germany, :name => "Scharbeutz-Pönitz", :area_code => "4524")
+ AreaCode.create(:country => germany, :name => "Ahrensbök", :area_code => "4525")
+ AreaCode.create(:country => germany, :name => "Ascheberg Holstein", :area_code => "4526")
+ AreaCode.create(:country => germany, :name => "Bosau", :area_code => "4527")
+ AreaCode.create(:country => germany, :name => "Schönwalde am Bungsberg", :area_code => "4528")
+ AreaCode.create(:country => germany, :name => "Süsel-Bujendorf", :area_code => "4529")
+ AreaCode.create(:country => germany, :name => "Bad Oldesloe", :area_code => "4531")
+ AreaCode.create(:country => germany, :name => "Bargteheide", :area_code => "4532")
+ AreaCode.create(:country => germany, :name => "Reinfeld Holstein", :area_code => "4533")
+ AreaCode.create(:country => germany, :name => "Steinburg Kr Storman", :area_code => "4534")
+ AreaCode.create(:country => germany, :name => "Nahe", :area_code => "4535")
+ AreaCode.create(:country => germany, :name => "Steinhorst Lauenb", :area_code => "4536")
+ AreaCode.create(:country => germany, :name => "Sülfeld Holst", :area_code => "4537")
+ AreaCode.create(:country => germany, :name => "Westerau", :area_code => "4539")
+ AreaCode.create(:country => germany, :name => "Ratzeburg", :area_code => "4541")
+ AreaCode.create(:country => germany, :name => "Mölln Lauenb", :area_code => "4542")
+ AreaCode.create(:country => germany, :name => "Nusse", :area_code => "4543")
+ AreaCode.create(:country => germany, :name => "Berkenthin", :area_code => "4544")
+ AreaCode.create(:country => germany, :name => "Seedorf Lauenb", :area_code => "4545")
+ AreaCode.create(:country => germany, :name => "Mustin Lauenburg", :area_code => "4546")
+ AreaCode.create(:country => germany, :name => "Gudow Lauenb", :area_code => "4547")
+ AreaCode.create(:country => germany, :name => "Bühnsdorf", :area_code => "4550")
+ AreaCode.create(:country => germany, :name => "Bad Segeberg", :area_code => "4551")
+ AreaCode.create(:country => germany, :name => "Leezen", :area_code => "4552")
+ AreaCode.create(:country => germany, :name => "Geschendorf", :area_code => "4553")
+ AreaCode.create(:country => germany, :name => "Wahlstedt", :area_code => "4554")
+ AreaCode.create(:country => germany, :name => "Seedorf b Bad Segeberg", :area_code => "4555")
+ AreaCode.create(:country => germany, :name => "Ahrensbök-Gnissau", :area_code => "4556")
+ AreaCode.create(:country => germany, :name => "Blunk", :area_code => "4557")
+ AreaCode.create(:country => germany, :name => "Todesfelde", :area_code => "4558")
+ AreaCode.create(:country => germany, :name => "Wensin", :area_code => "4559")
+ AreaCode.create(:country => germany, :name => "Neustadt in Holstein", :area_code => "4561")
+ AreaCode.create(:country => germany, :name => "Grömitz", :area_code => "4562")
+ AreaCode.create(:country => germany, :name => "Scharbeutz-Haffkrug", :area_code => "4563")
+ AreaCode.create(:country => germany, :name => "Schashagen", :area_code => "4564")
+ AreaCode.create(:country => germany, :name => "Freienwill", :area_code => "4602")
+ AreaCode.create(:country => germany, :name => "Havetoft", :area_code => "4603")
+ AreaCode.create(:country => germany, :name => "Grossenwiehe", :area_code => "4604")
+ AreaCode.create(:country => germany, :name => "Medelby", :area_code => "4605")
+ AreaCode.create(:country => germany, :name => "Wanderup", :area_code => "4606")
+ AreaCode.create(:country => germany, :name => "Janneby", :area_code => "4607")
+ AreaCode.create(:country => germany, :name => "Handewitt", :area_code => "4608")
+ AreaCode.create(:country => germany, :name => "Eggebek", :area_code => "4609")
+ AreaCode.create(:country => germany, :name => "Flensburg", :area_code => "461")
+ AreaCode.create(:country => germany, :name => "Schleswig", :area_code => "4621")
+ AreaCode.create(:country => germany, :name => "Taarstedt", :area_code => "4622")
+ AreaCode.create(:country => germany, :name => "Böklund", :area_code => "4623")
+ AreaCode.create(:country => germany, :name => "Kropp", :area_code => "4624")
+ AreaCode.create(:country => germany, :name => "Jübek", :area_code => "4625")
+ AreaCode.create(:country => germany, :name => "Treia", :area_code => "4626")
+ AreaCode.create(:country => germany, :name => "Dörpstedt", :area_code => "4627")
+ AreaCode.create(:country => germany, :name => "Barderup", :area_code => "4630")
+ AreaCode.create(:country => germany, :name => "Glücksburg Ostsee", :area_code => "4631")
+ AreaCode.create(:country => germany, :name => "Steinbergkirche", :area_code => "4632")
+ AreaCode.create(:country => germany, :name => "Satrup", :area_code => "4633")
+ AreaCode.create(:country => germany, :name => "Husby", :area_code => "4634")
+ AreaCode.create(:country => germany, :name => "Sörup", :area_code => "4635")
+ AreaCode.create(:country => germany, :name => "Langballig", :area_code => "4636")
+ AreaCode.create(:country => germany, :name => "Sterup", :area_code => "4637")
+ AreaCode.create(:country => germany, :name => "Tarp", :area_code => "4638")
+ AreaCode.create(:country => germany, :name => "Schafflund", :area_code => "4639")
+ AreaCode.create(:country => germany, :name => "Süderbrarup", :area_code => "4641")
+ AreaCode.create(:country => germany, :name => "Kappeln Schlei", :area_code => "4642")
+ AreaCode.create(:country => germany, :name => "Gelting Angeln", :area_code => "4643")
+ AreaCode.create(:country => germany, :name => "Karby", :area_code => "4644")
+ AreaCode.create(:country => germany, :name => "Mohrkirch", :area_code => "4646")
+ AreaCode.create(:country => germany, :name => "Sylt", :area_code => "4651")
+ AreaCode.create(:country => germany, :name => "Niebüll", :area_code => "4661")
+ AreaCode.create(:country => germany, :name => "Leck", :area_code => "4662")
+ AreaCode.create(:country => germany, :name => "Süderlügum", :area_code => "4663")
+ AreaCode.create(:country => germany, :name => "Neukirchen b Niebüll", :area_code => "4664")
+ AreaCode.create(:country => germany, :name => "Emmelsbüll-Horsbüll", :area_code => "4665")
+ AreaCode.create(:country => germany, :name => "Ladelund", :area_code => "4666")
+ AreaCode.create(:country => germany, :name => "Dagebüll", :area_code => "4667")
+ AreaCode.create(:country => germany, :name => "Klanxbüll", :area_code => "4668")
+ AreaCode.create(:country => germany, :name => "Bredstedt", :area_code => "4671")
+ AreaCode.create(:country => germany, :name => "Langenhorn", :area_code => "4672")
+ AreaCode.create(:country => germany, :name => "Joldelund", :area_code => "4673")
+ AreaCode.create(:country => germany, :name => "Ockholm", :area_code => "4674")
+ AreaCode.create(:country => germany, :name => "Wyk auf Föhr", :area_code => "4681")
+ AreaCode.create(:country => germany, :name => "Amrum", :area_code => "4682")
+ AreaCode.create(:country => germany, :name => "Oldsum", :area_code => "4683")
+ AreaCode.create(:country => germany, :name => "Langeneß Hallig", :area_code => "4684")
+ AreaCode.create(:country => germany, :name => "Sandstedt", :area_code => "4702")
+ AreaCode.create(:country => germany, :name => "Loxstedt-Donnern", :area_code => "4703")
+ AreaCode.create(:country => germany, :name => "Drangstedt", :area_code => "4704")
+ AreaCode.create(:country => germany, :name => "Wremen", :area_code => "4705")
+ AreaCode.create(:country => germany, :name => "Schiffdorf", :area_code => "4706")
+ AreaCode.create(:country => germany, :name => "Langen-Neuenwalde", :area_code => "4707")
+ AreaCode.create(:country => germany, :name => "Ringstedt", :area_code => "4708")
+ AreaCode.create(:country => germany, :name => "Bremerhaven", :area_code => "471")
+ AreaCode.create(:country => germany, :name => "Cuxhaven", :area_code => "4721")
+ AreaCode.create(:country => germany, :name => "Cuxhaven-Altenbruch", :area_code => "4722")
+ AreaCode.create(:country => germany, :name => "Cuxhaven-Altenwalde", :area_code => "4723")
+ AreaCode.create(:country => germany, :name => "Cuxhaven-Lüdingworth", :area_code => "4724")
+ AreaCode.create(:country => germany, :name => "Helgoland", :area_code => "4725")
+ AreaCode.create(:country => germany, :name => "Nordenham", :area_code => "4731")
+ AreaCode.create(:country => germany, :name => "Stadland-Rodenkirchen", :area_code => "4732")
+ AreaCode.create(:country => germany, :name => "Butjadingen-Burhave", :area_code => "4733")
+ AreaCode.create(:country => germany, :name => "Stadland-Seefeld", :area_code => "4734")
+ AreaCode.create(:country => germany, :name => "Butjadingen-Stollhamm", :area_code => "4735")
+ AreaCode.create(:country => germany, :name => "Butjadingen-Tossens", :area_code => "4736")
+ AreaCode.create(:country => germany, :name => "Stadland-Schwei", :area_code => "4737")
+ AreaCode.create(:country => germany, :name => "Loxstedt-Dedesdorf", :area_code => "4740")
+ AreaCode.create(:country => germany, :name => "Nordholz b Bremerhaven", :area_code => "4741")
+ AreaCode.create(:country => germany, :name => "Dorum", :area_code => "4742")
+ AreaCode.create(:country => germany, :name => "Langen b Bremerhaven", :area_code => "4743")
+ AreaCode.create(:country => germany, :name => "Loxstedt", :area_code => "4744")
+ AreaCode.create(:country => germany, :name => "Bad Bederkesa", :area_code => "4745")
+ AreaCode.create(:country => germany, :name => "Hagen b Bremerhaven", :area_code => "4746")
+ AreaCode.create(:country => germany, :name => "Beverstedt", :area_code => "4747")
+ AreaCode.create(:country => germany, :name => "Stubben b Bremerhaven", :area_code => "4748")
+ AreaCode.create(:country => germany, :name => "Schiffdorf-Geestenseth", :area_code => "4749")
+ AreaCode.create(:country => germany, :name => "Otterndorf", :area_code => "4751")
+ AreaCode.create(:country => germany, :name => "Neuhaus Oste", :area_code => "4752")
+ AreaCode.create(:country => germany, :name => "Balje", :area_code => "4753")
+ AreaCode.create(:country => germany, :name => "Bülkau", :area_code => "4754")
+ AreaCode.create(:country => germany, :name => "Ihlienworth", :area_code => "4755")
+ AreaCode.create(:country => germany, :name => "Odisheim", :area_code => "4756")
+ AreaCode.create(:country => germany, :name => "Wanna", :area_code => "4757")
+ AreaCode.create(:country => germany, :name => "Nordleda", :area_code => "4758")
+ AreaCode.create(:country => germany, :name => "Bremervörde", :area_code => "4761")
+ AreaCode.create(:country => germany, :name => "Kutenholz", :area_code => "4762")
+ AreaCode.create(:country => germany, :name => "Gnarrenburg", :area_code => "4763")
+ AreaCode.create(:country => germany, :name => "Gnarrenburg-Klenkendorf", :area_code => "4764")
+ AreaCode.create(:country => germany, :name => "Ebersdorf b Bremervörde", :area_code => "4765")
+ AreaCode.create(:country => germany, :name => "Basdahl", :area_code => "4766")
+ AreaCode.create(:country => germany, :name => "Bremervörde-Bevern", :area_code => "4767")
+ AreaCode.create(:country => germany, :name => "Hipstedt", :area_code => "4768")
+ AreaCode.create(:country => germany, :name => "Bremervörde-Iselersheim", :area_code => "4769")
+ AreaCode.create(:country => germany, :name => "Wischhafen", :area_code => "4770")
+ AreaCode.create(:country => germany, :name => "Hemmoor", :area_code => "4771")
+ AreaCode.create(:country => germany, :name => "Oberndorf Oste", :area_code => "4772")
+ AreaCode.create(:country => germany, :name => "Lamstedt", :area_code => "4773")
+ AreaCode.create(:country => germany, :name => "Hechthausen", :area_code => "4774")
+ AreaCode.create(:country => germany, :name => "Grossenwörden", :area_code => "4775")
+ AreaCode.create(:country => germany, :name => "Osten-Altendorf", :area_code => "4776")
+ AreaCode.create(:country => germany, :name => "Cadenberge", :area_code => "4777")
+ AreaCode.create(:country => germany, :name => "Wingst", :area_code => "4778")
+ AreaCode.create(:country => germany, :name => "Freiburg Elbe", :area_code => "4779")
+ AreaCode.create(:country => germany, :name => "Osterholz-Scharmbeck", :area_code => "4791")
+ AreaCode.create(:country => germany, :name => "Worpswede", :area_code => "4792")
+ AreaCode.create(:country => germany, :name => "Hambergen", :area_code => "4793")
+ AreaCode.create(:country => germany, :name => "Worpswede-Ostersode", :area_code => "4794")
+ AreaCode.create(:country => germany, :name => "Garlstedt", :area_code => "4795")
+ AreaCode.create(:country => germany, :name => "Teufelsmoor", :area_code => "4796")
+ AreaCode.create(:country => germany, :name => "Wrohm", :area_code => "4802")
+ AreaCode.create(:country => germany, :name => "Pahlen", :area_code => "4803")
+ AreaCode.create(:country => germany, :name => "Nordhastedt", :area_code => "4804")
+ AreaCode.create(:country => germany, :name => "Schafstedt", :area_code => "4805")
+ AreaCode.create(:country => germany, :name => "Sarzbüttel", :area_code => "4806")
+ AreaCode.create(:country => germany, :name => "Heide Holst", :area_code => "481")
+ AreaCode.create(:country => germany, :name => "Itzehoe", :area_code => "4821")
+ AreaCode.create(:country => germany, :name => "Kellinghusen", :area_code => "4822")
+ AreaCode.create(:country => germany, :name => "Wilster", :area_code => "4823")
+ AreaCode.create(:country => germany, :name => "Krempe", :area_code => "4824")
+ AreaCode.create(:country => germany, :name => "Burg Dithmarschen", :area_code => "4825")
+ AreaCode.create(:country => germany, :name => "Hohenlockstedt", :area_code => "4826")
+ AreaCode.create(:country => germany, :name => "Wacken", :area_code => "4827")
+ AreaCode.create(:country => germany, :name => "Lägerdorf", :area_code => "4828")
+ AreaCode.create(:country => germany, :name => "Wewelsfleth", :area_code => "4829")
+ AreaCode.create(:country => germany, :name => "Süderhastedt", :area_code => "4830")
+ AreaCode.create(:country => germany, :name => "Meldorf", :area_code => "4832")
+ AreaCode.create(:country => germany, :name => "Wesselburen", :area_code => "4833")
+ AreaCode.create(:country => germany, :name => "Büsum", :area_code => "4834")
+ AreaCode.create(:country => germany, :name => "Albersdorf Holst", :area_code => "4835")
+ AreaCode.create(:country => germany, :name => "Hennstedt Dithm", :area_code => "4836")
+ AreaCode.create(:country => germany, :name => "Neuenkirchen Dithm", :area_code => "4837")
+ AreaCode.create(:country => germany, :name => "Tellingstedt", :area_code => "4838")
+ AreaCode.create(:country => germany, :name => "Wöhrden Dithm", :area_code => "4839")
+ AreaCode.create(:country => germany, :name => "Husum Nordsee", :area_code => "4841")
+ AreaCode.create(:country => germany, :name => "Nordstrand", :area_code => "4842")
+ AreaCode.create(:country => germany, :name => "Viöl", :area_code => "4843")
+ AreaCode.create(:country => germany, :name => "Pellworm", :area_code => "4844")
+ AreaCode.create(:country => germany, :name => "Ostenfeld Husum", :area_code => "4845")
+ AreaCode.create(:country => germany, :name => "Hattstedt", :area_code => "4846")
+ AreaCode.create(:country => germany, :name => "Oster-Ohrstedt", :area_code => "4847")
+ AreaCode.create(:country => germany, :name => "Rantrum", :area_code => "4848")
+ AreaCode.create(:country => germany, :name => "Hooge", :area_code => "4849")
+ AreaCode.create(:country => germany, :name => "Marne", :area_code => "4851")
+ AreaCode.create(:country => germany, :name => "Brunsbüttel", :area_code => "4852")
+ AreaCode.create(:country => germany, :name => "Sankt Michaelisdonn", :area_code => "4853")
+ AreaCode.create(:country => germany, :name => "Friedrichskoog", :area_code => "4854")
+ AreaCode.create(:country => germany, :name => "Eddelak", :area_code => "4855")
+ AreaCode.create(:country => germany, :name => "Kronprinzenkoog", :area_code => "4856")
+ AreaCode.create(:country => germany, :name => "Barlt", :area_code => "4857")
+ AreaCode.create(:country => germany, :name => "Sankt Margarethen Holst", :area_code => "4858")
+ AreaCode.create(:country => germany, :name => "Windbergen", :area_code => "4859")
+ AreaCode.create(:country => germany, :name => "Tönning", :area_code => "4861")
+ AreaCode.create(:country => germany, :name => "Garding", :area_code => "4862")
+ AreaCode.create(:country => germany, :name => "Sankt Peter-Ording", :area_code => "4863")
+ AreaCode.create(:country => germany, :name => "Oldenswort", :area_code => "4864")
+ AreaCode.create(:country => germany, :name => "Osterhever", :area_code => "4865")
+ AreaCode.create(:country => germany, :name => "Hohenwestedt", :area_code => "4871")
+ AreaCode.create(:country => germany, :name => "Hanerau-Hademarschen", :area_code => "4872")
+ AreaCode.create(:country => germany, :name => "Aukrug", :area_code => "4873")
+ AreaCode.create(:country => germany, :name => "Todenbüttel", :area_code => "4874")
+ AreaCode.create(:country => germany, :name => "Stafstedt", :area_code => "4875")
+ AreaCode.create(:country => germany, :name => "Reher Holst", :area_code => "4876")
+ AreaCode.create(:country => germany, :name => "Hennstedt b Itzehoe", :area_code => "4877")
+ AreaCode.create(:country => germany, :name => "Friedrichstadt", :area_code => "4881")
+ AreaCode.create(:country => germany, :name => "Lunden", :area_code => "4882")
+ AreaCode.create(:country => germany, :name => "Süderstapel", :area_code => "4883")
+ AreaCode.create(:country => germany, :name => "Schwabstedt", :area_code => "4884")
+ AreaCode.create(:country => germany, :name => "Bergenhusen", :area_code => "4885")
+ AreaCode.create(:country => germany, :name => "Schenefeld Mittelholst", :area_code => "4892")
+ AreaCode.create(:country => germany, :name => "Hohenaspe", :area_code => "4893")
+ AreaCode.create(:country => germany, :name => "Jemgum-Ditzum", :area_code => "4902")
+ AreaCode.create(:country => germany, :name => "Wymeer", :area_code => "4903")
+ AreaCode.create(:country => germany, :name => "Leer Ostfriesland", :area_code => "491")
+ AreaCode.create(:country => germany, :name => "Wirdum", :area_code => "4920")
+ AreaCode.create(:country => germany, :name => "Emden Stadt", :area_code => "4921")
+ AreaCode.create(:country => germany, :name => "Borkum", :area_code => "4922")
+ AreaCode.create(:country => germany, :name => "Krummhörn-Pewsum", :area_code => "4923")
+ AreaCode.create(:country => germany, :name => "Moormerland-Oldersum", :area_code => "4924")
+ AreaCode.create(:country => germany, :name => "Hinte", :area_code => "4925")
+ AreaCode.create(:country => germany, :name => "Krummhörn-Greetsiel", :area_code => "4926")
+ AreaCode.create(:country => germany, :name => "Krummhörn-Loquard", :area_code => "4927")
+ AreaCode.create(:country => germany, :name => "Ihlow-Riepe", :area_code => "4928")
+ AreaCode.create(:country => germany, :name => "Ihlow Kr Aurich", :area_code => "4929")
+ AreaCode.create(:country => germany, :name => "Norden", :area_code => "4931")
+ AreaCode.create(:country => germany, :name => "Norderney", :area_code => "4932")
+ AreaCode.create(:country => germany, :name => "Dornum Ostfriesl", :area_code => "4933")
+ AreaCode.create(:country => germany, :name => "Marienhafe", :area_code => "4934")
+ AreaCode.create(:country => germany, :name => "Juist", :area_code => "4935")
+ AreaCode.create(:country => germany, :name => "Grossheide", :area_code => "4936")
+ AreaCode.create(:country => germany, :name => "Hagermarsch", :area_code => "4938")
+ AreaCode.create(:country => germany, :name => "Baltrum", :area_code => "4939")
+ AreaCode.create(:country => germany, :name => "Aurich", :area_code => "4941")
+ AreaCode.create(:country => germany, :name => "Südbrookmerland", :area_code => "4942")
+ AreaCode.create(:country => germany, :name => "Grossefehn", :area_code => "4943")
+ AreaCode.create(:country => germany, :name => "Wiesmoor", :area_code => "4944")
+ AreaCode.create(:country => germany, :name => "Grossefehn-Timmel", :area_code => "4945")
+ AreaCode.create(:country => germany, :name => "Grossefehn-Bagband", :area_code => "4946")
+ AreaCode.create(:country => germany, :name => "Aurich-Ogenbargen", :area_code => "4947")
+ AreaCode.create(:country => germany, :name => "Wiesmoor-Marcardsmoor", :area_code => "4948")
+ AreaCode.create(:country => germany, :name => "Holtland", :area_code => "4950")
+ AreaCode.create(:country => germany, :name => "Weener", :area_code => "4951")
+ AreaCode.create(:country => germany, :name => "Rhauderfehn", :area_code => "4952")
+ AreaCode.create(:country => germany, :name => "Bunde", :area_code => "4953")
+ AreaCode.create(:country => germany, :name => "Moormerland", :area_code => "4954")
+ AreaCode.create(:country => germany, :name => "Westoverledingen", :area_code => "4955")
+ AreaCode.create(:country => germany, :name => "Uplengen", :area_code => "4956")
+ AreaCode.create(:country => germany, :name => "Detern", :area_code => "4957")
+ AreaCode.create(:country => germany, :name => "Jemgum", :area_code => "4958")
+ AreaCode.create(:country => germany, :name => "Dollart", :area_code => "4959")
+ AreaCode.create(:country => germany, :name => "Papenburg", :area_code => "4961")
+ AreaCode.create(:country => germany, :name => "Papenburg-Aschendorf", :area_code => "4962")
+ AreaCode.create(:country => germany, :name => "Dörpen", :area_code => "4963")
+ AreaCode.create(:country => germany, :name => "Rhede Ems", :area_code => "4964")
+ AreaCode.create(:country => germany, :name => "Surwold", :area_code => "4965")
+ AreaCode.create(:country => germany, :name => "Neubörger", :area_code => "4966")
+ AreaCode.create(:country => germany, :name => "Rhauderfehn-Burlage", :area_code => "4967")
+ AreaCode.create(:country => germany, :name => "Neulehe", :area_code => "4968")
+ AreaCode.create(:country => germany, :name => "Esens", :area_code => "4971")
+ AreaCode.create(:country => germany, :name => "Langeoog", :area_code => "4972")
+ AreaCode.create(:country => germany, :name => "Wittmund-Burhafe", :area_code => "4973")
+ AreaCode.create(:country => germany, :name => "Neuharlingersiel", :area_code => "4974")
+ AreaCode.create(:country => germany, :name => "Westerholt Ostfriesl", :area_code => "4975")
+ AreaCode.create(:country => germany, :name => "Spiekeroog", :area_code => "4976")
+ AreaCode.create(:country => germany, :name => "Blomberg Ostfriesl", :area_code => "4977")
+ AreaCode.create(:country => germany, :name => "Nienburg Weser", :area_code => "5021")
+ AreaCode.create(:country => germany, :name => "Wietzen", :area_code => "5022")
+ AreaCode.create(:country => germany, :name => "Liebenau Kr Nienburg Weser", :area_code => "5023")
+ AreaCode.create(:country => germany, :name => "Rohrsen Kr Nienburg Weser", :area_code => "5024")
+ AreaCode.create(:country => germany, :name => "Estorf Weser", :area_code => "5025")
+ AreaCode.create(:country => germany, :name => "Steimbke", :area_code => "5026")
+ AreaCode.create(:country => germany, :name => "Linsburg", :area_code => "5027")
+ AreaCode.create(:country => germany, :name => "Pennigsehl", :area_code => "5028")
+ AreaCode.create(:country => germany, :name => "Wunstorf", :area_code => "5031")
+ AreaCode.create(:country => germany, :name => "Neustadt am Rübenberge", :area_code => "5032")
+ AreaCode.create(:country => germany, :name => "Wunstorf-Grossenheidorn", :area_code => "5033")
+ AreaCode.create(:country => germany, :name => "Neustadt-Hagen", :area_code => "5034")
+ AreaCode.create(:country => germany, :name => "Gross Munzel", :area_code => "5035")
+ AreaCode.create(:country => germany, :name => "Neustadt-Schneeren", :area_code => "5036")
+ AreaCode.create(:country => germany, :name => "Bad Rehburg", :area_code => "5037")
+ AreaCode.create(:country => germany, :name => "Springe Deister", :area_code => "5041")
+ AreaCode.create(:country => germany, :name => "Bad Münder am Deister", :area_code => "5042")
+ AreaCode.create(:country => germany, :name => "Lauenau", :area_code => "5043")
+ AreaCode.create(:country => germany, :name => "Springe-Eldagsen", :area_code => "5044")
+ AreaCode.create(:country => germany, :name => "Springe-Bennigsen", :area_code => "5045")
+ AreaCode.create(:country => germany, :name => "Bergen Kr Celle", :area_code => "5051")
+ AreaCode.create(:country => germany, :name => "Hermannsburg", :area_code => "5052")
+ AreaCode.create(:country => germany, :name => "Faßberg-Müden", :area_code => "5053")
+ AreaCode.create(:country => germany, :name => "Bergen-Sülze", :area_code => "5054")
+ AreaCode.create(:country => germany, :name => "Fassberg", :area_code => "5055")
+ AreaCode.create(:country => germany, :name => "Winsen-Meissendorf", :area_code => "5056")
+ AreaCode.create(:country => germany, :name => "Bodenburg", :area_code => "5060")
+ AreaCode.create(:country => germany, :name => "Holle b Hildesheim", :area_code => "5062")
+ AreaCode.create(:country => germany, :name => "Bad Salzdetfurth", :area_code => "5063")
+ AreaCode.create(:country => germany, :name => "Groß Düngen", :area_code => "5064")
+ AreaCode.create(:country => germany, :name => "Sibbesse", :area_code => "5065")
+ AreaCode.create(:country => germany, :name => "Sarstedt", :area_code => "5066")
+ AreaCode.create(:country => germany, :name => "Bockenem", :area_code => "5067")
+ AreaCode.create(:country => germany, :name => "Elze Leine", :area_code => "5068")
+ AreaCode.create(:country => germany, :name => "Nordstemmen", :area_code => "5069")
+ AreaCode.create(:country => germany, :name => "Schwarmstedt", :area_code => "5071")
+ AreaCode.create(:country => germany, :name => "Neustadt-Mandelsloh", :area_code => "5072")
+ AreaCode.create(:country => germany, :name => "Neustadt-Esperke", :area_code => "5073")
+ AreaCode.create(:country => germany, :name => "Rodewald", :area_code => "5074")
+ AreaCode.create(:country => germany, :name => "Langlingen", :area_code => "5082")
+ AreaCode.create(:country => germany, :name => "Hohne b Celle", :area_code => "5083")
+ AreaCode.create(:country => germany, :name => "Hambühren", :area_code => "5084")
+ AreaCode.create(:country => germany, :name => "Burgdorf-Ehlershausen", :area_code => "5085")
+ AreaCode.create(:country => germany, :name => "Celle-Scheuen", :area_code => "5086")
+ AreaCode.create(:country => germany, :name => "Pattensen", :area_code => "5101")
+ AreaCode.create(:country => germany, :name => "Laatzen", :area_code => "5102")
+ AreaCode.create(:country => germany, :name => "Wennigsen Deister", :area_code => "5103")
+ AreaCode.create(:country => germany, :name => "Barsinghausen", :area_code => "5105")
+ AreaCode.create(:country => germany, :name => "Gehrden Han", :area_code => "5108")
+ AreaCode.create(:country => germany, :name => "Ronnenberg", :area_code => "5109")
+ AreaCode.create(:country => germany, :name => "Hannover", :area_code => "511")
+ AreaCode.create(:country => germany, :name => "Hildesheim", :area_code => "5121")
+ AreaCode.create(:country => germany, :name => "Schellerten", :area_code => "5123")
+ AreaCode.create(:country => germany, :name => "Algermissen", :area_code => "5126")
+ AreaCode.create(:country => germany, :name => "Harsum", :area_code => "5127")
+ AreaCode.create(:country => germany, :name => "Hohenhameln", :area_code => "5128")
+ AreaCode.create(:country => germany, :name => "Söhlde", :area_code => "5129")
+ AreaCode.create(:country => germany, :name => "Wedemark", :area_code => "5130")
+ AreaCode.create(:country => germany, :name => "Garbsen", :area_code => "5131")
+ AreaCode.create(:country => germany, :name => "Lehrte", :area_code => "5132")
+ AreaCode.create(:country => germany, :name => "Burgwedel-Fuhrberg", :area_code => "5135")
+ AreaCode.create(:country => germany, :name => "Burgdorf Kr Hannover", :area_code => "5136")
+ AreaCode.create(:country => germany, :name => "Seelze", :area_code => "5137")
+ AreaCode.create(:country => germany, :name => "Sehnde", :area_code => "5138")
+ AreaCode.create(:country => germany, :name => "Burgwedel", :area_code => "5139")
+ AreaCode.create(:country => germany, :name => "Celle", :area_code => "5141")
+ AreaCode.create(:country => germany, :name => "Eschede", :area_code => "5142")
+ AreaCode.create(:country => germany, :name => "Winsen Aller", :area_code => "5143")
+ AreaCode.create(:country => germany, :name => "Wathlingen", :area_code => "5144")
+ AreaCode.create(:country => germany, :name => "Beedenbostel", :area_code => "5145")
+ AreaCode.create(:country => germany, :name => "Wietze", :area_code => "5146")
+ AreaCode.create(:country => germany, :name => "Uetze-Hänigsen", :area_code => "5147")
+ AreaCode.create(:country => germany, :name => "Steinhorst Niedersachs", :area_code => "5148")
+ AreaCode.create(:country => germany, :name => "Wienhausen", :area_code => "5149")
+ AreaCode.create(:country => germany, :name => "Hameln", :area_code => "5151")
+ AreaCode.create(:country => germany, :name => "Hessisch Oldendorf", :area_code => "5152")
+ AreaCode.create(:country => germany, :name => "Salzhemmendorf", :area_code => "5153")
+ AreaCode.create(:country => germany, :name => "Aerzen", :area_code => "5154")
+ AreaCode.create(:country => germany, :name => "Emmerthal", :area_code => "5155")
+ AreaCode.create(:country => germany, :name => "Coppenbrügge", :area_code => "5156")
+ AreaCode.create(:country => germany, :name => "Emmerthal-Börry", :area_code => "5157")
+ AreaCode.create(:country => germany, :name => "Hemeringen", :area_code => "5158")
+ AreaCode.create(:country => germany, :name => "Coppenbrügge-Bisperode", :area_code => "5159")
+ AreaCode.create(:country => germany, :name => "Walsrode", :area_code => "5161")
+ AreaCode.create(:country => germany, :name => "Fallingbostel", :area_code => "5162")
+ AreaCode.create(:country => germany, :name => "Fallingbostel-Dorfmark", :area_code => "5163")
+ AreaCode.create(:country => germany, :name => "Hodenhagen", :area_code => "5164")
+ AreaCode.create(:country => germany, :name => "Rethem Aller", :area_code => "5165")
+ AreaCode.create(:country => germany, :name => "Walsrode-Kirchboitzen", :area_code => "5166")
+ AreaCode.create(:country => germany, :name => "Walsrode-Westenholz", :area_code => "5167")
+ AreaCode.create(:country => germany, :name => "Walsrode-Stellichte", :area_code => "5168")
+ AreaCode.create(:country => germany, :name => "Peine", :area_code => "5171")
+ AreaCode.create(:country => germany, :name => "Ilsede", :area_code => "5172")
+ AreaCode.create(:country => germany, :name => "Uetze", :area_code => "5173")
+ AreaCode.create(:country => germany, :name => "Lahstedt", :area_code => "5174")
+ AreaCode.create(:country => germany, :name => "Lehrte-Arpke", :area_code => "5175")
+ AreaCode.create(:country => germany, :name => "Edemissen", :area_code => "5176")
+ AreaCode.create(:country => germany, :name => "Edemissen-Abbensen", :area_code => "5177")
+ AreaCode.create(:country => germany, :name => "Alfeld Leine", :area_code => "5181")
+ AreaCode.create(:country => germany, :name => "Gronau Leine", :area_code => "5182")
+ AreaCode.create(:country => germany, :name => "Lamspringe", :area_code => "5183")
+ AreaCode.create(:country => germany, :name => "Freden Leine", :area_code => "5184")
+ AreaCode.create(:country => germany, :name => "Duingen", :area_code => "5185")
+ AreaCode.create(:country => germany, :name => "Salzhemmendorf-Wallensen", :area_code => "5186")
+ AreaCode.create(:country => germany, :name => "Delligsen", :area_code => "5187")
+ AreaCode.create(:country => germany, :name => "Soltau-Emmingen", :area_code => "5190")
+ AreaCode.create(:country => germany, :name => "Soltau", :area_code => "5191")
+ AreaCode.create(:country => germany, :name => "Munster", :area_code => "5192")
+ AreaCode.create(:country => germany, :name => "Schneverdingen", :area_code => "5193")
+ AreaCode.create(:country => germany, :name => "Bispingen", :area_code => "5194")
+ AreaCode.create(:country => germany, :name => "Neuenkirchen b Soltau", :area_code => "5195")
+ AreaCode.create(:country => germany, :name => "Wietzendorf", :area_code => "5196")
+ AreaCode.create(:country => germany, :name => "Soltau-Frielingen", :area_code => "5197")
+ AreaCode.create(:country => germany, :name => "Schneverdingen-Wintermoor", :area_code => "5198")
+ AreaCode.create(:country => germany, :name => "Schneverdingen-Heber", :area_code => "5199")
+ AreaCode.create(:country => germany, :name => "Halle Westf", :area_code => "5201")
+ AreaCode.create(:country => germany, :name => "Oerlinghausen", :area_code => "5202")
+ AreaCode.create(:country => germany, :name => "Werther Westf", :area_code => "5203")
+ AreaCode.create(:country => germany, :name => "Steinhagen Westf", :area_code => "5204")
+ AreaCode.create(:country => germany, :name => "Bielefeld-Sennestadt", :area_code => "5205")
+ AreaCode.create(:country => germany, :name => "Bielefeld-Jöllenbeck", :area_code => "5206")
+ AreaCode.create(:country => germany, :name => "Schloss Holte-Stukenbrock", :area_code => "5207")
+ AreaCode.create(:country => germany, :name => "Leopoldshöhe", :area_code => "5208")
+ AreaCode.create(:country => germany, :name => "Gütersloh-Friedrichsdorf", :area_code => "5209")
+ AreaCode.create(:country => germany, :name => "Bielefeld", :area_code => "521")
+ AreaCode.create(:country => germany, :name => "Herford", :area_code => "5221")
+ AreaCode.create(:country => germany, :name => "Bad Salzuflen", :area_code => "5222")
+ AreaCode.create(:country => germany, :name => "Bünde", :area_code => "5223")
+ AreaCode.create(:country => germany, :name => "Enger Westf", :area_code => "5224")
+ AreaCode.create(:country => germany, :name => "Spenge", :area_code => "5225")
+ AreaCode.create(:country => germany, :name => "Bruchmühlen Westf", :area_code => "5226")
+ AreaCode.create(:country => germany, :name => "Vlotho-Exter", :area_code => "5228")
+ AreaCode.create(:country => germany, :name => "Detmold", :area_code => "5231")
+ AreaCode.create(:country => germany, :name => "Lage Lippe", :area_code => "5232")
+ AreaCode.create(:country => germany, :name => "Steinheim Westf", :area_code => "5233")
+ AreaCode.create(:country => germany, :name => "Horn-Bad Meinberg", :area_code => "5234")
+ AreaCode.create(:country => germany, :name => "Blomberg Lippe", :area_code => "5235")
+ AreaCode.create(:country => germany, :name => "Blomberg-Grossenmarpe", :area_code => "5236")
+ AreaCode.create(:country => germany, :name => "Augustdorf", :area_code => "5237")
+ AreaCode.create(:country => germany, :name => "Nieheim-Himmighausen", :area_code => "5238")
+ AreaCode.create(:country => germany, :name => "Gütersloh", :area_code => "5241")
+ AreaCode.create(:country => germany, :name => "Rheda-Wiedenbrück", :area_code => "5242")
+ AreaCode.create(:country => germany, :name => "Rietberg", :area_code => "5244")
+ AreaCode.create(:country => germany, :name => "Herzebrock-Clarholz", :area_code => "5245")
+ AreaCode.create(:country => germany, :name => "Verl", :area_code => "5246")
+ AreaCode.create(:country => germany, :name => "Harsewinkel", :area_code => "5247")
+ AreaCode.create(:country => germany, :name => "Langenberg Kr Gütersloh", :area_code => "5248")
+ AreaCode.create(:country => germany, :name => "Delbrück Westf", :area_code => "5250")
+ AreaCode.create(:country => germany, :name => "Paderborn", :area_code => "5251")
+ AreaCode.create(:country => germany, :name => "Bad Lippspringe", :area_code => "5252")
+ AreaCode.create(:country => germany, :name => "Bad Driburg", :area_code => "5253")
+ AreaCode.create(:country => germany, :name => "Paderborn-Schloss Neuhaus", :area_code => "5254")
+ AreaCode.create(:country => germany, :name => "Altenbeken", :area_code => "5255")
+ AreaCode.create(:country => germany, :name => "Hövelhof", :area_code => "5257")
+ AreaCode.create(:country => germany, :name => "Salzkotten", :area_code => "5258")
+ AreaCode.create(:country => germany, :name => "Bad Driburg-Neuenheerse", :area_code => "5259")
+ AreaCode.create(:country => germany, :name => "Lemgo", :area_code => "5261")
+ AreaCode.create(:country => germany, :name => "Extertal", :area_code => "5262")
+ AreaCode.create(:country => germany, :name => "Barntrup", :area_code => "5263")
+ AreaCode.create(:country => germany, :name => "Kalletal", :area_code => "5264")
+ AreaCode.create(:country => germany, :name => "Dörentrup", :area_code => "5265")
+ AreaCode.create(:country => germany, :name => "Lemgo-Kirchheide", :area_code => "5266")
+ AreaCode.create(:country => germany, :name => "Höxter", :area_code => "5271")
+ AreaCode.create(:country => germany, :name => "Brakel Westf", :area_code => "5272")
+ AreaCode.create(:country => germany, :name => "Beverungen", :area_code => "5273")
+ AreaCode.create(:country => germany, :name => "Nieheim", :area_code => "5274")
+ AreaCode.create(:country => germany, :name => "Höxter-Ottbergen", :area_code => "5275")
+ AreaCode.create(:country => germany, :name => "Marienmünster", :area_code => "5276")
+ AreaCode.create(:country => germany, :name => "Höxter-Fürstenau", :area_code => "5277")
+ AreaCode.create(:country => germany, :name => "Höxter-Ovenhausen", :area_code => "5278")
+ AreaCode.create(:country => germany, :name => "Bad Pyrmont", :area_code => "5281")
+ AreaCode.create(:country => germany, :name => "Schieder-Schwalenberg", :area_code => "5282")
+ AreaCode.create(:country => germany, :name => "Lügde-Rischenau", :area_code => "5283")
+ AreaCode.create(:country => germany, :name => "Schwalenberg", :area_code => "5284")
+ AreaCode.create(:country => germany, :name => "Bad Pyrmont-Kleinenberg", :area_code => "5285")
+ AreaCode.create(:country => germany, :name => "Ottenstein Niedersachs", :area_code => "5286")
+ AreaCode.create(:country => germany, :name => "Lichtenau-Atteln", :area_code => "5292")
+ AreaCode.create(:country => germany, :name => "Paderborn-Dahl", :area_code => "5293")
+ AreaCode.create(:country => germany, :name => "Hövelhof-Espeln", :area_code => "5294")
+ AreaCode.create(:country => germany, :name => "Lichtenau Westf", :area_code => "5295")
+ AreaCode.create(:country => germany, :name => "Salzgitter-Üfingen", :area_code => "5300")
+ AreaCode.create(:country => germany, :name => "Lehre-Essenrode", :area_code => "5301")
+ AreaCode.create(:country => germany, :name => "Vechelde", :area_code => "5302")
+ AreaCode.create(:country => germany, :name => "Wendeburg", :area_code => "5303")
+ AreaCode.create(:country => germany, :name => "Meine", :area_code => "5304")
+ AreaCode.create(:country => germany, :name => "Sickte", :area_code => "5305")
+ AreaCode.create(:country => germany, :name => "Cremlingen", :area_code => "5306")
+ AreaCode.create(:country => germany, :name => "Braunschweig-Wenden", :area_code => "5307")
+ AreaCode.create(:country => germany, :name => "Lehre", :area_code => "5308")
+ AreaCode.create(:country => germany, :name => "Lehre-Wendhausen", :area_code => "5309")
+ AreaCode.create(:country => germany, :name => "Braunschweig", :area_code => "531")
+ AreaCode.create(:country => germany, :name => "Torfhaus", :area_code => "5320")
+ AreaCode.create(:country => germany, :name => "Goslar", :area_code => "5321")
+ AreaCode.create(:country => germany, :name => "Bad Harzburg", :area_code => "5322")
+ AreaCode.create(:country => germany, :name => "Clausthal-Zellerfeld", :area_code => "5323")
+ AreaCode.create(:country => germany, :name => "Vienenburg", :area_code => "5324")
+ AreaCode.create(:country => germany, :name => "Goslar-Hahnenklee", :area_code => "5325")
+ AreaCode.create(:country => germany, :name => "Langelsheim", :area_code => "5326")
+ AreaCode.create(:country => germany, :name => "Bad Grund Harz", :area_code => "5327")
+ AreaCode.create(:country => germany, :name => "Altenau Harz", :area_code => "5328")
+ AreaCode.create(:country => germany, :name => "Schulenberg im Oberharz", :area_code => "5329")
+ AreaCode.create(:country => germany, :name => "Wolfenbüttel", :area_code => "5331")
+ AreaCode.create(:country => germany, :name => "Schöppenstedt", :area_code => "5332")
+ AreaCode.create(:country => germany, :name => "Dettum", :area_code => "5333")
+ AreaCode.create(:country => germany, :name => "Hornburg Kr Wolfenbüttel", :area_code => "5334")
+ AreaCode.create(:country => germany, :name => "Schladen", :area_code => "5335")
+ AreaCode.create(:country => germany, :name => "Semmenstedt", :area_code => "5336")
+ AreaCode.create(:country => germany, :name => "Kissenbrück", :area_code => "5337")
+ AreaCode.create(:country => germany, :name => "Gielde", :area_code => "5339")
+ AreaCode.create(:country => germany, :name => "Salzgitter", :area_code => "5341")
+ AreaCode.create(:country => germany, :name => "Lengede", :area_code => "5344")
+ AreaCode.create(:country => germany, :name => "Baddeckenstedt", :area_code => "5345")
+ AreaCode.create(:country => germany, :name => "Liebenburg", :area_code => "5346")
+ AreaCode.create(:country => germany, :name => "Burgdorf b Salzgitter", :area_code => "5347")
+ AreaCode.create(:country => germany, :name => "Helmstedt", :area_code => "5351")
+ AreaCode.create(:country => germany, :name => "Schöningen", :area_code => "5352")
+ AreaCode.create(:country => germany, :name => "Königslutter am Elm", :area_code => "5353")
+ AreaCode.create(:country => germany, :name => "Jerxheim", :area_code => "5354")
+ AreaCode.create(:country => germany, :name => "Frellstedt", :area_code => "5355")
+ AreaCode.create(:country => germany, :name => "Helmstedt-Barmke", :area_code => "5356")
+ AreaCode.create(:country => germany, :name => "Grasleben", :area_code => "5357")
+ AreaCode.create(:country => germany, :name => "Bahrdorf-Mackendorf", :area_code => "5358")
+ AreaCode.create(:country => germany, :name => "Wolfsburg", :area_code => "5361")
+ AreaCode.create(:country => germany, :name => "Wolfsburg-Fallersleben", :area_code => "5362")
+ AreaCode.create(:country => germany, :name => "Wolfsburg-Vorsfelde", :area_code => "5363")
+ AreaCode.create(:country => germany, :name => "Velpke", :area_code => "5364")
+ AreaCode.create(:country => germany, :name => "Wolfsburg-Neindorf", :area_code => "5365")
+ AreaCode.create(:country => germany, :name => "Jembke", :area_code => "5366")
+ AreaCode.create(:country => germany, :name => "Rühen", :area_code => "5367")
+ AreaCode.create(:country => germany, :name => "Parsau", :area_code => "5368")
+ AreaCode.create(:country => germany, :name => "Gifhorn", :area_code => "5371")
+ AreaCode.create(:country => germany, :name => "Meinersen", :area_code => "5372")
+ AreaCode.create(:country => germany, :name => "Hillerse Kr Gifhorn", :area_code => "5373")
+ AreaCode.create(:country => germany, :name => "Isenbüttel", :area_code => "5374")
+ AreaCode.create(:country => germany, :name => "Müden Aller", :area_code => "5375")
+ AreaCode.create(:country => germany, :name => "Wesendorf Kr Gifhorn", :area_code => "5376")
+ AreaCode.create(:country => germany, :name => "Ehra-Lessien", :area_code => "5377")
+ AreaCode.create(:country => germany, :name => "Sassenburg-Platendorf", :area_code => "5378")
+ AreaCode.create(:country => germany, :name => "Sassenburg-Grussendorf", :area_code => "5379")
+ AreaCode.create(:country => germany, :name => "Seesen", :area_code => "5381")
+ AreaCode.create(:country => germany, :name => "Bad Gandersheim", :area_code => "5382")
+ AreaCode.create(:country => germany, :name => "Lutter am Barenberge", :area_code => "5383")
+ AreaCode.create(:country => germany, :name => "Seesen-Groß Rhüden", :area_code => "5384")
+ AreaCode.create(:country => germany, :name => "Georgsmarienhütte", :area_code => "5401")
+ AreaCode.create(:country => germany, :name => "Bissendorf Kr Osnabrück", :area_code => "5402")
+ AreaCode.create(:country => germany, :name => "Bad Iburg", :area_code => "5403")
+ AreaCode.create(:country => germany, :name => "Westerkappeln", :area_code => "5404")
+ AreaCode.create(:country => germany, :name => "Hasbergen Kr Osnabrück", :area_code => "5405")
+ AreaCode.create(:country => germany, :name => "Belm", :area_code => "5406")
+ AreaCode.create(:country => germany, :name => "Wallenhorst", :area_code => "5407")
+ AreaCode.create(:country => germany, :name => "Hilter am Teutoburger Wald", :area_code => "5409")
+ AreaCode.create(:country => germany, :name => "Osnabrück", :area_code => "541")
+ AreaCode.create(:country => germany, :name => "Dissen am Teutoburger Wald", :area_code => "5421")
+ AreaCode.create(:country => germany, :name => "Melle", :area_code => "5422")
+ AreaCode.create(:country => germany, :name => "Versmold", :area_code => "5423")
+ AreaCode.create(:country => germany, :name => "Bad Rothenfelde", :area_code => "5424")
+ AreaCode.create(:country => germany, :name => "Borgholzhausen", :area_code => "5425")
+ AreaCode.create(:country => germany, :name => "Glandorf", :area_code => "5426")
+ AreaCode.create(:country => germany, :name => "Melle-Buer", :area_code => "5427")
+ AreaCode.create(:country => germany, :name => "Melle-Neuenkirchen", :area_code => "5428")
+ AreaCode.create(:country => germany, :name => "Melle-Wellingholzhausen", :area_code => "5429")
+ AreaCode.create(:country => germany, :name => "Quakenbrück", :area_code => "5431")
+ AreaCode.create(:country => germany, :name => "Löningen", :area_code => "5432")
+ AreaCode.create(:country => germany, :name => "Badbergen", :area_code => "5433")
+ AreaCode.create(:country => germany, :name => "Essen Oldenburg", :area_code => "5434")
+ AreaCode.create(:country => germany, :name => "Berge b Quakenbrück", :area_code => "5435")
+ AreaCode.create(:country => germany, :name => "Nortrup", :area_code => "5436")
+ AreaCode.create(:country => germany, :name => "Menslage", :area_code => "5437")
+ AreaCode.create(:country => germany, :name => "Bakum-Lüsche", :area_code => "5438")
+ AreaCode.create(:country => germany, :name => "Bersenbrück", :area_code => "5439")
+ AreaCode.create(:country => germany, :name => "Diepholz", :area_code => "5441")
+ AreaCode.create(:country => germany, :name => "Barnstorf Kr Diepholz", :area_code => "5442")
+ AreaCode.create(:country => germany, :name => "Lemförde", :area_code => "5443")
+ AreaCode.create(:country => germany, :name => "Wagenfeld", :area_code => "5444")
+ AreaCode.create(:country => germany, :name => "Drebber", :area_code => "5445")
+ AreaCode.create(:country => germany, :name => "Rehden", :area_code => "5446")
+ AreaCode.create(:country => germany, :name => "Lembruch", :area_code => "5447")
+ AreaCode.create(:country => germany, :name => "Barver", :area_code => "5448")
+ AreaCode.create(:country => germany, :name => "Ibbenbüren", :area_code => "5451")
+ AreaCode.create(:country => germany, :name => "Mettingen Westf", :area_code => "5452")
+ AreaCode.create(:country => germany, :name => "Recke", :area_code => "5453")
+ AreaCode.create(:country => germany, :name => "Hörstel-Riesenbeck", :area_code => "5454")
+ AreaCode.create(:country => germany, :name => "Tecklenburg-Brochterbeck", :area_code => "5455")
+ AreaCode.create(:country => germany, :name => "Westerkappeln-Velpe", :area_code => "5456")
+ AreaCode.create(:country => germany, :name => "Hopsten-Schale", :area_code => "5457")
+ AreaCode.create(:country => germany, :name => "Hopsten", :area_code => "5458")
+ AreaCode.create(:country => germany, :name => "Hörstel", :area_code => "5459")
+ AreaCode.create(:country => germany, :name => "Bramsche Hase", :area_code => "5461")
+ AreaCode.create(:country => germany, :name => "Ankum", :area_code => "5462")
+ AreaCode.create(:country => germany, :name => "Alfhausen", :area_code => "5464")
+ AreaCode.create(:country => germany, :name => "Neuenkirchen b Bramsche", :area_code => "5465")
+ AreaCode.create(:country => germany, :name => "Merzen", :area_code => "5466")
+ AreaCode.create(:country => germany, :name => "Voltlage", :area_code => "5467")
+ AreaCode.create(:country => germany, :name => "Bramsche-Engter", :area_code => "5468")
+ AreaCode.create(:country => germany, :name => "Bohmte", :area_code => "5471")
+ AreaCode.create(:country => germany, :name => "Bad Essen", :area_code => "5472")
+ AreaCode.create(:country => germany, :name => "Ostercappeln", :area_code => "5473")
+ AreaCode.create(:country => germany, :name => "Stemwede-Dielingen", :area_code => "5474")
+ AreaCode.create(:country => germany, :name => "Bohmte-Hunteburg", :area_code => "5475")
+ AreaCode.create(:country => germany, :name => "Ostercappeln-Venne", :area_code => "5476")
+ AreaCode.create(:country => germany, :name => "Lengerich Westf", :area_code => "5481")
+ AreaCode.create(:country => germany, :name => "Tecklenburg", :area_code => "5482")
+ AreaCode.create(:country => germany, :name => "Lienen", :area_code => "5483")
+ AreaCode.create(:country => germany, :name => "Lienen-Kattenvenne", :area_code => "5484")
+ AreaCode.create(:country => germany, :name => "Ladbergen", :area_code => "5485")
+ AreaCode.create(:country => germany, :name => "Damme Dümmer", :area_code => "5491")
+ AreaCode.create(:country => germany, :name => "Steinfeld Oldenburg", :area_code => "5492")
+ AreaCode.create(:country => germany, :name => "Neuenkirchen Kr Vechta", :area_code => "5493")
+ AreaCode.create(:country => germany, :name => "Holdorf Niedersachs", :area_code => "5494")
+ AreaCode.create(:country => germany, :name => "Vörden Kr Vechta", :area_code => "5495")
+ AreaCode.create(:country => germany, :name => "Dransfeld", :area_code => "5502")
+ AreaCode.create(:country => germany, :name => "Nörten-Hardenberg", :area_code => "5503")
+ AreaCode.create(:country => germany, :name => "Friedland Kr Göttingen", :area_code => "5504")
+ AreaCode.create(:country => germany, :name => "Hardegsen", :area_code => "5505")
+ AreaCode.create(:country => germany, :name => "Adelebsen", :area_code => "5506")
+ AreaCode.create(:country => germany, :name => "Ebergötzen", :area_code => "5507")
+ AreaCode.create(:country => germany, :name => "Gleichen-Rittmarshausen", :area_code => "5508")
+ AreaCode.create(:country => germany, :name => "Rosdorf Kr Göttingen", :area_code => "5509")
+ AreaCode.create(:country => germany, :name => "Göttingen", :area_code => "551")
+ AreaCode.create(:country => germany, :name => "Braunlage", :area_code => "5520")
+ AreaCode.create(:country => germany, :name => "Herzberg am Harz", :area_code => "5521")
+ AreaCode.create(:country => germany, :name => "Osterode am Harz", :area_code => "5522")
+ AreaCode.create(:country => germany, :name => "Bad Sachsa", :area_code => "5523")
+ AreaCode.create(:country => germany, :name => "Bad Lauterberg im Harz", :area_code => "5524")
+ AreaCode.create(:country => germany, :name => "Walkenried", :area_code => "5525")
+ AreaCode.create(:country => germany, :name => "Duderstadt", :area_code => "5527")
+ AreaCode.create(:country => germany, :name => "Gieboldehausen", :area_code => "5528")
+ AreaCode.create(:country => germany, :name => "Rhumspringe", :area_code => "5529")
+ AreaCode.create(:country => germany, :name => "Holzminden", :area_code => "5531")
+ AreaCode.create(:country => germany, :name => "Stadtoldendorf", :area_code => "5532")
+ AreaCode.create(:country => germany, :name => "Bodenwerder", :area_code => "5533")
+ AreaCode.create(:country => germany, :name => "Eschershausen a d Lenne", :area_code => "5534")
+ AreaCode.create(:country => germany, :name => "Polle", :area_code => "5535")
+ AreaCode.create(:country => germany, :name => "Holzminden-Neuhaus", :area_code => "5536")
+ AreaCode.create(:country => germany, :name => "Hann. Münden", :area_code => "5541")
+ AreaCode.create(:country => germany, :name => "Witzenhausen", :area_code => "5542")
+ AreaCode.create(:country => germany, :name => "Staufenberg Niedersachs", :area_code => "5543")
+ AreaCode.create(:country => germany, :name => "Reinhardshagen", :area_code => "5544")
+ AreaCode.create(:country => germany, :name => "Hedemünden", :area_code => "5545")
+ AreaCode.create(:country => germany, :name => "Scheden", :area_code => "5546")
+ AreaCode.create(:country => germany, :name => "Northeim", :area_code => "5551")
+ AreaCode.create(:country => germany, :name => "Katlenburg", :area_code => "5552")
+ AreaCode.create(:country => germany, :name => "Kalefeld", :area_code => "5553")
+ AreaCode.create(:country => germany, :name => "Moringen", :area_code => "5554")
+ AreaCode.create(:country => germany, :name => "Moringen-Fredelsloh", :area_code => "5555")
+ AreaCode.create(:country => germany, :name => "Lindau Harz", :area_code => "5556")
+ AreaCode.create(:country => germany, :name => "Einbeck", :area_code => "5561")
+ AreaCode.create(:country => germany, :name => "Dassel-Markoldendorf", :area_code => "5562")
+ AreaCode.create(:country => germany, :name => "Kreiensen", :area_code => "5563")
+ AreaCode.create(:country => germany, :name => "Dassel", :area_code => "5564")
+ AreaCode.create(:country => germany, :name => "Einbeck-Wenzen", :area_code => "5565")
+ AreaCode.create(:country => germany, :name => "Uslar", :area_code => "5571")
+ AreaCode.create(:country => germany, :name => "Bodenfelde", :area_code => "5572")
+ AreaCode.create(:country => germany, :name => "Uslar-Volpriehausen", :area_code => "5573")
+ AreaCode.create(:country => germany, :name => "Oberweser", :area_code => "5574")
+ AreaCode.create(:country => germany, :name => "Sankt Andreasberg", :area_code => "5582")
+ AreaCode.create(:country => germany, :name => "Braunlage-Hohegeiss", :area_code => "5583")
+ AreaCode.create(:country => germany, :name => "Hattorf am Harz", :area_code => "5584")
+ AreaCode.create(:country => germany, :name => "Herzberg-Sieber", :area_code => "5585")
+ AreaCode.create(:country => germany, :name => "Wieda", :area_code => "5586")
+ AreaCode.create(:country => germany, :name => "Gleichen-Bremke", :area_code => "5592")
+ AreaCode.create(:country => germany, :name => "Bovenden-Lenglern", :area_code => "5593")
+ AreaCode.create(:country => germany, :name => "Bovenden-Reyershausen", :area_code => "5594")
+ AreaCode.create(:country => germany, :name => "Schauenburg", :area_code => "5601")
+ AreaCode.create(:country => germany, :name => "Hessisch Lichtenau", :area_code => "5602")
+ AreaCode.create(:country => germany, :name => "Gudensberg", :area_code => "5603")
+ AreaCode.create(:country => germany, :name => "Grossalmerode", :area_code => "5604")
+ AreaCode.create(:country => germany, :name => "Kaufungen Hess", :area_code => "5605")
+ AreaCode.create(:country => germany, :name => "Zierenberg", :area_code => "5606")
+ AreaCode.create(:country => germany, :name => "Fuldatal", :area_code => "5607")
+ AreaCode.create(:country => germany, :name => "Söhrewald", :area_code => "5608")
+ AreaCode.create(:country => germany, :name => "Ahnatal", :area_code => "5609")
+ AreaCode.create(:country => germany, :name => "Kassel", :area_code => "561")
+ AreaCode.create(:country => germany, :name => "Bad Wildungen", :area_code => "5621")
+ AreaCode.create(:country => germany, :name => "Fritzlar", :area_code => "5622")
+ AreaCode.create(:country => germany, :name => "Edertal", :area_code => "5623")
+ AreaCode.create(:country => germany, :name => "Bad Emstal", :area_code => "5624")
+ AreaCode.create(:country => germany, :name => "Naumburg Hess", :area_code => "5625")
+ AreaCode.create(:country => germany, :name => "Bad Zwesten", :area_code => "5626")
+ AreaCode.create(:country => germany, :name => "Korbach", :area_code => "5631")
+ AreaCode.create(:country => germany, :name => "Willingen Upland", :area_code => "5632")
+ AreaCode.create(:country => germany, :name => "Diemelsee", :area_code => "5633")
+ AreaCode.create(:country => germany, :name => "Waldeck-Sachsenhausen", :area_code => "5634")
+ AreaCode.create(:country => germany, :name => "Vöhl", :area_code => "5635")
+ AreaCode.create(:country => germany, :name => "Lichtenfels-Goddelsheim", :area_code => "5636")
+ AreaCode.create(:country => germany, :name => "Warburg", :area_code => "5641")
+ AreaCode.create(:country => germany, :name => "Warburg-Scherfede", :area_code => "5642")
+ AreaCode.create(:country => germany, :name => "Borgentreich", :area_code => "5643")
+ AreaCode.create(:country => germany, :name => "Willebadessen-Peckelsheim", :area_code => "5644")
+ AreaCode.create(:country => germany, :name => "Borgentreich-Borgholz", :area_code => "5645")
+ AreaCode.create(:country => germany, :name => "Willebadessen", :area_code => "5646")
+ AreaCode.create(:country => germany, :name => "Lichtenau-Kleinenberg", :area_code => "5647")
+ AreaCode.create(:country => germany, :name => "Brakel-Gehrden", :area_code => "5648")
+ AreaCode.create(:country => germany, :name => "Cornberg", :area_code => "5650")
+ AreaCode.create(:country => germany, :name => "Eschwege", :area_code => "5651")
+ AreaCode.create(:country => germany, :name => "Bad Sooden-Allendorf", :area_code => "5652")
+ AreaCode.create(:country => germany, :name => "Sontra", :area_code => "5653")
+ AreaCode.create(:country => germany, :name => "Herleshausen", :area_code => "5654")
+ AreaCode.create(:country => germany, :name => "Wanfried", :area_code => "5655")
+ AreaCode.create(:country => germany, :name => "Waldkappel", :area_code => "5656")
+ AreaCode.create(:country => germany, :name => "Meissner", :area_code => "5657")
+ AreaCode.create(:country => germany, :name => "Wehretal", :area_code => "5658")
+ AreaCode.create(:country => germany, :name => "Ringgau", :area_code => "5659")
+ AreaCode.create(:country => germany, :name => "Melsungen", :area_code => "5661")
+ AreaCode.create(:country => germany, :name => "Felsberg Hess", :area_code => "5662")
+ AreaCode.create(:country => germany, :name => "Spangenberg", :area_code => "5663")
+ AreaCode.create(:country => germany, :name => "Morschen", :area_code => "5664")
+ AreaCode.create(:country => germany, :name => "Guxhagen", :area_code => "5665")
+ AreaCode.create(:country => germany, :name => "Hofgeismar", :area_code => "5671")
+ AreaCode.create(:country => germany, :name => "Bad Karlshafen", :area_code => "5672")
+ AreaCode.create(:country => germany, :name => "Immenhausen Hess", :area_code => "5673")
+ AreaCode.create(:country => germany, :name => "Grebenstein", :area_code => "5674")
+ AreaCode.create(:country => germany, :name => "Trendelburg", :area_code => "5675")
+ AreaCode.create(:country => germany, :name => "Liebenau Hess", :area_code => "5676")
+ AreaCode.create(:country => germany, :name => "Calden-Westuffeln", :area_code => "5677")
+ AreaCode.create(:country => germany, :name => "Homberg Efze", :area_code => "5681")
+ AreaCode.create(:country => germany, :name => "Borken Hessen", :area_code => "5682")
+ AreaCode.create(:country => germany, :name => "Wabern Hess", :area_code => "5683")
+ AreaCode.create(:country => germany, :name => "Frielendorf", :area_code => "5684")
+ AreaCode.create(:country => germany, :name => "Knüllwald", :area_code => "5685")
+ AreaCode.create(:country => germany, :name => "Schwarzenborn Knüll", :area_code => "5686")
+ AreaCode.create(:country => germany, :name => "Bad Arolsen", :area_code => "5691")
+ AreaCode.create(:country => germany, :name => "Wolfhagen", :area_code => "5692")
+ AreaCode.create(:country => germany, :name => "Volkmarsen", :area_code => "5693")
+ AreaCode.create(:country => germany, :name => "Diemelstadt", :area_code => "5694")
+ AreaCode.create(:country => germany, :name => "Twistetal", :area_code => "5695")
+ AreaCode.create(:country => germany, :name => "Bad Arolsen-Landau", :area_code => "5696")
+ AreaCode.create(:country => germany, :name => "Petershagen-Lahde", :area_code => "5702")
+ AreaCode.create(:country => germany, :name => "Hille", :area_code => "5703")
+ AreaCode.create(:country => germany, :name => "Petershagen-Friedewalde", :area_code => "5704")
+ AreaCode.create(:country => germany, :name => "Petershagen-Windheim", :area_code => "5705")
+ AreaCode.create(:country => germany, :name => "Porta Westfalica", :area_code => "5706")
+ AreaCode.create(:country => germany, :name => "Petershagen Weser", :area_code => "5707")
+ AreaCode.create(:country => germany, :name => "Minden Westf", :area_code => "571")
+ AreaCode.create(:country => germany, :name => "Stadthagen", :area_code => "5721")
+ AreaCode.create(:country => germany, :name => "Bückeburg", :area_code => "5722")
+ AreaCode.create(:country => germany, :name => "Bad Nenndorf", :area_code => "5723")
+ AreaCode.create(:country => germany, :name => "Obernkirchen", :area_code => "5724")
+ AreaCode.create(:country => germany, :name => "Lindhorst b Stadthagen", :area_code => "5725")
+ AreaCode.create(:country => germany, :name => "Wiedensahl", :area_code => "5726")
+ AreaCode.create(:country => germany, :name => "Bad Oeynhausen", :area_code => "5731")
+ AreaCode.create(:country => germany, :name => "Löhne", :area_code => "5732")
+ AreaCode.create(:country => germany, :name => "Vlotho", :area_code => "5733")
+ AreaCode.create(:country => germany, :name => "Bergkirchen Westf", :area_code => "5734")
+ AreaCode.create(:country => germany, :name => "Lübbecke", :area_code => "5741")
+ AreaCode.create(:country => germany, :name => "Preussisch Oldendorf", :area_code => "5742")
+ AreaCode.create(:country => germany, :name => "Espelkamp-Gestringen", :area_code => "5743")
+ AreaCode.create(:country => germany, :name => "Hüllhorst", :area_code => "5744")
+ AreaCode.create(:country => germany, :name => "Stemwede-Levern", :area_code => "5745")
+ AreaCode.create(:country => germany, :name => "Rödinghausen", :area_code => "5746")
+ AreaCode.create(:country => germany, :name => "Rinteln", :area_code => "5751")
+ AreaCode.create(:country => germany, :name => "Auetal-Hattendorf", :area_code => "5752")
+ AreaCode.create(:country => germany, :name => "Auetal-Bernsen", :area_code => "5753")
+ AreaCode.create(:country => germany, :name => "Extertal-Bremke", :area_code => "5754")
+ AreaCode.create(:country => germany, :name => "Kalletal-Varenholz", :area_code => "5755")
+ AreaCode.create(:country => germany, :name => "Stolzenau", :area_code => "5761")
+ AreaCode.create(:country => germany, :name => "Uchte", :area_code => "5763")
+ AreaCode.create(:country => germany, :name => "Steyerberg", :area_code => "5764")
+ AreaCode.create(:country => germany, :name => "Raddestorf", :area_code => "5765")
+ AreaCode.create(:country => germany, :name => "Rehburg-Loccum", :area_code => "5766")
+ AreaCode.create(:country => germany, :name => "Warmsen", :area_code => "5767")
+ AreaCode.create(:country => germany, :name => "Petershagen-Heimsen", :area_code => "5768")
+ AreaCode.create(:country => germany, :name => "Steyerberg-Voigtei", :area_code => "5769")
+ AreaCode.create(:country => germany, :name => "Rahden Westf", :area_code => "5771")
+ AreaCode.create(:country => germany, :name => "Espelkamp", :area_code => "5772")
+ AreaCode.create(:country => germany, :name => "Stemwede-Wehdem", :area_code => "5773")
+ AreaCode.create(:country => germany, :name => "Wagenfeld-Ströhen", :area_code => "5774")
+ AreaCode.create(:country => germany, :name => "Diepenau", :area_code => "5775")
+ AreaCode.create(:country => germany, :name => "Preussisch Ströhen", :area_code => "5776")
+ AreaCode.create(:country => germany, :name => "Diepenau-Essern", :area_code => "5777")
+ AreaCode.create(:country => germany, :name => "Wrestedt", :area_code => "5802")
+ AreaCode.create(:country => germany, :name => "Rosche", :area_code => "5803")
+ AreaCode.create(:country => germany, :name => "Rätzlingen Kr Uelzen", :area_code => "5804")
+ AreaCode.create(:country => germany, :name => "Oetzen", :area_code => "5805")
+ AreaCode.create(:country => germany, :name => "Barum b Bad Bevensen", :area_code => "5806")
+ AreaCode.create(:country => germany, :name => "Altenmedingen", :area_code => "5807")
+ AreaCode.create(:country => germany, :name => "Gerdau", :area_code => "5808")
+ AreaCode.create(:country => germany, :name => "Uelzen", :area_code => "581")
+ AreaCode.create(:country => germany, :name => "Suhlendorf", :area_code => "5820")
+ AreaCode.create(:country => germany, :name => "Bad Bevensen", :area_code => "5821")
+ AreaCode.create(:country => germany, :name => "Ebstorf", :area_code => "5822")
+ AreaCode.create(:country => germany, :name => "Bienenbüttel", :area_code => "5823")
+ AreaCode.create(:country => germany, :name => "Bad Bodenteich", :area_code => "5824")
+ AreaCode.create(:country => germany, :name => "Wieren", :area_code => "5825")
+ AreaCode.create(:country => germany, :name => "Suderburg", :area_code => "5826")
+ AreaCode.create(:country => germany, :name => "Unterlüß", :area_code => "5827")
+ AreaCode.create(:country => germany, :name => "Himbergen", :area_code => "5828")
+ AreaCode.create(:country => germany, :name => "Wriedel", :area_code => "5829")
+ AreaCode.create(:country => germany, :name => "Wittingen", :area_code => "5831")
+ AreaCode.create(:country => germany, :name => "Hankensbüttel", :area_code => "5832")
+ AreaCode.create(:country => germany, :name => "Brome", :area_code => "5833")
+ AreaCode.create(:country => germany, :name => "Wittingen-Knesebeck", :area_code => "5834")
+ AreaCode.create(:country => germany, :name => "Wahrenholz", :area_code => "5835")
+ AreaCode.create(:country => germany, :name => "Wittingen-Radenbeck", :area_code => "5836")
+ AreaCode.create(:country => germany, :name => "Sprakensehl", :area_code => "5837")
+ AreaCode.create(:country => germany, :name => "Gross Oesingen", :area_code => "5838")
+ AreaCode.create(:country => germany, :name => "Wittingen-Ohrdorf", :area_code => "5839")
+ AreaCode.create(:country => germany, :name => "Schnackenburg", :area_code => "5840")
+ AreaCode.create(:country => germany, :name => "Lüchow Wendland", :area_code => "5841")
+ AreaCode.create(:country => germany, :name => "Schnega", :area_code => "5842")
+ AreaCode.create(:country => germany, :name => "Wustrow", :area_code => "5843")
+ AreaCode.create(:country => germany, :name => "Clenze", :area_code => "5844")
+ AreaCode.create(:country => germany, :name => "Bergen Dumme", :area_code => "5845")
+ AreaCode.create(:country => germany, :name => "Gartow Niedersachs", :area_code => "5846")
+ AreaCode.create(:country => germany, :name => "Trebel", :area_code => "5848")
+ AreaCode.create(:country => germany, :name => "Waddeweitz", :area_code => "5849")
+ AreaCode.create(:country => germany, :name => "Neetze", :area_code => "5850")
+ AreaCode.create(:country => germany, :name => "Dahlenburg", :area_code => "5851")
+ AreaCode.create(:country => germany, :name => "Bleckede", :area_code => "5852")
+ AreaCode.create(:country => germany, :name => "Neu Darchau", :area_code => "5853")
+ AreaCode.create(:country => germany, :name => "Bleckede-Barskamp", :area_code => "5854")
+ AreaCode.create(:country => germany, :name => "Nahrendorf", :area_code => "5855")
+ AreaCode.create(:country => germany, :name => "Bleckede-Brackede", :area_code => "5857")
+ AreaCode.create(:country => germany, :name => "Hitzacker-Wietzetze", :area_code => "5858")
+ AreaCode.create(:country => germany, :name => "Thomasburg", :area_code => "5859")
+ AreaCode.create(:country => germany, :name => "Dannenberg Elbe", :area_code => "5861")
+ AreaCode.create(:country => germany, :name => "Hitzacker Elbe", :area_code => "5862")
+ AreaCode.create(:country => germany, :name => "Zernien", :area_code => "5863")
+ AreaCode.create(:country => germany, :name => "Jameln", :area_code => "5864")
+ AreaCode.create(:country => germany, :name => "Gusborn", :area_code => "5865")
+ AreaCode.create(:country => germany, :name => "Stoetze", :area_code => "5872")
+ AreaCode.create(:country => germany, :name => "Eimke", :area_code => "5873")
+ AreaCode.create(:country => germany, :name => "Soltendieck", :area_code => "5874")
+ AreaCode.create(:country => germany, :name => "Emmendorf", :area_code => "5875")
+ AreaCode.create(:country => germany, :name => "Gorleben", :area_code => "5882")
+ AreaCode.create(:country => germany, :name => "Lemgow", :area_code => "5883")
+ AreaCode.create(:country => germany, :name => "Fürstenau b Bramsche", :area_code => "5901")
+ AreaCode.create(:country => germany, :name => "Freren", :area_code => "5902")
+ AreaCode.create(:country => germany, :name => "Emsbüren", :area_code => "5903")
+ AreaCode.create(:country => germany, :name => "Lengerich Emsl", :area_code => "5904")
+ AreaCode.create(:country => germany, :name => "Beesten", :area_code => "5905")
+ AreaCode.create(:country => germany, :name => "Lünne", :area_code => "5906")
+ AreaCode.create(:country => germany, :name => "Geeste", :area_code => "5907")
+ AreaCode.create(:country => germany, :name => "Wietmarschen-Lohne", :area_code => "5908")
+ AreaCode.create(:country => germany, :name => "Wettrup", :area_code => "5909")
+ AreaCode.create(:country => germany, :name => "Lingen (Ems)", :area_code => "591")
+ AreaCode.create(:country => germany, :name => "Nordhorn", :area_code => "5921")
+ AreaCode.create(:country => germany, :name => "Bad Bentheim", :area_code => "5922")
+ AreaCode.create(:country => germany, :name => "Schüttorf", :area_code => "5923")
+ AreaCode.create(:country => germany, :name => "Bad Bentheim-Gildehaus", :area_code => "5924")
+ AreaCode.create(:country => germany, :name => "Wietmarschen", :area_code => "5925")
+ AreaCode.create(:country => germany, :name => "Engden", :area_code => "5926")
+ AreaCode.create(:country => germany, :name => "Meppen", :area_code => "5931")
+ AreaCode.create(:country => germany, :name => "Haren Ems", :area_code => "5932")
+ AreaCode.create(:country => germany, :name => "Lathen", :area_code => "5933")
+ AreaCode.create(:country => germany, :name => "Haren-Rütenbrock", :area_code => "5934")
+ AreaCode.create(:country => germany, :name => "Twist-Schöninghsdorf", :area_code => "5935")
+ AreaCode.create(:country => germany, :name => "Twist", :area_code => "5936")
+ AreaCode.create(:country => germany, :name => "Geeste-Gross Hesepe", :area_code => "5937")
+ AreaCode.create(:country => germany, :name => "Sustrum", :area_code => "5939")
+ AreaCode.create(:country => germany, :name => "Neuenhaus Dinkel", :area_code => "5941")
+ AreaCode.create(:country => germany, :name => "Uelsen", :area_code => "5942")
+ AreaCode.create(:country => germany, :name => "Emlichheim", :area_code => "5943")
+ AreaCode.create(:country => germany, :name => "Hoogstede", :area_code => "5944")
+ AreaCode.create(:country => germany, :name => "Wilsum", :area_code => "5945")
+ AreaCode.create(:country => germany, :name => "Georgsdorf", :area_code => "5946")
+ AreaCode.create(:country => germany, :name => "Laar Vechte", :area_code => "5947")
+ AreaCode.create(:country => germany, :name => "Itterbeck", :area_code => "5948")
+ AreaCode.create(:country => germany, :name => "Werlte", :area_code => "5951")
+ AreaCode.create(:country => germany, :name => "Sögel", :area_code => "5952")
+ AreaCode.create(:country => germany, :name => "Börger", :area_code => "5953")
+ AreaCode.create(:country => germany, :name => "Lorup", :area_code => "5954")
+ AreaCode.create(:country => germany, :name => "Esterwegen", :area_code => "5955")
+ AreaCode.create(:country => germany, :name => "Rastdorf", :area_code => "5956")
+ AreaCode.create(:country => germany, :name => "Lindern Oldenburg", :area_code => "5957")
+ AreaCode.create(:country => germany, :name => "Haselünne", :area_code => "5961")
+ AreaCode.create(:country => germany, :name => "Herzlake", :area_code => "5962")
+ AreaCode.create(:country => germany, :name => "Bawinkel", :area_code => "5963")
+ AreaCode.create(:country => germany, :name => "Lähden", :area_code => "5964")
+ AreaCode.create(:country => germany, :name => "Klein Berssen", :area_code => "5965")
+ AreaCode.create(:country => germany, :name => "Meppen-Apeldorn", :area_code => "5966")
+ AreaCode.create(:country => germany, :name => "Rheine", :area_code => "5971")
+ AreaCode.create(:country => germany, :name => "Neuenkirchen Kr Steinfurt", :area_code => "5973")
+ AreaCode.create(:country => germany, :name => "Rheine-Mesum", :area_code => "5975")
+ AreaCode.create(:country => germany, :name => "Salzbergen", :area_code => "5976")
+ AreaCode.create(:country => germany, :name => "Spelle", :area_code => "5977")
+ AreaCode.create(:country => germany, :name => "Hörstel-Dreierwalde", :area_code => "5978")
+ AreaCode.create(:country => germany, :name => "Ober-Mörlen", :area_code => "6002")
+ AreaCode.create(:country => germany, :name => "Rosbach v d Höhe", :area_code => "6003")
+ AreaCode.create(:country => germany, :name => "Lich-Eberstadt", :area_code => "6004")
+ AreaCode.create(:country => germany, :name => "Rosbach-Rodheim", :area_code => "6007")
+ AreaCode.create(:country => germany, :name => "Echzell", :area_code => "6008")
+ AreaCode.create(:country => germany, :name => "Heigenbrücken", :area_code => "6020")
+ AreaCode.create(:country => germany, :name => "Aschaffenburg", :area_code => "6021")
+ AreaCode.create(:country => germany, :name => "Obernburg a Main", :area_code => "6022")
+ AreaCode.create(:country => germany, :name => "Alzenau i Ufr", :area_code => "6023")
+ AreaCode.create(:country => germany, :name => "Schöllkrippen", :area_code => "6024")
+ AreaCode.create(:country => germany, :name => "Grossostheim", :area_code => "6026")
+ AreaCode.create(:country => germany, :name => "Stockstadt a Main", :area_code => "6027")
+ AreaCode.create(:country => germany, :name => "Sulzbach a Main", :area_code => "6028")
+ AreaCode.create(:country => germany, :name => "Mömbris", :area_code => "6029")
+ AreaCode.create(:country => germany, :name => "Friedberg Hess", :area_code => "6031")
+ AreaCode.create(:country => germany, :name => "Bad Nauheim", :area_code => "6032")
+ AreaCode.create(:country => germany, :name => "Butzbach", :area_code => "6033")
+ AreaCode.create(:country => germany, :name => "Wöllstadt", :area_code => "6034")
+ AreaCode.create(:country => germany, :name => "Reichelsheim Wetterau", :area_code => "6035")
+ AreaCode.create(:country => germany, :name => "Wölfersheim", :area_code => "6036")
+ AreaCode.create(:country => germany, :name => "Karben", :area_code => "6039")
+ AreaCode.create(:country => germany, :name => "Glauburg", :area_code => "6041")
+ AreaCode.create(:country => germany, :name => "Büdingen Hess", :area_code => "6042")
+ AreaCode.create(:country => germany, :name => "Nidda", :area_code => "6043")
+ AreaCode.create(:country => germany, :name => "Schotten Hess", :area_code => "6044")
+ AreaCode.create(:country => germany, :name => "Gedern", :area_code => "6045")
+ AreaCode.create(:country => germany, :name => "Ortenberg Hess", :area_code => "6046")
+ AreaCode.create(:country => germany, :name => "Altenstadt Hess", :area_code => "6047")
+ AreaCode.create(:country => germany, :name => "Büdingen-Eckartshausen", :area_code => "6048")
+ AreaCode.create(:country => germany, :name => "Kefenrod", :area_code => "6049")
+ AreaCode.create(:country => germany, :name => "Biebergemünd", :area_code => "6050")
+ AreaCode.create(:country => germany, :name => "Gelnhausen", :area_code => "6051")
+ AreaCode.create(:country => germany, :name => "Bad Orb", :area_code => "6052")
+ AreaCode.create(:country => germany, :name => "Wächtersbach", :area_code => "6053")
+ AreaCode.create(:country => germany, :name => "Birstein", :area_code => "6054")
+ AreaCode.create(:country => germany, :name => "Freigericht", :area_code => "6055")
+ AreaCode.create(:country => germany, :name => "Bad Soden-Salmünster", :area_code => "6056")
+ AreaCode.create(:country => germany, :name => "Flörsbachtal", :area_code => "6057")
+ AreaCode.create(:country => germany, :name => "Gründau", :area_code => "6058")
+ AreaCode.create(:country => germany, :name => "Jossgrund", :area_code => "6059")
+ AreaCode.create(:country => germany, :name => "Michelstadt", :area_code => "6061")
+ AreaCode.create(:country => germany, :name => "Erbach Odenw", :area_code => "6062")
+ AreaCode.create(:country => germany, :name => "Bad König", :area_code => "6063")
+ AreaCode.create(:country => germany, :name => "Michelstadt-Vielbrunn", :area_code => "6066")
+ AreaCode.create(:country => germany, :name => "Beerfelden", :area_code => "6068")
+ AreaCode.create(:country => germany, :name => "Dieburg", :area_code => "6071")
+ AreaCode.create(:country => germany, :name => "Babenhausen Hess", :area_code => "6073")
+ AreaCode.create(:country => germany, :name => "Rödermark", :area_code => "6074")
+ AreaCode.create(:country => germany, :name => "Gross-Umstadt", :area_code => "6078")
+ AreaCode.create(:country => germany, :name => "Usingen", :area_code => "6081")
+ AreaCode.create(:country => germany, :name => "Niederreifenberg", :area_code => "6082")
+ AreaCode.create(:country => germany, :name => "Weilrod", :area_code => "6083")
+ AreaCode.create(:country => germany, :name => "Schmitten Taunus", :area_code => "6084")
+ AreaCode.create(:country => germany, :name => "Waldsolms", :area_code => "6085")
+ AreaCode.create(:country => germany, :name => "Grävenwiesbach", :area_code => "6086")
+ AreaCode.create(:country => germany, :name => "Waldems", :area_code => "6087")
+ AreaCode.create(:country => germany, :name => "Heimbuchenthal", :area_code => "6092")
+ AreaCode.create(:country => germany, :name => "Laufach", :area_code => "6093")
+ AreaCode.create(:country => germany, :name => "Weibersbrunn", :area_code => "6094")
+ AreaCode.create(:country => germany, :name => "Bessenbach", :area_code => "6095")
+ AreaCode.create(:country => germany, :name => "Wiesen Unterfr", :area_code => "6096")
+ AreaCode.create(:country => germany, :name => "Bad Vilbel", :area_code => "6101")
+ AreaCode.create(:country => germany, :name => "Neu-Isenburg", :area_code => "6102")
+ AreaCode.create(:country => germany, :name => "Langen Hess", :area_code => "6103")
+ AreaCode.create(:country => germany, :name => "Heusenstamm", :area_code => "6104")
+ AreaCode.create(:country => germany, :name => "Mörfelden-Walldorf", :area_code => "6105")
+ AreaCode.create(:country => germany, :name => "Rodgau", :area_code => "6106")
+ AreaCode.create(:country => germany, :name => "Kelsterbach", :area_code => "6107")
+ AreaCode.create(:country => germany, :name => "Mühlheim am Main", :area_code => "6108")
+ AreaCode.create(:country => germany, :name => "Frankfurt-Bergen-Enkheim", :area_code => "6109")
+ AreaCode.create(:country => germany, :name => "Wiesbaden", :area_code => "611")
+ AreaCode.create(:country => germany, :name => "Aarbergen", :area_code => "6120")
+ AreaCode.create(:country => germany, :name => "Hofheim-Wallau", :area_code => "6122")
+ AreaCode.create(:country => germany, :name => "Eltville am Rhein", :area_code => "6123")
+ AreaCode.create(:country => germany, :name => "Bad Schwalbach", :area_code => "6124")
+ AreaCode.create(:country => germany, :name => "Idstein", :area_code => "6126")
+ AreaCode.create(:country => germany, :name => "Niedernhausen Taunus", :area_code => "6127")
+ AreaCode.create(:country => germany, :name => "Taunusstein", :area_code => "6128")
+ AreaCode.create(:country => germany, :name => "Schlangenbad", :area_code => "6129")
+ AreaCode.create(:country => germany, :name => "Schwabenheim an der Selz", :area_code => "6130")
+ AreaCode.create(:country => germany, :name => "Mainz", :area_code => "6131")
+ AreaCode.create(:country => germany, :name => "Ingelheim am Rhein", :area_code => "6132")
+ AreaCode.create(:country => germany, :name => "Oppenheim", :area_code => "6133")
+ AreaCode.create(:country => germany, :name => "Mainz-Kastel", :area_code => "6134")
+ AreaCode.create(:country => germany, :name => "Bodenheim Rhein", :area_code => "6135")
+ AreaCode.create(:country => germany, :name => "Nieder-Olm", :area_code => "6136")
+ AreaCode.create(:country => germany, :name => "Mommenheim", :area_code => "6138")
+ AreaCode.create(:country => germany, :name => "Budenheim", :area_code => "6139")
+ AreaCode.create(:country => germany, :name => "Rüsselsheim", :area_code => "6142")
+ AreaCode.create(:country => germany, :name => "Bischofsheim b Rüsselsheim", :area_code => "6144")
+ AreaCode.create(:country => germany, :name => "Flörsheim am Main", :area_code => "6145")
+ AreaCode.create(:country => germany, :name => "Hochheim am Main", :area_code => "6146")
+ AreaCode.create(:country => germany, :name => "Trebur", :area_code => "6147")
+ AreaCode.create(:country => germany, :name => "Weiterstadt", :area_code => "6150")
+ AreaCode.create(:country => germany, :name => "Darmstadt", :area_code => "6151")
+ AreaCode.create(:country => germany, :name => "Gross-Gerau", :area_code => "6152")
+ AreaCode.create(:country => germany, :name => "Ober-Ramstadt", :area_code => "6154")
+ AreaCode.create(:country => germany, :name => "Griesheim Hess", :area_code => "6155")
+ AreaCode.create(:country => germany, :name => "Pfungstadt", :area_code => "6157")
+ AreaCode.create(:country => germany, :name => "Riedstadt", :area_code => "6158")
+ AreaCode.create(:country => germany, :name => "Messel", :area_code => "6159")
+ AreaCode.create(:country => germany, :name => "Brensbach", :area_code => "6161")
+ AreaCode.create(:country => germany, :name => "Reinheim Odenw", :area_code => "6162")
+ AreaCode.create(:country => germany, :name => "Höchst i Odw", :area_code => "6163")
+ AreaCode.create(:country => germany, :name => "Reichelsheim Odenwald", :area_code => "6164")
+ AreaCode.create(:country => germany, :name => "Breuberg", :area_code => "6165")
+ AreaCode.create(:country => germany, :name => "Fischbachtal", :area_code => "6166")
+ AreaCode.create(:country => germany, :name => "Modautal", :area_code => "6167")
+ AreaCode.create(:country => germany, :name => "Oberursel Taunus", :area_code => "6171")
+ AreaCode.create(:country => germany, :name => "Bad Homburg v d Höhe", :area_code => "6172")
+ AreaCode.create(:country => germany, :name => "Kronberg im Taunus", :area_code => "6173")
+ AreaCode.create(:country => germany, :name => "Königstein im Taunus", :area_code => "6174")
+ AreaCode.create(:country => germany, :name => "Friedrichsdorf Taunus", :area_code => "6175")
+ AreaCode.create(:country => germany, :name => "Hanau", :area_code => "6181")
+ AreaCode.create(:country => germany, :name => "Seligenstadt", :area_code => "6182")
+ AreaCode.create(:country => germany, :name => "Erlensee", :area_code => "6183")
+ AreaCode.create(:country => germany, :name => "Langenselbold", :area_code => "6184")
+ AreaCode.create(:country => germany, :name => "Hammersbach Hess", :area_code => "6185")
+ AreaCode.create(:country => germany, :name => "Grosskrotzenburg", :area_code => "6186")
+ AreaCode.create(:country => germany, :name => "Schöneck", :area_code => "6187")
+ AreaCode.create(:country => germany, :name => "Kahl a Main", :area_code => "6188")
+ AreaCode.create(:country => germany, :name => "Hattersheim a Main", :area_code => "6190")
+ AreaCode.create(:country => germany, :name => "Hofheim am Taunus", :area_code => "6192")
+ AreaCode.create(:country => germany, :name => "Kelkheim Taunus", :area_code => "6195")
+ AreaCode.create(:country => germany, :name => "Bad Soden am Taunus", :area_code => "6196")
+ AreaCode.create(:country => germany, :name => "Eppstein", :area_code => "6198")
+ AreaCode.create(:country => germany, :name => "Weinheim Bergstr", :area_code => "6201")
+ AreaCode.create(:country => germany, :name => "Schwetzingen", :area_code => "6202")
+ AreaCode.create(:country => germany, :name => "Ladenburg", :area_code => "6203")
+ AreaCode.create(:country => germany, :name => "Viernheim", :area_code => "6204")
+ AreaCode.create(:country => germany, :name => "Hockenheim", :area_code => "6205")
+ AreaCode.create(:country => germany, :name => "Lampertheim", :area_code => "6206")
+ AreaCode.create(:country => germany, :name => "Wald-Michelbach", :area_code => "6207")
+ AreaCode.create(:country => germany, :name => "Mörlenbach", :area_code => "6209")
+ AreaCode.create(:country => germany, :name => "Mannheim", :area_code => "621")
+ AreaCode.create(:country => germany, :name => "Wilhelmsfeld", :area_code => "6220")
+ AreaCode.create(:country => germany, :name => "Heidelberg", :area_code => "6221")
+ AreaCode.create(:country => germany, :name => "Wiesloch", :area_code => "6222")
+ AreaCode.create(:country => germany, :name => "Neckargemünd", :area_code => "6223")
+ AreaCode.create(:country => germany, :name => "Sandhausen Baden", :area_code => "6224")
+ AreaCode.create(:country => germany, :name => "Meckesheim", :area_code => "6226")
+ AreaCode.create(:country => germany, :name => "Walldorf Baden", :area_code => "6227")
+ AreaCode.create(:country => germany, :name => "Schönau Odenw", :area_code => "6228")
+ AreaCode.create(:country => germany, :name => "Neckarsteinach", :area_code => "6229")
+ AreaCode.create(:country => germany, :name => "Hochdorf-Assenheim", :area_code => "6231")
+ AreaCode.create(:country => germany, :name => "Speyer", :area_code => "6232")
+ AreaCode.create(:country => germany, :name => "Frankenthal Pfalz", :area_code => "6233")
+ AreaCode.create(:country => germany, :name => "Mutterstadt", :area_code => "6234")
+ AreaCode.create(:country => germany, :name => "Schifferstadt", :area_code => "6235")
+ AreaCode.create(:country => germany, :name => "Neuhofen Pfalz", :area_code => "6236")
+ AreaCode.create(:country => germany, :name => "Maxdorf", :area_code => "6237")
+ AreaCode.create(:country => germany, :name => "Dirmstein", :area_code => "6238")
+ AreaCode.create(:country => germany, :name => "Bobenheim-Roxheim", :area_code => "6239")
+ AreaCode.create(:country => germany, :name => "Worms", :area_code => "6241")
+ AreaCode.create(:country => germany, :name => "Osthofen", :area_code => "6242")
+ AreaCode.create(:country => germany, :name => "Monsheim", :area_code => "6243")
+ AreaCode.create(:country => germany, :name => "Westhofen Rheinhess", :area_code => "6244")
+ AreaCode.create(:country => germany, :name => "Biblis", :area_code => "6245")
+ AreaCode.create(:country => germany, :name => "Eich Rheinhess", :area_code => "6246")
+ AreaCode.create(:country => germany, :name => "Worms-Pfeddersheim", :area_code => "6247")
+ AreaCode.create(:country => germany, :name => "Guntersblum", :area_code => "6249")
+ AreaCode.create(:country => germany, :name => "Bensheim", :area_code => "6251")
+ AreaCode.create(:country => germany, :name => "Heppenheim Bergstraße", :area_code => "6252")
+ AreaCode.create(:country => germany, :name => "Fürth Odenw", :area_code => "6253")
+ AreaCode.create(:country => germany, :name => "Lautertal Odenwald", :area_code => "6254")
+ AreaCode.create(:country => germany, :name => "Lindenfels", :area_code => "6255")
+ AreaCode.create(:country => germany, :name => "Lampertheim-Hüttenfeld", :area_code => "6256")
+ AreaCode.create(:country => germany, :name => "Seeheim-Jugenheim", :area_code => "6257")
+ AreaCode.create(:country => germany, :name => "Gernsheim", :area_code => "6258")
+ AreaCode.create(:country => germany, :name => "Mosbach Baden", :area_code => "6261")
+ AreaCode.create(:country => germany, :name => "Aglasterhausen", :area_code => "6262")
+ AreaCode.create(:country => germany, :name => "Neckargerach", :area_code => "6263")
+ AreaCode.create(:country => germany, :name => "Neudenau", :area_code => "6264")
+ AreaCode.create(:country => germany, :name => "Billigheim Baden", :area_code => "6265")
+ AreaCode.create(:country => germany, :name => "Hassmersheim", :area_code => "6266")
+ AreaCode.create(:country => germany, :name => "Fahrenbach Baden", :area_code => "6267")
+ AreaCode.create(:country => germany, :name => "Hüffenhardt", :area_code => "6268")
+ AreaCode.create(:country => germany, :name => "Gundelsheim Württ", :area_code => "6269")
+ AreaCode.create(:country => germany, :name => "Eberbach Baden", :area_code => "6271")
+ AreaCode.create(:country => germany, :name => "Hirschhorn Neckar", :area_code => "6272")
+ AreaCode.create(:country => germany, :name => "Waldbrunn Odenw", :area_code => "6274")
+ AreaCode.create(:country => germany, :name => "Rothenberg Odenw", :area_code => "6275")
+ AreaCode.create(:country => germany, :name => "Hesseneck", :area_code => "6276")
+ AreaCode.create(:country => germany, :name => "Buchen Odenwald", :area_code => "6281")
+ AreaCode.create(:country => germany, :name => "Walldürn", :area_code => "6282")
+ AreaCode.create(:country => germany, :name => "Hardheim Odenw", :area_code => "6283")
+ AreaCode.create(:country => germany, :name => "Mudau", :area_code => "6284")
+ AreaCode.create(:country => germany, :name => "Walldürn-Altheim", :area_code => "6285")
+ AreaCode.create(:country => germany, :name => "Walldürn-Rippberg", :area_code => "6286")
+ AreaCode.create(:country => germany, :name => "Limbach Baden", :area_code => "6287")
+ AreaCode.create(:country => germany, :name => "Adelsheim", :area_code => "6291")
+ AreaCode.create(:country => germany, :name => "Seckach", :area_code => "6292")
+ AreaCode.create(:country => germany, :name => "Schefflenz", :area_code => "6293")
+ AreaCode.create(:country => germany, :name => "Krautheim Jagst", :area_code => "6294")
+ AreaCode.create(:country => germany, :name => "RosenbergBaden", :area_code => "6295")
+ AreaCode.create(:country => germany, :name => "Ahorn Baden", :area_code => "6296")
+ AreaCode.create(:country => germany, :name => "Ravenstein Baden", :area_code => "6297")
+ AreaCode.create(:country => germany, :name => "Möckmühl", :area_code => "6298")
+ AreaCode.create(:country => germany, :name => "Otterbach Pfalz", :area_code => "6301")
+ AreaCode.create(:country => germany, :name => "Winnweiler", :area_code => "6302")
+ AreaCode.create(:country => germany, :name => "Enkenbach-Alsenborn", :area_code => "6303")
+ AreaCode.create(:country => germany, :name => "Wolfstein Pfalz", :area_code => "6304")
+ AreaCode.create(:country => germany, :name => "Hochspeyer", :area_code => "6305")
+ AreaCode.create(:country => germany, :name => "Trippstadt", :area_code => "6306")
+ AreaCode.create(:country => germany, :name => "Schopp", :area_code => "6307")
+ AreaCode.create(:country => germany, :name => "Olsbrücken", :area_code => "6308")
+ AreaCode.create(:country => germany, :name => "Kaiserslautern", :area_code => "631")
+ AreaCode.create(:country => germany, :name => "Neustadt an der Weinstraße", :area_code => "6321")
+ AreaCode.create(:country => germany, :name => "Bad Dürkheim", :area_code => "6322")
+ AreaCode.create(:country => germany, :name => "Edenkoben", :area_code => "6323")
+ AreaCode.create(:country => germany, :name => "Hassloch", :area_code => "6324")
+ AreaCode.create(:country => germany, :name => "Lambrecht Pfalz", :area_code => "6325")
+ AreaCode.create(:country => germany, :name => "Deidesheim", :area_code => "6326")
+ AreaCode.create(:country => germany, :name => "Neustadt-Lachen", :area_code => "6327")
+ AreaCode.create(:country => germany, :name => "Elmstein", :area_code => "6328")
+ AreaCode.create(:country => germany, :name => "Weidenthal Pfalz", :area_code => "6329")
+ AreaCode.create(:country => germany, :name => "Pirmasens", :area_code => "6331")
+ AreaCode.create(:country => germany, :name => "Zweibrücken", :area_code => "6332")
+ AreaCode.create(:country => germany, :name => "Waldfischbach-Burgalben", :area_code => "6333")
+ AreaCode.create(:country => germany, :name => "Thaleischweiler-Fröschen", :area_code => "6334")
+ AreaCode.create(:country => germany, :name => "Trulben", :area_code => "6335")
+ AreaCode.create(:country => germany, :name => "Dellfeld", :area_code => "6336")
+ AreaCode.create(:country => germany, :name => "Grossbundenbach", :area_code => "6337")
+ AreaCode.create(:country => germany, :name => "Hornbach Pfalz", :area_code => "6338")
+ AreaCode.create(:country => germany, :name => "Grosssteinhausen", :area_code => "6339")
+ AreaCode.create(:country => germany, :name => "Wörth-Schaidt", :area_code => "6340")
+ AreaCode.create(:country => germany, :name => "Landau in der Pfalz", :area_code => "6341")
+ AreaCode.create(:country => germany, :name => "Schweigen-Rechtenbach", :area_code => "6342")
+ AreaCode.create(:country => germany, :name => "Bad Bergzabern", :area_code => "6343")
+ AreaCode.create(:country => germany, :name => "Schwegenheim", :area_code => "6344")
+ AreaCode.create(:country => germany, :name => "Albersweiler", :area_code => "6345")
+ AreaCode.create(:country => germany, :name => "Annweiler am Trifels", :area_code => "6346")
+ AreaCode.create(:country => germany, :name => "Hochstadt Pfalz", :area_code => "6347")
+ AreaCode.create(:country => germany, :name => "Offenbach an der Queich", :area_code => "6348")
+ AreaCode.create(:country => germany, :name => "Billigheim-Ingenheim", :area_code => "6349")
+ AreaCode.create(:country => germany, :name => "Eisenberg Pfalz", :area_code => "6351")
+ AreaCode.create(:country => germany, :name => "Kirchheimbolanden", :area_code => "6352")
+ AreaCode.create(:country => germany, :name => "Freinsheim", :area_code => "6353")
+ AreaCode.create(:country => germany, :name => "Albisheim Pfrimm", :area_code => "6355")
+ AreaCode.create(:country => germany, :name => "Carlsberg Pfalz", :area_code => "6356")
+ AreaCode.create(:country => germany, :name => "Standenbühl", :area_code => "6357")
+ AreaCode.create(:country => germany, :name => "Kriegsfeld", :area_code => "6358")
+ AreaCode.create(:country => germany, :name => "Grünstadt", :area_code => "6359")
+ AreaCode.create(:country => germany, :name => "Rockenhausen", :area_code => "6361")
+ AreaCode.create(:country => germany, :name => "Alsenz", :area_code => "6362")
+ AreaCode.create(:country => germany, :name => "Niederkirchen", :area_code => "6363")
+ AreaCode.create(:country => germany, :name => "Nußbach Pfalz", :area_code => "6364")
+ AreaCode.create(:country => germany, :name => "Landstuhl", :area_code => "6371")
+ AreaCode.create(:country => germany, :name => "Bruchmühlbach-Miesau", :area_code => "6372")
+ AreaCode.create(:country => germany, :name => "Schönenberg-Kübelberg", :area_code => "6373")
+ AreaCode.create(:country => germany, :name => "Weilerbach", :area_code => "6374")
+ AreaCode.create(:country => germany, :name => "Wallhalben", :area_code => "6375")
+ AreaCode.create(:country => germany, :name => "Kusel", :area_code => "6381")
+ AreaCode.create(:country => germany, :name => "Lauterecken", :area_code => "6382")
+ AreaCode.create(:country => germany, :name => "Glan-Münchweiler", :area_code => "6383")
+ AreaCode.create(:country => germany, :name => "Konken", :area_code => "6384")
+ AreaCode.create(:country => germany, :name => "Reichenbach-Steegen", :area_code => "6385")
+ AreaCode.create(:country => germany, :name => "Altenkirchen Pfalz", :area_code => "6386")
+ AreaCode.create(:country => germany, :name => "Sankt Julian", :area_code => "6387")
+ AreaCode.create(:country => germany, :name => "Dahn", :area_code => "6391")
+ AreaCode.create(:country => germany, :name => "Hauenstein Pfalz", :area_code => "6392")
+ AreaCode.create(:country => germany, :name => "Fischbach bei Dahn", :area_code => "6393")
+ AreaCode.create(:country => germany, :name => "Bundenthal", :area_code => "6394")
+ AreaCode.create(:country => germany, :name => "Münchweiler an der Rodalb", :area_code => "6395")
+ AreaCode.create(:country => germany, :name => "Hinterweidenthal", :area_code => "6396")
+ AreaCode.create(:country => germany, :name => "Leimen Pfalz", :area_code => "6397")
+ AreaCode.create(:country => germany, :name => "Vorderweidenthal", :area_code => "6398")
+ AreaCode.create(:country => germany, :name => "Mücke", :area_code => "6400")
+ AreaCode.create(:country => germany, :name => "Grünberg Hess", :area_code => "6401")
+ AreaCode.create(:country => germany, :name => "Hungen", :area_code => "6402")
+ AreaCode.create(:country => germany, :name => "Linden Hess", :area_code => "6403")
+ AreaCode.create(:country => germany, :name => "Lich Hess", :area_code => "6404")
+ AreaCode.create(:country => germany, :name => "Laubach Hess", :area_code => "6405")
+ AreaCode.create(:country => germany, :name => "Lollar", :area_code => "6406")
+ AreaCode.create(:country => germany, :name => "Rabenau Hess", :area_code => "6407")
+ AreaCode.create(:country => germany, :name => "Buseck", :area_code => "6408")
+ AreaCode.create(:country => germany, :name => "Biebertal", :area_code => "6409")
+ AreaCode.create(:country => germany, :name => "Giessen", :area_code => "641")
+ AreaCode.create(:country => germany, :name => "Lahntal", :area_code => "6420")
+ AreaCode.create(:country => germany, :name => "Marburg", :area_code => "6421")
+ AreaCode.create(:country => germany, :name => "Kirchhain", :area_code => "6422")
+ AreaCode.create(:country => germany, :name => "Wetter Hessen", :area_code => "6423")
+ AreaCode.create(:country => germany, :name => "Ebsdorfergrund", :area_code => "6424")
+ AreaCode.create(:country => germany, :name => "Rauschenberg Hess", :area_code => "6425")
+ AreaCode.create(:country => germany, :name => "Fronhausen", :area_code => "6426")
+ AreaCode.create(:country => germany, :name => "Cölbe-Schönstadt", :area_code => "6427")
+ AreaCode.create(:country => germany, :name => "Stadtallendorf", :area_code => "6428")
+ AreaCode.create(:country => germany, :name => "Schweinsberg Hess", :area_code => "6429")
+ AreaCode.create(:country => germany, :name => "Hahnstätten", :area_code => "6430")
+ AreaCode.create(:country => germany, :name => "Limburg a d Lahn", :area_code => "6431")
+ AreaCode.create(:country => germany, :name => "Diez", :area_code => "6432")
+ AreaCode.create(:country => germany, :name => "Hadamar", :area_code => "6433")
+ AreaCode.create(:country => germany, :name => "Bad Camberg", :area_code => "6434")
+ AreaCode.create(:country => germany, :name => "Wallmerod", :area_code => "6435")
+ AreaCode.create(:country => germany, :name => "Dornburg Hess", :area_code => "6436")
+ AreaCode.create(:country => germany, :name => "Hünfelden", :area_code => "6438")
+ AreaCode.create(:country => germany, :name => "Holzappel", :area_code => "6439")
+ AreaCode.create(:country => germany, :name => "Kölschhausen", :area_code => "6440")
+ AreaCode.create(:country => germany, :name => "Wetzlar", :area_code => "6441")
+ AreaCode.create(:country => germany, :name => "Braunfels", :area_code => "6442")
+ AreaCode.create(:country => germany, :name => "Ehringshausen Dill", :area_code => "6443")
+ AreaCode.create(:country => germany, :name => "Bischoffen", :area_code => "6444")
+ AreaCode.create(:country => germany, :name => "Schöffengrund", :area_code => "6445")
+ AreaCode.create(:country => germany, :name => "Hohenahr", :area_code => "6446")
+ AreaCode.create(:country => germany, :name => "Langgöns-Niederkleen", :area_code => "6447")
+ AreaCode.create(:country => germany, :name => "Ehringshausen-Katzenfurt", :area_code => "6449")
+ AreaCode.create(:country => germany, :name => "Frankenberg Eder", :area_code => "6451")
+ AreaCode.create(:country => germany, :name => "Battenberg Eder", :area_code => "6452")
+ AreaCode.create(:country => germany, :name => "Gemünden Wohra", :area_code => "6453")
+ AreaCode.create(:country => germany, :name => "Lichtenfels-Sachsenberg", :area_code => "6454")
+ AreaCode.create(:country => germany, :name => "Frankenau Hess", :area_code => "6455")
+ AreaCode.create(:country => germany, :name => "Haina Kloster", :area_code => "6456")
+ AreaCode.create(:country => germany, :name => "Burgwald Eder", :area_code => "6457")
+ AreaCode.create(:country => germany, :name => "Rosenthal Hess", :area_code => "6458")
+ AreaCode.create(:country => germany, :name => "Biedenkopf", :area_code => "6461")
+ AreaCode.create(:country => germany, :name => "Gladenbach", :area_code => "6462")
+ AreaCode.create(:country => germany, :name => "Angelburg", :area_code => "6464")
+ AreaCode.create(:country => germany, :name => "Breidenbach b Biedenkopf", :area_code => "6465")
+ AreaCode.create(:country => germany, :name => "Dautphetal-Friedensdorf", :area_code => "6466")
+ AreaCode.create(:country => germany, :name => "Hatzfeld Eder", :area_code => "6467")
+ AreaCode.create(:country => germany, :name => "Dautphetal-Mornshausen", :area_code => "6468")
+ AreaCode.create(:country => germany, :name => "Weilburg", :area_code => "6471")
+ AreaCode.create(:country => germany, :name => "Weilmünster", :area_code => "6472")
+ AreaCode.create(:country => germany, :name => "Leun", :area_code => "6473")
+ AreaCode.create(:country => germany, :name => "Villmar-Aumenau", :area_code => "6474")
+ AreaCode.create(:country => germany, :name => "Weilmünster-Wolfenhausen", :area_code => "6475")
+ AreaCode.create(:country => germany, :name => "Mengerskirchen", :area_code => "6476")
+ AreaCode.create(:country => germany, :name => "Greifenstein-Nenderoth", :area_code => "6477")
+ AreaCode.create(:country => germany, :name => "Greifenstein-Ulm", :area_code => "6478")
+ AreaCode.create(:country => germany, :name => "Waldbrunn Westerwald", :area_code => "6479")
+ AreaCode.create(:country => germany, :name => "Runkel", :area_code => "6482")
+ AreaCode.create(:country => germany, :name => "Selters Taunus", :area_code => "6483")
+ AreaCode.create(:country => germany, :name => "Beselich", :area_code => "6484")
+ AreaCode.create(:country => germany, :name => "Nentershausen Westerw", :area_code => "6485")
+ AreaCode.create(:country => germany, :name => "Katzenelnbogen", :area_code => "6486")
+ AreaCode.create(:country => germany, :name => "Waldrach", :area_code => "6500")
+ AreaCode.create(:country => germany, :name => "Konz", :area_code => "6501")
+ AreaCode.create(:country => germany, :name => "Schweich", :area_code => "6502")
+ AreaCode.create(:country => germany, :name => "Hermeskeil", :area_code => "6503")
+ AreaCode.create(:country => germany, :name => "Thalfang", :area_code => "6504")
+ AreaCode.create(:country => germany, :name => "Kordel", :area_code => "6505")
+ AreaCode.create(:country => germany, :name => "Welschbillig", :area_code => "6506")
+ AreaCode.create(:country => germany, :name => "Neumagen-Dhron", :area_code => "6507")
+ AreaCode.create(:country => germany, :name => "Hetzerath Mosel", :area_code => "6508")
+ AreaCode.create(:country => germany, :name => "Büdlich", :area_code => "6509")
+ AreaCode.create(:country => germany, :name => "Trier", :area_code => "651")
+ AreaCode.create(:country => germany, :name => "Mettendorf", :area_code => "6522")
+ AreaCode.create(:country => germany, :name => "Holsthum", :area_code => "6523")
+ AreaCode.create(:country => germany, :name => "Rodershausen", :area_code => "6524")
+ AreaCode.create(:country => germany, :name => "Irrel", :area_code => "6525")
+ AreaCode.create(:country => germany, :name => "Bollendorf", :area_code => "6526")
+ AreaCode.create(:country => germany, :name => "Oberweis", :area_code => "6527")
+ AreaCode.create(:country => germany, :name => "Bernkastel-Kues", :area_code => "6531")
+ AreaCode.create(:country => germany, :name => "Zeltingen-Rachtig", :area_code => "6532")
+ AreaCode.create(:country => germany, :name => "Morbach Hunsrück", :area_code => "6533")
+ AreaCode.create(:country => germany, :name => "Mülheim Mosel", :area_code => "6534")
+ AreaCode.create(:country => germany, :name => "Osann-Monzel", :area_code => "6535")
+ AreaCode.create(:country => germany, :name => "Kleinich", :area_code => "6536")
+ AreaCode.create(:country => germany, :name => "Traben-Trarbach", :area_code => "6541")
+ AreaCode.create(:country => germany, :name => "Bullay", :area_code => "6542")
+ AreaCode.create(:country => germany, :name => "Büchenbeuren", :area_code => "6543")
+ AreaCode.create(:country => germany, :name => "Rhaunen", :area_code => "6544")
+ AreaCode.create(:country => germany, :name => "Blankenrath", :area_code => "6545")
+ AreaCode.create(:country => germany, :name => "Irrhausen", :area_code => "6550")
+ AreaCode.create(:country => germany, :name => "Prüm", :area_code => "6551")
+ AreaCode.create(:country => germany, :name => "Olzheim", :area_code => "6552")
+ AreaCode.create(:country => germany, :name => "Schönecken", :area_code => "6553")
+ AreaCode.create(:country => germany, :name => "Waxweiler", :area_code => "6554")
+ AreaCode.create(:country => germany, :name => "Bleialf", :area_code => "6555")
+ AreaCode.create(:country => germany, :name => "Pronsfeld", :area_code => "6556")
+ AreaCode.create(:country => germany, :name => "Hallschlag", :area_code => "6557")
+ AreaCode.create(:country => germany, :name => "Büdesheim Eifel", :area_code => "6558")
+ AreaCode.create(:country => germany, :name => "Leidenborn", :area_code => "6559")
+ AreaCode.create(:country => germany, :name => "Bitburg", :area_code => "6561")
+ AreaCode.create(:country => germany, :name => "Speicher", :area_code => "6562")
+ AreaCode.create(:country => germany, :name => "Kyllburg", :area_code => "6563")
+ AreaCode.create(:country => germany, :name => "Neuerburg Eifel", :area_code => "6564")
+ AreaCode.create(:country => germany, :name => "Dudeldorf", :area_code => "6565")
+ AreaCode.create(:country => germany, :name => "Körperich", :area_code => "6566")
+ AreaCode.create(:country => germany, :name => "Oberkail", :area_code => "6567")
+ AreaCode.create(:country => germany, :name => "Wolsfeld", :area_code => "6568")
+ AreaCode.create(:country => germany, :name => "Bickendorf", :area_code => "6569")
+ AreaCode.create(:country => germany, :name => "Wittlich", :area_code => "6571")
+ AreaCode.create(:country => germany, :name => "Manderscheid Eifel", :area_code => "6572")
+ AreaCode.create(:country => germany, :name => "Gillenfeld", :area_code => "6573")
+ AreaCode.create(:country => germany, :name => "Hasborn", :area_code => "6574")
+ AreaCode.create(:country => germany, :name => "Landscheid", :area_code => "6575")
+ AreaCode.create(:country => germany, :name => "Salmtal", :area_code => "6578")
+ AreaCode.create(:country => germany, :name => "Zemmer", :area_code => "6580")
+ AreaCode.create(:country => germany, :name => "Saarburg", :area_code => "6581")
+ AreaCode.create(:country => germany, :name => "Freudenburg", :area_code => "6582")
+ AreaCode.create(:country => germany, :name => "Palzem", :area_code => "6583")
+ AreaCode.create(:country => germany, :name => "Wellen Mosel", :area_code => "6584")
+ AreaCode.create(:country => germany, :name => "Ralingen", :area_code => "6585")
+ AreaCode.create(:country => germany, :name => "Beuren Hochwald", :area_code => "6586")
+ AreaCode.create(:country => germany, :name => "Zerf", :area_code => "6587")
+ AreaCode.create(:country => germany, :name => "Pluwig", :area_code => "6588")
+ AreaCode.create(:country => germany, :name => "Kell am See", :area_code => "6589")
+ AreaCode.create(:country => germany, :name => "Gerolstein", :area_code => "6591")
+ AreaCode.create(:country => germany, :name => "Daun", :area_code => "6592")
+ AreaCode.create(:country => germany, :name => "Hillesheim Eifel", :area_code => "6593")
+ AreaCode.create(:country => germany, :name => "Birresborn", :area_code => "6594")
+ AreaCode.create(:country => germany, :name => "Dockweiler", :area_code => "6595")
+ AreaCode.create(:country => germany, :name => "Üdersdorf", :area_code => "6596")
+ AreaCode.create(:country => germany, :name => "Jünkerath", :area_code => "6597")
+ AreaCode.create(:country => germany, :name => "Weidenbach b Gerolstein", :area_code => "6599")
+ AreaCode.create(:country => germany, :name => "Fulda", :area_code => "661")
+ AreaCode.create(:country => germany, :name => "Philippsthal Werra", :area_code => "6620")
+ AreaCode.create(:country => germany, :name => "Bad Hersfeld", :area_code => "6621")
+ AreaCode.create(:country => germany, :name => "Bebra", :area_code => "6622")
+ AreaCode.create(:country => germany, :name => "Rotenburg a d Fulda", :area_code => "6623")
+ AreaCode.create(:country => germany, :name => "Heringen Werra", :area_code => "6624")
+ AreaCode.create(:country => germany, :name => "Niederaula", :area_code => "6625")
+ AreaCode.create(:country => germany, :name => "Wildeck-Obersuhl", :area_code => "6626")
+ AreaCode.create(:country => germany, :name => "Nentershausen Hess", :area_code => "6627")
+ AreaCode.create(:country => germany, :name => "Oberaula", :area_code => "6628")
+ AreaCode.create(:country => germany, :name => "Schenklengsfeld", :area_code => "6629")
+ AreaCode.create(:country => germany, :name => "Schwalmtal-Storndorf", :area_code => "6630")
+ AreaCode.create(:country => germany, :name => "Alsfeld", :area_code => "6631")
+ AreaCode.create(:country => germany, :name => "Homberg Ohm", :area_code => "6633")
+ AreaCode.create(:country => germany, :name => "Gemünden Felda", :area_code => "6634")
+ AreaCode.create(:country => germany, :name => "Kirtorf", :area_code => "6635")
+ AreaCode.create(:country => germany, :name => "Romrod", :area_code => "6636")
+ AreaCode.create(:country => germany, :name => "Feldatal", :area_code => "6637")
+ AreaCode.create(:country => germany, :name => "Schwalmtal-Renzendorf", :area_code => "6638")
+ AreaCode.create(:country => germany, :name => "Ottrau", :area_code => "6639")
+ AreaCode.create(:country => germany, :name => "Lauterbach Hessen", :area_code => "6641")
+ AreaCode.create(:country => germany, :name => "Schlitz", :area_code => "6642")
+ AreaCode.create(:country => germany, :name => "Herbstein", :area_code => "6643")
+ AreaCode.create(:country => germany, :name => "Grebenhain", :area_code => "6644")
+ AreaCode.create(:country => germany, :name => "Ulrichstein", :area_code => "6645")
+ AreaCode.create(:country => germany, :name => "Grebenau", :area_code => "6646")
+ AreaCode.create(:country => germany, :name => "Herbstein-Stockhausen", :area_code => "6647")
+ AreaCode.create(:country => germany, :name => "Bad Salzschlirf", :area_code => "6648")
+ AreaCode.create(:country => germany, :name => "Hosenfeld", :area_code => "6650")
+ AreaCode.create(:country => germany, :name => "Rasdorf", :area_code => "6651")
+ AreaCode.create(:country => germany, :name => "Hünfeld", :area_code => "6652")
+ AreaCode.create(:country => germany, :name => "Burghaun", :area_code => "6653")
+ AreaCode.create(:country => germany, :name => "Gersfeld Rhön", :area_code => "6654")
+ AreaCode.create(:country => germany, :name => "Neuhof Kr Fulda", :area_code => "6655")
+ AreaCode.create(:country => germany, :name => "Ebersburg", :area_code => "6656")
+ AreaCode.create(:country => germany, :name => "Hofbieber", :area_code => "6657")
+ AreaCode.create(:country => germany, :name => "Poppenhausen Wasserkuppe", :area_code => "6658")
+ AreaCode.create(:country => germany, :name => "Eichenzell", :area_code => "6659")
+ AreaCode.create(:country => germany, :name => "Steinau-Marjoss", :area_code => "6660")
+ AreaCode.create(:country => germany, :name => "Schlüchtern", :area_code => "6661")
+ AreaCode.create(:country => germany, :name => "Steinau an der Straße", :area_code => "6663")
+ AreaCode.create(:country => germany, :name => "Sinntal-Sterbfritz", :area_code => "6664")
+ AreaCode.create(:country => germany, :name => "Sinntal-Altengronau", :area_code => "6665")
+ AreaCode.create(:country => germany, :name => "Freiensteinau", :area_code => "6666")
+ AreaCode.create(:country => germany, :name => "Steinau-Ulmbach", :area_code => "6667")
+ AreaCode.create(:country => germany, :name => "Birstein-Lichenroth", :area_code => "6668")
+ AreaCode.create(:country => germany, :name => "Neuhof-Hauswurz", :area_code => "6669")
+ AreaCode.create(:country => germany, :name => "Ludwigsau Hess", :area_code => "6670")
+ AreaCode.create(:country => germany, :name => "Eiterfeld", :area_code => "6672")
+ AreaCode.create(:country => germany, :name => "Haunetal", :area_code => "6673")
+ AreaCode.create(:country => germany, :name => "Friedewald Hess", :area_code => "6674")
+ AreaCode.create(:country => germany, :name => "Breitenbach a Herzberg", :area_code => "6675")
+ AreaCode.create(:country => germany, :name => "Hohenroda Hess", :area_code => "6676")
+ AreaCode.create(:country => germany, :name => "Neuenstein Hess", :area_code => "6677")
+ AreaCode.create(:country => germany, :name => "Wildeck-Hönebach", :area_code => "6678")
+ AreaCode.create(:country => germany, :name => "Hilders", :area_code => "6681")
+ AreaCode.create(:country => germany, :name => "Tann Rhön", :area_code => "6682")
+ AreaCode.create(:country => germany, :name => "Ehrenberg Rhön", :area_code => "6683")
+ AreaCode.create(:country => germany, :name => "Hofbieber-Schwarzbach", :area_code => "6684")
+ AreaCode.create(:country => germany, :name => "Schwalmstadt", :area_code => "6691")
+ AreaCode.create(:country => germany, :name => "Neustadt Hessen", :area_code => "6692")
+ AreaCode.create(:country => germany, :name => "Neuental", :area_code => "6693")
+ AreaCode.create(:country => germany, :name => "Neukirchen Knüll", :area_code => "6694")
+ AreaCode.create(:country => germany, :name => "Jesberg", :area_code => "6695")
+ AreaCode.create(:country => germany, :name => "Gilserberg", :area_code => "6696")
+ AreaCode.create(:country => germany, :name => "Willingshausen", :area_code => "6697")
+ AreaCode.create(:country => germany, :name => "Schrecksbach", :area_code => "6698")
+ AreaCode.create(:country => germany, :name => "Sprendlingen Rheinhess", :area_code => "6701")
+ AreaCode.create(:country => germany, :name => "Wöllstein Rheinhess", :area_code => "6703")
+ AreaCode.create(:country => germany, :name => "Langenlonsheim", :area_code => "6704")
+ AreaCode.create(:country => germany, :name => "Wallhausen Nahe", :area_code => "6706")
+ AreaCode.create(:country => germany, :name => "Windesheim", :area_code => "6707")
+ AreaCode.create(:country => germany, :name => "Bad Münster am Stein-Ebernburg", :area_code => "6708")
+ AreaCode.create(:country => germany, :name => "Fürfeld Kr Bad Kreuznach", :area_code => "6709")
+ AreaCode.create(:country => germany, :name => "Bad Kreuznach", :area_code => "671")
+ AreaCode.create(:country => germany, :name => "Bingen am Rhein", :area_code => "6721")
+ AreaCode.create(:country => germany, :name => "Rüdesheim am Rhein", :area_code => "6722")
+ AreaCode.create(:country => germany, :name => "Oestrich-Winkel", :area_code => "6723")
+ AreaCode.create(:country => germany, :name => "Stromberg Hunsrück", :area_code => "6724")
+ AreaCode.create(:country => germany, :name => "Gau-Algesheim", :area_code => "6725")
+ AreaCode.create(:country => germany, :name => "Lorch Rheingau", :area_code => "6726")
+ AreaCode.create(:country => germany, :name => "Gensingen", :area_code => "6727")
+ AreaCode.create(:country => germany, :name => "Ober-Hilbersheim", :area_code => "6728")
+ AreaCode.create(:country => germany, :name => "Alzey", :area_code => "6731")
+ AreaCode.create(:country => germany, :name => "Wörrstadt", :area_code => "6732")
+ AreaCode.create(:country => germany, :name => "Gau-Odernheim", :area_code => "6733")
+ AreaCode.create(:country => germany, :name => "Flonheim", :area_code => "6734")
+ AreaCode.create(:country => germany, :name => "Eppelsheim", :area_code => "6735")
+ AreaCode.create(:country => germany, :name => "Bechenheim", :area_code => "6736")
+ AreaCode.create(:country => germany, :name => "Köngernheim", :area_code => "6737")
+ AreaCode.create(:country => germany, :name => "St Goar", :area_code => "6741")
+ AreaCode.create(:country => germany, :name => "Boppard", :area_code => "6742")
+ AreaCode.create(:country => germany, :name => "Bacharach", :area_code => "6743")
+ AreaCode.create(:country => germany, :name => "Oberwesel", :area_code => "6744")
+ AreaCode.create(:country => germany, :name => "Gondershausen", :area_code => "6745")
+ AreaCode.create(:country => germany, :name => "Pfalzfeld", :area_code => "6746")
+ AreaCode.create(:country => germany, :name => "Emmelshausen", :area_code => "6747")
+ AreaCode.create(:country => germany, :name => "Bad Sobernheim", :area_code => "6751")
+ AreaCode.create(:country => germany, :name => "Kirn Nahe", :area_code => "6752")
+ AreaCode.create(:country => germany, :name => "Meisenheim", :area_code => "6753")
+ AreaCode.create(:country => germany, :name => "Martinstein", :area_code => "6754")
+ AreaCode.create(:country => germany, :name => "Odernheim am Glan", :area_code => "6755")
+ AreaCode.create(:country => germany, :name => "Winterbach Soonwald", :area_code => "6756")
+ AreaCode.create(:country => germany, :name => "Becherbach bei Kirn", :area_code => "6757")
+ AreaCode.create(:country => germany, :name => "Waldböckelheim", :area_code => "6758")
+ AreaCode.create(:country => germany, :name => "Simmern Hunsrück", :area_code => "6761")
+ AreaCode.create(:country => germany, :name => "Kastellaun", :area_code => "6762")
+ AreaCode.create(:country => germany, :name => "Kirchberg Hunsrück", :area_code => "6763")
+ AreaCode.create(:country => germany, :name => "Rheinböllen", :area_code => "6764")
+ AreaCode.create(:country => germany, :name => "Gemünden Hunsrück", :area_code => "6765")
+ AreaCode.create(:country => germany, :name => "Kisselbach", :area_code => "6766")
+ AreaCode.create(:country => germany, :name => "St Goarshausen", :area_code => "6771")
+ AreaCode.create(:country => germany, :name => "Nastätten", :area_code => "6772")
+ AreaCode.create(:country => germany, :name => "Kamp-Bornhofen", :area_code => "6773")
+ AreaCode.create(:country => germany, :name => "Kaub", :area_code => "6774")
+ AreaCode.create(:country => germany, :name => "Strüth Taunus", :area_code => "6775")
+ AreaCode.create(:country => germany, :name => "Dachsenhausen", :area_code => "6776")
+ AreaCode.create(:country => germany, :name => "Idar-Oberstein", :area_code => "6781")
+ AreaCode.create(:country => germany, :name => "Birkenfeld Nahe", :area_code => "6782")
+ AreaCode.create(:country => germany, :name => "Baumholder", :area_code => "6783")
+ AreaCode.create(:country => germany, :name => "Weierbach", :area_code => "6784")
+ AreaCode.create(:country => germany, :name => "Herrstein", :area_code => "6785")
+ AreaCode.create(:country => germany, :name => "Kempfeld", :area_code => "6786")
+ AreaCode.create(:country => germany, :name => "Niederbrombach", :area_code => "6787")
+ AreaCode.create(:country => germany, :name => "Sien", :area_code => "6788")
+ AreaCode.create(:country => germany, :name => "Heimbach Nahe", :area_code => "6789")
+ AreaCode.create(:country => germany, :name => "Völklingen-Lauterbach", :area_code => "6802")
+ AreaCode.create(:country => germany, :name => "Mandelbachtal-Ommersheim", :area_code => "6803")
+ AreaCode.create(:country => germany, :name => "Mandelbachtal", :area_code => "6804")
+ AreaCode.create(:country => germany, :name => "Kleinblittersdorf", :area_code => "6805")
+ AreaCode.create(:country => germany, :name => "Heusweiler", :area_code => "6806")
+ AreaCode.create(:country => germany, :name => "Grossrosseln", :area_code => "6809")
+ AreaCode.create(:country => germany, :name => "Saarbrücken", :area_code => "681")
+ AreaCode.create(:country => germany, :name => "Neunkirchen Saar", :area_code => "6821")
+ AreaCode.create(:country => germany, :name => "Ottweiler", :area_code => "6824")
+ AreaCode.create(:country => germany, :name => "Illingen Saar", :area_code => "6825")
+ AreaCode.create(:country => germany, :name => "Bexbach", :area_code => "6826")
+ AreaCode.create(:country => germany, :name => "Eppelborn", :area_code => "6827")
+ AreaCode.create(:country => germany, :name => "Saarlouis", :area_code => "6831")
+ AreaCode.create(:country => germany, :name => "Beckingen-Reimsbach", :area_code => "6832")
+ AreaCode.create(:country => germany, :name => "Rehlingen-Siersburg", :area_code => "6833")
+ AreaCode.create(:country => germany, :name => "Bous", :area_code => "6834")
+ AreaCode.create(:country => germany, :name => "Beckingen", :area_code => "6835")
+ AreaCode.create(:country => germany, :name => "Überherrn", :area_code => "6836")
+ AreaCode.create(:country => germany, :name => "Wallerfangen", :area_code => "6837")
+ AreaCode.create(:country => germany, :name => "Saarwellingen", :area_code => "6838")
+ AreaCode.create(:country => germany, :name => "Homburg Saar", :area_code => "6841")
+ AreaCode.create(:country => germany, :name => "Blieskastel", :area_code => "6842")
+ AreaCode.create(:country => germany, :name => "Gersheim", :area_code => "6843")
+ AreaCode.create(:country => germany, :name => "Blieskastel-Altheim", :area_code => "6844")
+ AreaCode.create(:country => germany, :name => "Homburg-Einöd", :area_code => "6848")
+ AreaCode.create(:country => germany, :name => "Kirkel", :area_code => "6849")
+ AreaCode.create(:country => germany, :name => "St Wendel", :area_code => "6851")
+ AreaCode.create(:country => germany, :name => "Nohfelden", :area_code => "6852")
+ AreaCode.create(:country => germany, :name => "Marpingen", :area_code => "6853")
+ AreaCode.create(:country => germany, :name => "Oberthal Saar", :area_code => "6854")
+ AreaCode.create(:country => germany, :name => "Freisen", :area_code => "6855")
+ AreaCode.create(:country => germany, :name => "St Wendel-Niederkirchen", :area_code => "6856")
+ AreaCode.create(:country => germany, :name => "Namborn", :area_code => "6857")
+ AreaCode.create(:country => germany, :name => "Ottweiler-Fürth", :area_code => "6858")
+ AreaCode.create(:country => germany, :name => "Merzig", :area_code => "6861")
+ AreaCode.create(:country => germany, :name => "Mettlach", :area_code => "6864")
+ AreaCode.create(:country => germany, :name => "Mettlach-Orscholz", :area_code => "6865")
+ AreaCode.create(:country => germany, :name => "Perl-Nennig", :area_code => "6866")
+ AreaCode.create(:country => germany, :name => "Perl", :area_code => "6867")
+ AreaCode.create(:country => germany, :name => "Mettlach-Tünsdorf", :area_code => "6868")
+ AreaCode.create(:country => germany, :name => "Merzig-Silwingen", :area_code => "6869")
+ AreaCode.create(:country => germany, :name => "Wadern", :area_code => "6871")
+ AreaCode.create(:country => germany, :name => "Losheim am See", :area_code => "6872")
+ AreaCode.create(:country => germany, :name => "Nonnweiler", :area_code => "6873")
+ AreaCode.create(:country => germany, :name => "Wadern-Nunkirchen", :area_code => "6874")
+ AreaCode.create(:country => germany, :name => "Nonnweiler-Primstal", :area_code => "6875")
+ AreaCode.create(:country => germany, :name => "Weiskirchen Saar", :area_code => "6876")
+ AreaCode.create(:country => germany, :name => "Lebach", :area_code => "6881")
+ AreaCode.create(:country => germany, :name => "Schmelz Saar", :area_code => "6887")
+ AreaCode.create(:country => germany, :name => "Lebach-Steinbach", :area_code => "6888")
+ AreaCode.create(:country => germany, :name => "Saarbrücken-Ensheim", :area_code => "6893")
+ AreaCode.create(:country => germany, :name => "St Ingbert", :area_code => "6894")
+ AreaCode.create(:country => germany, :name => "Sulzbach Saar", :area_code => "6897")
+ AreaCode.create(:country => germany, :name => "Völklingen", :area_code => "6898")
+ AreaCode.create(:country => germany, :name => "Frankfurt am Main", :area_code => "69")
+ AreaCode.create(:country => germany, :name => "Kirchheim unter Teck", :area_code => "7021")
+ AreaCode.create(:country => germany, :name => "Nürtingen", :area_code => "7022")
+ AreaCode.create(:country => germany, :name => "Weilheim an der Teck", :area_code => "7023")
+ AreaCode.create(:country => germany, :name => "Wendlingen am Neckar", :area_code => "7024")
+ AreaCode.create(:country => germany, :name => "Neuffen", :area_code => "7025")
+ AreaCode.create(:country => germany, :name => "Lenningen", :area_code => "7026")
+ AreaCode.create(:country => germany, :name => "Böblingen", :area_code => "7031")
+ AreaCode.create(:country => germany, :name => "Herrenberg", :area_code => "7032")
+ AreaCode.create(:country => germany, :name => "Weil Der Stadt", :area_code => "7033")
+ AreaCode.create(:country => germany, :name => "Ehningen", :area_code => "7034")
+ AreaCode.create(:country => germany, :name => "Mühlacker", :area_code => "7041")
+ AreaCode.create(:country => germany, :name => "Vaihingen an der Enz", :area_code => "7042")
+ AreaCode.create(:country => germany, :name => "Maulbronn", :area_code => "7043")
+ AreaCode.create(:country => germany, :name => "Mönsheim", :area_code => "7044")
+ AreaCode.create(:country => germany, :name => "Oberderdingen", :area_code => "7045")
+ AreaCode.create(:country => germany, :name => "Zaberfeld", :area_code => "7046")
+ AreaCode.create(:country => germany, :name => "Calw", :area_code => "7051")
+ AreaCode.create(:country => germany, :name => "Bad Liebenzell", :area_code => "7052")
+ AreaCode.create(:country => germany, :name => "Bad Teinach-Zavelstein", :area_code => "7053")
+ AreaCode.create(:country => germany, :name => "Wildberg Württ", :area_code => "7054")
+ AreaCode.create(:country => germany, :name => "Neuweiler Kr Calw", :area_code => "7055")
+ AreaCode.create(:country => germany, :name => "Gechingen", :area_code => "7056")
+ AreaCode.create(:country => germany, :name => "Beilstein Württ", :area_code => "7062")
+ AreaCode.create(:country => germany, :name => "Bad Wimpfen", :area_code => "7063")
+ AreaCode.create(:country => germany, :name => "Bad Rappenau-Bonfeld", :area_code => "7066")
+ AreaCode.create(:country => germany, :name => "Tübingen", :area_code => "7071")
+ AreaCode.create(:country => germany, :name => "Gomaringen", :area_code => "7072")
+ AreaCode.create(:country => germany, :name => "Ammerbuch", :area_code => "7073")
+ AreaCode.create(:country => germany, :name => "Bad Wildbad", :area_code => "7081")
+ AreaCode.create(:country => germany, :name => "Neuenbürg Württ", :area_code => "7082")
+ AreaCode.create(:country => germany, :name => "Bad Herrenalb", :area_code => "7083")
+ AreaCode.create(:country => germany, :name => "Schömberg b Neuenbürg", :area_code => "7084")
+ AreaCode.create(:country => germany, :name => "Enzklösterle", :area_code => "7085")
+ AreaCode.create(:country => germany, :name => "Stuttgart", :area_code => "711")
+ AreaCode.create(:country => germany, :name => "Reutlingen", :area_code => "7121")
+ AreaCode.create(:country => germany, :name => "St Johann Württ", :area_code => "7122")
+ AreaCode.create(:country => germany, :name => "Metzingen Württ", :area_code => "7123")
+ AreaCode.create(:country => germany, :name => "Trochtelfingen Hohenz", :area_code => "7124")
+ AreaCode.create(:country => germany, :name => "Bad Urach", :area_code => "7125")
+ AreaCode.create(:country => germany, :name => "Burladingen-Melchingen", :area_code => "7126")
+ AreaCode.create(:country => germany, :name => "Neckartenzlingen", :area_code => "7127")
+ AreaCode.create(:country => germany, :name => "Sonnenbühl", :area_code => "7128")
+ AreaCode.create(:country => germany, :name => "Lichtenstein Württ", :area_code => "7129")
+ AreaCode.create(:country => germany, :name => "Löwenstein Württ", :area_code => "7130")
+ AreaCode.create(:country => germany, :name => "Heilbronn Neckar", :area_code => "7131")
+ AreaCode.create(:country => germany, :name => "Neckarsulm", :area_code => "7132")
+ AreaCode.create(:country => germany, :name => "Lauffen am Neckar", :area_code => "7133")
+ AreaCode.create(:country => germany, :name => "Weinsberg", :area_code => "7134")
+ AreaCode.create(:country => germany, :name => "Brackenheim", :area_code => "7135")
+ AreaCode.create(:country => germany, :name => "Bad Friedrichshall", :area_code => "7136")
+ AreaCode.create(:country => germany, :name => "Schwaigern", :area_code => "7138")
+ AreaCode.create(:country => germany, :name => "Neuenstadt am Kocher", :area_code => "7139")
+ AreaCode.create(:country => germany, :name => "Ludwigsburg Württ", :area_code => "7141")
+ AreaCode.create(:country => germany, :name => "Bietigheim-Bissingen", :area_code => "7142")
+ AreaCode.create(:country => germany, :name => "Besigheim", :area_code => "7143")
+ AreaCode.create(:country => germany, :name => "Marbach am Neckar", :area_code => "7144")
+ AreaCode.create(:country => germany, :name => "Markgröningen", :area_code => "7145")
+ AreaCode.create(:country => germany, :name => "Remseck am Neckar", :area_code => "7146")
+ AreaCode.create(:country => germany, :name => "Sachsenheim Württ", :area_code => "7147")
+ AreaCode.create(:country => germany, :name => "Grossbottwar", :area_code => "7148")
+ AreaCode.create(:country => germany, :name => "Korntal-Münchingen", :area_code => "7150")
+ AreaCode.create(:country => germany, :name => "Waiblingen", :area_code => "7151")
+ AreaCode.create(:country => germany, :name => "Leonberg Württ", :area_code => "7152")
+ AreaCode.create(:country => germany, :name => "Plochingen", :area_code => "7153")
+ AreaCode.create(:country => germany, :name => "Kornwestheim", :area_code => "7154")
+ AreaCode.create(:country => germany, :name => "Ditzingen", :area_code => "7156")
+ AreaCode.create(:country => germany, :name => "Waldenbuch", :area_code => "7157")
+ AreaCode.create(:country => germany, :name => "Neuhausen auf den Fildern", :area_code => "7158")
+ AreaCode.create(:country => germany, :name => "Renningen", :area_code => "7159")
+ AreaCode.create(:country => germany, :name => "Göppingen", :area_code => "7161")
+ AreaCode.create(:country => germany, :name => "Süßen", :area_code => "7162")
+ AreaCode.create(:country => germany, :name => "Ebersbach an der Fils", :area_code => "7163")
+ AreaCode.create(:country => germany, :name => "Boll Kr Göppingen", :area_code => "7164")
+ AreaCode.create(:country => germany, :name => "Göppingen-Hohenstaufen", :area_code => "7165")
+ AreaCode.create(:country => germany, :name => "Adelberg", :area_code => "7166")
+ AreaCode.create(:country => germany, :name => "Schwäbisch Gmünd", :area_code => "7171")
+ AreaCode.create(:country => germany, :name => "Lorch Württ", :area_code => "7172")
+ AreaCode.create(:country => germany, :name => "Heubach", :area_code => "7173")
+ AreaCode.create(:country => germany, :name => "Mögglingen", :area_code => "7174")
+ AreaCode.create(:country => germany, :name => "Leinzell", :area_code => "7175")
+ AreaCode.create(:country => germany, :name => "Spraitbach", :area_code => "7176")
+ AreaCode.create(:country => germany, :name => "Schorndorf Württ", :area_code => "7181")
+ AreaCode.create(:country => germany, :name => "Welzheim", :area_code => "7182")
+ AreaCode.create(:country => germany, :name => "Rudersberg Württ", :area_code => "7183")
+ AreaCode.create(:country => germany, :name => "Kaisersbach", :area_code => "7184")
+ AreaCode.create(:country => germany, :name => "Backnang", :area_code => "7191")
+ AreaCode.create(:country => germany, :name => "Murrhardt", :area_code => "7192")
+ AreaCode.create(:country => germany, :name => "Sulzbach an der Murr", :area_code => "7193")
+ AreaCode.create(:country => germany, :name => "Spiegelberg", :area_code => "7194")
+ AreaCode.create(:country => germany, :name => "Winnenden", :area_code => "7195")
+ AreaCode.create(:country => germany, :name => "Karlsbad", :area_code => "7202")
+ AreaCode.create(:country => germany, :name => "Walzbachtal", :area_code => "7203")
+ AreaCode.create(:country => germany, :name => "Malsch-Völkersbach", :area_code => "7204")
+ AreaCode.create(:country => germany, :name => "Karlsruhe", :area_code => "721")
+ AreaCode.create(:country => germany, :name => "Forbach-Hundsbach", :area_code => "7220")
+ AreaCode.create(:country => germany, :name => "Baden-Baden", :area_code => "7221")
+ AreaCode.create(:country => germany, :name => "Rastatt", :area_code => "7222")
+ AreaCode.create(:country => germany, :name => "Bühl Baden", :area_code => "7223")
+ AreaCode.create(:country => germany, :name => "Gernsbach", :area_code => "7224")
+ AreaCode.create(:country => germany, :name => "Gaggenau", :area_code => "7225")
+ AreaCode.create(:country => germany, :name => "Bühl-Sand", :area_code => "7226")
+ AreaCode.create(:country => germany, :name => "Lichtenau Baden", :area_code => "7227")
+ AreaCode.create(:country => germany, :name => "Forbach", :area_code => "7228")
+ AreaCode.create(:country => germany, :name => "Iffezheim", :area_code => "7229")
+ AreaCode.create(:country => germany, :name => "Pforzheim", :area_code => "7231")
+ AreaCode.create(:country => germany, :name => "Königsbach-Stein", :area_code => "7232")
+ AreaCode.create(:country => germany, :name => "Niefern-Öschelbronn", :area_code => "7233")
+ AreaCode.create(:country => germany, :name => "Tiefenbronn", :area_code => "7234")
+ AreaCode.create(:country => germany, :name => "Unterreichenbach Kr Calw", :area_code => "7235")
+ AreaCode.create(:country => germany, :name => "Keltern", :area_code => "7236")
+ AreaCode.create(:country => germany, :name => "Neulingen Enzkreis", :area_code => "7237")
+ AreaCode.create(:country => germany, :name => "Pfinztal", :area_code => "7240")
+ AreaCode.create(:country => germany, :name => "Rheinstetten", :area_code => "7242")
+ AreaCode.create(:country => germany, :name => "Ettlingen", :area_code => "7243")
+ AreaCode.create(:country => germany, :name => "Weingarten Baden", :area_code => "7244")
+ AreaCode.create(:country => germany, :name => "Durmersheim", :area_code => "7245")
+ AreaCode.create(:country => germany, :name => "Malsch Kr Karlsruhe", :area_code => "7246")
+ AreaCode.create(:country => germany, :name => "Linkenheim-Hochstetten", :area_code => "7247")
+ AreaCode.create(:country => germany, :name => "Marxzell", :area_code => "7248")
+ AreaCode.create(:country => germany, :name => "Stutensee", :area_code => "7249")
+ AreaCode.create(:country => germany, :name => "Kraichtal", :area_code => "7250")
+ AreaCode.create(:country => germany, :name => "Bruchsal", :area_code => "7251")
+ AreaCode.create(:country => germany, :name => "Bretten", :area_code => "7252")
+ AreaCode.create(:country => germany, :name => "Bad Schönborn", :area_code => "7253")
+ AreaCode.create(:country => germany, :name => "Waghäusel", :area_code => "7254")
+ AreaCode.create(:country => germany, :name => "Graben-Neudorf", :area_code => "7255")
+ AreaCode.create(:country => germany, :name => "Philippsburg", :area_code => "7256")
+ AreaCode.create(:country => germany, :name => "Bruchsal-Untergrombach", :area_code => "7257")
+ AreaCode.create(:country => germany, :name => "Oberderdingen-Flehingen", :area_code => "7258")
+ AreaCode.create(:country => germany, :name => "Östringen-Odenheim", :area_code => "7259")
+ AreaCode.create(:country => germany, :name => "Sinsheim-Hilsbach", :area_code => "7260")
+ AreaCode.create(:country => germany, :name => "Sinsheim", :area_code => "7261")
+ AreaCode.create(:country => germany, :name => "Eppingen", :area_code => "7262")
+ AreaCode.create(:country => germany, :name => "Waibstadt", :area_code => "7263")
+ AreaCode.create(:country => germany, :name => "Bad Rappenau", :area_code => "7264")
+ AreaCode.create(:country => germany, :name => "Angelbachtal", :area_code => "7265")
+ AreaCode.create(:country => germany, :name => "Kirchardt", :area_code => "7266")
+ AreaCode.create(:country => germany, :name => "Gemmingen", :area_code => "7267")
+ AreaCode.create(:country => germany, :name => "Bad Rappenau-Obergimpern", :area_code => "7268")
+ AreaCode.create(:country => germany, :name => "Sulzfeld Baden", :area_code => "7269")
+ AreaCode.create(:country => germany, :name => "Wörth am Rhein", :area_code => "7271")
+ AreaCode.create(:country => germany, :name => "Rülzheim", :area_code => "7272")
+ AreaCode.create(:country => germany, :name => "Hagenbach Pfalz", :area_code => "7273")
+ AreaCode.create(:country => germany, :name => "Germersheim", :area_code => "7274")
+ AreaCode.create(:country => germany, :name => "Kandel", :area_code => "7275")
+ AreaCode.create(:country => germany, :name => "Herxheim bei Landau Pfalz", :area_code => "7276")
+ AreaCode.create(:country => germany, :name => "Wörth-Büchelberg", :area_code => "7277")
+ AreaCode.create(:country => germany, :name => "Roggenburg", :area_code => "7300")
+ AreaCode.create(:country => germany, :name => "Pfaffenhofen a d Roth", :area_code => "7302")
+ AreaCode.create(:country => germany, :name => "Illertissen", :area_code => "7303")
+ AreaCode.create(:country => germany, :name => "Blaustein Württ", :area_code => "7304")
+ AreaCode.create(:country => germany, :name => "Erbach Donau", :area_code => "7305")
+ AreaCode.create(:country => germany, :name => "Vöhringen Iller", :area_code => "7306")
+ AreaCode.create(:country => germany, :name => "Senden Iller", :area_code => "7307")
+ AreaCode.create(:country => germany, :name => "Nersingen", :area_code => "7308")
+ AreaCode.create(:country => germany, :name => "Weissenhorn", :area_code => "7309")
+ AreaCode.create(:country => germany, :name => "Ulm Donau", :area_code => "731")
+ AreaCode.create(:country => germany, :name => "Heidenheim a d Brenz", :area_code => "7321")
+ AreaCode.create(:country => germany, :name => "Giengen a d Brenz", :area_code => "7322")
+ AreaCode.create(:country => germany, :name => "Gerstetten", :area_code => "7323")
+ AreaCode.create(:country => germany, :name => "Herbrechtingen", :area_code => "7324")
+ AreaCode.create(:country => germany, :name => "Sontheim a d Brenz", :area_code => "7325")
+ AreaCode.create(:country => germany, :name => "Neresheim", :area_code => "7326")
+ AreaCode.create(:country => germany, :name => "Dischingen", :area_code => "7327")
+ AreaCode.create(:country => germany, :name => "Königsbronn", :area_code => "7328")
+ AreaCode.create(:country => germany, :name => "Steinheim am Albuch", :area_code => "7329")
+ AreaCode.create(:country => germany, :name => "Geislingen an der Steige", :area_code => "7331")
+ AreaCode.create(:country => germany, :name => "Lauterstein", :area_code => "7332")
+ AreaCode.create(:country => germany, :name => "Laichingen", :area_code => "7333")
+ AreaCode.create(:country => germany, :name => "Deggingen", :area_code => "7334")
+ AreaCode.create(:country => germany, :name => "Wiesensteig", :area_code => "7335")
+ AreaCode.create(:country => germany, :name => "Lonsee", :area_code => "7336")
+ AreaCode.create(:country => germany, :name => "Nellingen Alb", :area_code => "7337")
+ AreaCode.create(:country => germany, :name => "Neenstetten", :area_code => "7340")
+ AreaCode.create(:country => germany, :name => "Buch b Illertissen", :area_code => "7343")
+ AreaCode.create(:country => germany, :name => "Blaubeuren", :area_code => "7344")
+ AreaCode.create(:country => germany, :name => "Langenau Württ", :area_code => "7345")
+ AreaCode.create(:country => germany, :name => "Illerkirchberg", :area_code => "7346")
+ AreaCode.create(:country => germany, :name => "Dietenheim", :area_code => "7347")
+ AreaCode.create(:country => germany, :name => "Beimerstetten", :area_code => "7348")
+ AreaCode.create(:country => germany, :name => "Biberach an der Riß", :area_code => "7351")
+ AreaCode.create(:country => germany, :name => "Ochsenhausen", :area_code => "7352")
+ AreaCode.create(:country => germany, :name => "Schwendi", :area_code => "7353")
+ AreaCode.create(:country => germany, :name => "Erolzheim", :area_code => "7354")
+ AreaCode.create(:country => germany, :name => "Hochdorf Riß", :area_code => "7355")
+ AreaCode.create(:country => germany, :name => "Schemmerhofen", :area_code => "7356")
+ AreaCode.create(:country => germany, :name => "Attenweiler", :area_code => "7357")
+ AreaCode.create(:country => germany, :name => "Eberhardzell-Füramoos", :area_code => "7358")
+ AreaCode.create(:country => germany, :name => "Aalen", :area_code => "7361")
+ AreaCode.create(:country => germany, :name => "Bopfingen", :area_code => "7362")
+ AreaCode.create(:country => germany, :name => "Lauchheim", :area_code => "7363")
+ AreaCode.create(:country => germany, :name => "Oberkochen", :area_code => "7364")
+ AreaCode.create(:country => germany, :name => "Essingen Württ", :area_code => "7365")
+ AreaCode.create(:country => germany, :name => "Abtsgmünd", :area_code => "7366")
+ AreaCode.create(:country => germany, :name => "Aalen-Ebnat", :area_code => "7367")
+ AreaCode.create(:country => germany, :name => "Riedlingen Württ", :area_code => "7371")
+ AreaCode.create(:country => germany, :name => "Zwiefalten", :area_code => "7373")
+ AreaCode.create(:country => germany, :name => "Uttenweiler", :area_code => "7374")
+ AreaCode.create(:country => germany, :name => "Obermarchtal", :area_code => "7375")
+ AreaCode.create(:country => germany, :name => "Langenenslingen", :area_code => "7376")
+ AreaCode.create(:country => germany, :name => "Münsingen", :area_code => "7381")
+ AreaCode.create(:country => germany, :name => "Römerstein", :area_code => "7382")
+ AreaCode.create(:country => germany, :name => "Münsingen-Buttenhausen", :area_code => "7383")
+ AreaCode.create(:country => germany, :name => "Schelklingen-Hütten", :area_code => "7384")
+ AreaCode.create(:country => germany, :name => "Gomadingen", :area_code => "7385")
+ AreaCode.create(:country => germany, :name => "Hayingen", :area_code => "7386")
+ AreaCode.create(:country => germany, :name => "Hohenstein Württ", :area_code => "7387")
+ AreaCode.create(:country => germany, :name => "Pfronstetten", :area_code => "7388")
+ AreaCode.create(:country => germany, :name => "Heroldstatt", :area_code => "7389")
+ AreaCode.create(:country => germany, :name => "Ehingen Donau", :area_code => "7391")
+ AreaCode.create(:country => germany, :name => "Laupheim", :area_code => "7392")
+ AreaCode.create(:country => germany, :name => "Munderkingen", :area_code => "7393")
+ AreaCode.create(:country => germany, :name => "Schelklingen", :area_code => "7394")
+ AreaCode.create(:country => germany, :name => "Ehingen-Dächingen", :area_code => "7395")
+ AreaCode.create(:country => germany, :name => "Fluorn-Winzeln", :area_code => "7402")
+ AreaCode.create(:country => germany, :name => "Dunningen", :area_code => "7403")
+ AreaCode.create(:country => germany, :name => "Epfendorf", :area_code => "7404")
+ AreaCode.create(:country => germany, :name => "Rottweil", :area_code => "741")
+ AreaCode.create(:country => germany, :name => "Deisslingen", :area_code => "7420")
+ AreaCode.create(:country => germany, :name => "Schramberg", :area_code => "7422")
+ AreaCode.create(:country => germany, :name => "Oberndorf am Neckar", :area_code => "7423")
+ AreaCode.create(:country => germany, :name => "Spaichingen", :area_code => "7424")
+ AreaCode.create(:country => germany, :name => "Trossingen", :area_code => "7425")
+ AreaCode.create(:country => germany, :name => "Gosheim", :area_code => "7426")
+ AreaCode.create(:country => germany, :name => "Schömberg b Balingen", :area_code => "7427")
+ AreaCode.create(:country => germany, :name => "Rosenfeld", :area_code => "7428")
+ AreaCode.create(:country => germany, :name => "Egesheim", :area_code => "7429")
+ AreaCode.create(:country => germany, :name => "Albstadt-Ebingen", :area_code => "7431")
+ AreaCode.create(:country => germany, :name => "Albstadt-Tailfingen", :area_code => "7432")
+ AreaCode.create(:country => germany, :name => "Balingen", :area_code => "7433")
+ AreaCode.create(:country => germany, :name => "Winterlingen", :area_code => "7434")
+ AreaCode.create(:country => germany, :name => "Albstadt-Laufen", :area_code => "7435")
+ AreaCode.create(:country => germany, :name => "Messstetten-Oberdigisheim", :area_code => "7436")
+ AreaCode.create(:country => germany, :name => "Bad Rippoldsau", :area_code => "7440")
+ AreaCode.create(:country => germany, :name => "Freudenstadt", :area_code => "7441")
+ AreaCode.create(:country => germany, :name => "Baiersbronn", :area_code => "7442")
+ AreaCode.create(:country => germany, :name => "Dornstetten", :area_code => "7443")
+ AreaCode.create(:country => germany, :name => "Alpirsbach", :area_code => "7444")
+ AreaCode.create(:country => germany, :name => "Pfalzgrafenweiler", :area_code => "7445")
+ AreaCode.create(:country => germany, :name => "Lossburg", :area_code => "7446")
+ AreaCode.create(:country => germany, :name => "Baiersbronn-Schwarzenberg", :area_code => "7447")
+ AreaCode.create(:country => germany, :name => "Seewald", :area_code => "7448")
+ AreaCode.create(:country => germany, :name => "Baiersbronn-Obertal", :area_code => "7449")
+ AreaCode.create(:country => germany, :name => "Horb am Neckar", :area_code => "7451")
+ AreaCode.create(:country => germany, :name => "Nagold", :area_code => "7452")
+ AreaCode.create(:country => germany, :name => "Altensteig Württ", :area_code => "7453")
+ AreaCode.create(:country => germany, :name => "Sulz am Neckar", :area_code => "7454")
+ AreaCode.create(:country => germany, :name => "Dornhan", :area_code => "7455")
+ AreaCode.create(:country => germany, :name => "Haiterbach", :area_code => "7456")
+ AreaCode.create(:country => germany, :name => "Rottenburg-Ergenzingen", :area_code => "7457")
+ AreaCode.create(:country => germany, :name => "Ebhausen", :area_code => "7458")
+ AreaCode.create(:country => germany, :name => "Nagold-Hochdorf", :area_code => "7459")
+ AreaCode.create(:country => germany, :name => "Tuttlingen", :area_code => "7461")
+ AreaCode.create(:country => germany, :name => "Immendingen", :area_code => "7462")
+ AreaCode.create(:country => germany, :name => "Mühlheim an der Donau", :area_code => "7463")
+ AreaCode.create(:country => germany, :name => "Talheim Kr Tuttlingen", :area_code => "7464")
+ AreaCode.create(:country => germany, :name => "Emmingen-Liptingen", :area_code => "7465")
+ AreaCode.create(:country => germany, :name => "Beuron", :area_code => "7466")
+ AreaCode.create(:country => germany, :name => "Neuhausen ob Eck", :area_code => "7467")
+ AreaCode.create(:country => germany, :name => "Hechingen", :area_code => "7471")
+ AreaCode.create(:country => germany, :name => "Rottenburg am Neckar", :area_code => "7472")
+ AreaCode.create(:country => germany, :name => "Mössingen", :area_code => "7473")
+ AreaCode.create(:country => germany, :name => "Haigerloch", :area_code => "7474")
+ AreaCode.create(:country => germany, :name => "Burladingen", :area_code => "7475")
+ AreaCode.create(:country => germany, :name => "Bisingen", :area_code => "7476")
+ AreaCode.create(:country => germany, :name => "Jungingen b Hechingen", :area_code => "7477")
+ AreaCode.create(:country => germany, :name => "Hirrlingen", :area_code => "7478")
+ AreaCode.create(:country => germany, :name => "Horb-Dettingen", :area_code => "7482")
+ AreaCode.create(:country => germany, :name => "Horb-Mühringen", :area_code => "7483")
+ AreaCode.create(:country => germany, :name => "Simmersfeld", :area_code => "7484")
+ AreaCode.create(:country => germany, :name => "Empfingen", :area_code => "7485")
+ AreaCode.create(:country => germany, :name => "Horb-Altheim", :area_code => "7486")
+ AreaCode.create(:country => germany, :name => "Wolpertswende", :area_code => "7502")
+ AreaCode.create(:country => germany, :name => "Wilhelmsdorf Württ", :area_code => "7503")
+ AreaCode.create(:country => germany, :name => "Horgenzell", :area_code => "7504")
+ AreaCode.create(:country => germany, :name => "Fronreute", :area_code => "7505")
+ AreaCode.create(:country => germany, :name => "Wangen-Leupolz", :area_code => "7506")
+ AreaCode.create(:country => germany, :name => "Ravensburg", :area_code => "751")
+ AreaCode.create(:country => germany, :name => "Bodnegg", :area_code => "7520")
+ AreaCode.create(:country => germany, :name => "Wangen im Allgäu", :area_code => "7522")
+ AreaCode.create(:country => germany, :name => "Bad Waldsee", :area_code => "7524")
+ AreaCode.create(:country => germany, :name => "Aulendorf", :area_code => "7525")
+ AreaCode.create(:country => germany, :name => "Wolfegg", :area_code => "7527")
+ AreaCode.create(:country => germany, :name => "Neukirch b Tettnang", :area_code => "7528")
+ AreaCode.create(:country => germany, :name => "Waldburg Württ", :area_code => "7529")
+ AreaCode.create(:country => germany, :name => "Konstanz", :area_code => "7531")
+ AreaCode.create(:country => germany, :name => "Meersburg", :area_code => "7532")
+ AreaCode.create(:country => germany, :name => "Allensbach", :area_code => "7533")
+ AreaCode.create(:country => germany, :name => "Reichenau Baden", :area_code => "7534")
+ AreaCode.create(:country => germany, :name => "Friedrichshafen", :area_code => "7541")
+ AreaCode.create(:country => germany, :name => "Tettnang", :area_code => "7542")
+ AreaCode.create(:country => germany, :name => "Kressbronn am Bodensee", :area_code => "7543")
+ AreaCode.create(:country => germany, :name => "Markdorf", :area_code => "7544")
+ AreaCode.create(:country => germany, :name => "Immenstaad am Bodensee", :area_code => "7545")
+ AreaCode.create(:country => germany, :name => "Oberteuringen", :area_code => "7546")
+ AreaCode.create(:country => germany, :name => "Überlingen Bodensee", :area_code => "7551")
+ AreaCode.create(:country => germany, :name => "Pfullendorf", :area_code => "7552")
+ AreaCode.create(:country => germany, :name => "Salem Baden", :area_code => "7553")
+ AreaCode.create(:country => germany, :name => "Heiligenberg Baden", :area_code => "7554")
+ AreaCode.create(:country => germany, :name => "Deggenhausertal", :area_code => "7555")
+ AreaCode.create(:country => germany, :name => "Uhldingen-Mühlhofen", :area_code => "7556")
+ AreaCode.create(:country => germany, :name => "Herdwangen-Schönach", :area_code => "7557")
+ AreaCode.create(:country => germany, :name => "Illmensee", :area_code => "7558")
+ AreaCode.create(:country => germany, :name => "Leutkirch im Allgäu", :area_code => "7561")
+ AreaCode.create(:country => germany, :name => "Isny im Allgäu", :area_code => "7562")
+ AreaCode.create(:country => germany, :name => "Kisslegg", :area_code => "7563")
+ AreaCode.create(:country => germany, :name => "Bad Wurzach", :area_code => "7564")
+ AreaCode.create(:country => germany, :name => "Aichstetten Kr Ravensburg", :area_code => "7565")
+ AreaCode.create(:country => germany, :name => "Argenbühl", :area_code => "7566")
+ AreaCode.create(:country => germany, :name => "Leutkirch-Friesenhofen", :area_code => "7567")
+ AreaCode.create(:country => germany, :name => "Bad Wurzach-Hauerz", :area_code => "7568")
+ AreaCode.create(:country => germany, :name => "Isny-Eisenbach", :area_code => "7569")
+ AreaCode.create(:country => germany, :name => "Sigmaringen-Gutenstein", :area_code => "7570")
+ AreaCode.create(:country => germany, :name => "Sigmaringen", :area_code => "7571")
+ AreaCode.create(:country => germany, :name => "Mengen Württ", :area_code => "7572")
+ AreaCode.create(:country => germany, :name => "Stetten am kalten Markt", :area_code => "7573")
+ AreaCode.create(:country => germany, :name => "Gammertingen", :area_code => "7574")
+ AreaCode.create(:country => germany, :name => "Messkirch", :area_code => "7575")
+ AreaCode.create(:country => germany, :name => "Krauchenwies", :area_code => "7576")
+ AreaCode.create(:country => germany, :name => "Veringenstadt", :area_code => "7577")
+ AreaCode.create(:country => germany, :name => "Wald Hohenz", :area_code => "7578")
+ AreaCode.create(:country => germany, :name => "Schwenningen Baden", :area_code => "7579")
+ AreaCode.create(:country => germany, :name => "Saulgau", :area_code => "7581")
+ AreaCode.create(:country => germany, :name => "Bad Buchau", :area_code => "7582")
+ AreaCode.create(:country => germany, :name => "Bad Schussenried", :area_code => "7583")
+ AreaCode.create(:country => germany, :name => "Altshausen", :area_code => "7584")
+ AreaCode.create(:country => germany, :name => "Ostrach", :area_code => "7585")
+ AreaCode.create(:country => germany, :name => "Herbertingen", :area_code => "7586")
+ AreaCode.create(:country => germany, :name => "Hosskirch", :area_code => "7587")
+ AreaCode.create(:country => germany, :name => "Oberried Breisgau", :area_code => "7602")
+ AreaCode.create(:country => germany, :name => "Freiburg im Breisgau", :area_code => "761")
+ AreaCode.create(:country => germany, :name => "Schopfheim-Gersbach", :area_code => "7620")
+ AreaCode.create(:country => germany, :name => "Lörrach", :area_code => "7621")
+ AreaCode.create(:country => germany, :name => "Schopfheim", :area_code => "7622")
+ AreaCode.create(:country => germany, :name => "Rheinfelden Baden", :area_code => "7623")
+ AreaCode.create(:country => germany, :name => "Grenzach-Wyhlen", :area_code => "7624")
+ AreaCode.create(:country => germany, :name => "Zell im Wiesental", :area_code => "7625")
+ AreaCode.create(:country => germany, :name => "Kandern", :area_code => "7626")
+ AreaCode.create(:country => germany, :name => "Steinen Kr Lörrach", :area_code => "7627")
+ AreaCode.create(:country => germany, :name => "Efringen-Kirchen", :area_code => "7628")
+ AreaCode.create(:country => germany, :name => "Tegernau Baden", :area_code => "7629")
+ AreaCode.create(:country => germany, :name => "Müllheim Baden", :area_code => "7631")
+ AreaCode.create(:country => germany, :name => "Badenweiler", :area_code => "7632")
+ AreaCode.create(:country => germany, :name => "Staufen im Breisgau", :area_code => "7633")
+ AreaCode.create(:country => germany, :name => "Sulzburg", :area_code => "7634")
+ AreaCode.create(:country => germany, :name => "Schliengen", :area_code => "7635")
+ AreaCode.create(:country => germany, :name => "Münstertal Schwarzwald", :area_code => "7636")
+ AreaCode.create(:country => germany, :name => "Emmendingen", :area_code => "7641")
+ AreaCode.create(:country => germany, :name => "Endingen Kaiserstuh", :area_code => "7642")
+ AreaCode.create(:country => germany, :name => "Herbolzheim Breisgau", :area_code => "7643")
+ AreaCode.create(:country => germany, :name => "Kenzingen", :area_code => "7644")
+ AreaCode.create(:country => germany, :name => "Freiamt", :area_code => "7645")
+ AreaCode.create(:country => germany, :name => "Weisweil Breisgau", :area_code => "7646")
+ AreaCode.create(:country => germany, :name => "Titisee-Neustadt", :area_code => "7651")
+ AreaCode.create(:country => germany, :name => "Hinterzarten", :area_code => "7652")
+ AreaCode.create(:country => germany, :name => "Lenzkirch", :area_code => "7653")
+ AreaCode.create(:country => germany, :name => "Löffingen", :area_code => "7654")
+ AreaCode.create(:country => germany, :name => "Feldberg-Altglashütten", :area_code => "7655")
+ AreaCode.create(:country => germany, :name => "Schluchsee", :area_code => "7656")
+ AreaCode.create(:country => germany, :name => "Eisenbach Hochschwarzwald", :area_code => "7657")
+ AreaCode.create(:country => germany, :name => "St Peter Schwarzw", :area_code => "7660")
+ AreaCode.create(:country => germany, :name => "Kirchzarten", :area_code => "7661")
+ AreaCode.create(:country => germany, :name => "Vogtsburg im Kaiserstuh", :area_code => "7662")
+ AreaCode.create(:country => germany, :name => "Eichstetten", :area_code => "7663")
+ AreaCode.create(:country => germany, :name => "Freiburg-Tiengen", :area_code => "7664")
+ AreaCode.create(:country => germany, :name => "March Breisgau", :area_code => "7665")
+ AreaCode.create(:country => germany, :name => "Denzlingen", :area_code => "7666")
+ AreaCode.create(:country => germany, :name => "Breisach am Rhein", :area_code => "7667")
+ AreaCode.create(:country => germany, :name => "Ihringen", :area_code => "7668")
+ AreaCode.create(:country => germany, :name => "St Märgen", :area_code => "7669")
+ AreaCode.create(:country => germany, :name => "Todtnau", :area_code => "7671")
+ AreaCode.create(:country => germany, :name => "St Blasien", :area_code => "7672")
+ AreaCode.create(:country => germany, :name => "Schönau im Schwarzwald", :area_code => "7673")
+ AreaCode.create(:country => germany, :name => "Todtmoos", :area_code => "7674")
+ AreaCode.create(:country => germany, :name => "Bernau Baden", :area_code => "7675")
+ AreaCode.create(:country => germany, :name => "Feldberg Schwarzwald", :area_code => "7676")
+ AreaCode.create(:country => germany, :name => "Waldkirch Breisgau", :area_code => "7681")
+ AreaCode.create(:country => germany, :name => "Elzach", :area_code => "7682")
+ AreaCode.create(:country => germany, :name => "Simonswald", :area_code => "7683")
+ AreaCode.create(:country => germany, :name => "Glottertal", :area_code => "7684")
+ AreaCode.create(:country => germany, :name => "Gutach-Bleibach", :area_code => "7685")
+ AreaCode.create(:country => germany, :name => "Blumberg Baden", :area_code => "7702")
+ AreaCode.create(:country => germany, :name => "Bonndorf im Schwarzwald", :area_code => "7703")
+ AreaCode.create(:country => germany, :name => "Geisingen Baden", :area_code => "7704")
+ AreaCode.create(:country => germany, :name => "Wolterdingen Schwarzw", :area_code => "7705")
+ AreaCode.create(:country => germany, :name => "Oberbaldingen", :area_code => "7706")
+ AreaCode.create(:country => germany, :name => "Bräunlingen", :area_code => "7707")
+ AreaCode.create(:country => germany, :name => "Geisingen-Leipferdingen", :area_code => "7708")
+ AreaCode.create(:country => germany, :name => "Wutach", :area_code => "7709")
+ AreaCode.create(:country => germany, :name => "Donaueschingen", :area_code => "771")
+ AreaCode.create(:country => germany, :name => "Schwenningen a Neckar", :area_code => "7720")
+ AreaCode.create(:country => germany, :name => "Villingen i Schwarzw", :area_code => "7721")
+ AreaCode.create(:country => germany, :name => "Triberg im Schwarzwald", :area_code => "7722")
+ AreaCode.create(:country => germany, :name => "Furtwangen im Schwarzwald", :area_code => "7723")
+ AreaCode.create(:country => germany, :name => "St Georgen im Schwarzwald", :area_code => "7724")
+ AreaCode.create(:country => germany, :name => "Königsfeld im Schwarzwald", :area_code => "7725")
+ AreaCode.create(:country => germany, :name => "Bad Dürrheim", :area_code => "7726")
+ AreaCode.create(:country => germany, :name => "Vöhrenbach", :area_code => "7727")
+ AreaCode.create(:country => germany, :name => "Niedereschach", :area_code => "7728")
+ AreaCode.create(:country => germany, :name => "Tennenbronn", :area_code => "7729")
+ AreaCode.create(:country => germany, :name => "Singen Hohentwiel", :area_code => "7731")
+ AreaCode.create(:country => germany, :name => "Radolfzell am Bodensee", :area_code => "7732")
+ AreaCode.create(:country => germany, :name => "Engen Hegau", :area_code => "7733")
+ AreaCode.create(:country => germany, :name => "Gailingen", :area_code => "7734")
+ AreaCode.create(:country => germany, :name => "Öhningen", :area_code => "7735")
+ AreaCode.create(:country => germany, :name => "Tengen", :area_code => "7736")
+ AreaCode.create(:country => germany, :name => "Steisslingen", :area_code => "7738")
+ AreaCode.create(:country => germany, :name => "Hilzingen", :area_code => "7739")
+ AreaCode.create(:country => germany, :name => "Tiengen Hochrhein", :area_code => "7741")
+ AreaCode.create(:country => germany, :name => "Klettgau", :area_code => "7742")
+ AreaCode.create(:country => germany, :name => "Ühlingen-Birkendorf", :area_code => "7743")
+ AreaCode.create(:country => germany, :name => "Stühlingen", :area_code => "7744")
+ AreaCode.create(:country => germany, :name => "Jestetten", :area_code => "7745")
+ AreaCode.create(:country => germany, :name => "Wutöschingen", :area_code => "7746")
+ AreaCode.create(:country => germany, :name => "Berau", :area_code => "7747")
+ AreaCode.create(:country => germany, :name => "Grafenhausen Hochschwarzw", :area_code => "7748")
+ AreaCode.create(:country => germany, :name => "Waldshut", :area_code => "7751")
+ AreaCode.create(:country => germany, :name => "Albbruck", :area_code => "7753")
+ AreaCode.create(:country => germany, :name => "Görwihl", :area_code => "7754")
+ AreaCode.create(:country => germany, :name => "Weilheim Kr Waldshut", :area_code => "7755")
+ AreaCode.create(:country => germany, :name => "Bad Säckingen", :area_code => "7761")
+ AreaCode.create(:country => germany, :name => "Wehr Baden", :area_code => "7762")
+ AreaCode.create(:country => germany, :name => "Murg", :area_code => "7763")
+ AreaCode.create(:country => germany, :name => "Herrischried", :area_code => "7764")
+ AreaCode.create(:country => germany, :name => "Rickenbach Hotzenw", :area_code => "7765")
+ AreaCode.create(:country => germany, :name => "Stockach", :area_code => "7771")
+ AreaCode.create(:country => germany, :name => "Bodman-Ludwigshafen", :area_code => "7773")
+ AreaCode.create(:country => germany, :name => "Eigeltingen", :area_code => "7774")
+ AreaCode.create(:country => germany, :name => "Mühlingen", :area_code => "7775")
+ AreaCode.create(:country => germany, :name => "Sauldorf", :area_code => "7777")
+ AreaCode.create(:country => germany, :name => "Oberkirch Baden", :area_code => "7802")
+ AreaCode.create(:country => germany, :name => "Gengenbach", :area_code => "7803")
+ AreaCode.create(:country => germany, :name => "Oppenau", :area_code => "7804")
+ AreaCode.create(:country => germany, :name => "Appenweier", :area_code => "7805")
+ AreaCode.create(:country => germany, :name => "Bad Peterstal-Griesbach", :area_code => "7806")
+ AreaCode.create(:country => germany, :name => "Neuried Ortenaukreis", :area_code => "7807")
+ AreaCode.create(:country => germany, :name => "Hohberg b Offenburg", :area_code => "7808")
+ AreaCode.create(:country => germany, :name => "Offenburg", :area_code => "781")
+ AreaCode.create(:country => germany, :name => "Lahr Schwarzwald", :area_code => "7821")
+ AreaCode.create(:country => germany, :name => "Ettenheim", :area_code => "7822")
+ AreaCode.create(:country => germany, :name => "Seelbach Schutter", :area_code => "7823")
+ AreaCode.create(:country => germany, :name => "Schwanau", :area_code => "7824")
+ AreaCode.create(:country => germany, :name => "Kippenheim", :area_code => "7825")
+ AreaCode.create(:country => germany, :name => "Schuttertal", :area_code => "7826")
+ AreaCode.create(:country => germany, :name => "Hausach", :area_code => "7831")
+ AreaCode.create(:country => germany, :name => "Haslach im Kinzigtal", :area_code => "7832")
+ AreaCode.create(:country => germany, :name => "Hornberg Schwarzwaldbahn", :area_code => "7833")
+ AreaCode.create(:country => germany, :name => "Wolfach", :area_code => "7834")
+ AreaCode.create(:country => germany, :name => "Zell am Harmersbach", :area_code => "7835")
+ AreaCode.create(:country => germany, :name => "Schiltach", :area_code => "7836")
+ AreaCode.create(:country => germany, :name => "Oberharmersbach", :area_code => "7837")
+ AreaCode.create(:country => germany, :name => "Nordrach", :area_code => "7838")
+ AreaCode.create(:country => germany, :name => "Schapbach", :area_code => "7839")
+ AreaCode.create(:country => germany, :name => "Achern", :area_code => "7841")
+ AreaCode.create(:country => germany, :name => "Kappelrodeck", :area_code => "7842")
+ AreaCode.create(:country => germany, :name => "Renchen", :area_code => "7843")
+ AreaCode.create(:country => germany, :name => "Rheinau", :area_code => "7844")
+ AreaCode.create(:country => germany, :name => "Kehl", :area_code => "7851")
+ AreaCode.create(:country => germany, :name => "Willstätt", :area_code => "7852")
+ AreaCode.create(:country => germany, :name => "Kehl-Bodersweier", :area_code => "7853")
+ AreaCode.create(:country => germany, :name => "Kehl-Goldscheuer", :area_code => "7854")
+ AreaCode.create(:country => germany, :name => "Mainhardt", :area_code => "7903")
+ AreaCode.create(:country => germany, :name => "Ilshofen", :area_code => "7904")
+ AreaCode.create(:country => germany, :name => "Langenburg", :area_code => "7905")
+ AreaCode.create(:country => germany, :name => "Braunsbach", :area_code => "7906")
+ AreaCode.create(:country => germany, :name => "Schwäbisch Hall-Sulzdorf", :area_code => "7907")
+ AreaCode.create(:country => germany, :name => "Schwäbisch Hall", :area_code => "791")
+ AreaCode.create(:country => germany, :name => "Boxberg Baden", :area_code => "7930")
+ AreaCode.create(:country => germany, :name => "Bad Mergentheim", :area_code => "7931")
+ AreaCode.create(:country => germany, :name => "Niederstetten Württ", :area_code => "7932")
+ AreaCode.create(:country => germany, :name => "Creglingen", :area_code => "7933")
+ AreaCode.create(:country => germany, :name => "Weikersheim", :area_code => "7934")
+ AreaCode.create(:country => germany, :name => "Schrozberg", :area_code => "7935")
+ AreaCode.create(:country => germany, :name => "Schrozberg-Bartenstein", :area_code => "7936")
+ AreaCode.create(:country => germany, :name => "Dörzbach", :area_code => "7937")
+ AreaCode.create(:country => germany, :name => "Mulfingen Jagst", :area_code => "7938")
+ AreaCode.create(:country => germany, :name => "Schrozberg-Spielbach", :area_code => "7939")
+ AreaCode.create(:country => germany, :name => "Künzelsau", :area_code => "7940")
+ AreaCode.create(:country => germany, :name => "Öhringen", :area_code => "7941")
+ AreaCode.create(:country => germany, :name => "Neuenstein Württ", :area_code => "7942")
+ AreaCode.create(:country => germany, :name => "Schöntal Jagst", :area_code => "7943")
+ AreaCode.create(:country => germany, :name => "Kupferzell", :area_code => "7944")
+ AreaCode.create(:country => germany, :name => "Wüstenrot", :area_code => "7945")
+ AreaCode.create(:country => germany, :name => "Bretzfeld", :area_code => "7946")
+ AreaCode.create(:country => germany, :name => "Forchtenberg", :area_code => "7947")
+ AreaCode.create(:country => germany, :name => "Öhringen-Ohrnberg", :area_code => "7948")
+ AreaCode.create(:country => germany, :name => "Pfedelbach-Untersteinbach", :area_code => "7949")
+ AreaCode.create(:country => germany, :name => "Schnelldorf", :area_code => "7950")
+ AreaCode.create(:country => germany, :name => "Crailsheim", :area_code => "7951")
+ AreaCode.create(:country => germany, :name => "Gerabronn", :area_code => "7952")
+ AreaCode.create(:country => germany, :name => "Blaufelden", :area_code => "7953")
+ AreaCode.create(:country => germany, :name => "Kirchberg an der Jagst", :area_code => "7954")
+ AreaCode.create(:country => germany, :name => "Wallhausen Württ", :area_code => "7955")
+ AreaCode.create(:country => germany, :name => "Kressberg", :area_code => "7957")
+ AreaCode.create(:country => germany, :name => "Rot Am See-Brettheim", :area_code => "7958")
+ AreaCode.create(:country => germany, :name => "Frankenhardt", :area_code => "7959")
+ AreaCode.create(:country => germany, :name => "Ellwangen Jagst", :area_code => "7961")
+ AreaCode.create(:country => germany, :name => "Fichtenau", :area_code => "7962")
+ AreaCode.create(:country => germany, :name => "Adelmannsfelden", :area_code => "7963")
+ AreaCode.create(:country => germany, :name => "Stödtlen", :area_code => "7964")
+ AreaCode.create(:country => germany, :name => "Ellwangen-Röhlingen", :area_code => "7965")
+ AreaCode.create(:country => germany, :name => "Unterschneidheim", :area_code => "7966")
+ AreaCode.create(:country => germany, :name => "Jagstzell", :area_code => "7967")
+ AreaCode.create(:country => germany, :name => "Gaildorf", :area_code => "7971")
+ AreaCode.create(:country => germany, :name => "Gschwend b Gaildorf", :area_code => "7972")
+ AreaCode.create(:country => germany, :name => "Obersontheim", :area_code => "7973")
+ AreaCode.create(:country => germany, :name => "Bühlerzell", :area_code => "7974")
+ AreaCode.create(:country => germany, :name => "Untergröningen", :area_code => "7975")
+ AreaCode.create(:country => germany, :name => "Sulzbach-Laufen", :area_code => "7976")
+ AreaCode.create(:country => germany, :name => "Oberrot b Gaildorf", :area_code => "7977")
+ AreaCode.create(:country => germany, :name => "Weyarn", :area_code => "8020")
+ AreaCode.create(:country => germany, :name => "Waakirchen", :area_code => "8021")
+ AreaCode.create(:country => germany, :name => "Tegernsee", :area_code => "8022")
+ AreaCode.create(:country => germany, :name => "Bayrischzell", :area_code => "8023")
+ AreaCode.create(:country => germany, :name => "Holzkirchen", :area_code => "8024")
+ AreaCode.create(:country => germany, :name => "Miesbach", :area_code => "8025")
+ AreaCode.create(:country => germany, :name => "Hausham", :area_code => "8026")
+ AreaCode.create(:country => germany, :name => "Dietramszell", :area_code => "8027")
+ AreaCode.create(:country => germany, :name => "Fischbachau", :area_code => "8028")
+ AreaCode.create(:country => germany, :name => "Kreuth b Tegernsee", :area_code => "8029")
+ AreaCode.create(:country => germany, :name => "Rosenheim Oberbay", :area_code => "8031")
+ AreaCode.create(:country => germany, :name => "Rohrdorf Kr Rosenheim", :area_code => "8032")
+ AreaCode.create(:country => germany, :name => "Oberaudorf", :area_code => "8033")
+ AreaCode.create(:country => germany, :name => "Brannenburg", :area_code => "8034")
+ AreaCode.create(:country => germany, :name => "Raubling", :area_code => "8035")
+ AreaCode.create(:country => germany, :name => "Stephanskirchen Simssee", :area_code => "8036")
+ AreaCode.create(:country => germany, :name => "Vogtareuth", :area_code => "8038")
+ AreaCode.create(:country => germany, :name => "Rott a Inn", :area_code => "8039")
+ AreaCode.create(:country => germany, :name => "Bad Tölz", :area_code => "8041")
+ AreaCode.create(:country => germany, :name => "Lenggries", :area_code => "8042")
+ AreaCode.create(:country => germany, :name => "Jachenau", :area_code => "8043")
+ AreaCode.create(:country => germany, :name => "Lenggries-Fall", :area_code => "8045")
+ AreaCode.create(:country => germany, :name => "Bad Heilbrunn", :area_code => "8046")
+ AreaCode.create(:country => germany, :name => "Prien a Chiemsee", :area_code => "8051")
+ AreaCode.create(:country => germany, :name => "Aschau i Chiemgau", :area_code => "8052")
+ AreaCode.create(:country => germany, :name => "Bad Endorf", :area_code => "8053")
+ AreaCode.create(:country => germany, :name => "Breitbrunn a Chiemsee", :area_code => "8054")
+ AreaCode.create(:country => germany, :name => "Halfing", :area_code => "8055")
+ AreaCode.create(:country => germany, :name => "Eggstätt", :area_code => "8056")
+ AreaCode.create(:country => germany, :name => "Aschau-Sachrang", :area_code => "8057")
+ AreaCode.create(:country => germany, :name => "Bad Aibling", :area_code => "8061")
+ AreaCode.create(:country => germany, :name => "Bruckmühl Mangfall", :area_code => "8062")
+ AreaCode.create(:country => germany, :name => "Feldkirchen-Westerham", :area_code => "8063")
+ AreaCode.create(:country => germany, :name => "Au b Bad Aibling", :area_code => "8064")
+ AreaCode.create(:country => germany, :name => "Tuntenhausen-Schönau", :area_code => "8065")
+ AreaCode.create(:country => germany, :name => "Bad Feilnbach", :area_code => "8066")
+ AreaCode.create(:country => germany, :name => "Tuntenhausen", :area_code => "8067")
+ AreaCode.create(:country => germany, :name => "Wasserburg a Inn", :area_code => "8071")
+ AreaCode.create(:country => germany, :name => "Haag i OB", :area_code => "8072")
+ AreaCode.create(:country => germany, :name => "Gars a Inn", :area_code => "8073")
+ AreaCode.create(:country => germany, :name => "Schnaitsee", :area_code => "8074")
+ AreaCode.create(:country => germany, :name => "Amerang", :area_code => "8075")
+ AreaCode.create(:country => germany, :name => "Pfaffing", :area_code => "8076")
+ AreaCode.create(:country => germany, :name => "Dorfen Stadt", :area_code => "8081")
+ AreaCode.create(:country => germany, :name => "Schwindegg", :area_code => "8082")
+ AreaCode.create(:country => germany, :name => "Isen", :area_code => "8083")
+ AreaCode.create(:country => germany, :name => "Taufkirchen Vils", :area_code => "8084")
+ AreaCode.create(:country => germany, :name => "Sankt Wolfgang", :area_code => "8085")
+ AreaCode.create(:country => germany, :name => "Buchbach Oberbay", :area_code => "8086")
+ AreaCode.create(:country => germany, :name => "Kirchseeon", :area_code => "8091")
+ AreaCode.create(:country => germany, :name => "Grafing b München", :area_code => "8092")
+ AreaCode.create(:country => germany, :name => "Glonn Kr Ebersberg", :area_code => "8093")
+ AreaCode.create(:country => germany, :name => "Steinhöring", :area_code => "8094")
+ AreaCode.create(:country => germany, :name => "Aying", :area_code => "8095")
+ AreaCode.create(:country => germany, :name => "Höhenkirchen-Siegertsbrunn", :area_code => "8102")
+ AreaCode.create(:country => germany, :name => "Sauerlach", :area_code => "8104")
+ AreaCode.create(:country => germany, :name => "Gilching", :area_code => "8105")
+ AreaCode.create(:country => germany, :name => "Vaterstetten", :area_code => "8106")
+ AreaCode.create(:country => germany, :name => "Hallbergmoos", :area_code => "811")
+ AreaCode.create(:country => germany, :name => "Markt Schwaben", :area_code => "8121")
+ AreaCode.create(:country => germany, :name => "Erding", :area_code => "8122")
+ AreaCode.create(:country => germany, :name => "Moosinning", :area_code => "8123")
+ AreaCode.create(:country => germany, :name => "Forstern Oberbay", :area_code => "8124")
+ AreaCode.create(:country => germany, :name => "Dachau", :area_code => "8131")
+ AreaCode.create(:country => germany, :name => "Haimhausen Oberbay", :area_code => "8133")
+ AreaCode.create(:country => germany, :name => "Odelzhausen", :area_code => "8134")
+ AreaCode.create(:country => germany, :name => "Sulzemoos", :area_code => "8135")
+ AreaCode.create(:country => germany, :name => "Markt Indersdorf", :area_code => "8136")
+ AreaCode.create(:country => germany, :name => "Petershausen", :area_code => "8137")
+ AreaCode.create(:country => germany, :name => "Schwabhausen b Dachau", :area_code => "8138")
+ AreaCode.create(:country => germany, :name => "Röhrmoos", :area_code => "8139")
+ AreaCode.create(:country => germany, :name => "Fürstenfeldbruck", :area_code => "8141")
+ AreaCode.create(:country => germany, :name => "Olching", :area_code => "8142")
+ AreaCode.create(:country => germany, :name => "Inning a Ammersee", :area_code => "8143")
+ AreaCode.create(:country => germany, :name => "Grafrath", :area_code => "8144")
+ AreaCode.create(:country => germany, :name => "Mammendorf", :area_code => "8145")
+ AreaCode.create(:country => germany, :name => "Moorenweis", :area_code => "8146")
+ AreaCode.create(:country => germany, :name => "Starnberg", :area_code => "8151")
+ AreaCode.create(:country => germany, :name => "Herrsching a Ammersee", :area_code => "8152")
+ AreaCode.create(:country => germany, :name => "Wessling", :area_code => "8153")
+ AreaCode.create(:country => germany, :name => "Feldafing", :area_code => "8157")
+ AreaCode.create(:country => germany, :name => "Tutzing", :area_code => "8158")
+ AreaCode.create(:country => germany, :name => "Freising", :area_code => "8161")
+ AreaCode.create(:country => germany, :name => "Neufahrn b Freising", :area_code => "8165")
+ AreaCode.create(:country => germany, :name => "Allershausen Oberbay", :area_code => "8166")
+ AreaCode.create(:country => germany, :name => "Zolling", :area_code => "8167")
+ AreaCode.create(:country => germany, :name => "Attenkirchen", :area_code => "8168")
+ AreaCode.create(:country => germany, :name => "Straßlach-Dingharting", :area_code => "8170")
+ AreaCode.create(:country => germany, :name => "Wolfratshausen", :area_code => "8171")
+ AreaCode.create(:country => germany, :name => "Egling b Wolfratshausen", :area_code => "8176")
+ AreaCode.create(:country => germany, :name => "Münsing Starnberger See", :area_code => "8177")
+ AreaCode.create(:country => germany, :name => "Icking", :area_code => "8178")
+ AreaCode.create(:country => germany, :name => "Eurasburg a d Loisach", :area_code => "8179")
+ AreaCode.create(:country => germany, :name => "Landsberg a Lech", :area_code => "8191")
+ AreaCode.create(:country => germany, :name => "Schondorf a Ammersee", :area_code => "8192")
+ AreaCode.create(:country => germany, :name => "Geltendorf", :area_code => "8193")
+ AreaCode.create(:country => germany, :name => "Vilgertshofen", :area_code => "8194")
+ AreaCode.create(:country => germany, :name => "Weil Kr Landsberg a Lech", :area_code => "8195")
+ AreaCode.create(:country => germany, :name => "Pürgen", :area_code => "8196")
+ AreaCode.create(:country => germany, :name => "Althegnenberg", :area_code => "8202")
+ AreaCode.create(:country => germany, :name => "Grossaitingen", :area_code => "8203")
+ AreaCode.create(:country => germany, :name => "Mickhausen", :area_code => "8204")
+ AreaCode.create(:country => germany, :name => "Dasing", :area_code => "8205")
+ AreaCode.create(:country => germany, :name => "Egling a d Paar", :area_code => "8206")
+ AreaCode.create(:country => germany, :name => "Affing", :area_code => "8207")
+ AreaCode.create(:country => germany, :name => "Eurasburg b Augsburg", :area_code => "8208")
+ AreaCode.create(:country => germany, :name => "Augsburg", :area_code => "821")
+ AreaCode.create(:country => germany, :name => "Günzburg", :area_code => "8221")
+ AreaCode.create(:country => germany, :name => "Burgau Schwab", :area_code => "8222")
+ AreaCode.create(:country => germany, :name => "Ichenhausen", :area_code => "8223")
+ AreaCode.create(:country => germany, :name => "Offingen Donau", :area_code => "8224")
+ AreaCode.create(:country => germany, :name => "Jettingen-Scheppach", :area_code => "8225")
+ AreaCode.create(:country => germany, :name => "Bibertal", :area_code => "8226")
+ AreaCode.create(:country => germany, :name => "Gablingen", :area_code => "8230")
+ AreaCode.create(:country => germany, :name => "Königsbrunn b Augsburg", :area_code => "8231")
+ AreaCode.create(:country => germany, :name => "Schwabmünchen", :area_code => "8232")
+ AreaCode.create(:country => germany, :name => "Kissing", :area_code => "8233")
+ AreaCode.create(:country => germany, :name => "Bobingen", :area_code => "8234")
+ AreaCode.create(:country => germany, :name => "Fischach", :area_code => "8236")
+ AreaCode.create(:country => germany, :name => "Aindling", :area_code => "8237")
+ AreaCode.create(:country => germany, :name => "Gessertshausen", :area_code => "8238")
+ AreaCode.create(:country => germany, :name => "Langenneufnach", :area_code => "8239")
+ AreaCode.create(:country => germany, :name => "Buchloe", :area_code => "8241")
+ AreaCode.create(:country => germany, :name => "Fuchstal", :area_code => "8243")
+ AreaCode.create(:country => germany, :name => "Türkheim Wertach", :area_code => "8245")
+ AreaCode.create(:country => germany, :name => "Waal", :area_code => "8246")
+ AreaCode.create(:country => germany, :name => "Bad Wörishofen", :area_code => "8247")
+ AreaCode.create(:country => germany, :name => "Lamerdingen", :area_code => "8248")
+ AreaCode.create(:country => germany, :name => "Ettringen Wertach", :area_code => "8249")
+ AreaCode.create(:country => germany, :name => "Hilgertshausen-Tandern", :area_code => "8250")
+ AreaCode.create(:country => germany, :name => "Aichach", :area_code => "8251")
+ AreaCode.create(:country => germany, :name => "Schrobenhausen", :area_code => "8252")
+ AreaCode.create(:country => germany, :name => "Pöttmes", :area_code => "8253")
+ AreaCode.create(:country => germany, :name => "Altomünster", :area_code => "8254")
+ AreaCode.create(:country => germany, :name => "Inchenhofen", :area_code => "8257")
+ AreaCode.create(:country => germany, :name => "Sielenbach", :area_code => "8258")
+ AreaCode.create(:country => germany, :name => "Schiltberg", :area_code => "8259")
+ AreaCode.create(:country => germany, :name => "Mindelheim", :area_code => "8261")
+ AreaCode.create(:country => germany, :name => "Mittelneufnach", :area_code => "8262")
+ AreaCode.create(:country => germany, :name => "Breitenbrunn Schwab", :area_code => "8263")
+ AreaCode.create(:country => germany, :name => "Pfaffenhausen Schwab", :area_code => "8265")
+ AreaCode.create(:country => germany, :name => "Kirchheim i Schw", :area_code => "8266")
+ AreaCode.create(:country => germany, :name => "Dirlewang", :area_code => "8267")
+ AreaCode.create(:country => germany, :name => "Tussenhausen", :area_code => "8268")
+ AreaCode.create(:country => germany, :name => "Unteregg b Mindelheim", :area_code => "8269")
+ AreaCode.create(:country => germany, :name => "Meitingen", :area_code => "8271")
+ AreaCode.create(:country => germany, :name => "Wertingen", :area_code => "8272")
+ AreaCode.create(:country => germany, :name => "Nordendorf", :area_code => "8273")
+ AreaCode.create(:country => germany, :name => "Buttenwiesen", :area_code => "8274")
+ AreaCode.create(:country => germany, :name => "Baar Schwaben", :area_code => "8276")
+ AreaCode.create(:country => germany, :name => "Thannhausen Schwab", :area_code => "8281")
+ AreaCode.create(:country => germany, :name => "Krumbach Schwaben", :area_code => "8282")
+ AreaCode.create(:country => germany, :name => "Neuburg a d Kammel", :area_code => "8283")
+ AreaCode.create(:country => germany, :name => "Ziemetshausen", :area_code => "8284")
+ AreaCode.create(:country => germany, :name => "Burtenbach", :area_code => "8285")
+ AreaCode.create(:country => germany, :name => "Zusmarshausen", :area_code => "8291")
+ AreaCode.create(:country => germany, :name => "Dinkelscherben", :area_code => "8292")
+ AreaCode.create(:country => germany, :name => "Welden b Augsburg", :area_code => "8293")
+ AreaCode.create(:country => germany, :name => "Horgau", :area_code => "8294")
+ AreaCode.create(:country => germany, :name => "Altenmünster Schwab", :area_code => "8295")
+ AreaCode.create(:country => germany, :name => "Villenbach", :area_code => "8296")
+ AreaCode.create(:country => germany, :name => "Görisried", :area_code => "8302")
+ AreaCode.create(:country => germany, :name => "Waltenhofen", :area_code => "8303")
+ AreaCode.create(:country => germany, :name => "Wildpoldsried", :area_code => "8304")
+ AreaCode.create(:country => germany, :name => "Ronsberg", :area_code => "8306")
+ AreaCode.create(:country => germany, :name => "Kempten Allgäu", :area_code => "831")
+ AreaCode.create(:country => germany, :name => "Missen-Wilhams", :area_code => "8320")
+ AreaCode.create(:country => germany, :name => "Sonthofen", :area_code => "8321")
+ AreaCode.create(:country => germany, :name => "Oberstdorf", :area_code => "8322")
+ AreaCode.create(:country => germany, :name => "Immenstadt i Allgäu", :area_code => "8323")
+ AreaCode.create(:country => germany, :name => "Hindelang", :area_code => "8324")
+ AreaCode.create(:country => germany, :name => "Oberstaufen-Thalkirchdorf", :area_code => "8325")
+ AreaCode.create(:country => germany, :name => "Fischen i Allgäu", :area_code => "8326")
+ AreaCode.create(:country => germany, :name => "Rettenberg", :area_code => "8327")
+ AreaCode.create(:country => germany, :name => "Balderschwang", :area_code => "8328")
+ AreaCode.create(:country => germany, :name => "Riezlern (Österreich)", :area_code => "8329")
+ AreaCode.create(:country => germany, :name => "Legau", :area_code => "8330")
+ AreaCode.create(:country => germany, :name => "Memmingen", :area_code => "8331")
+ AreaCode.create(:country => germany, :name => "Ottobeuren", :area_code => "8332")
+ AreaCode.create(:country => germany, :name => "Babenhausen Schwab", :area_code => "8333")
+ AreaCode.create(:country => germany, :name => "Bad Grönenbach", :area_code => "8334")
+ AreaCode.create(:country => germany, :name => "Fellheim", :area_code => "8335")
+ AreaCode.create(:country => germany, :name => "Erkheim", :area_code => "8336")
+ AreaCode.create(:country => germany, :name => "Altenstadt Iller", :area_code => "8337")
+ AreaCode.create(:country => germany, :name => "Böhen", :area_code => "8338")
+ AreaCode.create(:country => germany, :name => "Baisweil", :area_code => "8340")
+ AreaCode.create(:country => germany, :name => "Kaufbeuren", :area_code => "8341")
+ AreaCode.create(:country => germany, :name => "Marktoberdorf", :area_code => "8342")
+ AreaCode.create(:country => germany, :name => "Aitrang", :area_code => "8343")
+ AreaCode.create(:country => germany, :name => "Westendorf b Kaufbeuren", :area_code => "8344")
+ AreaCode.create(:country => germany, :name => "Stöttwang", :area_code => "8345")
+ AreaCode.create(:country => germany, :name => "Pforzen", :area_code => "8346")
+ AreaCode.create(:country => germany, :name => "Friesenried", :area_code => "8347")
+ AreaCode.create(:country => germany, :name => "Bidingen", :area_code => "8348")
+ AreaCode.create(:country => germany, :name => "Stötten a Auerberg", :area_code => "8349")
+ AreaCode.create(:country => germany, :name => "Nesselwang", :area_code => "8361")
+ AreaCode.create(:country => germany, :name => "Füssen", :area_code => "8362")
+ AreaCode.create(:country => germany, :name => "Pfronten", :area_code => "8363")
+ AreaCode.create(:country => germany, :name => "Seeg", :area_code => "8364")
+ AreaCode.create(:country => germany, :name => "Wertach", :area_code => "8365")
+ AreaCode.create(:country => germany, :name => "Oy-Mittelberg", :area_code => "8366")
+ AreaCode.create(:country => germany, :name => "Roßhaupten Forggensee", :area_code => "8367")
+ AreaCode.create(:country => germany, :name => "Halblech", :area_code => "8368")
+ AreaCode.create(:country => germany, :name => "Rückholz", :area_code => "8369")
+ AreaCode.create(:country => germany, :name => "Wiggensbach", :area_code => "8370")
+ AreaCode.create(:country => germany, :name => "Obergünzburg", :area_code => "8372")
+ AreaCode.create(:country => germany, :name => "Altusried", :area_code => "8373")
+ AreaCode.create(:country => germany, :name => "Dietmannsried", :area_code => "8374")
+ AreaCode.create(:country => germany, :name => "Weitnau", :area_code => "8375")
+ AreaCode.create(:country => germany, :name => "Sulzberg Allgäu", :area_code => "8376")
+ AreaCode.create(:country => germany, :name => "Unterthingau", :area_code => "8377")
+ AreaCode.create(:country => germany, :name => "Buchenberg b Kempten", :area_code => "8378")
+ AreaCode.create(:country => germany, :name => "Waltenhofen-Oberdorf", :area_code => "8379")
+ AreaCode.create(:country => germany, :name => "Achberg", :area_code => "8380")
+ AreaCode.create(:country => germany, :name => "Lindenberg i Allgäu", :area_code => "8381")
+ AreaCode.create(:country => germany, :name => "Lindau Bodensee", :area_code => "8382")
+ AreaCode.create(:country => germany, :name => "Grünenbach Allgäu", :area_code => "8383")
+ AreaCode.create(:country => germany, :name => "Röthenbach Allgäu", :area_code => "8384")
+ AreaCode.create(:country => germany, :name => "Hergatz", :area_code => "8385")
+ AreaCode.create(:country => germany, :name => "Oberstaufen", :area_code => "8386")
+ AreaCode.create(:country => germany, :name => "Weiler-Simmerberg", :area_code => "8387")
+ AreaCode.create(:country => germany, :name => "Hergensweiler", :area_code => "8388")
+ AreaCode.create(:country => germany, :name => "Weissensberg", :area_code => "8389")
+ AreaCode.create(:country => germany, :name => "Markt Rettenbach", :area_code => "8392")
+ AreaCode.create(:country => germany, :name => "Holzgünz", :area_code => "8393")
+ AreaCode.create(:country => germany, :name => "Lautrach", :area_code => "8394")
+ AreaCode.create(:country => germany, :name => "Tannheim Württ", :area_code => "8395")
+ AreaCode.create(:country => germany, :name => "Münchsmünster", :area_code => "8402")
+ AreaCode.create(:country => germany, :name => "Pförring", :area_code => "8403")
+ AreaCode.create(:country => germany, :name => "Oberdolling", :area_code => "8404")
+ AreaCode.create(:country => germany, :name => "Stammham b Ingolstadt", :area_code => "8405")
+ AreaCode.create(:country => germany, :name => "Böhmfeld", :area_code => "8406")
+ AreaCode.create(:country => germany, :name => "Grossmehring", :area_code => "8407")
+ AreaCode.create(:country => germany, :name => "Ingolstadt Donau", :area_code => "841")
+ AreaCode.create(:country => germany, :name => "Eichstätt Bay", :area_code => "8421")
+ AreaCode.create(:country => germany, :name => "Dollnstein", :area_code => "8422")
+ AreaCode.create(:country => germany, :name => "Titting", :area_code => "8423")
+ AreaCode.create(:country => germany, :name => "Nassenfels", :area_code => "8424")
+ AreaCode.create(:country => germany, :name => "Walting Kr Eichstätt", :area_code => "8426")
+ AreaCode.create(:country => germany, :name => "Wellheim", :area_code => "8427")
+ AreaCode.create(:country => germany, :name => "Neuburg a d Donau", :area_code => "8431")
+ AreaCode.create(:country => germany, :name => "Burgheim", :area_code => "8432")
+ AreaCode.create(:country => germany, :name => "Königsmoos", :area_code => "8433")
+ AreaCode.create(:country => germany, :name => "Rennertshofen", :area_code => "8434")
+ AreaCode.create(:country => germany, :name => "Ehekirchen", :area_code => "8435")
+ AreaCode.create(:country => germany, :name => "Pfaffenhofen a d Ilm", :area_code => "8441")
+ AreaCode.create(:country => germany, :name => "Wolnzach", :area_code => "8442")
+ AreaCode.create(:country => germany, :name => "Hohenwart Paar", :area_code => "8443")
+ AreaCode.create(:country => germany, :name => "Schweitenkirchen", :area_code => "8444")
+ AreaCode.create(:country => germany, :name => "Gerolsbach", :area_code => "8445")
+ AreaCode.create(:country => germany, :name => "Pörnbach", :area_code => "8446")
+ AreaCode.create(:country => germany, :name => "Ingolstadt-Zuchering", :area_code => "8450")
+ AreaCode.create(:country => germany, :name => "Geisenfeld", :area_code => "8452")
+ AreaCode.create(:country => germany, :name => "Reichertshofen Oberbay", :area_code => "8453")
+ AreaCode.create(:country => germany, :name => "Karlshuld", :area_code => "8454")
+ AreaCode.create(:country => germany, :name => "Lenting", :area_code => "8456")
+ AreaCode.create(:country => germany, :name => "Vohburg a d Donau", :area_code => "8457")
+ AreaCode.create(:country => germany, :name => "Gaimersheim", :area_code => "8458")
+ AreaCode.create(:country => germany, :name => "Manching", :area_code => "8459")
+ AreaCode.create(:country => germany, :name => "Berching-Holnstein", :area_code => "8460")
+ AreaCode.create(:country => germany, :name => "Beilngries", :area_code => "8461")
+ AreaCode.create(:country => germany, :name => "Berching", :area_code => "8462")
+ AreaCode.create(:country => germany, :name => "Greding", :area_code => "8463")
+ AreaCode.create(:country => germany, :name => "Dietfurt a d Altmühl", :area_code => "8464")
+ AreaCode.create(:country => germany, :name => "Kipfenberg", :area_code => "8465")
+ AreaCode.create(:country => germany, :name => "Denkendorf Oberbay", :area_code => "8466")
+ AreaCode.create(:country => germany, :name => "Kinding", :area_code => "8467")
+ AreaCode.create(:country => germany, :name => "Altmannstein-Pondorf", :area_code => "8468")
+ AreaCode.create(:country => germany, :name => "Freystadt-Burggriesbach", :area_code => "8469")
+ AreaCode.create(:country => germany, :name => "Thyrnau", :area_code => "8501")
+ AreaCode.create(:country => germany, :name => "Fürstenzell", :area_code => "8502")
+ AreaCode.create(:country => germany, :name => "Neuhaus a Inn", :area_code => "8503")
+ AreaCode.create(:country => germany, :name => "Tittling", :area_code => "8504")
+ AreaCode.create(:country => germany, :name => "Hutthurm", :area_code => "8505")
+ AreaCode.create(:country => germany, :name => "Bad Höhenstadt", :area_code => "8506")
+ AreaCode.create(:country => germany, :name => "Neuburg a Inn", :area_code => "8507")
+ AreaCode.create(:country => germany, :name => "Ruderting", :area_code => "8509")
+ AreaCode.create(:country => germany, :name => "Passau", :area_code => "851")
+ AreaCode.create(:country => germany, :name => "Pocking", :area_code => "8531")
+ AreaCode.create(:country => germany, :name => "Griesbach i Rottal", :area_code => "8532")
+ AreaCode.create(:country => germany, :name => "Rotthalmünster", :area_code => "8533")
+ AreaCode.create(:country => germany, :name => "Tettenweis", :area_code => "8534")
+ AreaCode.create(:country => germany, :name => "Haarbach", :area_code => "8535")
+ AreaCode.create(:country => germany, :name => "Kößlarn", :area_code => "8536")
+ AreaCode.create(:country => germany, :name => "Bad Füssing-Aigen", :area_code => "8537")
+ AreaCode.create(:country => germany, :name => "Pocking-Hartkirchen", :area_code => "8538")
+ AreaCode.create(:country => germany, :name => "Vilshofen Niederbay", :area_code => "8541")
+ AreaCode.create(:country => germany, :name => "Ortenburg", :area_code => "8542")
+ AreaCode.create(:country => germany, :name => "Aidenbach", :area_code => "8543")
+ AreaCode.create(:country => germany, :name => "Eging a See", :area_code => "8544")
+ AreaCode.create(:country => germany, :name => "Hofkirchen Bay", :area_code => "8545")
+ AreaCode.create(:country => germany, :name => "Windorf-Otterskirchen", :area_code => "8546")
+ AreaCode.create(:country => germany, :name => "Osterhofen-Gergweis", :area_code => "8547")
+ AreaCode.create(:country => germany, :name => "Vilshofen-Sandbach", :area_code => "8548")
+ AreaCode.create(:country => germany, :name => "Vilshofen-Pleinting", :area_code => "8549")
+ AreaCode.create(:country => germany, :name => "Philippsreut", :area_code => "8550")
+ AreaCode.create(:country => germany, :name => "Freyung", :area_code => "8551")
+ AreaCode.create(:country => germany, :name => "Grafenau Niederbay", :area_code => "8552")
+ AreaCode.create(:country => germany, :name => "Spiegelau", :area_code => "8553")
+ AreaCode.create(:country => germany, :name => "Schönberg Niederbay", :area_code => "8554")
+ AreaCode.create(:country => germany, :name => "Perlesreut", :area_code => "8555")
+ AreaCode.create(:country => germany, :name => "Haidmühle", :area_code => "8556")
+ AreaCode.create(:country => germany, :name => "Mauth", :area_code => "8557")
+ AreaCode.create(:country => germany, :name => "Hohenau Niederbay", :area_code => "8558")
+ AreaCode.create(:country => germany, :name => "Pfarrkirchen Niederbay", :area_code => "8561")
+ AreaCode.create(:country => germany, :name => "Triftern", :area_code => "8562")
+ AreaCode.create(:country => germany, :name => "Bad Birnbach Rottal", :area_code => "8563")
+ AreaCode.create(:country => germany, :name => "Johanniskirchen", :area_code => "8564")
+ AreaCode.create(:country => germany, :name => "Dietersburg-Baumgarten", :area_code => "8565")
+ AreaCode.create(:country => germany, :name => "Simbach a Inn", :area_code => "8571")
+ AreaCode.create(:country => germany, :name => "Tann Niederbay", :area_code => "8572")
+ AreaCode.create(:country => germany, :name => "Ering", :area_code => "8573")
+ AreaCode.create(:country => germany, :name => "Wittibreut", :area_code => "8574")
+ AreaCode.create(:country => germany, :name => "Waldkirchen Niederbay", :area_code => "8581")
+ AreaCode.create(:country => germany, :name => "Röhrnbach", :area_code => "8582")
+ AreaCode.create(:country => germany, :name => "Neureichenau", :area_code => "8583")
+ AreaCode.create(:country => germany, :name => "Breitenberg Niederbay", :area_code => "8584")
+ AreaCode.create(:country => germany, :name => "Grainet", :area_code => "8585")
+ AreaCode.create(:country => germany, :name => "Hauzenberg", :area_code => "8586")
+ AreaCode.create(:country => germany, :name => "Obernzell", :area_code => "8591")
+ AreaCode.create(:country => germany, :name => "Wegscheid Niederbay", :area_code => "8592")
+ AreaCode.create(:country => germany, :name => "Untergriesbach", :area_code => "8593")
+ AreaCode.create(:country => germany, :name => "Traunstein", :area_code => "861")
+ AreaCode.create(:country => germany, :name => "Trostberg", :area_code => "8621")
+ AreaCode.create(:country => germany, :name => "Tacherting- Peterskirchen", :area_code => "8622")
+ AreaCode.create(:country => germany, :name => "Kirchweidach", :area_code => "8623")
+ AreaCode.create(:country => germany, :name => "Obing", :area_code => "8624")
+ AreaCode.create(:country => germany, :name => "Kienberg Oberbay", :area_code => "8628")
+ AreaCode.create(:country => germany, :name => "Palling", :area_code => "8629")
+ AreaCode.create(:country => germany, :name => "Oberneukirchen", :area_code => "8630")
+ AreaCode.create(:country => germany, :name => "Mühldorf a Inn", :area_code => "8631")
+ AreaCode.create(:country => germany, :name => "Tüßling", :area_code => "8633")
+ AreaCode.create(:country => germany, :name => "Garching a d Alz", :area_code => "8634")
+ AreaCode.create(:country => germany, :name => "Pleiskirchen", :area_code => "8635")
+ AreaCode.create(:country => germany, :name => "Ampfing", :area_code => "8636")
+ AreaCode.create(:country => germany, :name => "Lohkirchen", :area_code => "8637")
+ AreaCode.create(:country => germany, :name => "Waldkraiburg", :area_code => "8638")
+ AreaCode.create(:country => germany, :name => "Neumarkt-Sankt Veit", :area_code => "8639")
+ AreaCode.create(:country => germany, :name => "Reit Im Winkl", :area_code => "8640")
+ AreaCode.create(:country => germany, :name => "Grassau Kr Traunstein", :area_code => "8641")
+ AreaCode.create(:country => germany, :name => "Übersee", :area_code => "8642")
+ AreaCode.create(:country => germany, :name => "Schleching", :area_code => "8649")
+ AreaCode.create(:country => germany, :name => "Marktschellenberg", :area_code => "8650")
+ AreaCode.create(:country => germany, :name => "Bad Reichenhall", :area_code => "8651")
+ AreaCode.create(:country => germany, :name => "Berchtesgaden", :area_code => "8652")
+ AreaCode.create(:country => germany, :name => "Freilassing", :area_code => "8654")
+ AreaCode.create(:country => germany, :name => "Anger", :area_code => "8656")
+ AreaCode.create(:country => germany, :name => "Ramsau b Berchtesgaden", :area_code => "8657")
+ AreaCode.create(:country => germany, :name => "Grabenstätt Chiemsee", :area_code => "8661")
+ AreaCode.create(:country => germany, :name => "Siegsdorf Kr Traunstein", :area_code => "8662")
+ AreaCode.create(:country => germany, :name => "Ruhpolding", :area_code => "8663")
+ AreaCode.create(:country => germany, :name => "Chieming", :area_code => "8664")
+ AreaCode.create(:country => germany, :name => "Inzell", :area_code => "8665")
+ AreaCode.create(:country => germany, :name => "Teisendorf", :area_code => "8666")
+ AreaCode.create(:country => germany, :name => "Seeon-Seebruck", :area_code => "8667")
+ AreaCode.create(:country => germany, :name => "Traunreut", :area_code => "8669")
+ AreaCode.create(:country => germany, :name => "Reischach Kr Altötting", :area_code => "8670")
+ AreaCode.create(:country => germany, :name => "Altötting", :area_code => "8671")
+ AreaCode.create(:country => germany, :name => "Burghausen Salzach", :area_code => "8677")
+ AreaCode.create(:country => germany, :name => "Marktl", :area_code => "8678")
+ AreaCode.create(:country => germany, :name => "Burgkirchen a d Alz", :area_code => "8679")
+ AreaCode.create(:country => germany, :name => "Waging a See", :area_code => "8681")
+ AreaCode.create(:country => germany, :name => "Laufen Salzach", :area_code => "8682")
+ AreaCode.create(:country => germany, :name => "Tittmoning", :area_code => "8683")
+ AreaCode.create(:country => germany, :name => "Fridolfing", :area_code => "8684")
+ AreaCode.create(:country => germany, :name => "Kirchanschöring", :area_code => "8685")
+ AreaCode.create(:country => germany, :name => "Petting", :area_code => "8686")
+ AreaCode.create(:country => germany, :name => "Taching-Tengling", :area_code => "8687")
+ AreaCode.create(:country => germany, :name => "Wörth a d Isar", :area_code => "8702")
+ AreaCode.create(:country => germany, :name => "Essenbach", :area_code => "8703")
+ AreaCode.create(:country => germany, :name => "Altdorf-Pfettrach", :area_code => "8704")
+ AreaCode.create(:country => germany, :name => "Altfraunhofen", :area_code => "8705")
+ AreaCode.create(:country => germany, :name => "Vilsheim", :area_code => "8706")
+ AreaCode.create(:country => germany, :name => "Adlkofen", :area_code => "8707")
+ AreaCode.create(:country => germany, :name => "Weihmichl-Unterneuhausen", :area_code => "8708")
+ AreaCode.create(:country => germany, :name => "Eching Niederbay", :area_code => "8709")
+ AreaCode.create(:country => germany, :name => "Landshut", :area_code => "871")
+ AreaCode.create(:country => germany, :name => "Eggenfelden", :area_code => "8721")
+ AreaCode.create(:country => germany, :name => "Gangkofen", :area_code => "8722")
+ AreaCode.create(:country => germany, :name => "Arnstorf", :area_code => "8723")
+ AreaCode.create(:country => germany, :name => "Massing", :area_code => "8724")
+ AreaCode.create(:country => germany, :name => "Wurmannsquick", :area_code => "8725")
+ AreaCode.create(:country => germany, :name => "Schönau Niederbay", :area_code => "8726")
+ AreaCode.create(:country => germany, :name => "Falkenberg Niederbay", :area_code => "8727")
+ AreaCode.create(:country => germany, :name => "Geratskirchen", :area_code => "8728")
+ AreaCode.create(:country => germany, :name => "Dingolfing", :area_code => "8731")
+ AreaCode.create(:country => germany, :name => "Frontenhausen", :area_code => "8732")
+ AreaCode.create(:country => germany, :name => "Mengkofen", :area_code => "8733")
+ AreaCode.create(:country => germany, :name => "Reisbach Niederbay", :area_code => "8734")
+ AreaCode.create(:country => germany, :name => "Gangkofen-Kollbach", :area_code => "8735")
+ AreaCode.create(:country => germany, :name => "Vilsbiburg", :area_code => "8741")
+ AreaCode.create(:country => germany, :name => "Velden Vils", :area_code => "8742")
+ AreaCode.create(:country => germany, :name => "Geisenhausen", :area_code => "8743")
+ AreaCode.create(:country => germany, :name => "Gerzen", :area_code => "8744")
+ AreaCode.create(:country => germany, :name => "Bodenkirchen", :area_code => "8745")
+ AreaCode.create(:country => germany, :name => "Mainburg", :area_code => "8751")
+ AreaCode.create(:country => germany, :name => "Au i d Hallertau", :area_code => "8752")
+ AreaCode.create(:country => germany, :name => "Elsendorf Niederbay", :area_code => "8753")
+ AreaCode.create(:country => germany, :name => "Volkenschwand", :area_code => "8754")
+ AreaCode.create(:country => germany, :name => "Nandlstadt", :area_code => "8756")
+ AreaCode.create(:country => germany, :name => "Moosburg a d Isar", :area_code => "8761")
+ AreaCode.create(:country => germany, :name => "Wartenberg Oberbay", :area_code => "8762")
+ AreaCode.create(:country => germany, :name => "Mauern Kr Freising", :area_code => "8764")
+ AreaCode.create(:country => germany, :name => "Bruckberg Niederbay", :area_code => "8765")
+ AreaCode.create(:country => germany, :name => "Gammelsdorf", :area_code => "8766")
+ AreaCode.create(:country => germany, :name => "Ergoldsbach", :area_code => "8771")
+ AreaCode.create(:country => germany, :name => "Mallersdorf-Pfaffenberg", :area_code => "8772")
+ AreaCode.create(:country => germany, :name => "Neufahrn i NB", :area_code => "8773")
+ AreaCode.create(:country => germany, :name => "Bayerbach b Ergoldsbach", :area_code => "8774")
+ AreaCode.create(:country => germany, :name => "Rottenburg a d Laaber", :area_code => "8781")
+ AreaCode.create(:country => germany, :name => "Pfeffenhausen", :area_code => "8782")
+ AreaCode.create(:country => germany, :name => "Rohr i NB", :area_code => "8783")
+ AreaCode.create(:country => germany, :name => "Hohenthann", :area_code => "8784")
+ AreaCode.create(:country => germany, :name => "Rottenburg-Oberroning", :area_code => "8785")
+ AreaCode.create(:country => germany, :name => "Seeshaupt", :area_code => "8801")
+ AreaCode.create(:country => germany, :name => "Huglfing", :area_code => "8802")
+ AreaCode.create(:country => germany, :name => "Peissenberg", :area_code => "8803")
+ AreaCode.create(:country => germany, :name => "Hohenpeissenberg", :area_code => "8805")
+ AreaCode.create(:country => germany, :name => "Utting a Ammersee", :area_code => "8806")
+ AreaCode.create(:country => germany, :name => "Dießen a Ammersee", :area_code => "8807")
+ AreaCode.create(:country => germany, :name => "Pähl", :area_code => "8808")
+ AreaCode.create(:country => germany, :name => "Wessobrunn", :area_code => "8809")
+ AreaCode.create(:country => germany, :name => "Weilheim i OB", :area_code => "881")
+ AreaCode.create(:country => germany, :name => "Garmisch-Partenkirchen", :area_code => "8821")
+ AreaCode.create(:country => germany, :name => "Oberammergau", :area_code => "8822")
+ AreaCode.create(:country => germany, :name => "Mittenwald", :area_code => "8823")
+ AreaCode.create(:country => germany, :name => "Oberau Loisach", :area_code => "8824")
+ AreaCode.create(:country => germany, :name => "Krün", :area_code => "8825")
+ AreaCode.create(:country => germany, :name => "Murnau a Staffelsee", :area_code => "8841")
+ AreaCode.create(:country => germany, :name => "Bad Kohlgrub", :area_code => "8845")
+ AreaCode.create(:country => germany, :name => "Uffing a Staffelsee", :area_code => "8846")
+ AreaCode.create(:country => germany, :name => "Obersöchering", :area_code => "8847")
+ AreaCode.create(:country => germany, :name => "Kochel a See", :area_code => "8851")
+ AreaCode.create(:country => germany, :name => "Penzberg", :area_code => "8856")
+ AreaCode.create(:country => germany, :name => "Benediktbeuern", :area_code => "8857")
+ AreaCode.create(:country => germany, :name => "Kochel-Walchensee", :area_code => "8858")
+ AreaCode.create(:country => germany, :name => "Bernbeuren", :area_code => "8860")
+ AreaCode.create(:country => germany, :name => "Schongau", :area_code => "8861")
+ AreaCode.create(:country => germany, :name => "Steingaden Oberbay", :area_code => "8862")
+ AreaCode.create(:country => germany, :name => "Rottenbuch Oberbay", :area_code => "8867")
+ AreaCode.create(:country => germany, :name => "Schwabsoien", :area_code => "8868")
+ AreaCode.create(:country => germany, :name => "Kinsau", :area_code => "8869")
+ AreaCode.create(:country => germany, :name => "München", :area_code => "89")
+ AreaCode.create(:country => germany, :name => "Donauwörth", :area_code => "906")
+ AreaCode.create(:country => germany, :name => "Tapfheim", :area_code => "9070")
+ AreaCode.create(:country => germany, :name => "Dillingen a d Donau", :area_code => "9071")
+ AreaCode.create(:country => germany, :name => "Lauingen Donau", :area_code => "9072")
+ AreaCode.create(:country => germany, :name => "Gundelfingen a d Donau", :area_code => "9073")
+ AreaCode.create(:country => germany, :name => "Höchstädt a d Donau", :area_code => "9074")
+ AreaCode.create(:country => germany, :name => "Glött", :area_code => "9075")
+ AreaCode.create(:country => germany, :name => "Wittislingen", :area_code => "9076")
+ AreaCode.create(:country => germany, :name => "Bachhagel", :area_code => "9077")
+ AreaCode.create(:country => germany, :name => "Mertingen", :area_code => "9078")
+ AreaCode.create(:country => germany, :name => "Harburg Schwaben", :area_code => "9080")
+ AreaCode.create(:country => germany, :name => "Nördlingen", :area_code => "9081")
+ AreaCode.create(:country => germany, :name => "Oettingen i Bay", :area_code => "9082")
+ AreaCode.create(:country => germany, :name => "Möttingen", :area_code => "9083")
+ AreaCode.create(:country => germany, :name => "Bissingen Schwab", :area_code => "9084")
+ AreaCode.create(:country => germany, :name => "Alerheim", :area_code => "9085")
+ AreaCode.create(:country => germany, :name => "Fremdingen", :area_code => "9086")
+ AreaCode.create(:country => germany, :name => "Marktoffingen", :area_code => "9087")
+ AreaCode.create(:country => germany, :name => "Mönchsdeggingen", :area_code => "9088")
+ AreaCode.create(:country => germany, :name => "Bissingen-Unterringingen", :area_code => "9089")
+ AreaCode.create(:country => germany, :name => "Rain Lech", :area_code => "9090")
+ AreaCode.create(:country => germany, :name => "Monheim Schwab", :area_code => "9091")
+ AreaCode.create(:country => germany, :name => "Wemding", :area_code => "9092")
+ AreaCode.create(:country => germany, :name => "Polsingen", :area_code => "9093")
+ AreaCode.create(:country => germany, :name => "Tagmersheim", :area_code => "9094")
+ AreaCode.create(:country => germany, :name => "Marxheim", :area_code => "9097")
+ AreaCode.create(:country => germany, :name => "Kaisheim", :area_code => "9099")
+ AreaCode.create(:country => germany, :name => "Langenzenn", :area_code => "9101")
+ AreaCode.create(:country => germany, :name => "Wilhermsdorf", :area_code => "9102")
+ AreaCode.create(:country => germany, :name => "Cadolzburg", :area_code => "9103")
+ AreaCode.create(:country => germany, :name => "Emskirchen", :area_code => "9104")
+ AreaCode.create(:country => germany, :name => "Grosshabersdorf", :area_code => "9105")
+ AreaCode.create(:country => germany, :name => "Markt Erlbach", :area_code => "9106")
+ AreaCode.create(:country => germany, :name => "Trautskirchen", :area_code => "9107")
+ AreaCode.create(:country => germany, :name => "Nürnberg", :area_code => "911")
+ AreaCode.create(:country => germany, :name => "Leinburg", :area_code => "9120")
+ AreaCode.create(:country => germany, :name => "Schwabach", :area_code => "9122")
+ AreaCode.create(:country => germany, :name => "Lauf a d Pegnitz", :area_code => "9123")
+ AreaCode.create(:country => germany, :name => "Eckental", :area_code => "9126")
+ AreaCode.create(:country => germany, :name => "Rosstal Mittelfr", :area_code => "9127")
+ AreaCode.create(:country => germany, :name => "Feucht", :area_code => "9128")
+ AreaCode.create(:country => germany, :name => "Wendelstein", :area_code => "9129")
+ AreaCode.create(:country => germany, :name => "Erlangen", :area_code => "9131")
+ AreaCode.create(:country => germany, :name => "Herzogenaurach", :area_code => "9132")
+ AreaCode.create(:country => germany, :name => "Baiersdorf Mittelfr", :area_code => "9133")
+ AreaCode.create(:country => germany, :name => "Neunkirchen a Brand", :area_code => "9134")
+ AreaCode.create(:country => germany, :name => "Heßdorf Mittelfr", :area_code => "9135")
+ AreaCode.create(:country => germany, :name => "Weißenburg i Bay", :area_code => "9141")
+ AreaCode.create(:country => germany, :name => "Treuchtlingen", :area_code => "9142")
+ AreaCode.create(:country => germany, :name => "Pappenheim Mittelfr", :area_code => "9143")
+ AreaCode.create(:country => germany, :name => "Pleinfeld", :area_code => "9144")
+ AreaCode.create(:country => germany, :name => "Solnhofen", :area_code => "9145")
+ AreaCode.create(:country => germany, :name => "Markt Berolzheim", :area_code => "9146")
+ AreaCode.create(:country => germany, :name => "Nennslingen", :area_code => "9147")
+ AreaCode.create(:country => germany, :name => "Ettenstatt", :area_code => "9148")
+ AreaCode.create(:country => germany, :name => "Weissenburg-Suffersheim", :area_code => "9149")
+ AreaCode.create(:country => germany, :name => "Hersbruck", :area_code => "9151")
+ AreaCode.create(:country => germany, :name => "Hartenstein Mittelfr", :area_code => "9152")
+ AreaCode.create(:country => germany, :name => "Schnaittach", :area_code => "9153")
+ AreaCode.create(:country => germany, :name => "Pommelsbrunn", :area_code => "9154")
+ AreaCode.create(:country => germany, :name => "Simmelsdorf", :area_code => "9155")
+ AreaCode.create(:country => germany, :name => "Neuhaus a d Pegnitz", :area_code => "9156")
+ AreaCode.create(:country => germany, :name => "Alfeld Mittelfr", :area_code => "9157")
+ AreaCode.create(:country => germany, :name => "Offenhausen Mittelfr", :area_code => "9158")
+ AreaCode.create(:country => germany, :name => "Neustadt a d Aisch", :area_code => "9161")
+ AreaCode.create(:country => germany, :name => "Scheinfeld", :area_code => "9162")
+ AreaCode.create(:country => germany, :name => "Dachsbach", :area_code => "9163")
+ AreaCode.create(:country => germany, :name => "Langenfeld Mittelfr", :area_code => "9164")
+ AreaCode.create(:country => germany, :name => "Sugenheim", :area_code => "9165")
+ AreaCode.create(:country => germany, :name => "Münchsteinach", :area_code => "9166")
+ AreaCode.create(:country => germany, :name => "Oberscheinfeld", :area_code => "9167")
+ AreaCode.create(:country => germany, :name => "Schwanstetten", :area_code => "9170")
+ AreaCode.create(:country => germany, :name => "Roth Mittelfr", :area_code => "9171")
+ AreaCode.create(:country => germany, :name => "Georgensgmünd", :area_code => "9172")
+ AreaCode.create(:country => germany, :name => "Thalmässing", :area_code => "9173")
+ AreaCode.create(:country => germany, :name => "Hilpoltstein", :area_code => "9174")
+ AreaCode.create(:country => germany, :name => "Spalt", :area_code => "9175")
+ AreaCode.create(:country => germany, :name => "Allersberg", :area_code => "9176")
+ AreaCode.create(:country => germany, :name => "Heideck", :area_code => "9177")
+ AreaCode.create(:country => germany, :name => "Abenberg Mittelfr", :area_code => "9178")
+ AreaCode.create(:country => germany, :name => "Freystadt", :area_code => "9179")
+ AreaCode.create(:country => germany, :name => "Pyrbaum", :area_code => "9180")
+ AreaCode.create(:country => germany, :name => "Neumarkt i d Opf", :area_code => "9181")
+ AreaCode.create(:country => germany, :name => "Velburg", :area_code => "9182")
+ AreaCode.create(:country => germany, :name => "Burgthann", :area_code => "9183")
+ AreaCode.create(:country => germany, :name => "Deining Oberpf", :area_code => "9184")
+ AreaCode.create(:country => germany, :name => "Mühlhausen Oberpf", :area_code => "9185")
+ AreaCode.create(:country => germany, :name => "Lauterhofen Oberpf", :area_code => "9186")
+ AreaCode.create(:country => germany, :name => "Altdorf b Nürnberg", :area_code => "9187")
+ AreaCode.create(:country => germany, :name => "Postbauer-Heng", :area_code => "9188")
+ AreaCode.create(:country => germany, :name => "Berg b Neumarkt i d Opf", :area_code => "9189")
+ AreaCode.create(:country => germany, :name => "Heroldsbach", :area_code => "9190")
+ AreaCode.create(:country => germany, :name => "Forchheim Oberfr", :area_code => "9191")
+ AreaCode.create(:country => germany, :name => "Gräfenberg", :area_code => "9192")
+ AreaCode.create(:country => germany, :name => "Höchstadt a d Aisch", :area_code => "9193")
+ AreaCode.create(:country => germany, :name => "Ebermannstadt", :area_code => "9194")
+ AreaCode.create(:country => germany, :name => "Adelsdorf Mittelfr", :area_code => "9195")
+ AreaCode.create(:country => germany, :name => "Wiesenttal", :area_code => "9196")
+ AreaCode.create(:country => germany, :name => "Egloffstein", :area_code => "9197")
+ AreaCode.create(:country => germany, :name => "Heiligenstadt i Ofr", :area_code => "9198")
+ AreaCode.create(:country => germany, :name => "Kunreuth", :area_code => "9199")
+ AreaCode.create(:country => germany, :name => "Gesees", :area_code => "9201")
+ AreaCode.create(:country => germany, :name => "Waischenfeld", :area_code => "9202")
+ AreaCode.create(:country => germany, :name => "Neudrossenfeld", :area_code => "9203")
+ AreaCode.create(:country => germany, :name => "Plankenfels", :area_code => "9204")
+ AreaCode.create(:country => germany, :name => "Vorbach", :area_code => "9205")
+ AreaCode.create(:country => germany, :name => "Mistelgau-Obernsees", :area_code => "9206")
+ AreaCode.create(:country => germany, :name => "Königsfeld Oberfr", :area_code => "9207")
+ AreaCode.create(:country => germany, :name => "Bindlach", :area_code => "9208")
+ AreaCode.create(:country => germany, :name => "Emtmannsberg", :area_code => "9209")
+ AreaCode.create(:country => germany, :name => "Bayreuth", :area_code => "921")
+ AreaCode.create(:country => germany, :name => "Kasendorf-Azendorf", :area_code => "9220")
+ AreaCode.create(:country => germany, :name => "Kulmbach", :area_code => "9221")
+ AreaCode.create(:country => germany, :name => "Presseck", :area_code => "9222")
+ AreaCode.create(:country => germany, :name => "Rugendorf", :area_code => "9223")
+ AreaCode.create(:country => germany, :name => "Stadtsteinach", :area_code => "9225")
+ AreaCode.create(:country => germany, :name => "Neuenmarkt", :area_code => "9227")
+ AreaCode.create(:country => germany, :name => "Thurnau", :area_code => "9228")
+ AreaCode.create(:country => germany, :name => "Mainleus", :area_code => "9229")
+ AreaCode.create(:country => germany, :name => "Marktredwitz", :area_code => "9231")
+ AreaCode.create(:country => germany, :name => "Wunsiedel", :area_code => "9232")
+ AreaCode.create(:country => germany, :name => "Arzberg Oberfr", :area_code => "9233")
+ AreaCode.create(:country => germany, :name => "Neusorg", :area_code => "9234")
+ AreaCode.create(:country => germany, :name => "Thierstein", :area_code => "9235")
+ AreaCode.create(:country => germany, :name => "Nagel", :area_code => "9236")
+ AreaCode.create(:country => germany, :name => "Röslau", :area_code => "9238")
+ AreaCode.create(:country => germany, :name => "Pegnitz", :area_code => "9241")
+ AreaCode.create(:country => germany, :name => "Gößweinstein", :area_code => "9242")
+ AreaCode.create(:country => germany, :name => "Pottenstein", :area_code => "9243")
+ AreaCode.create(:country => germany, :name => "Betzenstein", :area_code => "9244")
+ AreaCode.create(:country => germany, :name => "Obertrubach", :area_code => "9245")
+ AreaCode.create(:country => germany, :name => "Pegnitz-Trockau", :area_code => "9246")
+ AreaCode.create(:country => germany, :name => "Münchberg", :area_code => "9251")
+ AreaCode.create(:country => germany, :name => "Helmbrechts", :area_code => "9252")
+ AreaCode.create(:country => germany, :name => "Weissenstadt", :area_code => "9253")
+ AreaCode.create(:country => germany, :name => "Gefrees", :area_code => "9254")
+ AreaCode.create(:country => germany, :name => "Marktleugast", :area_code => "9255")
+ AreaCode.create(:country => germany, :name => "Stammbach", :area_code => "9256")
+ AreaCode.create(:country => germany, :name => "Zell Oberfr", :area_code => "9257")
+ AreaCode.create(:country => germany, :name => "Wilhelmsthal Oberfr", :area_code => "9260")
+ AreaCode.create(:country => germany, :name => "Kronach", :area_code => "9261")
+ AreaCode.create(:country => germany, :name => "Wallenfels", :area_code => "9262")
+ AreaCode.create(:country => germany, :name => "Ludwigsstadt", :area_code => "9263")
+ AreaCode.create(:country => germany, :name => "Küps", :area_code => "9264")
+ AreaCode.create(:country => germany, :name => "Pressig", :area_code => "9265")
+ AreaCode.create(:country => germany, :name => "Mitwitz", :area_code => "9266")
+ AreaCode.create(:country => germany, :name => "Nordhalben", :area_code => "9267")
+ AreaCode.create(:country => germany, :name => "Teuschnitz", :area_code => "9268")
+ AreaCode.create(:country => germany, :name => "Tettau Kr Kronach", :area_code => "9269")
+ AreaCode.create(:country => germany, :name => "Creussen", :area_code => "9270")
+ AreaCode.create(:country => germany, :name => "Thurnau-Alladorf", :area_code => "9271")
+ AreaCode.create(:country => germany, :name => "Fichtelberg", :area_code => "9272")
+ AreaCode.create(:country => germany, :name => "Bad Berneck i Fichtelgebirge", :area_code => "9273")
+ AreaCode.create(:country => germany, :name => "Hollfeld", :area_code => "9274")
+ AreaCode.create(:country => germany, :name => "Speichersdorf", :area_code => "9275")
+ AreaCode.create(:country => germany, :name => "Bischofsgrün", :area_code => "9276")
+ AreaCode.create(:country => germany, :name => "Warmensteinach", :area_code => "9277")
+ AreaCode.create(:country => germany, :name => "Weidenberg", :area_code => "9278")
+ AreaCode.create(:country => germany, :name => "Mistelgau", :area_code => "9279")
+ AreaCode.create(:country => germany, :name => "Selbitz Oberfr", :area_code => "9280")
+ AreaCode.create(:country => germany, :name => "Hof Saale", :area_code => "9281")
+ AreaCode.create(:country => germany, :name => "Naila", :area_code => "9282")
+ AreaCode.create(:country => germany, :name => "Rehau", :area_code => "9283")
+ AreaCode.create(:country => germany, :name => "Schwarzenbach a d Saale", :area_code => "9284")
+ AreaCode.create(:country => germany, :name => "Kirchenlamitz", :area_code => "9285")
+ AreaCode.create(:country => germany, :name => "Oberkotzau", :area_code => "9286")
+ AreaCode.create(:country => germany, :name => "Selb", :area_code => "9287")
+ AreaCode.create(:country => germany, :name => "Bad Steben", :area_code => "9288")
+ AreaCode.create(:country => germany, :name => "Schwarzenbach a Wald", :area_code => "9289")
+ AreaCode.create(:country => germany, :name => "Konradsreuth", :area_code => "9292")
+ AreaCode.create(:country => germany, :name => "Berg Oberfr", :area_code => "9293")
+ AreaCode.create(:country => germany, :name => "Regnitzlosau", :area_code => "9294")
+ AreaCode.create(:country => germany, :name => "Töpen", :area_code => "9295")
+ AreaCode.create(:country => germany, :name => "Rottendorf Unterfr", :area_code => "9302")
+ AreaCode.create(:country => germany, :name => "Eibelstadt", :area_code => "9303")
+ AreaCode.create(:country => germany, :name => "Estenfeld", :area_code => "9305")
+ AreaCode.create(:country => germany, :name => "Kist", :area_code => "9306")
+ AreaCode.create(:country => germany, :name => "Altertheim", :area_code => "9307")
+ AreaCode.create(:country => germany, :name => "Würzburg", :area_code => "931")
+ AreaCode.create(:country => germany, :name => "Kitzingen", :area_code => "9321")
+ AreaCode.create(:country => germany, :name => "Iphofen", :area_code => "9323")
+ AreaCode.create(:country => germany, :name => "Dettelbach", :area_code => "9324")
+ AreaCode.create(:country => germany, :name => "Kleinlangheim", :area_code => "9325")
+ AreaCode.create(:country => germany, :name => "Markt Einersheim", :area_code => "9326")
+ AreaCode.create(:country => germany, :name => "Ochsenfurt", :area_code => "9331")
+ AreaCode.create(:country => germany, :name => "Marktbreit", :area_code => "9332")
+ AreaCode.create(:country => germany, :name => "Sommerhausen", :area_code => "9333")
+ AreaCode.create(:country => germany, :name => "Giebelstadt", :area_code => "9334")
+ AreaCode.create(:country => germany, :name => "Aub Kr Würzburg", :area_code => "9335")
+ AreaCode.create(:country => germany, :name => "Bütthard", :area_code => "9336")
+ AreaCode.create(:country => germany, :name => "Gaukönigshofen", :area_code => "9337")
+ AreaCode.create(:country => germany, :name => "Röttingen Unterfr", :area_code => "9338")
+ AreaCode.create(:country => germany, :name => "Ippesheim", :area_code => "9339")
+ AreaCode.create(:country => germany, :name => "Königheim-Brehmen", :area_code => "9340")
+ AreaCode.create(:country => germany, :name => "Tauberbischofsheim", :area_code => "9341")
+ AreaCode.create(:country => germany, :name => "Wertheim", :area_code => "9342")
+ AreaCode.create(:country => germany, :name => "Lauda-Königshofen", :area_code => "9343")
+ AreaCode.create(:country => germany, :name => "Gerchsheim", :area_code => "9344")
+ AreaCode.create(:country => germany, :name => "Külsheim Baden", :area_code => "9345")
+ AreaCode.create(:country => germany, :name => "Grünsfeld", :area_code => "9346")
+ AreaCode.create(:country => germany, :name => "Wittighausen", :area_code => "9347")
+ AreaCode.create(:country => germany, :name => "Werbach-Gamburg", :area_code => "9348")
+ AreaCode.create(:country => germany, :name => "Werbach-Wenkheim", :area_code => "9349")
+ AreaCode.create(:country => germany, :name => "Eussenheim-Hundsbach", :area_code => "9350")
+ AreaCode.create(:country => germany, :name => "Gemünden a Main", :area_code => "9351")
+ AreaCode.create(:country => germany, :name => "Lohr a Main", :area_code => "9352")
+ AreaCode.create(:country => germany, :name => "Karlstadt", :area_code => "9353")
+ AreaCode.create(:country => germany, :name => "Rieneck", :area_code => "9354")
+ AreaCode.create(:country => germany, :name => "Frammersbach", :area_code => "9355")
+ AreaCode.create(:country => germany, :name => "Burgsinn", :area_code => "9356")
+ AreaCode.create(:country => germany, :name => "Gräfendorf Bay", :area_code => "9357")
+ AreaCode.create(:country => germany, :name => "Gössenheim", :area_code => "9358")
+ AreaCode.create(:country => germany, :name => "Karlstadt-Wiesenfeld", :area_code => "9359")
+ AreaCode.create(:country => germany, :name => "Thüngen", :area_code => "9360")
+ AreaCode.create(:country => germany, :name => "Arnstein Unterfr", :area_code => "9363")
+ AreaCode.create(:country => germany, :name => "Zellingen", :area_code => "9364")
+ AreaCode.create(:country => germany, :name => "Rimpar", :area_code => "9365")
+ AreaCode.create(:country => germany, :name => "Geroldshausen Unterfr", :area_code => "9366")
+ AreaCode.create(:country => germany, :name => "Unterpleichfeld", :area_code => "9367")
+ AreaCode.create(:country => germany, :name => "Uettingen", :area_code => "9369")
+ AreaCode.create(:country => germany, :name => "Miltenberg", :area_code => "9371")
+ AreaCode.create(:country => germany, :name => "Klingenberg a Main", :area_code => "9372")
+ AreaCode.create(:country => germany, :name => "Amorbach", :area_code => "9373")
+ AreaCode.create(:country => germany, :name => "Eschau", :area_code => "9374")
+ AreaCode.create(:country => germany, :name => "Freudenberg Baden", :area_code => "9375")
+ AreaCode.create(:country => germany, :name => "Collenberg", :area_code => "9376")
+ AreaCode.create(:country => germany, :name => "Freudenberg-Boxtal", :area_code => "9377")
+ AreaCode.create(:country => germany, :name => "Eichenbühl-Riedern", :area_code => "9378")
+ AreaCode.create(:country => germany, :name => "Volkach", :area_code => "9381")
+ AreaCode.create(:country => germany, :name => "Gerolzhofen", :area_code => "9382")
+ AreaCode.create(:country => germany, :name => "Wiesentheid", :area_code => "9383")
+ AreaCode.create(:country => germany, :name => "Schwanfeld", :area_code => "9384")
+ AreaCode.create(:country => germany, :name => "Kolitzheim", :area_code => "9385")
+ AreaCode.create(:country => germany, :name => "Prosselsheim", :area_code => "9386")
+ AreaCode.create(:country => germany, :name => "Marktheidenfeld", :area_code => "9391")
+ AreaCode.create(:country => germany, :name => "Faulbach Unterfr", :area_code => "9392")
+ AreaCode.create(:country => germany, :name => "Rothenfels Unterfr", :area_code => "9393")
+ AreaCode.create(:country => germany, :name => "Esselbach", :area_code => "9394")
+ AreaCode.create(:country => germany, :name => "Triefenstein", :area_code => "9395")
+ AreaCode.create(:country => germany, :name => "Urspringen b Lohr", :area_code => "9396")
+ AreaCode.create(:country => germany, :name => "Wertheim-Dertingen", :area_code => "9397")
+ AreaCode.create(:country => germany, :name => "Birkenfeld b Würzburg", :area_code => "9398")
+ AreaCode.create(:country => germany, :name => "Neutraubling", :area_code => "9401")
+ AreaCode.create(:country => germany, :name => "Regenstauf", :area_code => "9402")
+ AreaCode.create(:country => germany, :name => "Donaustauf", :area_code => "9403")
+ AreaCode.create(:country => germany, :name => "Nittendorf", :area_code => "9404")
+ AreaCode.create(:country => germany, :name => "Bad Abbach", :area_code => "9405")
+ AreaCode.create(:country => germany, :name => "Mintraching", :area_code => "9406")
+ AreaCode.create(:country => germany, :name => "Wenzenbach", :area_code => "9407")
+ AreaCode.create(:country => germany, :name => "Altenthann", :area_code => "9408")
+ AreaCode.create(:country => germany, :name => "Pielenhofen", :area_code => "9409")
+ AreaCode.create(:country => germany, :name => "Regensburg", :area_code => "941")
+ AreaCode.create(:country => germany, :name => "Feldkirchen Niederbay", :area_code => "9420")
+ AreaCode.create(:country => germany, :name => "Straubing", :area_code => "9421")
+ AreaCode.create(:country => germany, :name => "Bogen Niederbay", :area_code => "9422")
+ AreaCode.create(:country => germany, :name => "Geiselhöring", :area_code => "9423")
+ AreaCode.create(:country => germany, :name => "Strasskirchen", :area_code => "9424")
+ AreaCode.create(:country => germany, :name => "Oberschneiding", :area_code => "9426")
+ AreaCode.create(:country => germany, :name => "Leiblfing", :area_code => "9427")
+ AreaCode.create(:country => germany, :name => "Kirchroth", :area_code => "9428")
+ AreaCode.create(:country => germany, :name => "Rain Niederbay", :area_code => "9429")
+ AreaCode.create(:country => germany, :name => "Schwandorf", :area_code => "9431")
+ AreaCode.create(:country => germany, :name => "Nabburg", :area_code => "9433")
+ AreaCode.create(:country => germany, :name => "Bodenwöhr", :area_code => "9434")
+ AreaCode.create(:country => germany, :name => "Schwarzenfeld", :area_code => "9435")
+ AreaCode.create(:country => germany, :name => "Nittenau", :area_code => "9436")
+ AreaCode.create(:country => germany, :name => "Fensterbach", :area_code => "9438")
+ AreaCode.create(:country => germany, :name => "Neunburg-Kemnath", :area_code => "9439")
+ AreaCode.create(:country => germany, :name => "Kelheim", :area_code => "9441")
+ AreaCode.create(:country => germany, :name => "Riedenburg", :area_code => "9442")
+ AreaCode.create(:country => germany, :name => "Abensberg", :area_code => "9443")
+ AreaCode.create(:country => germany, :name => "Siegenburg", :area_code => "9444")
+ AreaCode.create(:country => germany, :name => "Neustadt a d Donau", :area_code => "9445")
+ AreaCode.create(:country => germany, :name => "Altmannstein", :area_code => "9446")
+ AreaCode.create(:country => germany, :name => "Essing", :area_code => "9447")
+ AreaCode.create(:country => germany, :name => "Hausen Niederbay", :area_code => "9448")
+ AreaCode.create(:country => germany, :name => "Schierling", :area_code => "9451")
+ AreaCode.create(:country => germany, :name => "Langquaid", :area_code => "9452")
+ AreaCode.create(:country => germany, :name => "Thalmassing", :area_code => "9453")
+ AreaCode.create(:country => germany, :name => "Aufhausen Oberpf", :area_code => "9454")
+ AreaCode.create(:country => germany, :name => "Roding", :area_code => "9461")
+ AreaCode.create(:country => germany, :name => "Falkenstein Oberpf", :area_code => "9462")
+ AreaCode.create(:country => germany, :name => "Wald Oberpf", :area_code => "9463")
+ AreaCode.create(:country => germany, :name => "Walderbach", :area_code => "9464")
+ AreaCode.create(:country => germany, :name => "Neukirchen-Balbini", :area_code => "9465")
+ AreaCode.create(:country => germany, :name => "Stamsried", :area_code => "9466")
+ AreaCode.create(:country => germany, :name => "Michelsneukirchen", :area_code => "9467")
+ AreaCode.create(:country => germany, :name => "Zell Oberpf", :area_code => "9468")
+ AreaCode.create(:country => germany, :name => "Roding-Neubäu", :area_code => "9469")
+ AreaCode.create(:country => germany, :name => "Burglengenfeld", :area_code => "9471")
+ AreaCode.create(:country => germany, :name => "Hohenfels Oberpf", :area_code => "9472")
+ AreaCode.create(:country => germany, :name => "Kallmünz", :area_code => "9473")
+ AreaCode.create(:country => germany, :name => "Schmidmühlen", :area_code => "9474")
+ AreaCode.create(:country => germany, :name => "Sünching", :area_code => "9480")
+ AreaCode.create(:country => germany, :name => "Pfatter", :area_code => "9481")
+ AreaCode.create(:country => germany, :name => "Wörth a d Donau", :area_code => "9482")
+ AreaCode.create(:country => germany, :name => "Brennberg", :area_code => "9484")
+ AreaCode.create(:country => germany, :name => "Hemau", :area_code => "9491")
+ AreaCode.create(:country => germany, :name => "Parsberg", :area_code => "9492")
+ AreaCode.create(:country => germany, :name => "Beratzhausen", :area_code => "9493")
+ AreaCode.create(:country => germany, :name => "Breitenbrunn Oberpf", :area_code => "9495")
+ AreaCode.create(:country => germany, :name => "Seubersdorf i d Opf", :area_code => "9497")
+ AreaCode.create(:country => germany, :name => "Laaber", :area_code => "9498")
+ AreaCode.create(:country => germany, :name => "Painten", :area_code => "9499")
+ AreaCode.create(:country => germany, :name => "Frensdorf", :area_code => "9502")
+ AreaCode.create(:country => germany, :name => "Oberhaid Oberfr", :area_code => "9503")
+ AreaCode.create(:country => germany, :name => "Stadelhofen", :area_code => "9504")
+ AreaCode.create(:country => germany, :name => "Litzendorf", :area_code => "9505")
+ AreaCode.create(:country => germany, :name => "Bamberg", :area_code => "951")
+ AreaCode.create(:country => germany, :name => "Hassfurt", :area_code => "9521")
+ AreaCode.create(:country => germany, :name => "Eltmann", :area_code => "9522")
+ AreaCode.create(:country => germany, :name => "Hofheim i Ufr", :area_code => "9523")
+ AreaCode.create(:country => germany, :name => "Zeil a Main", :area_code => "9524")
+ AreaCode.create(:country => germany, :name => "Königsberg i Bay", :area_code => "9525")
+ AreaCode.create(:country => germany, :name => "Riedbach", :area_code => "9526")
+ AreaCode.create(:country => germany, :name => "Knetzgau", :area_code => "9527")
+ AreaCode.create(:country => germany, :name => "Donnersdorf", :area_code => "9528")
+ AreaCode.create(:country => germany, :name => "Oberaurach", :area_code => "9529")
+ AreaCode.create(:country => germany, :name => "Ebern", :area_code => "9531")
+ AreaCode.create(:country => germany, :name => "Maroldsweisach", :area_code => "9532")
+ AreaCode.create(:country => germany, :name => "Untermerzbach", :area_code => "9533")
+ AreaCode.create(:country => germany, :name => "Burgpreppach", :area_code => "9534")
+ AreaCode.create(:country => germany, :name => "Pfarrweisach", :area_code => "9535")
+ AreaCode.create(:country => germany, :name => "Kirchlauter", :area_code => "9536")
+ AreaCode.create(:country => germany, :name => "Schesslitz", :area_code => "9542")
+ AreaCode.create(:country => germany, :name => "Hirschaid", :area_code => "9543")
+ AreaCode.create(:country => germany, :name => "Baunach", :area_code => "9544")
+ AreaCode.create(:country => germany, :name => "Buttenheim", :area_code => "9545")
+ AreaCode.create(:country => germany, :name => "Burgebrach", :area_code => "9546")
+ AreaCode.create(:country => germany, :name => "Zapfendorf", :area_code => "9547")
+ AreaCode.create(:country => germany, :name => "Mühlhausen Mittelfr", :area_code => "9548")
+ AreaCode.create(:country => germany, :name => "Lisberg", :area_code => "9549")
+ AreaCode.create(:country => germany, :name => "Burgwindheim", :area_code => "9551")
+ AreaCode.create(:country => germany, :name => "Burghaslach", :area_code => "9552")
+ AreaCode.create(:country => germany, :name => "Ebrach Oberfr", :area_code => "9553")
+ AreaCode.create(:country => germany, :name => "Untersteinbach Unterfr", :area_code => "9554")
+ AreaCode.create(:country => germany, :name => "Schlüsselfeld-Aschbach", :area_code => "9555")
+ AreaCode.create(:country => germany, :name => "Geiselwind", :area_code => "9556")
+ AreaCode.create(:country => germany, :name => "Grub a Forst", :area_code => "9560")
+ AreaCode.create(:country => germany, :name => "Coburg", :area_code => "9561")
+ AreaCode.create(:country => germany, :name => "Sonnefeld", :area_code => "9562")
+ AreaCode.create(:country => germany, :name => "Rödental", :area_code => "9563")
+ AreaCode.create(:country => germany, :name => "Bad Rodach", :area_code => "9564")
+ AreaCode.create(:country => germany, :name => "Untersiemau", :area_code => "9565")
+ AreaCode.create(:country => germany, :name => "Meeder", :area_code => "9566")
+ AreaCode.create(:country => germany, :name => "Seßlach-Gemünda", :area_code => "9567")
+ AreaCode.create(:country => germany, :name => "Neustadt b Coburg", :area_code => "9568")
+ AreaCode.create(:country => germany, :name => "Sesslach", :area_code => "9569")
+ AreaCode.create(:country => germany, :name => "Lichtenfels Bay", :area_code => "9571")
+ AreaCode.create(:country => germany, :name => "Burgkunstadt", :area_code => "9572")
+ AreaCode.create(:country => germany, :name => "Staffelstein Oberfr", :area_code => "9573")
+ AreaCode.create(:country => germany, :name => "Marktzeuln", :area_code => "9574")
+ AreaCode.create(:country => germany, :name => "Weismain", :area_code => "9575")
+ AreaCode.create(:country => germany, :name => "Lichtenfels-Isling", :area_code => "9576")
+ AreaCode.create(:country => germany, :name => "Neustadt a d Waldnaab", :area_code => "9602")
+ AreaCode.create(:country => germany, :name => "Floss", :area_code => "9603")
+ AreaCode.create(:country => germany, :name => "Wernberg-Köblitz", :area_code => "9604")
+ AreaCode.create(:country => germany, :name => "Weiherhammer", :area_code => "9605")
+ AreaCode.create(:country => germany, :name => "Pfreimd", :area_code => "9606")
+ AreaCode.create(:country => germany, :name => "Luhe-Wildenau", :area_code => "9607")
+ AreaCode.create(:country => germany, :name => "Kohlberg Oberpf", :area_code => "9608")
+ AreaCode.create(:country => germany, :name => "Weiden i d Opf", :area_code => "961")
+ AreaCode.create(:country => germany, :name => "Amberg Oberpf", :area_code => "9621")
+ AreaCode.create(:country => germany, :name => "Hirschau Oberpf", :area_code => "9622")
+ AreaCode.create(:country => germany, :name => "Ensdorf Oberpf", :area_code => "9624")
+ AreaCode.create(:country => germany, :name => "Kastl b Amberg", :area_code => "9625")
+ AreaCode.create(:country => germany, :name => "Hohenburg", :area_code => "9626")
+ AreaCode.create(:country => germany, :name => "Freudenberg Oberpf", :area_code => "9627")
+ AreaCode.create(:country => germany, :name => "Ursensollen", :area_code => "9628")
+ AreaCode.create(:country => germany, :name => "Tirschenreuth", :area_code => "9631")
+ AreaCode.create(:country => germany, :name => "Waldsassen", :area_code => "9632")
+ AreaCode.create(:country => germany, :name => "Mitterteich", :area_code => "9633")
+ AreaCode.create(:country => germany, :name => "Wiesau", :area_code => "9634")
+ AreaCode.create(:country => germany, :name => "Bärnau", :area_code => "9635")
+ AreaCode.create(:country => germany, :name => "Plößberg", :area_code => "9636")
+ AreaCode.create(:country => germany, :name => "Falkenberg Oberpf", :area_code => "9637")
+ AreaCode.create(:country => germany, :name => "Neualbenreuth", :area_code => "9638")
+ AreaCode.create(:country => germany, :name => "Mähring", :area_code => "9639")
+ AreaCode.create(:country => germany, :name => "Grafenwöhr", :area_code => "9641")
+ AreaCode.create(:country => germany, :name => "Kemnath Stadt", :area_code => "9642")
+ AreaCode.create(:country => germany, :name => "Auerbach i d Opf", :area_code => "9643")
+ AreaCode.create(:country => germany, :name => "Pressath", :area_code => "9644")
+ AreaCode.create(:country => germany, :name => "Eschenbach i d Opf", :area_code => "9645")
+ AreaCode.create(:country => germany, :name => "Freihung", :area_code => "9646")
+ AreaCode.create(:country => germany, :name => "Kirchenthumbach", :area_code => "9647")
+ AreaCode.create(:country => germany, :name => "Neustadt a Kulm", :area_code => "9648")
+ AreaCode.create(:country => germany, :name => "Vohenstrauss", :area_code => "9651")
+ AreaCode.create(:country => germany, :name => "Waidhaus", :area_code => "9652")
+ AreaCode.create(:country => germany, :name => "Eslarn", :area_code => "9653")
+ AreaCode.create(:country => germany, :name => "Pleystein", :area_code => "9654")
+ AreaCode.create(:country => germany, :name => "Tännesberg", :area_code => "9655")
+ AreaCode.create(:country => germany, :name => "Moosbach b Vohenstrauß", :area_code => "9656")
+ AreaCode.create(:country => germany, :name => "Waldthurn", :area_code => "9657")
+ AreaCode.create(:country => germany, :name => "Georgenberg", :area_code => "9658")
+ AreaCode.create(:country => germany, :name => "Leuchtenberg", :area_code => "9659")
+ AreaCode.create(:country => germany, :name => "Sulzbach-Rosenberg", :area_code => "9661")
+ AreaCode.create(:country => germany, :name => "Vilseck", :area_code => "9662")
+ AreaCode.create(:country => germany, :name => "Neukirchen b Sulzbach-Rosenberg", :area_code => "9663")
+ AreaCode.create(:country => germany, :name => "Hahnbach", :area_code => "9664")
+ AreaCode.create(:country => germany, :name => "Königstein Oberpf", :area_code => "9665")
+ AreaCode.create(:country => germany, :name => "Illschwang", :area_code => "9666")
+ AreaCode.create(:country => germany, :name => "Oberviechtach", :area_code => "9671")
+ AreaCode.create(:country => germany, :name => "Neunburg vorm Wald", :area_code => "9672")
+ AreaCode.create(:country => germany, :name => "Tiefenbach Oberpf", :area_code => "9673")
+ AreaCode.create(:country => germany, :name => "Schönsee", :area_code => "9674")
+ AreaCode.create(:country => germany, :name => "Altendorf a Nabburg", :area_code => "9675")
+ AreaCode.create(:country => germany, :name => "Winklarn", :area_code => "9676")
+ AreaCode.create(:country => germany, :name => "Oberviechtach-Pullenried", :area_code => "9677")
+ AreaCode.create(:country => germany, :name => "Windischeschenbach", :area_code => "9681")
+ AreaCode.create(:country => germany, :name => "Erbendorf", :area_code => "9682")
+ AreaCode.create(:country => germany, :name => "Friedenfels", :area_code => "9683")
+ AreaCode.create(:country => germany, :name => "Sandberg Unterfr", :area_code => "9701")
+ AreaCode.create(:country => germany, :name => "Euerdorf", :area_code => "9704")
+ AreaCode.create(:country => germany, :name => "Bad Bocklet", :area_code => "9708")
+ AreaCode.create(:country => germany, :name => "Bad Kissingen", :area_code => "971")
+ AreaCode.create(:country => germany, :name => "Üchtelhausen", :area_code => "9720")
+ AreaCode.create(:country => germany, :name => "Schweinfurt", :area_code => "9721")
+ AreaCode.create(:country => germany, :name => "Werneck", :area_code => "9722")
+ AreaCode.create(:country => germany, :name => "Röthlein", :area_code => "9723")
+ AreaCode.create(:country => germany, :name => "Stadtlauringen", :area_code => "9724")
+ AreaCode.create(:country => germany, :name => "Poppenhausen Unterfr", :area_code => "9725")
+ AreaCode.create(:country => germany, :name => "Euerbach", :area_code => "9726")
+ AreaCode.create(:country => germany, :name => "Schonungen-Marktsteinach", :area_code => "9727")
+ AreaCode.create(:country => germany, :name => "Wülfershausen Unterfr", :area_code => "9728")
+ AreaCode.create(:country => germany, :name => "Grettstadt", :area_code => "9729")
+ AreaCode.create(:country => germany, :name => "Hammelburg", :area_code => "9732")
+ AreaCode.create(:country => germany, :name => "Münnerstadt", :area_code => "9733")
+ AreaCode.create(:country => germany, :name => "Burkardroth", :area_code => "9734")
+ AreaCode.create(:country => germany, :name => "Massbach", :area_code => "9735")
+ AreaCode.create(:country => germany, :name => "Oberthulba", :area_code => "9736")
+ AreaCode.create(:country => germany, :name => "Wartmannsroth", :area_code => "9737")
+ AreaCode.create(:country => germany, :name => "Rottershausen", :area_code => "9738")
+ AreaCode.create(:country => germany, :name => "Bad Brückenau", :area_code => "9741")
+ AreaCode.create(:country => germany, :name => "Kalbach Rhön", :area_code => "9742")
+ AreaCode.create(:country => germany, :name => "Zeitlofs-Detter", :area_code => "9744")
+ AreaCode.create(:country => germany, :name => "Wildflecken", :area_code => "9745")
+ AreaCode.create(:country => germany, :name => "Zeitlofs", :area_code => "9746")
+ AreaCode.create(:country => germany, :name => "Geroda Bay", :area_code => "9747")
+ AreaCode.create(:country => germany, :name => "Motten", :area_code => "9748")
+ AreaCode.create(:country => germany, :name => "Oberbach Unterfr", :area_code => "9749")
+ AreaCode.create(:country => germany, :name => "Bad Königshofen i Grabfeld", :area_code => "9761")
+ AreaCode.create(:country => germany, :name => "Saal a d Saale", :area_code => "9762")
+ AreaCode.create(:country => germany, :name => "Sulzdorf a d Lederhecke", :area_code => "9763")
+ AreaCode.create(:country => germany, :name => "Höchheim", :area_code => "9764")
+ AreaCode.create(:country => germany, :name => "Trappstadt", :area_code => "9765")
+ AreaCode.create(:country => germany, :name => "Grosswenkheim", :area_code => "9766")
+ AreaCode.create(:country => germany, :name => "Bad Neustadt a d Saale", :area_code => "9771")
+ AreaCode.create(:country => germany, :name => "Bischofsheim a d Rhön", :area_code => "9772")
+ AreaCode.create(:country => germany, :name => "Unsleben", :area_code => "9773")
+ AreaCode.create(:country => germany, :name => "Oberelsbach", :area_code => "9774")
+ AreaCode.create(:country => germany, :name => "Schönau a d Brend", :area_code => "9775")
+ AreaCode.create(:country => germany, :name => "Mellrichstadt", :area_code => "9776")
+ AreaCode.create(:country => germany, :name => "Ostheim v d Rhön", :area_code => "9777")
+ AreaCode.create(:country => germany, :name => "Fladungen", :area_code => "9778")
+ AreaCode.create(:country => germany, :name => "Nordheim v d Rhön", :area_code => "9779")
+ AreaCode.create(:country => germany, :name => "Ansbach-Katterbach", :area_code => "9802")
+ AreaCode.create(:country => germany, :name => "Colmberg", :area_code => "9803")
+ AreaCode.create(:country => germany, :name => "Aurach", :area_code => "9804")
+ AreaCode.create(:country => germany, :name => "Burgoberbach", :area_code => "9805")
+ AreaCode.create(:country => germany, :name => "Ansbach", :area_code => "981")
+ AreaCode.create(:country => germany, :name => "Lehrberg", :area_code => "9820")
+ AreaCode.create(:country => germany, :name => "Bechhofen a d Heide", :area_code => "9822")
+ AreaCode.create(:country => germany, :name => "Leutershausen", :area_code => "9823")
+ AreaCode.create(:country => germany, :name => "Dietenhofen", :area_code => "9824")
+ AreaCode.create(:country => germany, :name => "Herrieden", :area_code => "9825")
+ AreaCode.create(:country => germany, :name => "Weidenbach Mittelfr", :area_code => "9826")
+ AreaCode.create(:country => germany, :name => "Lichtenau Mittelfr", :area_code => "9827")
+ AreaCode.create(:country => germany, :name => "Rügland", :area_code => "9828")
+ AreaCode.create(:country => germany, :name => "Flachslanden", :area_code => "9829")
+ AreaCode.create(:country => germany, :name => "Gunzenhausen", :area_code => "9831")
+ AreaCode.create(:country => germany, :name => "Wassertrüdingen", :area_code => "9832")
+ AreaCode.create(:country => germany, :name => "Heidenheim Mittelfr", :area_code => "9833")
+ AreaCode.create(:country => germany, :name => "Theilenhofen", :area_code => "9834")
+ AreaCode.create(:country => germany, :name => "Ehingen Mittelfr", :area_code => "9835")
+ AreaCode.create(:country => germany, :name => "Gunzenhausen-Cronheim", :area_code => "9836")
+ AreaCode.create(:country => germany, :name => "Haundorf", :area_code => "9837")
+ AreaCode.create(:country => germany, :name => "Bad Windsheim", :area_code => "9841")
+ AreaCode.create(:country => germany, :name => "Uffenheim", :area_code => "9842")
+ AreaCode.create(:country => germany, :name => "Burgbernheim", :area_code => "9843")
+ AreaCode.create(:country => germany, :name => "Obernzenn", :area_code => "9844")
+ AreaCode.create(:country => germany, :name => "Oberdachstetten", :area_code => "9845")
+ AreaCode.create(:country => germany, :name => "Ipsheim", :area_code => "9846")
+ AreaCode.create(:country => germany, :name => "Ergersheim", :area_code => "9847")
+ AreaCode.create(:country => germany, :name => "Simmershofen", :area_code => "9848")
+ AreaCode.create(:country => germany, :name => "Dinkelsbühl", :area_code => "9851")
+ AreaCode.create(:country => germany, :name => "Feuchtwangen", :area_code => "9852")
+ AreaCode.create(:country => germany, :name => "Wilburgstetten", :area_code => "9853")
+ AreaCode.create(:country => germany, :name => "Wittelshofen", :area_code => "9854")
+ AreaCode.create(:country => germany, :name => "Dentlein a Forst", :area_code => "9855")
+ AreaCode.create(:country => germany, :name => "Dürrwangen", :area_code => "9856")
+ AreaCode.create(:country => germany, :name => "Schopfloch Mittelfr", :area_code => "9857")
+ AreaCode.create(:country => germany, :name => "Rothenburg ob der Tauber", :area_code => "9861")
+ AreaCode.create(:country => germany, :name => "Adelshofen Mittelfr", :area_code => "9865")
+ AreaCode.create(:country => germany, :name => "Geslau", :area_code => "9867")
+ AreaCode.create(:country => germany, :name => "Schillingsfürst", :area_code => "9868")
+ AreaCode.create(:country => germany, :name => "Wettringen Mittelfr", :area_code => "9869")
+ AreaCode.create(:country => germany, :name => "Windsbach", :area_code => "9871")
+ AreaCode.create(:country => germany, :name => "Heilsbronn", :area_code => "9872")
+ AreaCode.create(:country => germany, :name => "Abenberg-Wassermungenau", :area_code => "9873")
+ AreaCode.create(:country => germany, :name => "Neuendettelsau", :area_code => "9874")
+ AreaCode.create(:country => germany, :name => "Wolframs-Eschenbach", :area_code => "9875")
+ AreaCode.create(:country => germany, :name => "Rohr Mittelfr", :area_code => "9876")
+ AreaCode.create(:country => germany, :name => "Hengersberg Bay", :area_code => "9901")
+ AreaCode.create(:country => germany, :name => "Schöllnach", :area_code => "9903")
+ AreaCode.create(:country => germany, :name => "Lalling", :area_code => "9904")
+ AreaCode.create(:country => germany, :name => "Bernried Niederbay", :area_code => "9905")
+ AreaCode.create(:country => germany, :name => "Mariaposching", :area_code => "9906")
+ AreaCode.create(:country => germany, :name => "Zenting", :area_code => "9907")
+ AreaCode.create(:country => germany, :name => "Schöfweg", :area_code => "9908")
+ AreaCode.create(:country => germany, :name => "Deggendorf", :area_code => "991")
+ AreaCode.create(:country => germany, :name => "Bischofsmais", :area_code => "9920")
+ AreaCode.create(:country => germany, :name => "Regen", :area_code => "9921")
+ AreaCode.create(:country => germany, :name => "Zwiesel", :area_code => "9922")
+ AreaCode.create(:country => germany, :name => "Teisnach", :area_code => "9923")
+ AreaCode.create(:country => germany, :name => "Bodenmais", :area_code => "9924")
+ AreaCode.create(:country => germany, :name => "Bayerisch Eisenstein", :area_code => "9925")
+ AreaCode.create(:country => germany, :name => "Frauenau", :area_code => "9926")
+ AreaCode.create(:country => germany, :name => "Kirchberg Wald", :area_code => "9927")
+ AreaCode.create(:country => germany, :name => "Kirchdorf i Wald", :area_code => "9928")
+ AreaCode.create(:country => germany, :name => "Ruhmannsfelden", :area_code => "9929")
+ AreaCode.create(:country => germany, :name => "Plattling", :area_code => "9931")
+ AreaCode.create(:country => germany, :name => "Osterhofen", :area_code => "9932")
+ AreaCode.create(:country => germany, :name => "Wallersdorf", :area_code => "9933")
+ AreaCode.create(:country => germany, :name => "Stephansposching", :area_code => "9935")
+ AreaCode.create(:country => germany, :name => "Wallerfing", :area_code => "9936")
+ AreaCode.create(:country => germany, :name => "Oberpöring", :area_code => "9937")
+ AreaCode.create(:country => germany, :name => "Moos Niederbay", :area_code => "9938")
+ AreaCode.create(:country => germany, :name => "Kötzting", :area_code => "9941")
+ AreaCode.create(:country => germany, :name => "Viechtach", :area_code => "9942")
+ AreaCode.create(:country => germany, :name => "Lam Oberpf", :area_code => "9943")
+ AreaCode.create(:country => germany, :name => "Miltach", :area_code => "9944")
+ AreaCode.create(:country => germany, :name => "Arnbruck", :area_code => "9945")
+ AreaCode.create(:country => germany, :name => "Hohenwarth b Kötzing", :area_code => "9946")
+ AreaCode.create(:country => germany, :name => "Neukirchen b Hl Blut", :area_code => "9947")
+ AreaCode.create(:country => germany, :name => "Eschlkam", :area_code => "9948")
+ AreaCode.create(:country => germany, :name => "Landau a d Isar", :area_code => "9951")
+ AreaCode.create(:country => germany, :name => "Eichendorf", :area_code => "9952")
+ AreaCode.create(:country => germany, :name => "Pilsting", :area_code => "9953")
+ AreaCode.create(:country => germany, :name => "SimbachNiederbay", :area_code => "9954")
+ AreaCode.create(:country => germany, :name => "Mamming", :area_code => "9955")
+ AreaCode.create(:country => germany, :name => "Eichendorf-Aufhausen", :area_code => "9956")
+ AreaCode.create(:country => germany, :name => "Mitterfels", :area_code => "9961")
+ AreaCode.create(:country => germany, :name => "Schwarzach Niederbay", :area_code => "9962")
+ AreaCode.create(:country => germany, :name => "Konzell", :area_code => "9963")
+ AreaCode.create(:country => germany, :name => "Stallwang", :area_code => "9964")
+ AreaCode.create(:country => germany, :name => "Sankt Englmar", :area_code => "9965")
+ AreaCode.create(:country => germany, :name => "Wiesenfelden", :area_code => "9966")
+ AreaCode.create(:country => germany, :name => "Cham", :area_code => "9971")
+ AreaCode.create(:country => germany, :name => "Waldmünchen", :area_code => "9972")
+ AreaCode.create(:country => germany, :name => "Furth i Wald", :area_code => "9973")
+ AreaCode.create(:country => germany, :name => "Traitsching", :area_code => "9974")
+ AreaCode.create(:country => germany, :name => "Waldmünchen-Geigant", :area_code => "9975")
+ AreaCode.create(:country => germany, :name => "Rötz", :area_code => "9976")
+ AreaCode.create(:country => germany, :name => "Arnschwang", :area_code => "9977")
+ AreaCode.create(:country => germany, :name => "Schönthal Oberpf", :area_code => "9978")
+end \ No newline at end of file
diff --git a/lib/tasks/populate_area_codes_pl.rake b/lib/tasks/populate_area_codes_pl.rake
new file mode 100644
index 0000000..a3f725a
--- /dev/null
+++ b/lib/tasks/populate_area_codes_pl.rake
@@ -0,0 +1,59 @@
+# encoding: UTF-8
+
+desc "Populate database with Polish pre 2005 (now defunct) area codes"
+task :areacodes_poland => :environment do
+ if ! poland = Country.where( :name => 'Poland' ).first
+ $stderr.puts "Error. Country not found."
+ exit 1
+ end
+
+ AreaCode.create(:country => poland, :name => "Biała Podlaska", :area_code => "83")
+ AreaCode.create(:country => poland, :name => "Białystok", :area_code => "85")
+ AreaCode.create(:country => poland, :name => "Bielsko-Biała", :area_code => "33")
+ AreaCode.create(:country => poland, :name => "Bydgoszcz", :area_code => "52")
+ AreaCode.create(:country => poland, :name => "Chełm", :area_code => "82")
+ AreaCode.create(:country => poland, :name => "Ciechanów", :area_code => "23")
+ AreaCode.create(:country => poland, :name => "Częstochowa", :area_code => "34")
+ AreaCode.create(:country => poland, :name => "Elbląg", :area_code => "55")
+ AreaCode.create(:country => poland, :name => "Gdańsk", :area_code => "58")
+ AreaCode.create(:country => poland, :name => "Gorzów Wielkopolski", :area_code => "95")
+ AreaCode.create(:country => poland, :name => "Jelenia Góra", :area_code => "75")
+ AreaCode.create(:country => poland, :name => "Kalisz", :area_code => "62")
+ AreaCode.create(:country => poland, :name => "Katowice", :area_code => "32")
+ AreaCode.create(:country => poland, :name => "Kielce", :area_code => "41")
+ AreaCode.create(:country => poland, :name => "Konin", :area_code => "63")
+ AreaCode.create(:country => poland, :name => "Koszalin", :area_code => "94")
+ AreaCode.create(:country => poland, :name => "Kraków", :area_code => "12")
+ AreaCode.create(:country => poland, :name => "Krosno", :area_code => "13")
+ AreaCode.create(:country => poland, :name => "Legnica", :area_code => "76")
+ AreaCode.create(:country => poland, :name => "Leszno", :area_code => "65")
+ AreaCode.create(:country => poland, :name => "Łódź", :area_code => "42")
+ AreaCode.create(:country => poland, :name => "Łomża", :area_code => "86")
+ AreaCode.create(:country => poland, :name => "Lublin", :area_code => "81")
+ AreaCode.create(:country => poland, :name => "Nowy Sącz", :area_code => "18")
+ AreaCode.create(:country => poland, :name => "Olsztyn", :area_code => "89")
+ AreaCode.create(:country => poland, :name => "Opole", :area_code => "77")
+ AreaCode.create(:country => poland, :name => "Ostrołęka", :area_code => "29")
+ AreaCode.create(:country => poland, :name => "Piła", :area_code => "67")
+ AreaCode.create(:country => poland, :name => "Piotrków Trybunalski", :area_code => "44")
+ AreaCode.create(:country => poland, :name => "Płock", :area_code => "24")
+ AreaCode.create(:country => poland, :name => "Poznań", :area_code => "61")
+ AreaCode.create(:country => poland, :name => "Przemyśl", :area_code => "16")
+ AreaCode.create(:country => poland, :name => "Radom", :area_code => "48")
+ AreaCode.create(:country => poland, :name => "Rzeszów", :area_code => "17")
+ AreaCode.create(:country => poland, :name => "Siedlce", :area_code => "25")
+ AreaCode.create(:country => poland, :name => "Sieradz", :area_code => "43")
+ AreaCode.create(:country => poland, :name => "Skierniewice", :area_code => "46")
+ AreaCode.create(:country => poland, :name => "Słupsk", :area_code => "59")
+ AreaCode.create(:country => poland, :name => "Suwałki", :area_code => "87")
+ AreaCode.create(:country => poland, :name => "Szczecin", :area_code => "91")
+ AreaCode.create(:country => poland, :name => "Tarnobrzeg", :area_code => "15")
+ AreaCode.create(:country => poland, :name => "Tarnów", :area_code => "14")
+ AreaCode.create(:country => poland, :name => "Toruń", :area_code => "56")
+ AreaCode.create(:country => poland, :name => "Wałbrzych", :area_code => "74")
+ AreaCode.create(:country => poland, :name => "Warszawa", :area_code => "22")
+ AreaCode.create(:country => poland, :name => "Włocławek", :area_code => "54")
+ AreaCode.create(:country => poland, :name => "Wrocław", :area_code => "71")
+ AreaCode.create(:country => poland, :name => "Zamość", :area_code => "84")
+ AreaCode.create(:country => poland, :name => "Zielona Góra", :area_code => "68")
+end
diff --git a/lib/tasks/populate_country_codes.rake b/lib/tasks/populate_country_codes.rake
new file mode 100644
index 0000000..1129f81
--- /dev/null
+++ b/lib/tasks/populate_country_codes.rake
@@ -0,0 +1,244 @@
+# encoding: UTF-8
+
+desc "Populate database with country codes"
+task :country_codes => :environment do
+
+ Country.create(:name => "American Samoa", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Anguilla", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Antigua and Barbuda", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Bahamas", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Barbados", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Bermuda", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "British Virgin Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Canada", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Cayman Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Dominica", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Dominican Republic", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Grenada", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Guam", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Jamaica", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Montserrat", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Northern Mariana Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Puerto Rico", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Saint Kitts and Nevis", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Saint Lucia", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Saint Vincent and the Grenadines", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Trinidad and Tobago", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Turks and Caicos Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "United States of America", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "United States Virgin Islands", :country_code => "1", :international_call_prefix => "011", :trunk_prefix => "1" )
+ Country.create(:name => "Egypt", :country_code => "20", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Morocco", :country_code => "212", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Algeria", :country_code => "213", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Tunisia", :country_code => "216", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Libya", :country_code => "218", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Gambia", :country_code => "220", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Senegal", :country_code => "221", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Mauritania", :country_code => "222", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Mali", :country_code => "223", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Guinea", :country_code => "224", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Côte d'Ivoire", :country_code => "225", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Burkina Faso", :country_code => "226", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Niger", :country_code => "227", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Togolese Republic", :country_code => "228", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Benin", :country_code => "229", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Mauritius", :country_code => "230", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Liberia", :country_code => "231", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Sierra Leone", :country_code => "232", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Ghana", :country_code => "233", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Nigeria", :country_code => "234", :international_call_prefix => "009", :trunk_prefix => "" )
+ Country.create(:name => "Chad", :country_code => "235", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Central African Republic", :country_code => "236", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Cameroon", :country_code => "237", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Cape Verde", :country_code => "238", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Sao Tome and Principe", :country_code => "239", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Equatorial Guinea", :country_code => "240", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Gabonese Republic", :country_code => "241", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Congo", :country_code => "242", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Democratic Republic of the Congo", :country_code => "243", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Angola", :country_code => "244", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Guinea-Bissau", :country_code => "245", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Diego Garcia", :country_code => "246", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Ascension", :country_code => "247", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Seychelles", :country_code => "248", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Sudan", :country_code => "249", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Rwanda", :country_code => "250", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Ethiopia", :country_code => "251", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Somali Democratic Republic", :country_code => "252", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Djibouti", :country_code => "253", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Kenya", :country_code => "254", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Tanzania", :country_code => "255", :international_call_prefix => "000", :trunk_prefix => "" )
+ Country.create(:name => "Uganda", :country_code => "256", :international_call_prefix => "000", :trunk_prefix => "" )
+ Country.create(:name => "Burundi", :country_code => "257", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Mozambique", :country_code => "258", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Zambia", :country_code => "260", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Madagascar", :country_code => "261", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Reunion", :country_code => "262", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Zimbabwe", :country_code => "263", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Namibia", :country_code => "264", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Malawi", :country_code => "265", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Lesotho", :country_code => "266", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Botswana", :country_code => "267", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Swaziland", :country_code => "268", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Comoros", :country_code => "269", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Mayotte", :country_code => "269", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "South Africa", :country_code => "27", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Saint Helena", :country_code => "290", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Eritrea", :country_code => "291", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Aruba", :country_code => "297", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Faroe Islands", :country_code => "298", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Greenland", :country_code => "299", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Greece", :country_code => "30", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Netherlands", :country_code => "31", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Belgium", :country_code => "32", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "France", :country_code => "33", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Spain", :country_code => "34", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Gibraltar", :country_code => "350", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Portugal", :country_code => "351", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Luxembourg", :country_code => "352", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Ireland", :country_code => "353", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Iceland", :country_code => "354", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Albania", :country_code => "355", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Malta", :country_code => "356", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Cyprus", :country_code => "357", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Finland", :country_code => "358", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Bulgaria", :country_code => "359", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Hungary", :country_code => "36", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Lithuania", :country_code => "370", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Latvia", :country_code => "371", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Estonia", :country_code => "372", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Moldova", :country_code => "373", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Armenia", :country_code => "374", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Belarus", :country_code => "375", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Andorra", :country_code => "376", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Monaco", :country_code => "377", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "San Marino", :country_code => "378", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Vatican City State", :country_code => "379", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Ukraine", :country_code => "380", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Serbia and Montenegro", :country_code => "381", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Croatia", :country_code => "385", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Slovenia", :country_code => "386", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Bosnia and Herzegovina", :country_code => "387", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Group of countries, shared code", :country_code => "388", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "The Former Yugoslav Republic of Macedonia", :country_code => "389", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Italy", :country_code => "39", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Vatican City State", :country_code => "39", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Romania", :country_code => "40", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Switzerland", :country_code => "41", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Czech Republic", :country_code => "420", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Slovak Republic", :country_code => "421", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Liechtenstein", :country_code => "423", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Austria", :country_code => "43", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "United Kingdom of Great Britain and Northern Ireland", :country_code => "44", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Denmark", :country_code => "45", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Sweden", :country_code => "46", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Norway", :country_code => "47", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Poland", :country_code => "48", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Germany", :country_code => "49", :international_call_prefix => "00", :trunk_prefix => "0" )
+ Country.create(:name => "Falkland Islands", :country_code => "500", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Belize", :country_code => "501", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Guatemala", :country_code => "502", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "El Salvador", :country_code => "503", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Honduras", :country_code => "504", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Nicaragua", :country_code => "505", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Costa Rica", :country_code => "506", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Panama", :country_code => "507", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Saint Pierre and Miquelon", :country_code => "508", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Haiti", :country_code => "509", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Peru", :country_code => "51", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Mexico", :country_code => "52", :international_call_prefix => "00", :trunk_prefix => "01" )
+ Country.create(:name => "Cuba", :country_code => "53", :international_call_prefix => "119", :trunk_prefix => "" )
+ Country.create(:name => "Argentine Republic", :country_code => "54", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Brazil", :country_code => "55", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Chile", :country_code => "56", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Colombia", :country_code => "57", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Venezuela", :country_code => "58", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Guadeloupe", :country_code => "590", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Bolivia", :country_code => "591", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Guyana", :country_code => "592", :international_call_prefix => "001", :trunk_prefix => "" )
+ Country.create(:name => "Ecuador", :country_code => "593", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "French Guiana", :country_code => "594", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Paraguay", :country_code => "595", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Martinique", :country_code => "596", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Suriname", :country_code => "597", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Uruguay", :country_code => "598", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Netherlands Antilles", :country_code => "599", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Malaysia", :country_code => "60", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Australia", :country_code => "61", :international_call_prefix => "0011", :trunk_prefix => "" )
+ Country.create(:name => "Indonesia", :country_code => "62", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Philippines", :country_code => "63", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "New Zealand", :country_code => "64", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Singapore", :country_code => "65", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Thailand", :country_code => "66", :international_call_prefix => "001", :trunk_prefix => "" )
+ Country.create(:name => "Democratic Republic of Timor-Leste", :country_code => "670", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Australian External Territories", :country_code => "672", :international_call_prefix => "0011", :trunk_prefix => "" )
+ Country.create(:name => "Brunei Darussalam", :country_code => "673", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Nauru", :country_code => "674", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Papua New Guinea", :country_code => "675", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Tonga", :country_code => "676", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Solomon Islands", :country_code => "677", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Vanuatu", :country_code => "678", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Fiji", :country_code => "679", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Palau", :country_code => "680", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Wallis and Futuna", :country_code => "681", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Cook Islands", :country_code => "682", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Niue", :country_code => "683", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Samoa", :country_code => "685", :international_call_prefix => "0", :trunk_prefix => "" )
+ Country.create(:name => "Kiribati", :country_code => "686", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "New Caledonia", :country_code => "687", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Tuvalu", :country_code => "688", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "French Polynesia", :country_code => "689", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Tokelau", :country_code => "690", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Micronesia", :country_code => "691", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Marshall Islands", :country_code => "692", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Kazakhstan", :country_code => "7", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Russian Federation", :country_code => "7", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "International Freephone Service", :country_code => "800", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "International Shared Cost Service", :country_code => "808", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Japan", :country_code => "81", :international_call_prefix => "010", :trunk_prefix => "" )
+ Country.create(:name => "Korea", :country_code => "82", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Viet Nam", :country_code => "84", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Democratic People's Republic of Korea", :country_code => "850", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Hong Kong, China", :country_code => "852", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Macao, China", :country_code => "853", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Cambodia", :country_code => "855", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Lao People's Democratic Republic", :country_code => "856", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "China", :country_code => "86", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Inmarsat SNAC", :country_code => "870", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Inmarsat", :country_code => "871", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Inmarsat", :country_code => "872", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Inmarsat", :country_code => "873", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Inmarsat", :country_code => "874", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Universal Personal Telecommunication Service", :country_code => "878", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Bangladesh", :country_code => "880", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Turkey", :country_code => "90", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "India", :country_code => "91", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Pakistan", :country_code => "92", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Afghanistan", :country_code => "93", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Sri Lanka", :country_code => "94", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Myanmar", :country_code => "95", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Maldives", :country_code => "960", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Lebanon", :country_code => "961", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Jordan", :country_code => "962", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Syrian Arab Republic", :country_code => "963", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Iraq", :country_code => "964", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Kuwait", :country_code => "965", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Saudi Arabia", :country_code => "966", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Yemen", :country_code => "967", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Oman", :country_code => "968", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "United Arab Emirates", :country_code => "971", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Israel", :country_code => "972", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Bahrain", :country_code => "973", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Qatar", :country_code => "974", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Bhutan", :country_code => "975", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Mongolia", :country_code => "976", :international_call_prefix => "001", :trunk_prefix => "" )
+ Country.create(:name => "Nepal", :country_code => "977", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "International Premium Rate Service", :country_code => "979", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Iran", :country_code => "98", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Tajikistan", :country_code => "992", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Turkmenistan", :country_code => "993", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Azerbaijani Republic", :country_code => "994", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Georgia", :country_code => "995", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Kyrgyz Republic", :country_code => "996", :international_call_prefix => "00", :trunk_prefix => "" )
+ Country.create(:name => "Uzbekistan", :country_code => "998", :international_call_prefix => "00", :trunk_prefix => "" )
+end
diff --git a/lib/tasks/send_fax_notifications.rake b/lib/tasks/send_fax_notifications.rake
new file mode 100644
index 0000000..039c509
--- /dev/null
+++ b/lib/tasks/send_fax_notifications.rake
@@ -0,0 +1,49 @@
+# encoding: UTF-8
+
+desc "Import inbound fax"
+
+task :send_fax_notifications => :environment do
+ FaxDocument.where(:state => 'received').each do |fax_document|
+ TIFF_FUFFIX = ".tiff"
+ PDF_SUFFIX = ".pdf"
+ TMP_DIR = "/tmp/"
+
+ tiff_file = File.basename(fax_document.tiff.to_s)
+
+ if !File.exists?( "#{TMP_DIR}#{tiff_file}" )
+ fax_document.state = 'unsuccessful'
+ fax_document.save
+ next
+ end
+
+ paper_size = "letter"
+ pdf_file = "#{TMP_DIR}#{File.basename(tiff_file, TIFF_FUFFIX)}#{PDF_SUFFIX}"
+
+ system "tiff2pdf \\
+ -o \"#{pdf_file}\" \\
+ -p #{paper_size} \\
+ -a \"#{fax_document.remote_station_id}\" \\
+ -c \"AMOOMA Gemeinschaft version #{GEMEINSCHAFT_VERSION}\" \\
+ -t \"#{fax_document.remote_station_id}\" \"#{TMP_DIR}#{tiff_file}\""
+
+ if !File.exists?( pdf_file )
+ fax_document.state = 'unsuccessful'
+ fax_document.save
+ next
+ end
+
+ fax_document.document = File.open(pdf_file)
+ fax_document.state = 'successful'
+
+ if fax_document.save
+ Notifications.new_fax(fax_document).deliver
+ File.delete("#{TMP_DIR}#{tiff_file}");
+ File.delete(pdf_file);
+ fax_document.tiff = nil
+ fax_document.save
+ else
+ fax_document.state = 'unsuccessful'
+ fax_document.save
+ end
+ end
+end
diff --git a/lib/tasks/send_voicemail_notifications.rake b/lib/tasks/send_voicemail_notifications.rake
new file mode 100644
index 0000000..214d832
--- /dev/null
+++ b/lib/tasks/send_voicemail_notifications.rake
@@ -0,0 +1,52 @@
+# encoding: UTF-8
+
+desc "Import inbound voicemail"
+
+task :send_voicemail_notifications => :environment do
+ VoicemailMessage.where(:notification => nil).each do |message|
+
+ message.notification = false
+ message.save
+ if !File.exists?( message.file_path )
+ $stderr.puts "File \"#{message.file_path}\" does not exist"
+ next
+ end
+
+ sip_account = SipAccount.where(:auth_name => message.username).first
+ if ! sip_account
+ $stderr.puts "SipAccount \"#{message.username}\" does not exist"
+ next
+ end
+
+ user = sip_account.sip_accountable
+ if user.class != User
+ next
+ end
+
+ if user.email.blank?
+ $stderr.puts "no email address"
+ next
+ end
+
+ voicemail_settings = sip_account.voicemail_setting
+ if !voicemail_settings
+ voicemail_settings = VoicemailSetting.new(:notify => user.send_voicemail_as_email_attachment, :attachment => user.send_voicemail_as_email_attachment, :mark_read => user.send_voicemail_as_email_attachment)
+ end
+
+ message.notification = voicemail_settings.notify
+ if voicemail_settings.notify
+ if Notifications.new_voicemail(message, voicemail_settings.attachment).deliver
+ if voicemail_settings.purge
+ message.delete
+ next
+ end
+ message.save
+ if voicemail_settings.mark_read
+ message.mark_read
+ end
+ end
+ else
+ message.save
+ end
+ end
+end
diff --git a/lib/templates/erb/scaffold/_form.html.erb b/lib/templates/erb/scaffold/_form.html.erb
new file mode 100644
index 0000000..24a1768
--- /dev/null
+++ b/lib/templates/erb/scaffold/_form.html.erb
@@ -0,0 +1,13 @@
+<%%= simple_form_for(@<%= singular_table_name %>) do |f| %>
+ <%%= f.error_notification %>
+
+ <div class="inputs">
+ <%- attributes.each do |attribute| -%>
+ <%%= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %> %>
+ <%- end -%>
+ </div>
+
+ <div class="actions">
+ <%%= f.button :submit %>
+ </div>
+<%% end %>
diff --git a/lib/uacsta.rb b/lib/uacsta.rb
new file mode 100644
index 0000000..9303092
--- /dev/null
+++ b/lib/uacsta.rb
@@ -0,0 +1,83 @@
+class Uacsta
+
+ def send(sip_account, domain, body)
+ require 'freeswitch_event'
+
+ event = FreeswitchEvent.new("NOTIFY")
+ event.add_header("profile", "gemeinschaft")
+ event.add_header("event-string", "uaCSTA")
+ event.add_header("user", sip_account)
+ event.add_header("host", domain)
+ event.add_header("content-type", "application/csta+xml")
+ event.add_body(body);
+
+ return event.fire();
+ end
+
+ def make_call(sip_account, domain, number)
+ body = '<?xml version="1.0" encoding="UTF-8"?>
+ <MakeCall xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed4">
+ <callingDevice>' + sip_account.to_s + '</callingDevice>
+ <calledDirectoryNumber>' + number.to_s + '</calledDirectoryNumber>
+ <autoOriginate>doNotPrompt</autoOriginate>
+ </MakeCall>'
+
+ self.send(sip_account, domain, body);
+ end
+
+ def answer_call(sip_account, domain)
+ body = '<?xml version="1.0" encoding="UTF-8"?>
+ <AnswerCall xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed4">
+ <callToBeAnswered>
+ <deviceID>' + sip_account + '</deviceID>
+ </callToBeAnswered>
+ </AnswerCall>'
+
+ self.send(sip_account, domain, body)
+ end
+
+ def set_microphone_mute(sip_account, domain, value)
+ body = '<?xml version="1.0" encoding="UTF-8"?>
+ <SetMicrophoneMute xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3">
+ <device>' + sip_account + '</device>
+ <auditoryApparatus>1</auditoryApparatus>
+ <microphoneMuteOn>' + value.to_s + '</microphoneMuteOn>
+ </SetMicrophoneMute>'
+
+ self.send(sip_account, domain, body)
+ end
+
+ def set_speaker_volume(sip_account, domain, value)
+ body = '<?xml version="1.0" encoding="UTF-8"?>
+ <SetSpeakerVolume xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3">
+ <device>' + sip_account + '</device>
+ <auditoryApparatus>1</auditoryApparatus>
+ <speakerVolume>' + value.to_s + '</speakerVolume>
+ </SetSpeakerVolume>'
+
+ self.send(sip_account, domain, body)
+ end
+
+ def set_do_not_disturb(sip_account, domain, value)
+ body = '<?xml version="1.0" encoding="UTF-8"?>
+ <SetDoNotDisturb xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3">
+ <device>' + sip_account + '</device>
+ <doNotDisturbOn>' + value.to_s + '</doNotDisturbOn>
+ </SetDoNotDisturb>'
+
+ self.send(sip_account, domain, body)
+ end
+
+ def set_forwarding(sip_account, domain, forwarding_type, number, activate)
+ forwarding_types = [ "forwardImmediate", "forwardBusy", "forwardNoAns" ]
+ body = '<?xml version="1.0" encoding="UTF-8"?>
+ <SetForwarding xmlns="http://www.ecma-international.org/standards/ecma-323/csta/ed3">
+ <device>' + sip_account + '</device>
+ <forwardingType>' + forwarding_types[forwarding_type.to_i] + '</forwardingType>
+ <forwardDN>' + number.to_s + '</forwardDN>
+ <activateForward>' + activate.to_s + '</activateForward>
+ </SetForwarding>'
+
+ self.send(sip_account, domain, body)
+ end
+end