diff --git a/Gemfile b/Gemfile index b2fd0f844..7dd391c42 100644 --- a/Gemfile +++ b/Gemfile @@ -9,7 +9,7 @@ source 'https://rubygems.org' # core gem 'rails', '4.2.3' # when update, all initializers eis_custom files needs check/update -gem 'iso8601', '~> 0.8.2' # for dates and times +gem 'iso8601', '~> 0.8.6' # for dates and times gem 'hashie-forbidden_attributes', '~> 0.1.1' # load env @@ -18,6 +18,8 @@ gem 'figaro', '~> 1.1.1' # model related gem 'pg', '~> 0.18.0' gem 'ransack', '~> 1.5.1' # for searching +gem 'validates_email_format_of', '~> 1.6.3' # validates email against RFC 2822 and RFC 3696 + # with polymorphic fix gem 'paper_trail', github: 'airblade/paper_trail', @@ -65,7 +67,7 @@ gem 'money-rails', '~> 1.4.1' # deploy gem 'whenever', '~> 0.9.4', require: false gem 'data_migrate', - github: 'gitlabeu/data_migrate', + github: 'internetee/data-migrate', ref: '35d22b09ff37a4e9d61ab326ad5d8eb0edf1fc81' # monitors diff --git a/Gemfile.lock b/Gemfile.lock index ee1c0ad36..dd0bcf2f0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,7 +9,7 @@ GIT request_store (~> 1.1.0) GIT - remote: https://github.com/gitlabeu/data_migrate.git + remote: https://github.com/internetee/data-migrate.git revision: 35d22b09ff37a4e9d61ab326ad5d8eb0edf1fc81 ref: 35d22b09ff37a4e9d61ab326ad5d8eb0edf1fc81 specs: @@ -81,15 +81,15 @@ GEM akami (1.3.1) gyoku (>= 0.4.0) nokogiri - arel (6.0.0) - ast (2.0.0) - astrolabe (1.3.0) - parser (>= 2.2.0.pre.3, < 3.0) - autodoc (0.5.0) + arel (6.0.3) + ast (2.1.0) + astrolabe (1.3.1) + parser (~> 2.2) + autodoc (0.5.1) actionpack activesupport (>= 3.0.0) rspec - autoprefixer-rails (5.2.1) + autoprefixer-rails (5.2.1.1) execjs json axiom-types (0.1.1) @@ -129,8 +129,6 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - celluloid (0.16.0) - timers (~> 4.0.0) chronic (0.10.2) cliver (0.3.2) coderay (1.1.0) @@ -146,7 +144,7 @@ GEM concord (0.1.5) adamantium (~> 0.2.0) equalizer (~> 0.0.9) - countries (0.11.4) + countries (0.11.5) currencies (~> 0.4.2) i18n_data (~> 0.7.0) crack (0.4.2) @@ -187,7 +185,7 @@ GEM faker (1.4.3) i18n (~> 0.5) fastercsv (1.5.5) - ffi (1.9.9) + ffi (1.9.10) figaro (1.1.1) thor (~> 0.14) flay (2.4.0) @@ -197,7 +195,7 @@ GEM ruby_parser (~> 3.1, > 3.1.0) sexp_processor (~> 4.4) formatador (0.2.5) - globalid (0.3.5) + globalid (0.3.6) activesupport (>= 4.1.0) grape (0.12.0) activesupport @@ -209,7 +207,7 @@ GEM rack-accept rack-mount virtus (>= 1.0.0) - guard (2.12.7) + guard (2.12.9) formatador (>= 0.2.4) listen (>= 2.7, <= 4.0) lumberjack (~> 1.0) @@ -243,14 +241,13 @@ GEM hashie-forbidden_attributes (0.1.1) hashie (>= 3.0) highline (1.6.21) - hitimes (1.2.2) hpricot (0.8.6) html2haml (2.0.0) erubis (~> 2.7.0) haml (~> 4.0.0) nokogiri (~> 1.6.0) ruby_parser (~> 3.5) - html5_validators (1.2.1) + html5_validators (1.2.2) httpclient (2.6.0.1) httpi (2.4.1) rack @@ -278,10 +275,9 @@ GEM kgio (2.9.3) launchy (2.4.3) addressable (~> 2.3) - libv8 (3.16.14.8) + libv8 (3.16.14.11) libxml-ruby (2.8.0) - listen (2.10.1) - celluloid (~> 0.16.0) + listen (3.0.3) rb-fsevent (>= 0.9.3) rb-inotify (>= 0.9) loofah (2.0.2) @@ -293,11 +289,11 @@ GEM thread_safe (~> 0.3, >= 0.3.1) method_source (0.8.2) mime-types (2.6.1) - mina (0.3.4) + mina (0.3.7) open4 (~> 1.3.4) rake mini_portile (0.6.2) - minitest (5.7.0) + minitest (5.8.0) monetize (1.1.0) money (~> 6.5.0) money (6.5.1) @@ -307,20 +303,20 @@ GEM monetize (~> 1.1.0) money (~> 6.5.0) railties (>= 3.0) - multi_json (1.11.1) + multi_json (1.11.2) multi_xml (0.5.5) nenv (0.2.0) newrelic_rpm (3.12.0.288) nokogiri (1.6.6.2) mini_portile (~> 0.6.0) nori (2.6.0) - notiffany (0.0.6) + notiffany (0.0.7) nenv (~> 0.1) shellany (~> 0.0) nprogress-rails (0.1.6.7) open4 (1.3.4) orm_adapter (0.5.0) - parser (2.2.2.5) + parser (2.2.2.6) ast (>= 1.1, < 3.0) pdfkit (0.6.2) pg (0.18.2) @@ -354,7 +350,7 @@ GEM rack rack-test (0.6.3) rack (>= 1.0) - railroady (1.3.0) + railroady (1.3.1) rails (4.2.3) actionmailer (= 4.2.3) actionpack (= 4.2.3) @@ -382,7 +378,7 @@ GEM rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.0.0) - raindrops (0.14.0) + raindrops (0.15.0) rake (10.4.2) ransack (1.5.1) actionpack (>= 3.0) @@ -398,7 +394,7 @@ GEM parser (~> 2.2.0.pre.7) rainbow (>= 1.99, < 3.0) unparser (~> 0.2.2) - ref (1.0.5) + ref (2.0.0) request_store (1.1.0) responders (2.1.0) railties (>= 4.2.0, < 5) @@ -406,15 +402,15 @@ GEM rspec-core (~> 3.3.0) rspec-expectations (~> 3.3.0) rspec-mocks (~> 3.3.0) - rspec-core (3.3.1) + rspec-core (3.3.2) rspec-support (~> 3.3.0) - rspec-expectations (3.3.0) + rspec-expectations (3.3.1) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.3.0) - rspec-mocks (3.3.1) + rspec-mocks (3.3.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.3.0) - rspec-rails (3.3.2) + rspec-rails (3.3.3) actionpack (>= 3.0, < 4.3) activesupport (>= 3.0, < 4.3) railties (>= 3.0, < 4.3) @@ -433,7 +429,7 @@ GEM ruby2ruby (2.1.4) ruby_parser (~> 3.1) sexp_processor (~> 4.0) - ruby_parser (3.7.0) + ruby_parser (3.7.1) sexp_processor (~> 4.1) rubycritic (1.4.0) flay (= 2.4.0) @@ -442,7 +438,7 @@ GEM reek (= 1.6.5) virtus (~> 1.0) safe_yaml (1.0.4) - sass (3.4.15) + sass (3.4.16) sass-rails (5.0.3) railties (>= 4.0.0, < 5.0) sass (~> 3.1) @@ -496,8 +492,6 @@ GEM thor (0.19.1) thread_safe (0.3.5) tilt (1.4.1) - timers (4.0.1) - hitimes traceroute (0.5.0) rails (>= 3.0.0) turbolinks (2.5.3) @@ -521,6 +515,8 @@ GEM parser (~> 2.2.2) procto (~> 0.0.2) uuidtools (2.1.5) + validates_email_format_of (1.6.3) + i18n virtus (1.0.5) axiom-types (~> 0.1) coercible (~> 1.0) @@ -531,7 +527,7 @@ GEM wasabi (3.5.0) httpi (~> 2.0) nokogiri (>= 1.4.2) - websocket-driver (0.5.4) + websocket-driver (0.6.2) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.2) whenever (0.9.4) @@ -578,7 +574,7 @@ DEPENDENCIES html2haml (~> 2.0.0) html5_validators (~> 1.2.0) isikukood - iso8601 (~> 0.8.2) + iso8601 (~> 0.8.6) jbuilder (~> 2.2.6) jquery-rails (~> 4.0.3) jquery-ui-rails (~> 5.0.3) @@ -622,4 +618,5 @@ DEPENDENCIES uglifier (~> 2.7.1) unicorn uuidtools (~> 2.1.4) + validates_email_format_of (~> 1.6.3) whenever (~> 0.9.4) diff --git a/app/controllers/admin/bank_transactions_controller.rb b/app/controllers/admin/bank_transactions_controller.rb index 1aaf452a8..7fbdb6ad1 100644 --- a/app/controllers/admin/bank_transactions_controller.rb +++ b/app/controllers/admin/bank_transactions_controller.rb @@ -7,6 +7,7 @@ class Admin::BankTransactionsController < AdminController end def create + comma_support_for(:bank_transaction, :sum) @bank_transaction = BankTransaction.new( bank_transaction_params.merge(bank_statement_id: params[:bank_statement_id]) ) @@ -21,6 +22,7 @@ class Admin::BankTransactionsController < AdminController end def update + comma_support_for(:bank_transaction, :sum) if @bank_transaction.update(bank_transaction_params) flash[:notice] = I18n.t('record_updated') redirect_to [:admin, @bank_transaction] diff --git a/app/controllers/admin/domain_versions_controller.rb b/app/controllers/admin/domain_versions_controller.rb index 981783e20..3af20bfb0 100644 --- a/app/controllers/admin/domain_versions_controller.rb +++ b/app/controllers/admin/domain_versions_controller.rb @@ -1,17 +1,17 @@ class Admin::DomainVersionsController < AdminController load_and_authorize_resource + # rubocop:disable Style/GuardClause def index - @domain = Domain.find(params[:domain_id]) + @domain = Domain.where(id: params[:domain_id]).includes({versions: :item}).first @versions = @domain.versions + + if @domain.pending_json.present? + frame = Nokogiri::XML(@domain.pending_json['frame']) + @pending_user = User.find(@domain.pending_json['current_user_id']) + @pending_domain = Epp::Domain.find(@domain.id) + @pending_domain.update(frame, @pending_user, false) + end end - - # def index - # # @q = DomainVersion.deleted.search(params[:q]) - # # @domains = @q.result.page(params[:page]) - # end - - # def show - # @versions = DomainVersion.where(item_id: params[:id]) - # end + # rubocop:enable Style/GuardClause end diff --git a/app/controllers/admin/domains_controller.rb b/app/controllers/admin/domains_controller.rb index c5d60ced3..7c90c1a49 100644 --- a/app/controllers/admin/domains_controller.rb +++ b/app/controllers/admin/domains_controller.rb @@ -18,7 +18,7 @@ class Admin::DomainsController < AdminController normalize_search_parameters do @q = domains.search(params[:q]) @domains = @q.result.page(params[:page]) - if @domains.count == 1 + if @domains.count == 1 && params[:q][:name_matches].present? redirect_to [:admin, @domains.first] and return elsif @domains.count == 0 && params[:q][:name_matches] !~ /^%.+%$/ # if we do not get any results, add wildcards to the name field and search again @@ -83,7 +83,7 @@ class Admin::DomainsController < AdminController def domain_params if params[:domain] - params.require(:domain).permit({ statuses: [] }) + params.require(:domain).permit({ statuses: [], status_notes_array: [] }) else { statuses: [] } end diff --git a/app/controllers/admin/invoices_controller.rb b/app/controllers/admin/invoices_controller.rb index dce34ac2a..5aa6d4438 100644 --- a/app/controllers/admin/invoices_controller.rb +++ b/app/controllers/admin/invoices_controller.rb @@ -16,7 +16,7 @@ class Admin::InvoicesController < AdminController flash[:notice] = t(:record_created) redirect_to [:admin, @invoice] else - flash[:alert] = t(:failed_to_create_record) + flash.now[:alert] = t(:failed_to_create_record) render 'new' end end diff --git a/app/controllers/admin/pending_deletes_controller.rb b/app/controllers/admin/pending_deletes_controller.rb new file mode 100644 index 000000000..d885b3a99 --- /dev/null +++ b/app/controllers/admin/pending_deletes_controller.rb @@ -0,0 +1,35 @@ +class Admin::PendingDeletesController < AdminController + before_action :find_domain + before_action :check_status + + def update + authorize! :update, :pending + + @epp_domain = Epp::Domain.find(params[:domain_id]) # only epp domain has apply pending + if @epp_domain.apply_pending_delete! + redirect_to admin_domain_path(@domain.id), notice: t(:pending_applied) + else + redirect_to admin_edit_domain_path(@domain.id), alert: t(:failure) + end + end + + def destroy + authorize! :destroy, :pending + + if @domain.clean_pendings! + redirect_to admin_domain_path(@domain.id), notice: t(:pending_removed) + else + redirect_to admin_domain_path(@domain.id), alert: t(:failure) + end + end + + private + + def find_domain + @domain = Domain.find(params[:domain_id]) + end + + def check_status + return redirect_to admin_domain_path(@domain.id), alert: t(:something_wrong) unless @domain.pending_delete? + end +end diff --git a/app/controllers/admin/pending_updates_controller.rb b/app/controllers/admin/pending_updates_controller.rb new file mode 100644 index 000000000..960b65ee5 --- /dev/null +++ b/app/controllers/admin/pending_updates_controller.rb @@ -0,0 +1,35 @@ +class Admin::PendingUpdatesController < AdminController + before_action :find_domain + before_action :check_status + + def update + authorize! :update, :pending + + @epp_domain = Epp::Domain.find(params[:domain_id]) # only epp domain has apply pending + if @epp_domain.apply_pending_update! + redirect_to admin_domain_path(@domain.id), notice: t(:pending_applied) + else + redirect_to admin_edit_domain_path(@domain.id), alert: t(:failure) + end + end + + def destroy + authorize! :destroy, :pending + + if @domain.clean_pendings! + redirect_to admin_domain_path(@domain.id), notice: t(:pending_removed) + else + redirect_to admin_domain_path(@domain.id), alert: t(:failure) + end + end + + private + + def find_domain + @domain = Domain.find(params[:domain_id]) + end + + def check_status + return redirect_to admin_domain_path(@domain.id), alert: t(:something_wrong) unless @domain.pending_update? + end +end diff --git a/app/controllers/admin/pricelists_controller.rb b/app/controllers/admin/pricelists_controller.rb index 8037f57f6..4de35c2c9 100644 --- a/app/controllers/admin/pricelists_controller.rb +++ b/app/controllers/admin/pricelists_controller.rb @@ -17,6 +17,7 @@ class Admin::PricelistsController < AdminController end def create + comma_support_for(:pricelist, :price) @pricelist = Pricelist.new(pricelist_params) if @pricelist.save @@ -27,6 +28,7 @@ class Admin::PricelistsController < AdminController end def update + comma_support_for(:pricelist, :price) if @pricelist.update_attributes(pricelist_params) redirect_to admin_pricelists_url else diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index 615ee63ca..6a0c5c033 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -61,7 +61,7 @@ class Admin::SettingsController < AdminController :expire_pending_confirmation ] - floats = [:registry_vat_prc] + floats = [:registry_vat_prc, :minimum_deposit] booleans = [ :ds_data_allowed, diff --git a/app/controllers/admin/zonefile_settings_controller.rb b/app/controllers/admin/zonefile_settings_controller.rb index 45f31bb55..34283d872 100644 --- a/app/controllers/admin/zonefile_settings_controller.rb +++ b/app/controllers/admin/zonefile_settings_controller.rb @@ -5,6 +5,22 @@ class Admin::ZonefileSettingsController < AdminController @zonefile_settings = ZonefileSetting.all end + def new + @zonefile_setting = ZonefileSetting.new + end + + def create + @zonefile_setting = ZonefileSetting.new(zonefile_setting_params) + + if @zonefile_setting.save + flash[:notice] = I18n.t('record_created') + redirect_to admin_zonefile_settings_path + else + flash.now[:alert] = I18n.t('failed_to_create_record') + render 'new' + end + end + def edit @zonefile_setting = ZonefileSetting.find(params[:id]) end @@ -19,6 +35,16 @@ class Admin::ZonefileSettingsController < AdminController end end + def destroy + if @zonefile_setting.destroy + flash[:notice] = I18n.t('record_deleted') + redirect_to admin_zonefile_settings_path + else + flash.now[:alert] = I18n.t('failed_to_delete_record') + render 'edit' + end + end + private def set_zonefile_setting @@ -26,6 +52,9 @@ class Admin::ZonefileSettingsController < AdminController end def zonefile_setting_params - params.require(:zonefile_setting).permit(:ttl, :refresh, :retry, :expire, :minimum_ttl, :email) + params.require(:zonefile_setting).permit( + :origin, :ttl, :refresh, :retry, :expire, :minimum_ttl, :email, + :master_nameserver, :ns_records, :a_records, :a4_records + ) end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 87099d6fa..318923e3d 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -70,4 +70,10 @@ class ApplicationController < ActionController::Base return 'public' if user.nil? "#{user.id}-#{user.class}: #{user.username}" end + + def comma_support_for(parent_key, key) + return if params[parent_key].blank? + return if params[parent_key][key].blank? + params[parent_key][key].sub!(/,/, '.') + end end diff --git a/app/controllers/registrar/deposits_controller.rb b/app/controllers/registrar/deposits_controller.rb index 4bd40eaa6..4b7d0db97 100644 --- a/app/controllers/registrar/deposits_controller.rb +++ b/app/controllers/registrar/deposits_controller.rb @@ -13,7 +13,7 @@ class Registrar::DepositsController < RegistrarController flash[:notice] = t(:please_pay_the_following_invoice) redirect_to [:registrar, @invoice] else - flash[:alert] = t(:failed_to_create_record) + flash.now[:alert] = t(:failed_to_create_record) render 'new' end end diff --git a/app/controllers/registrar/domains_controller.rb b/app/controllers/registrar/domains_controller.rb index 5da13d089..f7a122853 100644 --- a/app/controllers/registrar/domains_controller.rb +++ b/app/controllers/registrar/domains_controller.rb @@ -2,21 +2,41 @@ class Registrar::DomainsController < Registrar::DeppController # EPP controller before_action :init_domain, except: :new before_action :init_contacts_autocomplete_map, only: [:new, :edit, :create, :update] + # rubocop: disable Metrics/PerceivedComplexity + # rubocop: disable Metrics/CyclomaticComplexity + # rubocop: disable Metrics/AbcSize def index authorize! :view, Depp::Domain - limit, offset = pagination_details - res = depp_current_user.repp_request('domains', { details: true, limit: limit, offset: offset }) - if res.code == '200' - @response = res.parsed_body.with_indifferent_access - @contacts = @response ? @response[:contacts] : [] - - @paginatable_array = Kaminari.paginate_array( - [], total_count: @response[:total_number_of_records] - ).page(params[:page]).per(limit) + params[:q] ||= {} + if params[:statuses_contains] + domains = current_user.registrar.domains.includes(:registrar, :registrant).where( + "statuses @> ?::varchar[]", "{#{params[:statuses_contains].join(',')}}" + ) + else + domains = current_user.registrar.domains.includes(:registrar, :registrant) end - flash.now[:epp_results] = [{ 'code' => res.code, 'msg' => res.message }] + + normalize_search_parameters do + @q = domains.search(params[:q]) + @domains = @q.result.page(params[:page]) + if @domains.count == 1 && params[:q][:name_matches].present? + redirect_to info_registrar_domains_path(domain_name: @domains.first.name) and return + elsif @domains.count == 0 && params[:q][:name_matches] !~ /^%.+%$/ + # if we do not get any results, add wildcards to the name field and search again + n_cache = params[:q][:name_matches] + params[:q][:name_matches] = "%#{params[:q][:name_matches]}%" + @q = domains.search(params[:q]) + @domains = @q.result.page(params[:page]) + params[:q][:name_matches] = n_cache # we don't want to show wildcards in search form + end + end + + @domains = @domains.per(params[:results_per_page]) if params[:results_per_page].to_i > 0 end + # rubocop: enable Metrics/PerceivedComplexity + # rubocop: enable Metrics/CyclomaticComplexity + # rubocop: enable Metrics/AbcSize def info authorize! :view, Depp::Domain @@ -123,4 +143,18 @@ class Registrar::DomainsController < Registrar::DeppController # EPP controller # @priv_contacts_autocomplete_map ||= # current_user.registrar.priv_contacts.pluck(:name, :code).map { |c| ["#{c.second} #{c.first}", c.second] } end + + def normalize_search_parameters + ca_cache = params[:q][:valid_to_lteq] + begin + end_time = params[:q][:valid_to_lteq].try(:to_date) + params[:q][:valid_to_lteq] = end_time.try(:end_of_day) + rescue + logger.warn('Invalid date') + end + + yield + + params[:q][:valid_to_lteq] = ca_cache + end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 7397ec7cb..7a75ff78f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -45,4 +45,14 @@ module ApplicationHelper # can be api user or some other user link_to(model.updator, ['admin', model.updator]) end + + def currency(amount) + amount ||= 0 + format("%01.2f", amount.round(2)).sub(/\./, ',') + end + + def plain_username(username) + username ||= '' + username.split(':').last.to_s.strip + end end diff --git a/app/jobs/domain_delete_confirm_job.rb b/app/jobs/domain_delete_confirm_job.rb index 153ef7012..9b30a6cbd 100644 --- a/app/jobs/domain_delete_confirm_job.rb +++ b/app/jobs/domain_delete_confirm_job.rb @@ -5,10 +5,12 @@ class DomainDeleteConfirmJob < Que::Job domain = Epp::Domain.find(domain_id) case action when RegistrantVerification::CONFIRMED + domain.poll_message!(:poll_pending_delete_confirmed_by_registrant) domain.apply_pending_delete! domain.clean_pendings! when RegistrantVerification::REJECTED DomainMailer.pending_delete_rejected_notification(domain).deliver_now + domain.poll_message!(:poll_pending_delete_rejected_by_registrant) domain.clean_pendings! end destroy # it's best to destroy the job in the same transaction diff --git a/app/jobs/domain_update_confirm_job.rb b/app/jobs/domain_update_confirm_job.rb index ab57e0a45..c668307a6 100644 --- a/app/jobs/domain_update_confirm_job.rb +++ b/app/jobs/domain_update_confirm_job.rb @@ -5,10 +5,12 @@ class DomainUpdateConfirmJob < Que::Job domain = Epp::Domain.find(domain_id) case action when RegistrantVerification::CONFIRMED + domain.poll_message!(:poll_pending_update_confirmed_by_registrant) domain.apply_pending_update! domain.clean_pendings! when RegistrantVerification::REJECTED DomainMailer.pending_update_rejected_notification_for_new_registrant(domain).deliver_now + domain.poll_message!(:poll_pending_update_rejected_by_registrant) domain.clean_pendings! end destroy # it's best to destroy the job in the same transaction diff --git a/app/models/ability.rb b/app/models/ability.rb index b7c763708..8e98748c4 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -123,7 +123,8 @@ class Ability can :manage, WhiteIp can :read, ApiLog::EppLog can :read, ApiLog::ReppLog - # can :index, :delayed_job + can :update, :pending + can :destroy, :pending can :create, :zonefile can :access, :settings_menu end diff --git a/app/models/concerns/statuses.rb b/app/models/concerns/statuses.rb new file mode 100644 index 000000000..454f43d94 --- /dev/null +++ b/app/models/concerns/statuses.rb @@ -0,0 +1,7 @@ +module Statuses + extend ActiveSupport::Concern + + def force_delete? + statuses.include?(DomainStatus::FORCE_DELETE) + end +end diff --git a/app/models/contact.rb b/app/models/contact.rb index c69797403..fc29c56eb 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -19,6 +19,7 @@ class Contact < ActiveRecord::Base # Phone nr validation is very minimam in order to support legacy requirements validates :phone, format: /\+[0-9]{1,3}\.[0-9]{1,14}?/ validates :email, format: /@/ + validates :email, email_format: { message: :invalid }, if: proc { |c| c.email_changed? } validates :ident, format: { with: /\d{4}-\d{2}-\d{2}/, message: :invalid_birthday_format }, if: proc { |c| c.ident_type == 'birthday' } diff --git a/app/models/deposit.rb b/app/models/deposit.rb index fae4336cf..23045196a 100644 --- a/app/models/deposit.rb +++ b/app/models/deposit.rb @@ -7,6 +7,11 @@ class Deposit attr_accessor :amount, :description, :registrar, :registrar_id validates :amount, :registrar, presence: true + validate :validate_amount + def validate_amount + return if BigDecimal.new(amount) >= Setting.minimum_deposit + errors.add(:amount, I18n.t(:is_too_small_minimum_deposit_is, amount: Setting.minimum_deposit, currency: 'EUR')) + end def initialize(attributes = {}) attributes.each do |name, value| @@ -18,6 +23,10 @@ class Deposit false end + def amount + BigDecimal.new(@amount.to_s.sub(/,/, '.')) + end + def issue_prepayment_invoice valid? && registrar.issue_prepayment_invoice(amount, description) end diff --git a/app/models/depp/user.rb b/app/models/depp/user.rb index d510edecd..44c25bbb1 100644 --- a/app/models/depp/user.rb +++ b/app/models/depp/user.rb @@ -71,6 +71,7 @@ module Depp private + # rubocop:disable Metrics/AbcSize def validate_existance_in_server return if errors.any? res = server.open_connection @@ -92,7 +93,10 @@ module Depp rescue OpenSSL::SSL::SSLError => e Rails.logger.error "INVALID CERT: #{e}" + Rails.logger.error "INVALID CERT DEBUG INFO: epp_hostname: #{ENV['epp_hostname']}," \ + "port: #{ENV['epp_port']}, cert_path: #{ENV['cert_path']}, key_path: #{ENV['key_path']}" errors.add(:base, :invalid_cert) end + # rubocop:enable Metrics/AbcSize end end diff --git a/app/models/domain.rb b/app/models/domain.rb index 48f8c4960..3df86aacb 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -1,6 +1,7 @@ # rubocop: disable Metrics/ClassLength class Domain < ActiveRecord::Base include Versions # version/domain_version.rb + include Statuses has_paper_trail class_name: "DomainVersion", meta: { children: :children_log } # TODO: whois requests ip whitelist for full info for own domains and partial info for other domains @@ -105,6 +106,13 @@ class Domain < ActiveRecord::Base errors.add(:base, :invalid_auth_information_reserved) end + validate :check_permissions + def check_permissions + return unless force_delete? + errors.add(:base, I18n.t(:object_status_prohibits_operation)) + false + end + validates :nameservers, object_count: { min: -> { Setting.ns_min_count }, max: -> { Setting.ns_max_count } @@ -341,6 +349,14 @@ class Domain < ActiveRecord::Base true end + def poll_message!(message_key) + registrar.messages.create!( + body: "#{I18n.t(message_key)}: #{name}", + attached_obj_id: id, + attached_obj_type: self.class.to_s + ) + end + def preclean_pendings self.registrant_verification_token = nil self.registrant_verification_asked_at = nil @@ -351,6 +367,8 @@ class Domain < ActiveRecord::Base self.pending_json = {} statuses.delete(DomainStatus::PENDING_UPDATE) statuses.delete(DomainStatus::PENDING_DELETE) + status_notes[DomainStatus::PENDING_UPDATE] = '' + status_notes[DomainStatus::PENDING_DELETE] = '' save end @@ -530,21 +548,16 @@ class Domain < ActiveRecord::Base self.delete_at = outzone_at + Setting.redemption_grace_period.days end + # rubocop:disable Metrics/AbcSize def set_force_delete - statuses << DomainStatus::FORCE_DELETE - statuses << DomainStatus::SERVER_RENEW_PROHIBITED - statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED - statuses << DomainStatus::SERVER_UPDATE_PROHIBITED - statuses << DomainStatus::SERVER_MANUAL_INZONE - statuses << DomainStatus::PENDING_DELETE + self.statuses_backup = statuses statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED) statuses.delete(DomainStatus::SERVER_DELETE_PROHIBITED) + statuses.delete(DomainStatus::PENDING_UPDATE) + statuses.delete(DomainStatus::PENDING_TRANSFER) + statuses.delete(DomainStatus::PENDING_RENEW) + statuses.delete(DomainStatus::PENDING_CREATE) - self.force_delete_at = Time.zone.now + Setting.redemption_grace_period.days unless force_delete_at - save(validate: false) - end - - def unset_force_delete statuses.delete(DomainStatus::FORCE_DELETE) statuses.delete(DomainStatus::SERVER_RENEW_PROHIBITED) statuses.delete(DomainStatus::SERVER_TRANSFER_PROHIBITED) @@ -552,7 +565,28 @@ class Domain < ActiveRecord::Base statuses.delete(DomainStatus::SERVER_MANUAL_INZONE) statuses.delete(DomainStatus::PENDING_DELETE) + statuses << DomainStatus::FORCE_DELETE + statuses << DomainStatus::SERVER_RENEW_PROHIBITED + statuses << DomainStatus::SERVER_TRANSFER_PROHIBITED + statuses << DomainStatus::SERVER_UPDATE_PROHIBITED + statuses << DomainStatus::SERVER_MANUAL_INZONE + statuses << DomainStatus::PENDING_DELETE + + self.force_delete_at = Time.zone.now + Setting.redemption_grace_period.days unless force_delete_at + save(validate: false) + end + # rubocop:enable Metrics/AbcSize + + def unset_force_delete + s = [] + s << DomainStatus::EXPIRED if statuses.include?(DomainStatus::EXPIRED) + s << DomainStatus::SERVER_HOLD if statuses.include?(DomainStatus::SERVER_HOLD) + s << DomainStatus::DELETE_CANDIDATE if statuses.include?(DomainStatus::DELETE_CANDIDATE) + + self.statuses = (statuses_backup + s).uniq + self.force_delete_at = nil + self.statuses_backup = [] save(validate: false) end @@ -570,13 +604,19 @@ class Domain < ActiveRecord::Base end def pending_update? - statuses.include?(DomainStatus::PENDING_UPDATE) + statuses.include?(DomainStatus::PENDING_UPDATE) && !statuses.include?(DomainStatus::FORCE_DELETE) end + # public api def update_prohibited? pending_update_prohibited? && pending_delete_prohibited? end + # public api + def delete_prohibited? + statuses.include?(DomainStatus::FORCE_DELETE) + end + # TODO: Review the list and disallow epp calls def pending_update_prohibited? (statuses & [ @@ -599,7 +639,7 @@ class Domain < ActiveRecord::Base end def pending_delete? - statuses.include?(DomainStatus::PENDING_DELETE) + statuses.include?(DomainStatus::PENDING_DELETE) && !statuses.include?(DomainStatus::FORCE_DELETE) end # TODO: Review the list and disallow epp calls @@ -645,5 +685,13 @@ class Domain < ActiveRecord::Base def update_whois_record whois_record.blank? ? create_whois_record : whois_record.save end + + def status_notes_array=(notes) + self.status_notes = {} + notes ||= [] + statuses.each_with_index do |status, i| + status_notes[status] = notes[i] + end + end end # rubocop: enable Metrics/ClassLength diff --git a/app/models/domain_status.rb b/app/models/domain_status.rb index 0f984b4e7..66908c16e 100644 --- a/app/models/domain_status.rb +++ b/app/models/domain_status.rb @@ -120,12 +120,49 @@ class DomainStatus < ActiveRecord::Base end class << self - def statuses_for_client - CLIENT_STATUSES.map { |x| x.sub('client', '') } + def admin_statuses + [ + SERVER_HOLD, + # sync with admin_statuses_map + # SERVER_MANUAL_INZONE, + # SERVER_RENEW_PROHIBITED, + # SERVER_TRANSFER_PROHIBITED, + # SERVER_REGISTRANT_CHANGE_PROHIBITED, + # SERVER_ADMIN_CHANGE_PROHIBITED, + # SERVER_TECH_CHANGE_PROHIBITED, + SERVER_DELETE_PROHIBITED, + SERVER_UPDATE_PROHIBITED + ] end - def statuses_for_admin - SERVER_STATUSES.map { |x| [x.sub('server', ''), x] } + def admin_statuses_map + [ + ['Hold', SERVER_HOLD], + # sync with admin_statuses + # ['ManualInzone', SERVER_MANUAL_INZONE], + # [''], + # ['RenewProhibited', SERVER_RENEW_PROHIBITED], + # ['TransferProhibited', SERVER_TRANSFER_PROHIBITED], + # ['RegistrantChangeProhibited', SERVER_REGISTRANT_CHANGE_PROHIBITED], + # ['AdminChangeProhibited', SERVER_ADMIN_CHANGE_PROHIBITED], + # ['TechChangeProhibited', SERVER_TECH_CHANGE_PROHIBITED], + # [''], + ['UpdateProhibited', SERVER_UPDATE_PROHIBITED], + ['DeleteProhibited', SERVER_DELETE_PROHIBITED] + ] + end + + def admin_not_deletable_statuses + [ + OK, + INACTIVE, + FORCE_DELETE, + PENDING_CREATE, + PENDING_DELETE, + PENDING_RENEW, + PENDING_TRANSFER, + PENDING_UPDATE + ] end end end diff --git a/app/models/epp/domain.rb b/app/models/epp/domain.rb index ae571fa4f..f34312bc6 100644 --- a/app/models/epp/domain.rb +++ b/app/models/epp/domain.rb @@ -4,7 +4,7 @@ class Epp::Domain < Domain before_validation :manage_permissions def manage_permissions - return unless update_prohibited? + return unless update_prohibited? || delete_prohibited? add_epp_error('2304', nil, nil, I18n.t(:object_status_prohibits_operation)) false end @@ -433,9 +433,10 @@ class Epp::Domain < Domain return unless update(frame, user, false) clean_pendings! - self.deliver_emails = true # turn on email delivery for epp + self.deliver_emails = true # turn on email delivery DomainMailer.registrant_updated_notification_for_new_registrant(self).deliver_now old_registrant_email.deliver_now + true end def apply_pending_delete! @@ -446,6 +447,7 @@ class Epp::Domain < Domain DomainMailer.delete_confirmation(self).deliver_now clean_pendings! if epp_destroy(frame, user, false) + true end def attach_legal_document(legal_document_data) @@ -460,7 +462,7 @@ class Epp::Domain < Domain def epp_destroy(frame, user_id, verify = true) return false unless valid? - if verify && + if verify && Setting.request_confirmation_on_domain_deletion_enabled && frame.css('delete').attr('verified').to_s.downcase != 'yes' @@ -579,7 +581,14 @@ class Epp::Domain < Domain # rubocop: disable Metrics/MethodLength # rubocop: disable Metrics/AbcSize def query_transfer(frame, current_user) - unless can_be_transferred_to?(current_user.registrar) + unless transferrable? + throw :epp_error, { + code: '2304', + msg: I18n.t(:object_status_prohibits_operation) + } + end + + if current_user.registrar == registrar throw :epp_error, { code: '2002', msg: I18n.t(:domain_already_belongs_to_the_querying_registrar) @@ -737,8 +746,15 @@ class Epp::Domain < Domain true end - def can_be_transferred_to?(new_registrar) - new_registrar != registrar + def transferrable? + (statuses & [ + DomainStatus::PENDING_CREATE, + DomainStatus::PENDING_UPDATE, + DomainStatus::PENDING_DELETE, + DomainStatus::PENDING_RENEW, + DomainStatus::PENDING_TRANSFER, + DomainStatus::FORCE_DELETE + ]).empty? end ## SHARED diff --git a/app/models/invoice.rb b/app/models/invoice.rb index 83145553b..a658b69df 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -12,7 +12,7 @@ class Invoice < ActiveRecord::Base } attr_accessor :billing_email - validates :billing_email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i }, allow_blank: true + validates :billing_email, email_format: { message: :invalid }, allow_blank: true validates :invoice_type, :due_date, :currency, :seller_name, :seller_iban, :buyer_name, :invoice_items, :vat_prc, presence: true diff --git a/app/models/registrar.rb b/app/models/registrar.rb index d5ba8bd9a..0110e5a16 100644 --- a/app/models/registrar.rb +++ b/app/models/registrar.rb @@ -45,7 +45,9 @@ class Registrar < ActiveRecord::Base end end - validates :email, :billing_email, format: /@/, allow_blank: true + validates :email, :billing_email, + email_format: { message: :invalid }, + allow_blank: true, if: proc { |c| c.email_changed? } WHOIS_TRIGGERS = %w(name email phone street city state zip) diff --git a/app/models/zonefile_setting.rb b/app/models/zonefile_setting.rb index 8747a11ca..4a9656b7a 100644 --- a/app/models/zonefile_setting.rb +++ b/app/models/zonefile_setting.rb @@ -1,7 +1,16 @@ class ZonefileSetting < ActiveRecord::Base include Versions # version/zonefile_setting_version.rb - validates :origin, :ttl, :refresh, :retry, :expire, :minimum_ttl, :email, presence: true + validates :origin, :ttl, :refresh, :retry, :expire, :minimum_ttl, :email, :master_nameserver, presence: true validates :ttl, :refresh, :retry, :expire, :minimum_ttl, numericality: { only_integer: true } + validates :origin, uniqueness: true + + before_destroy :check_for_dependencies + def check_for_dependencies + dc = Domain.where("name ILIKE ?", "%.#{origin}").count + return if dc == 0 + errors.add(:base, I18n.t('there_are_count_domains_in_this_zone', count: dc)) + false + end def self.generate_zonefiles pluck(:origin).each do |origin| diff --git a/app/validators/domain_name_validator.rb b/app/validators/domain_name_validator.rb index 471565c30..c8ed2813c 100644 --- a/app/validators/domain_name_validator.rb +++ b/app/validators/domain_name_validator.rb @@ -33,7 +33,8 @@ class DomainNameValidator < ActiveModel::EachValidator def validate_blocked(value) return true unless value - BlockedDomain.where("names @> ?::varchar[]", "{#{value}}").count == 0 + return false if BlockedDomain.where("names @> ?::varchar[]", "{#{value}}").count > 0 + ZonefileSetting.where(origin: value).count == 0 end end end diff --git a/app/views/admin/bank_statements/show.haml b/app/views/admin/bank_statements/show.haml index db8d64004..9797c59bf 100644 --- a/app/views/admin/bank_statements/show.haml +++ b/app/views/admin/bank_statements/show.haml @@ -63,7 +63,7 @@ %tr %td= link_to(l(x.paid_at, format: :date_long), [:admin, x]) %td= x.buyer_name - %td= x.sum + %td= currency(x.sum) %td= x.currency - c = x.binded? ? 'text-success' : 'text-danger' %td{class: c}= x.binded? ? t(:binded) : t(:not_binded) diff --git a/app/views/admin/bank_transactions/_form.haml b/app/views/admin/bank_transactions/_form.haml index 244284fda..b8c63c166 100644 --- a/app/views/admin/bank_transactions/_form.haml +++ b/app/views/admin/bank_transactions/_form.haml @@ -18,7 +18,7 @@ .form-group = f.label :sum, class: 'col-md-4 control-label required' .col-md-8 - = f.text_field(:sum, class: 'form-control', required: true) + = f.text_field(:sum, value: currency(f.object.sum), class: 'form-control', required: true) .form-group = f.label :reference_no, class: 'col-md-4 control-label required' diff --git a/app/views/admin/bank_transactions/show.haml b/app/views/admin/bank_transactions/show.haml index 7bcd8cfa1..4133386e5 100644 --- a/app/views/admin/bank_transactions/show.haml +++ b/app/views/admin/bank_transactions/show.haml @@ -36,7 +36,7 @@ %dd= @bank_transaction.description %dt= t(:sum) - %dd= @bank_transaction.sum + %dd= currency(@bank_transaction.sum) %dt= t(:currency) %dd= @bank_transaction.currency diff --git a/app/views/admin/contacts/_form.haml b/app/views/admin/contacts/_form.haml index acb4c30df..d1538ab4e 100644 --- a/app/views/admin/contacts/_form.haml +++ b/app/views/admin/contacts/_form.haml @@ -5,7 +5,12 @@ .col-md-8 .tab-content{style:'margin-top: 20px;'} #general-tab.tab-pane.active - = render 'admin/contacts/form_partials/statuses', f: f + = render 'admin/shared/form/statuses', f: f, + model: 'contact', + admin_statuses_map: Contact.admin_statuses_map, + disabled_statuses: Contact::STATUSES - Contact.admin_statuses, + not_deletable_statuses: [Contact::OK, Contact::LINKED] + .row .col-md-8.text-right = button_tag(t(:save), class: 'btn btn-primary') diff --git a/app/views/admin/contacts/edit.haml b/app/views/admin/contacts/edit.haml index 62498ec3f..7fb7b6e4e 100644 --- a/app/views/admin/contacts/edit.haml +++ b/app/views/admin/contacts/edit.haml @@ -1,5 +1,5 @@ - content_for :actions do - = link_to(t(:add_new_status), '#', class: 'btn btn-primary js-add-contact-status') + = link_to(t(:add_new_status), '#', class: 'btn btn-primary js-add-status') = link_to(t(:back_to_contact), [:admin, @contact], class: 'btn btn-default') = render 'shared/title', name: "#{t(:edit)}: #{@contact.name}" diff --git a/app/views/admin/domain_versions/_version.haml b/app/views/admin/domain_versions/_version.haml index c8bef118b..4c40d5566 100644 --- a/app/views/admin/domain_versions/_version.haml +++ b/app/views/admin/domain_versions/_version.haml @@ -1,32 +1,65 @@ -- if version.present? && domain.present? - - children = HashWithIndifferentAccess.new(version.children) - - nameservers = children[:nameservers] || [] - - tech_contacts = children[:tech_contacts] || [] - - admin_contacts = children[:admin_contacts] || [] - - registrant = children[:registrant] || [] +- statuses_link ||= false +- version ||= false +- domain ||= false +- pending_user ||= false + +- if domain.present? + - if version # normal history + - children = HashWithIndifferentAccess.new(version.children) + - nameservers = children[:nameservers] || [] + - tech_contacts = children[:tech_contacts] || [] + - admin_contacts = children[:admin_contacts] || [] + - registrant = children[:registrant] || [] + - event = version.event + - creator = plain_username(version.terminator) + - else # pending history + - nameservers = domain.nameservers + - tech_contacts = domain.tech_contacts + - admin_contacts = domain.admin_contacts + - registrant = [domain.registrant] + - creator = pending_user.try(:username) + - event = 'pending' %td %p.nowrap - = l(domain.updated_at, format: :short) - = version.event + = l(domain.updated_at, format: :shorts) + - if statuses_link + %br= link_to t(:edit_statuses), edit_admin_domain_path(params[:domain_id]) + %p.text-right - = version.terminator + = event + %br + = creator + + %td + %p + - domain.statuses.each do |s| + = s + - notes = domain.status_notes[s] + - if notes + %br + %i= notes + %br + - if domain.pending_json.present? + %p + = link_to t(:pending_epp), '#', class: 'js-pending-toggle' %td %p = "#{domain.period}#{domain.period_unit}" - = "#{l(domain.valid_from, format: :date)} - #{l(domain.valid_to, format: :date)}" - %p - = domain.status + %br + = "#{l(domain.valid_from, format: :date)}" + %br + = "#{l(domain.valid_to, format: :date)}" %td - - registrant.each do |oc| + - registrant.each do |r| %p - = oc[:name] - = oc[:phone] - = oc[:email] + = r[:name] + = r[:phone] + = r[:email] %p - = oc[:code] + = r[:code] %td - admin_contacts.each do |ac| @@ -47,8 +80,8 @@ = tc[:code] %td - - nameservers.each do |ns| - %p + %p + - nameservers.each do |ns| = ns[:hostname] %br = ns[:ipv4] @@ -58,69 +91,13 @@ %p = domain.registrar.name - -# %td - -# = version.children.inspect - - -# %td{ class: changes.include?(:domain) ? 'edit-highlight' : 'no-highlight' } - -# - if children[:domain] - -# %p{:style => "font-size:x-small;"} - -# = children[:domain][:period] - -# = children[:domain][:period_unit] if children[:domain][:period] - -# - if children[:domain][:valid_to] && children[:domain][:valid_from] - -# = "," - -# = l(children[:domain][:valid_from], format: :date) + '-' + l(children[:domain][:valid_to], format: :date) - -# - if children[:domain].try(:[], :registrar_id) - -# = "," - -# = Registrar.find(children[:domain][:registrar_id]).try(:name) - -# - if children[:domain][:status] - -# = ',' + children[:domain][:status] - - - -# %td{ class: changes.include?(:registrant) ? 'edit-highlight' : 'no-highlight' } - -# - if children[:registrant] - -# %p{:style => "font-size:x-small;"} - -# = children[:registrant][:name] - -# = "," - -# = children[:registrant][:phone] - -# = "," - -# = children[:registrant][:email] - -# = "," - -# = children[:registrant][:code] - - -# %td{ class: changes.include?(:admin_contacts) ? 'edit-highlight' : 'no-highlight' } - -# - if children[:admin_contacts] - -# - children[:admin_contacts].each do |ac| - -# %p{:style => "font-size:x-small;"} - -# = ac[:name] - -# = "," - -# = ac[:phone] - -# = "," - -# = ac[:email] - -# = "," - -# = ac[:code] - - -# %td{ class: changes.include?(:tech_contacts) ? 'edit-highlight' : 'no-highlight' } - -# - if children[:tech_contacts] - -# - children[:tech_contacts].each do |tc| - -# %p{:style => "font-size:x-small;"} - -# = tc[:name] - -# = "," - -# = tc[:phone] - -# = "," - -# = tc[:email] - -# = "," - -# = tc[:code] - - -# %td{ class: changes.include?(:nameservers) ? 'edit-highlight' : 'no-highlight' } - -# - if children[:nameservers] - -# - children[:nameservers].each do |ns| - -# %p{:style => "font-size:x-small;"} - -# = ns[:hostname] - -# = "," - -# = ns[:ipv4] || ns[:ipv6] - - -# %td - -# %p{ :style => 'font-size:x-small;' } - -# = l(version.created_at, format: :short) - -# = whodunnit_with_protocol(version.whodunnit) - -# = version.event + - if domain.pending_json.present? + %tr.js-pending{ style: 'display: none;' } + %td{colspan: 8} + = preserve do + %pre + - formatted_req = Nokogiri::XML(domain.pending_json['frame']) + - if formatted_req.errors.none? + = formatted_req + - else + = domain.pending_json['frame'] diff --git a/app/views/admin/domain_versions/index.haml b/app/views/admin/domain_versions/index.haml index 58bb175ab..d948d53df 100644 --- a/app/views/admin/domain_versions/index.haml +++ b/app/views/admin/domain_versions/index.haml @@ -9,20 +9,36 @@ %thead %tr %th{class: 'col-xs-1'}= t(:timestap) - %th{class: 'col-xs-2'}= t(:period) - %th{class: 'col-xs-2'}= t(:owner) + %th{class: 'col-xs-2'}= t(:statuses) + %th{class: 'col-xs-1'}= t(:period) + %th{class: 'col-xs-2'}= t(:registrant) %th{class: 'col-xs-2'}= t(:admin) %th{class: 'col-xs-2'}= t(:tech) %th{class: 'col-xs-2'}= t(:nameservers) %th{class: 'col-xs-2'}= t(:registrar) %tbody + - if @pending_domain.present? + %tr.small + = render 'admin/domain_versions/version', + domain: @pending_domain, pending_user: @pending_user, statuses_link: true + + -# current version - if @domain.versions.present? %tr.small = render 'admin/domain_versions/version', domain: @domain, version: @domain.versions.last + -# all other older versions - @domain.versions.not_creates.reverse.each do |version| %tr.small = render 'admin/domain_versions/version', domain: version.reify, version: version.previous + +:coffee + $(document).on 'click', '.js-pending-toggle', (e) -> + e.preventDefault() + + $(document).on 'mousedown', '.js-pending-toggle', (e) -> + target = $(e.target) + target.parents('tr').next('tr.js-pending').toggle() diff --git a/app/views/admin/domain_versions/oldindex.haml b/app/views/admin/domain_versions/oldindex.haml deleted file mode 100644 index 15a57d0f7..000000000 --- a/app/views/admin/domain_versions/oldindex.haml +++ /dev/null @@ -1,28 +0,0 @@ --# .row - -# .col-sm-12 - -# %h2.text-center-xs= t(:domains) --# %hr --# .row - -# .col-md-12 - -# .table-responsive - -# %table.table.table-hover.table-bordered.table-condensed - -# %thead - -# %tr - -# %th{class: 'col-xs-1'} - -# = t(:name) - -# %th{class: 'col-xs-1'} - -# = sort_link(@q, 'whodunnit') - -# %th{class: 'col-xs-1'} - -# = sort_link(@q, 'created_at') - - -# %tbody - -# - @domains.each do |domain| - -# - obj = domain.reify - -# %tr - -# %td= link_to(obj.name, admin_domain_version_path(obj)) - -# %td= whodunnit_with_protocol(domain.whodunnit) unless domain.whodunnit.nil? - -# %td= l(obj.created_at, format: :short) - --# .row - -# .col-md-12 - -# = paginate @domains diff --git a/app/views/admin/domains/_form.haml b/app/views/admin/domains/_form.haml index 570b8397b..087930c58 100644 --- a/app/views/admin/domains/_form.haml +++ b/app/views/admin/domains/_form.haml @@ -6,7 +6,12 @@ .col-md-8 .tab-content{style:'margin-top: 20px;'} #general-tab.tab-pane.active - = render 'admin/domains/form_partials/statuses', f: f + = render 'admin/shared/form/statuses', f: f, + model: 'domain', + admin_statuses_map: DomainStatus.admin_statuses_map, + disabled_statuses: DomainStatus::STATUSES - DomainStatus.admin_statuses, + not_deletable_statuses: DomainStatus.admin_not_deletable_statuses + .row .col-md-8.text-right = button_tag(t(:save), class: 'btn btn-primary') diff --git a/app/views/admin/domains/edit.haml b/app/views/admin/domains/edit.haml index 4b1c25ca6..70596d00e 100644 --- a/app/views/admin/domains/edit.haml +++ b/app/views/admin/domains/edit.haml @@ -1,5 +1,13 @@ - content_for :actions do + = link_to(t(:add_new_status), '#', class: 'btn btn-primary js-add-status') + - if @domain.force_deletable? + = link_to(t(:set_force_delete), set_force_delete_admin_domain_path(@domain), + method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') + - else + = link_to(t(:unset_force_delete), unset_force_delete_admin_domain_path(@domain), + method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') = link_to(t(:back_to_domain), [:admin, @domain], class: 'btn btn-default') + = render 'shared/title', name: "#{t(:edit)}: #{@domain.name}" = render 'form' diff --git a/app/views/admin/domains/form/_pending_delete.haml b/app/views/admin/domains/form/_pending_delete.haml new file mode 100644 index 000000000..6924a2b30 --- /dev/null +++ b/app/views/admin/domains/form/_pending_delete.haml @@ -0,0 +1,8 @@ +- if (status == DomainStatus::PENDING_DELETE && f.object.pending_json.present?) + = link_to(t(:apply_pending), admin_domain_pending_delete_path(f.object.id, f.object.id), + method: :patch, data: { confirm: t(:are_you_sure) }, + class: 'btn btn-danger btn-xs') + + = link_to(t(:delete_pending), admin_domain_pending_delete_path(f.object.id, f.object.id), + method: :delete, data: { confirm: t(:are_you_sure) }, + class: 'btn btn-danger btn-xs') diff --git a/app/views/admin/domains/form/_pending_update.haml b/app/views/admin/domains/form/_pending_update.haml new file mode 100644 index 000000000..32f8b2882 --- /dev/null +++ b/app/views/admin/domains/form/_pending_update.haml @@ -0,0 +1,8 @@ +- if (status == DomainStatus::PENDING_UPDATE && f.object.pending_json.present?) + = link_to(t(:apply_pending), admin_domain_pending_update_path(f.object.id, f.object.id), + method: :patch, data: { confirm: t(:are_you_sure) }, + class: 'btn btn-danger btn-xs') + + = link_to(t(:delete_pending), admin_domain_pending_update_path(f.object.id, f.object.id), + method: :delete, data: { confirm: t(:are_you_sure) }, + class: 'btn btn-danger btn-xs') diff --git a/app/views/admin/domains/form_partials/_statuses.haml b/app/views/admin/domains/form_partials/_statuses.haml deleted file mode 100644 index 52b9282ef..000000000 --- a/app/views/admin/domains/form_partials/_statuses.haml +++ /dev/null @@ -1,29 +0,0 @@ -#domain-statuses - - @server_statuses.each do |x| - .panel.panel-default - .panel-heading.clearfix - .pull-left= t(:status) - .pull-right - = link_to(t(:add_another), '#', class: 'btn btn-primary btn-xs add-domain-status') - = link_to(t(:delete), '#', class: 'btn btn-danger btn-xs destroy-status') - .panel-body - .form-group - = f.label 'status', class: 'col-md-2 control-label' - .col-md-10 - = select_tag 'domain[statuses][]', options_for_select(DomainStatus.statuses_for_admin, x), include_blank: true, class: 'form-control' - .form-group - = label_tag t(:description), nil, class: 'col-md-2 control-label' - .col-md-10 - = text_field_tag :description, nil, class: 'form-control', autocomplete: 'off' - - @other_statuses.each do |x| - = hidden_field_tag 'domain[statuses][]', x, readonly: true -:coffee - $("#domain-statuses").nestedAttributes - bindAddTo: $(".add-domain-status") - - $('.destroy-status').on 'click', (e) -> - e.preventDefault() - if $('.panel').length > 1 - $(this).parents('.panel').remove() - else - $(this).parents('.panel').find('select').val('') diff --git a/app/views/admin/domains/partials/_statuses.haml b/app/views/admin/domains/partials/_statuses.haml index 51a88b18b..ab8e55e6c 100644 --- a/app/views/admin/domains/partials/_statuses.haml +++ b/app/views/admin/domains/partials/_statuses.haml @@ -6,9 +6,13 @@ %thead %tr %th{class: 'col-xs-6'}= t(:status) - %th{class: 'col-xs-6'}= t(:description) + %th{class: 'col-xs-6'}= t(:notes) %tbody - - @domain.statuses.each do |x| + - @domain.statuses.each do |status| %tr - %td= x %td + - if @domain.pending_json.present? && [DomainStatus::PENDING_UPDATE, DomainStatus::PENDING_DELETE].include?(status) + = link_to status, admin_domain_domain_versions_path(@domain.id) + - else + = status + %td= @domain.status_notes[status] diff --git a/app/views/admin/domains/show.haml b/app/views/admin/domains/show.haml index be4e37614..17a85b841 100644 --- a/app/views/admin/domains/show.haml +++ b/app/views/admin/domains/show.haml @@ -1,10 +1,6 @@ - content_for :actions do = link_to(t(:edit_statuses), edit_admin_domain_path(@domain), class: 'btn btn-primary') = link_to(t(:history), admin_domain_domain_versions_path(@domain.id), method: :get, class: 'btn btn-primary') - - if @domain.force_deletable? - = link_to(t(:set_force_delete), set_force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') - - else - = link_to(t(:unset_force_delete), unset_force_delete_admin_domain_path(@domain), method: :post, data: { confirm: t(:are_you_sure) }, class: 'btn btn-warning') = render 'shared/title', name: @domain.name diff --git a/app/views/admin/pricelists/_form.haml b/app/views/admin/pricelists/_form.haml index 9e1715e72..a751825ca 100644 --- a/app/views/admin/pricelists/_form.haml +++ b/app/views/admin/pricelists/_form.haml @@ -15,7 +15,7 @@ .form-group = f.label :price .input-group - = f.text_field(:price, class: 'form-control') + = f.text_field(:price, value: currency(f.object.price), class: 'form-control') %span.input-group-addon= Money.default_currency .form-group.input-daterange = f.label :valid_from, t(:valid) diff --git a/app/views/admin/pricelists/index.haml b/app/views/admin/pricelists/index.haml index 2f51a4329..50edcff2e 100644 --- a/app/views/admin/pricelists/index.haml +++ b/app/views/admin/pricelists/index.haml @@ -33,7 +33,7 @@ %td= pricelist.category %td= pricelist.duration %td= pricelist.operation_category - %td= pricelist.price + %td= currency(pricelist.price) %td= l(pricelist.valid_from, format: :ydate) %td= l(pricelist.valid_to, format: :ydate) %td= link_to(t(:edit), edit_admin_pricelist_path(pricelist), class: 'btn btn-xs btn-primary') diff --git a/app/views/admin/settings/index.haml b/app/views/admin/settings/index.haml index 2c46c1f2e..fc4cc4e9d 100644 --- a/app/views/admin/settings/index.haml +++ b/app/views/admin/settings/index.haml @@ -47,7 +47,7 @@ %th{class: 'col-xs-6'}= t(:setting) %th{class: 'col-xs-6'}= t(:value) %tbody - = render 'setting_row', var: :transfer_wait_time + /= render 'setting_row', var: :transfer_wait_time = render 'setting_row', var: :ds_algorithm = render 'setting_row', var: :client_side_status_editing_enabled = render 'setting_row', var: :api_ip_whitelist_enabled @@ -69,6 +69,7 @@ = render 'setting_row', var: :invoice_number_max = render 'setting_row', var: :days_to_keep_invoices_active = render 'setting_row', var: :days_to_keep_overdue_invoices_active + = render 'setting_row', var: :minimum_deposit = render 'setting_row', var: :registry_billing_email = render 'setting_row', var: :registry_invoice_contact = render 'setting_row', var: :registry_vat_no diff --git a/app/views/admin/contacts/form_partials/_statuses.haml b/app/views/admin/shared/form/_statuses.haml similarity index 62% rename from app/views/admin/contacts/form_partials/_statuses.haml rename to app/views/admin/shared/form/_statuses.haml index 3b913bdd9..697abad44 100644 --- a/app/views/admin/contacts/form_partials/_statuses.haml +++ b/app/views/admin/shared/form/_statuses.haml @@ -1,35 +1,38 @@ -#js-contact-statuses +#js-statuses - f.object.statuses.each do |s| - - disabled = !Contact.admin_statuses.include?(s) + - disabled = disabled_statuses.include?(s) - disabled_style = disabled ? 'display: none' : '' - - delete_style = [Contact::OK, Contact::LINKED].include?(s) ? 'display: none' : '' + - delete_style = not_deletable_statuses.include?(s) ? 'display: none' : '' .panel.panel-default .panel-heading.clearfix .pull-left= t(:status) .pull-right + - if model == 'domain' + = render 'admin/domains/form/pending_update', f: f, status: s + = render 'admin/domains/form/pending_delete', f: f, status: s = link_to(t(:delete), '#', class: 'btn btn-danger btn-xs js-destroy-status', style: delete_style) .panel-body .form-group = f.label 'status', class: 'col-md-2 control-label' .col-md-10 .js-select{style: disabled_style} - = select_tag 'contact[statuses][]', - options_for_select(Contact::admin_statuses_map, s), + = select_tag "#{model}[statuses][]", + options_for_select(admin_statuses_map, s), include_blank: true, class: "form-control" - if disabled .disabled-value.js-disabled-value = s - = hidden_field_tag 'contact[statuses][]', s, readonly: true + = hidden_field_tag "#{model}[statuses][]", s, readonly: true .form-group = label_tag t(:notes), nil, class: 'col-md-2 control-label' .col-md-10 - value = f.object.new_record? ? '' : f.object.status_notes[s] - = text_field_tag 'contact[status_notes_array][]', value, class: 'form-control' + = text_field_tag "#{model}[status_notes_array][]", value, class: 'form-control' :coffee - $("#js-contact-statuses").nestedAttributes - bindAddTo: $(".js-add-contact-status") + $("#js-statuses").nestedAttributes + bindAddTo: $(".js-add-status") afterAdd: (el) -> if el.find('.js-disabled-value') el.find('.js-disabled-value').remove() diff --git a/app/views/admin/zonefile_settings/_form.haml b/app/views/admin/zonefile_settings/_form.haml new file mode 100644 index 000000000..42ef94efa --- /dev/null +++ b/app/views/admin/zonefile_settings/_form.haml @@ -0,0 +1,80 @@ + += form_for [:admin, @zonefile_setting], html: { class: 'form-horizontal' } do |f| + .row + .col-md-8 + #domain-statuses + = render 'shared/full_errors', object: f.object + + .form-group + .col-md-4.control-label + = f.label :origin + .col-md-8 + - if @zonefile_setting.persisted? + = f.text_field :origin, class: 'form-control', disabled: true + - else + = f.text_field :origin, class: 'form-control' + + .form-group + .col-md-4.control-label + = f.label :ttl + .col-md-8 + = f.text_field :ttl, class: 'form-control' + + .form-group + .col-md-4.control-label + = f.label :refresh + .col-md-8 + = f.text_field :refresh, class: 'form-control' + + .form-group + .col-md-4.control-label + = f.label :retry + .col-md-8 + = f.text_field :retry, class: 'form-control' + + .form-group + .col-md-4.control-label + = f.label :expire + .col-md-8 + = f.text_field :expire, class: 'form-control' + + .form-group + .col-md-4.control-label + = f.label :minimum_ttl + .col-md-8 + = f.text_field :minimum_ttl, class: 'form-control' + + .form-group + .col-md-4.control-label + = f.label :email + .col-md-8 + = f.text_field :email, class: 'form-control' + + .form-group + .col-md-4.control-label + = f.label :master_nameserver + .col-md-8 + = f.text_field :master_nameserver, class: 'form-control' + + .form-group + .col-md-4.control-label + = f.label :ns_records + .col-md-8 + = f.text_area :ns_records, class: 'form-control', rows: 8 + + .form-group + .col-md-4.control-label + = f.label :a_records + .col-md-8 + = f.text_area :a_records, class: 'form-control', rows: 8 + + .form-group + .col-md-4.control-label + = f.label :a4_records, t(:a4_records) + .col-md-8 + = f.text_area :a4_records, class: 'form-control', rows: 8 + + %hr + .row + .col-md-8.text-right + %button.btn.btn-primary= t(:save) diff --git a/app/views/admin/zonefile_settings/edit.haml b/app/views/admin/zonefile_settings/edit.haml index 5f58cb040..93234ed2e 100644 --- a/app/views/admin/zonefile_settings/edit.haml +++ b/app/views/admin/zonefile_settings/edit.haml @@ -1,53 +1,7 @@ -= render 'shared/title', name: t(:zonefile_settings) +- content_for :actions do + = link_to(t(:back), admin_zonefile_settings_path, class: 'btn btn-default') + = link_to(t(:delete), admin_zonefile_setting_path(@zonefile_setting), + method: :delete, data: { confirm: t(:are_you_sure) }, class: 'btn btn-danger') += render 'shared/title', name: t(:edit_zone) -= form_for [:admin, @zonefile_setting], html: { class: 'form-horizontal' } do |f| - .row - .col-md-8 - #domain-statuses - = render 'shared/full_errors', object: f.object - - .form-group - .col-md-4.control-label - = f.label :origin - .col-md-8 - = f.text_field :origin, class: 'form-control', disabled: true - - .form-group - .col-md-4.control-label - = f.label :ttl - .col-md-8 - = f.text_field :ttl, class: 'form-control' - - .form-group - .col-md-4.control-label - = f.label :refresh - .col-md-8 - = f.text_field :refresh, class: 'form-control' - - .form-group - .col-md-4.control-label - = f.label :retry - .col-md-8 - = f.text_field :retry, class: 'form-control' - .form-group - .col-md-4.control-label - = f.label :expire - .col-md-8 - = f.text_field :expire, class: 'form-control' - - .form-group - .col-md-4.control-label - = f.label :minimum_ttl - .col-md-8 - = f.text_field :minimum_ttl, class: 'form-control' - - .form-group - .col-md-4.control-label - = f.label :email - .col-md-8 - = f.text_field :email, class: 'form-control', email: true - - %hr - .row - .col-md-8.text-right - %button.btn.btn-primary= t(:save) += render 'form' diff --git a/app/views/admin/zonefile_settings/index.haml b/app/views/admin/zonefile_settings/index.haml index 8ef09d498..a062c0793 100644 --- a/app/views/admin/zonefile_settings/index.haml +++ b/app/views/admin/zonefile_settings/index.haml @@ -1,3 +1,5 @@ +- content_for :actions do + = link_to(t(:new), new_admin_zonefile_setting_path, class: 'btn btn-primary') = render 'shared/title', name: t(:zonefile_settings) .row @@ -15,6 +17,6 @@ %tr %td= link_to(x, edit_admin_zonefile_setting_path(x)) %td - = link_to(t(:generate_zonefile), - admin_zonefiles_path(origin: x.origin), + = link_to(t(:generate_zonefile), + admin_zonefiles_path(origin: x.origin), method: 'post', class: 'btn btn-xs btn-primary') diff --git a/app/views/admin/zonefile_settings/new.haml b/app/views/admin/zonefile_settings/new.haml new file mode 100644 index 000000000..211054e03 --- /dev/null +++ b/app/views/admin/zonefile_settings/new.haml @@ -0,0 +1,5 @@ +- content_for :actions do + = link_to(t(:back), admin_zonefile_settings_path, class: 'btn btn-default') += render 'shared/title', name: t(:new_zone) + += render 'form' diff --git a/app/views/layouts/registrar/application.haml b/app/views/layouts/registrar/application.haml index d6c8cf30c..a2273de22 100644 --- a/app/views/layouts/registrar/application.haml +++ b/app/views/layouts/registrar/application.haml @@ -56,8 +56,8 @@ %ul.dropdown-menu{role: "menu"} - ApiUser.where(identity_code: current_user.identity_code).includes(:registrar).each do |x| %li= link_to "#{x} (#{x.roles.first}) - #{x.registrar}", "/registrar/switch_user/#{x.id}" - - if user_signed_in? - %li= link_to t(:log_out_), '/registrar/logout' + - if user_signed_in? + %li= link_to t(:log_out_), '/registrar/logout' .container = render 'shared/flash' diff --git a/app/views/registrar/contacts/form_partials/_general.haml b/app/views/registrar/contacts/form_partials/_general.haml index 24e02e435..9ef12d8f1 100644 --- a/app/views/registrar/contacts/form_partials/_general.haml +++ b/app/views/registrar/contacts/form_partials/_general.haml @@ -11,7 +11,7 @@ = Country.new(f.object.ident_country_code).try(:to_s) = " [#{f.object.ident_country_code}]" - else - - country_selected = @contact.persisted? ? '' : 'EE' + - country_selected = @contact.persisted? ? '' : (params[:depp_contact].try(:[], :ident_country_code) || 'EE') = f.select(:ident_country_code, SortedCountry.all_options(country_selected), {}, class: 'js-ident-country-code', required: true) @@ -24,7 +24,7 @@ = Depp::Contact.type_string(f.object.ident_type) = " [#{f.object.ident_type}]" - else - - type_selected = @contact.persisted? ? '' : 'bic' + - type_selected = @contact.persisted? ? '' : (params[:depp_contact].try(:[], :ident_type) || 'bic') = f.select(:ident_type, Depp::Contact::SELECTION_TYPES, { selected: type_selected }, class: 'js-ident-type', required: true) @@ -33,7 +33,7 @@ .col-md-3.control-label = f.label :ident, t(:ident) + '*' .col-md-7 - - if f.object.ident.present? + - if @contact.persisted? && f.object.ident.present? .disabled-value = f.object.ident - else diff --git a/app/views/registrar/domains/index.haml b/app/views/registrar/domains/index.haml index e4faeea80..587ef2b5e 100644 --- a/app/views/registrar/domains/index.haml +++ b/app/views/registrar/domains/index.haml @@ -7,42 +7,89 @@ = render 'shared/title', name: t(:domains) .row - .col-md-12{style: 'margin-bottom: -15px;'} - = form_tag info_registrar_domains_path, class: 'form-horizontal', method: :get do - .col-md-11 - .form-group - = text_field_tag :domain_name, params[:domain_name], class: 'form-control', placeholder: t(:domain_name), autocomplete: 'off', autofocus: true - .col-md-1.text-right.text-center-xs - .form-group - %button.btn.btn-default + .col-md-12 + = search_form_for [:registrar, @q], html: { style: 'margin-bottom: 0;', class: 'js-form', autocomplete: 'off' } do |f| + .row + .col-md-3 + .form-group + = f.label :name + = f.search_field :name_matches, value: params[:q][:name_matches], class: 'form-control', placeholder: t(:name) + .col-md-3 + .form-group + = f.label t(:registrant_ident) + = f.search_field :registrant_ident_eq, class: 'form-control', placeholder: t(:registrant_ident) + .col-md-3 + .form-group + = f.label t(:contact_ident) + = f.search_field :contacts_ident_eq, class: 'form-control', placeholder: t(:contact_ident) + .col-md-3 + .form-group + = f.label t(:nameserver_hostname) + = f.search_field :nameservers_hostname_eq, class: 'form-control', placeholder: t(:nameserver_hostname) + .row + .col-md-6 + .form-group + = label_tag t(:status) + = select_tag :statuses_contains, options_for_select(DomainStatus::STATUSES, params[:statuses_contains]), { multiple: true, placeholder: t(:choose), class: 'form-control js-combobox' } + .col-md-3 + .form-group + = f.label t(:valid_to_from) + = f.search_field :valid_to_gteq, value: params[:q][:valid_to_gteq], class: 'form-control datepicker', placeholder: t(:valid_to_from) + .col-md-3 + .form-group + = f.label t(:valid_to_until) + = f.search_field :valid_to_lteq, value: params[:q][:valid_to_lteq], class: 'form-control datepicker', placeholder: t(:valid_to_until) + .row + .col-md-6 + .col-md-3 + .form-group + = label_tag t(:results_per_page) + = text_field_tag :results_per_page, params[:results_per_page], class: 'form-control', placeholder: t(:results_per_page) + .col-md-3{style: 'padding-top: 25px;'} + %button.btn.btn-primary.search   %span.glyphicon.glyphicon-search   - + %button.btn.btn-default.js-reset-form + = t(:clear_fields) %hr -- if @response - .table-responsive - %table.table.table-hover.table-condensed - %thead - %tr - %th{class: 'col-xs-3'}= t(:name) - %th{class: 'col-xs-6'}= t(:valid) - %th{class: 'col-xs-3'}= t(:actions) - %tbody - - @response['domains'].each do |x| +.row + .col-md-12 + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead %tr - %td= link_to(x['name'], info_registrar_domains_path(domain_name: x['name'])) - %td - = Time.zone.parse(x['valid_from']).try(:to_date) - \- - = Time.zone.parse(x['valid_to']).try(:to_date) - %td - = link_to(t(:edit), edit_registrar_domains_path(domain_name: x['name']), - class: 'btn btn-primary btn-xs') - = link_to(t(:renew), renew_registrar_domains_path(domain_name: x['name']), - class: 'btn btn-default btn-xs') - = link_to(t(:delete), delete_registrar_domains_path(domain_name: x['name']), + %th{class: 'col-xs-2'} + = sort_link(@q, 'name') + %th{class: 'col-xs-2'} + = sort_link(@q, 'registrant_name', t(:registrant)) + %th{class: 'col-xs-2'} + = sort_link(@q, 'valid_to', t(:valid_to)) + %th{class: 'col-xs-2'}= t('actions') + %tbody + - @domains.each do |x| + %tr + %td= link_to(truncate(x.name), info_registrar_domains_path(domain_name: x.name)) + %td + - if x.registrant + = link_to(x.registrant, registrar_contact_path(id: x.registrant.code)) + %td= l(x.valid_to, format: :date_long) + %td + = link_to(t(:edit), edit_registrar_domains_path(domain_name: x.name), + class: 'btn btn-primary btn-xs') + = link_to(t(:renew), renew_registrar_domains_path(domain_name: x.name), class: 'btn btn-default btn-xs') + = link_to(t(:delete), delete_registrar_domains_path(domain_name: x.name), + class: 'btn btn-default btn-xs') +.row + .col-md-6 + = paginate @domains + .col-md-6.text-right + .pagination + = t(:result_count, count: @domains.total_count) - = paginate @paginatable_array +:coffee + $(".js-reset-form").on "click", (e) -> + e.preventDefault(); + window.location = "#{registrar_domains_path}" diff --git a/app/views/registrar/invoices/partials/_details.haml b/app/views/registrar/invoices/partials/_details.haml index 0b897ce7f..a2677f170 100644 --- a/app/views/registrar/invoices/partials/_details.haml +++ b/app/views/registrar/invoices/partials/_details.haml @@ -27,7 +27,7 @@ %dt= t(:description) - @invoice.description.prepend(' - ') if @invoice.description.present? - %dd= "#{t('invoice_no', no: @invoice.id)}#{@invoice.description}" + %dd= "#{t('invoice_no', no: @invoice.number)}#{@invoice.description}" %dt= t(:reference_no) %dd= @invoice.reference_no diff --git a/app/views/registrar/invoices/partials/_items.haml b/app/views/registrar/invoices/partials/_items.haml index 784fe4412..6ed5144a8 100644 --- a/app/views/registrar/invoices/partials/_items.haml +++ b/app/views/registrar/invoices/partials/_items.haml @@ -14,19 +14,19 @@ %tr %td= t(x.description) %td= x.unit - %td= x.amount - %td= x.price - %td= x.item_sum_without_vat + %td= currency(x.amount) + %td= currency(x.price) + %td= currency(x.item_sum_without_vat) %tfoot %tr %th{colspan: 3} %th= t(:total_without_vat) - %td= @invoice.sum_without_vat + %td= currency(@invoice.sum_without_vat) %tr %th.no-border{colspan: 3} %th= t('vat', vat_prc: (@invoice.vat_prc * 100).round) - %td= @invoice.vat + %td= currency(@invoice.vat) %tr %th.no-border{colspan: 3} %th= t(:total) - %td= @invoice.sum + %td= currency(@invoice.sum) diff --git a/app/views/registrar/invoices/pdf.haml b/app/views/registrar/invoices/pdf.haml index 5888f2bc2..d90c24fec 100644 --- a/app/views/registrar/invoices/pdf.haml +++ b/app/views/registrar/invoices/pdf.haml @@ -177,7 +177,7 @@ %dt= t(:description) - @invoice.description.prepend(' - ') if @invoice.description.present? - %dd= "#{t('invoice_no', no: @invoice.id)}#{@invoice.description}" + %dd= "#{t('invoice_no', no: @invoice.number)}#{@invoice.description}" %dt= t(:reference_no) %dd= @invoice.reference_no @@ -229,22 +229,22 @@ %tr %td= t(x.description) %td= x.unit - %td= x.amount - %td= x.price - %td= "#{x.item_sum_without_vat} #{@invoice.currency}" + %td= currency(x.amount) + %td= currency(x.price) + %td= "#{currency(x.item_sum_without_vat)} #{@invoice.currency}" %tfoot %tr %th{colspan: 3} %th= t(:total_without_vat) - %td= "#{@invoice.sum_without_vat} #{@invoice.currency}" + %td= "#{currency(@invoice.sum_without_vat)} #{@invoice.currency}" %tr %th.no-border{colspan: 3} %th= t('vat', vat_prc: (@invoice.vat_prc * 100).round) - %td= "#{@invoice.vat} #{@invoice.currency}" + %td= "#{currency(@invoice.vat)} #{@invoice.currency}" %tr %th.no-border{colspan: 3} %th= t(:total) - %td= "#{@invoice.sum} #{@invoice.currency}" + %td= "#{currency(@invoice.sum)} #{@invoice.currency}" #footer %hr diff --git a/config/application.rb b/config/application.rb index 3fe81b40c..7734cc6e9 100644 --- a/config/application.rb +++ b/config/application.rb @@ -74,3 +74,5 @@ module Registry } end end + +require 'validates_email_format_of' diff --git a/config/initializers/initial_settings.rb b/config/initializers/initial_settings.rb index c2d867c26..bcee95150 100644 --- a/config/initializers/initial_settings.rb +++ b/config/initializers/initial_settings.rb @@ -22,6 +22,7 @@ if con.present? && con.table_exists?('settings') Setting.save_default(:ns_max_count, 11) Setting.save_default(:transfer_wait_time, 0) + Setting.transfer_wait_time = 0 Setting.save_default(:request_confrimation_on_registrant_change_enabled, true) Setting.save_default(:request_confirmation_on_domain_deletion_enabled, true) @@ -31,6 +32,8 @@ if con.present? && con.table_exists?('settings') Setting.save_default(:invoice_number_max, 149999) Setting.save_default(:days_to_keep_invoices_active, 30) Setting.save_default(:days_to_keep_overdue_invoices_active, 30) + Setting.save_default(:minimum_deposit, 0.0) + Setting.save_default(:days_to_renew_domain_before_expire, 90) Setting.save_default(:expire_warning_period, 15) Setting.save_default(:redemption_grace_period, 30) diff --git a/config/locales/en.yml b/config/locales/en.yml index 5d2f0dfff..8052ce0aa 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -22,6 +22,7 @@ en: longer: "%a, %e. %b %Y, %H:%M" long: "%A, %e. %B %Y, %H:%M" short: "%d.%m.%y, %H:%M" + shorts: "%d.%m.%y, %H:%M:%S" date: "%d.%m.%y" date_long: "%d. %B %Y" ydate: "%Y.%m.%d" @@ -654,7 +655,10 @@ en: general: General id_card: 'ID Card' m_id: 'M-ID' - destroyed: It was successfully deleted. + pending_removed: Pending was successfully removed. + pending_applied: Pending was successfully applied. + something_wrong: Not success, something went wrong! + failure: Not success not_found: Not found no_connection_to_registry: Connection issue to the registry EPP or REPP server! Please try again later. domain_not_found: 'Domain was not found' @@ -894,3 +898,15 @@ en: nameserver_hostname: 'Nameserver hostname' result_count: '%{count} results' failed_to_generate_invoice_invoice_number_limit_reached: 'Failed to generate invoice - invoice number limit reached' + is_too_small_minimum_deposit_is: 'is too small. Minimum deposit is %{amount} %{currency}' + a4_records: 'AAAA records' + new_zone: 'New zone' + edit_zone: 'Edit zone' + there_are_count_domains_in_this_zone: 'There are %{count} domains in this zone' + poll_pending_update_confirmed_by_registrant: 'Registrant confirmed domain update' + poll_pending_update_rejected_by_registranti: 'Registrant rejected domain update' + poll_pending_delete_rejected_by_registrant: 'Registrant rejected domain deletion' + poll_pending_delete_confirmed_by_registrant: 'Registrant confirmed domain deletion' + manage: Manage + pending_epp: Pending epp + diff --git a/config/routes.rb b/config/routes.rb index c1b7ad237..feffb2665 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -184,6 +184,8 @@ Rails.application.routes.draw do resources :domains do resources :domain_versions + resources :pending_updates + resources :pending_deletes member do post 'set_force_delete' post 'unset_force_delete' diff --git a/db/migrate/20150803080914_add_ns_data_to_zones.rb b/db/migrate/20150803080914_add_ns_data_to_zones.rb new file mode 100644 index 000000000..2d438128c --- /dev/null +++ b/db/migrate/20150803080914_add_ns_data_to_zones.rb @@ -0,0 +1,7 @@ +class AddNsDataToZones < ActiveRecord::Migration + def change + add_column :zonefile_settings, :ns_records, :text + add_column :zonefile_settings, :a_records, :text + add_column :zonefile_settings, :a4_records, :text + end +end diff --git a/db/migrate/20150810114746_add_statuses_backup_for_domains.rb b/db/migrate/20150810114746_add_statuses_backup_for_domains.rb new file mode 100644 index 000000000..85ae9aab7 --- /dev/null +++ b/db/migrate/20150810114746_add_statuses_backup_for_domains.rb @@ -0,0 +1,5 @@ +class AddStatusesBackupForDomains < ActiveRecord::Migration + def change + add_column :domains, :statuses_backup, :string, array: true, default: [] + end +end diff --git a/db/schema-read-only.rb b/db/schema-read-only.rb index f7f535ed6..5eee65c59 100644 --- a/db/schema-read-only.rb +++ b/db/schema-read-only.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150722071128) do +ActiveRecord::Schema.define(version: 20150810114746) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -216,6 +216,12 @@ ActiveRecord::Schema.define(version: 20150722071128) do t.string "updator_str" end + create_table "data_migrations", id: false, force: :cascade do |t| + t.string "version", null: false + end + + add_index "data_migrations", ["version"], name: "unique_data_migrations", unique: true, using: :btree + create_table "delegation_signers", force: :cascade do |t| t.integer "domain_id" t.string "key_tag" @@ -323,6 +329,7 @@ ActiveRecord::Schema.define(version: 20150722071128) do t.string "statuses", array: true t.boolean "reserved", default: false t.hstore "status_notes" + t.string "statuses_backup", default: [], array: true end add_index "domains", ["delete_at"], name: "index_domains_on_delete_at", using: :btree @@ -1026,7 +1033,7 @@ ActiveRecord::Schema.define(version: 20150722071128) do t.text "crt" t.string "type" t.string "registrant_ident" - t.string "encrypted_password", default: "" + t.string "encrypted_password", default: "", null: false t.datetime "remember_created_at" t.integer "failed_attempts", default: 0, null: false t.datetime "locked_at" @@ -1076,6 +1083,9 @@ ActiveRecord::Schema.define(version: 20150722071128) do t.datetime "updated_at" t.string "creator_str" t.string "updator_str" + t.text "ns_records" + t.text "a_records" + t.text "a4_records" end end diff --git a/db/structure.sql b/db/structure.sql index 46aaf34c1..62d98a861 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -82,33 +82,28 @@ CREATE FUNCTION generate_zonefile(i_origin character varying) RETURNS text ret = concat(tmp_var, chr(10), chr(10)); + -- origin ns records + SELECT ns_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + ret := concat(ret, '; Zone NS Records', chr(10), tmp_var, chr(10)); + -- ns records SELECT array_to_string( array( SELECT concat(d.name_puny, '. IN NS ', ns.hostname, '.') FROM domains d JOIN nameservers ns ON ns.domain_id = d.id - WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter OR d.name = i_origin + WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter + AND NOT ('{serverHold,clientHold}' && d.statuses) ORDER BY d.name ), chr(10) ) INTO tmp_var; - ret := concat(ret, '; Zone NS Records', chr(10), tmp_var, chr(10), chr(10)); + ret := concat(ret, tmp_var, chr(10), chr(10)); - -- a glue records for origin nameservers - SELECT array_to_string( - array( - SELECT concat(ns.hostname, '. IN A ', ns.ipv4) - FROM nameservers ns - JOIN domains d ON d.id = ns.domain_id - WHERE d.name = i_origin - AND ns.hostname LIKE '%.' || d.name - AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '' - ), chr(10) - ) INTO tmp_var; - - ret := concat(ret, '; Zone A Records', chr(10), tmp_var); + -- origin a glue records + SELECT a_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + ret := concat(ret, '; Zone A Records', chr(10), tmp_var, chr(10)); -- a glue records for other nameservers SELECT array_to_string( @@ -120,43 +115,15 @@ CREATE FUNCTION generate_zonefile(i_origin character varying) RETURNS text AND ns.hostname LIKE '%.' || d.name AND d.name <> i_origin AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '' - AND NOT EXISTS ( -- filter out glue records that already appeared in origin glue recrods - SELECT 1 FROM nameservers nsi - JOIN domains di ON nsi.domain_id = di.id - WHERE di.name = i_origin - AND nsi.hostname = ns.hostname - ) + AND NOT ('{serverHold,clientHold}' && d.statuses) ), chr(10) ) INTO tmp_var; - -- TODO This is a possible subtitition to the previous query, stress testing is needed to see which is faster + ret := concat(ret, tmp_var, chr(10), chr(10)); - -- SELECT ns.* - -- FROM nameservers ns - -- JOIN domains d ON d.id = ns.domain_id - -- WHERE d.name LIKE '%ee' AND d.name NOT LIKE '%pri.ee' - -- AND ns.hostname LIKE '%.' || d.name - -- AND d.name <> 'ee' - -- AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '' - -- AND ns.hostname NOT IN ( - -- SELECT ns.hostname FROM domains d JOIN nameservers ns ON d.id = ns.domain_id WHERE d.name = 'ee' - -- ) - - ret := concat(ret, chr(10), tmp_var, chr(10), chr(10)); - - -- aaaa glue records for origin nameservers - SELECT array_to_string( - array( - SELECT concat(ns.hostname, '. IN AAAA ', ns.ipv6) - FROM nameservers ns - JOIN domains d ON d.id = ns.domain_id - WHERE d.name = i_origin - AND ns.hostname LIKE '%.' || d.name - AND ns.ipv6 IS NOT NULL AND ns.ipv6 <> '' - ), chr(10) - ) INTO tmp_var; - - ret := concat(ret, '; Zone AAAA Records', chr(10), tmp_var); + -- origin aaaa glue records + SELECT a4_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + ret := concat(ret, '; Zone AAAA Records', chr(10), tmp_var, chr(10)); -- aaaa glue records for other nameservers SELECT array_to_string( @@ -168,16 +135,11 @@ CREATE FUNCTION generate_zonefile(i_origin character varying) RETURNS text AND ns.hostname LIKE '%.' || d.name AND d.name <> i_origin AND ns.ipv6 IS NOT NULL AND ns.ipv6 <> '' - AND NOT EXISTS ( -- filter out glue records that already appeared in origin glue recrods - SELECT 1 FROM nameservers nsi - JOIN domains di ON nsi.domain_id = di.id - WHERE di.name = i_origin - AND nsi.hostname = ns.hostname - ) + AND NOT ('{serverHold,clientHold}' && d.statuses) ), chr(10) ) INTO tmp_var; - ret := concat(ret, chr(10), tmp_var, chr(10), chr(10)); + ret := concat(ret, tmp_var, chr(10), chr(10)); -- ds records SELECT array_to_string( @@ -189,6 +151,7 @@ CREATE FUNCTION generate_zonefile(i_origin character varying) RETURNS text FROM domains d JOIN dnskeys dk ON dk.domain_id = d.id WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter AND dk.flags = 257 + AND NOT ('{serverHold,clientHold}' && d.statuses) ), chr(10) ) INTO tmp_var; @@ -690,6 +653,15 @@ CREATE SEQUENCE countries_id_seq ALTER SEQUENCE countries_id_seq OWNED BY countries.id; +-- +-- Name: data_migrations; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE data_migrations ( + version character varying NOT NULL +); + + -- -- Name: delegation_signers; Type: TABLE; Schema: public; Owner: -; Tablespace: -- @@ -938,7 +910,8 @@ CREATE TABLE domains ( force_delete_at timestamp without time zone, statuses character varying[], reserved boolean DEFAULT false, - status_notes hstore + status_notes hstore, + statuses_backup character varying[] DEFAULT '{}'::character varying[] ); @@ -2377,7 +2350,7 @@ CREATE TABLE pricelists ( id integer NOT NULL, "desc" character varying, category character varying, - price_cents numeric(10,2) DEFAULT 0 NOT NULL, + price_cents numeric(10,2) DEFAULT 0.0 NOT NULL, price_currency character varying DEFAULT 'EUR'::character varying NOT NULL, valid_from timestamp without time zone, valid_to timestamp without time zone, @@ -2641,7 +2614,7 @@ CREATE TABLE users ( crt text, type character varying, registrant_ident character varying, - encrypted_password character varying DEFAULT ''::character varying, + encrypted_password character varying DEFAULT ''::character varying NOT NULL, remember_created_at timestamp without time zone, failed_attempts integer DEFAULT 0 NOT NULL, locked_at timestamp without time zone @@ -2784,7 +2757,10 @@ CREATE TABLE zonefile_settings ( created_at timestamp without time zone, updated_at timestamp without time zone, creator_str character varying, - updator_str character varying + updator_str character varying, + ns_records text, + a_records text, + a4_records text ); @@ -4512,6 +4488,13 @@ CREATE INDEX index_whois_records_on_domain_id ON whois_records USING btree (doma CREATE INDEX index_whois_records_on_registrar_id ON whois_records USING btree (registrar_id); +-- +-- Name: unique_data_migrations; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX unique_data_migrations ON data_migrations USING btree (version); + + -- -- Name: unique_schema_migrations; Type: INDEX; Schema: public; Owner: -; Tablespace: -- @@ -4727,8 +4710,6 @@ INSERT INTO schema_migrations (version) VALUES ('20150227092508'); INSERT INTO schema_migrations (version) VALUES ('20150227113121'); -INSERT INTO schema_migrations (version) VALUES ('20150302130224'); - INSERT INTO schema_migrations (version) VALUES ('20150302161712'); INSERT INTO schema_migrations (version) VALUES ('20150303130729'); @@ -4787,8 +4768,6 @@ INSERT INTO schema_migrations (version) VALUES ('20150417082723'); INSERT INTO schema_migrations (version) VALUES ('20150421134820'); -INSERT INTO schema_migrations (version) VALUES ('20150422090645'); - INSERT INTO schema_migrations (version) VALUES ('20150422092514'); INSERT INTO schema_migrations (version) VALUES ('20150422132631'); @@ -4833,8 +4812,6 @@ INSERT INTO schema_migrations (version) VALUES ('20150519115050'); INSERT INTO schema_migrations (version) VALUES ('20150519140853'); -INSERT INTO schema_migrations (version) VALUES ('20150519142542'); - INSERT INTO schema_migrations (version) VALUES ('20150519144118'); INSERT INTO schema_migrations (version) VALUES ('20150520163237'); @@ -4847,7 +4824,9 @@ INSERT INTO schema_migrations (version) VALUES ('20150522164020'); INSERT INTO schema_migrations (version) VALUES ('20150525075550'); -INSERT INTO schema_migrations (version) VALUES ('20150603141054'); +INSERT INTO schema_migrations (version) VALUES ('20150601083516'); + +INSERT INTO schema_migrations (version) VALUES ('20150601083800'); INSERT INTO schema_migrations (version) VALUES ('20150603141549'); @@ -4855,8 +4834,12 @@ INSERT INTO schema_migrations (version) VALUES ('20150603211318'); INSERT INTO schema_migrations (version) VALUES ('20150603212659'); +INSERT INTO schema_migrations (version) VALUES ('20150609093515'); + INSERT INTO schema_migrations (version) VALUES ('20150609103333'); +INSERT INTO schema_migrations (version) VALUES ('20150610111019'); + INSERT INTO schema_migrations (version) VALUES ('20150610112238'); INSERT INTO schema_migrations (version) VALUES ('20150610144547'); @@ -4865,8 +4848,12 @@ INSERT INTO schema_migrations (version) VALUES ('20150611124920'); INSERT INTO schema_migrations (version) VALUES ('20150612123111'); +INSERT INTO schema_migrations (version) VALUES ('20150612125720'); + INSERT INTO schema_migrations (version) VALUES ('20150701074344'); +INSERT INTO schema_migrations (version) VALUES ('20150703084206'); + INSERT INTO schema_migrations (version) VALUES ('20150703084632'); INSERT INTO schema_migrations (version) VALUES ('20150706091724'); @@ -4883,3 +4870,7 @@ INSERT INTO schema_migrations (version) VALUES ('20150713113436'); INSERT INTO schema_migrations (version) VALUES ('20150722071128'); +INSERT INTO schema_migrations (version) VALUES ('20150803080914'); + +INSERT INTO schema_migrations (version) VALUES ('20150810114746'); + diff --git a/doc/epp-examples.md b/doc/epp-examples.md index c26d25426..b821b2330 100644 --- a/doc/epp-examples.md +++ b/doc/epp-examples.md @@ -1,6 +1,6 @@ # EPP REQUEST - RESPONSE EXAMPLES -GENERATED AT: 2015-07-28 08:39:28 UTC -EXAMPLE COUNT: 187 +GENERATED AT: 2015-08-11 11:53:57 UTC +EXAMPLE COUNT: 189 --- @@ -44,7 +44,7 @@ RESPONSE: ABC-12345 - ccReg-3999773216 + ccReg-9082045089 @@ -77,7 +77,7 @@ RESPONSE: ABC-12345 - ccReg-5475530912 + ccReg-7708178641 @@ -128,13 +128,13 @@ RESPONSE: - FIRST0:6A469D40 - 2015-07-28T08:39:31Z + FIRST0:D0F0F307 + 2015-08-11T11:53:59Z ABC-12345 - ccReg-9419100913 + ccReg-6573619456 @@ -185,13 +185,13 @@ RESPONSE: - FIRST0:9175FF51 - 2015-07-28T08:39:31Z + FIRST0:20292602 + 2015-08-11T11:53:59Z ABC-12345 - ccReg-7112806347 + ccReg-3908771262 @@ -242,13 +242,13 @@ RESPONSE: - FIRST0:B0D47101 - 2015-07-28T08:39:31Z + FIRST0:89AE5789 + 2015-08-11T11:53:59Z ABC-12345 - ccReg-3112027327 + ccReg-5422552838 @@ -299,13 +299,64 @@ RESPONSE: - FIRST0:D97D17A8 - 2015-07-28T08:39:31Z + FIRST0:368D504A + 2015-08-11T11:54:00Z ABC-12345 - ccReg-8158844070 + ccReg-1406291850 + + + +``` + +### EPP Contact with valid user create command should return email issue + +REQUEST: + +```xml + + + + + + + John Doe + + 123 Example + Tallinn + 123456 + EE + + + +372.1234567 + not@valid + + + + + 37605030299 + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Email is invalid [email] + + + ABC-12345 + ccReg-0983305061 @@ -358,12 +409,12 @@ RESPONSE: FIRST0:ABC12345 - 2015-07-28T08:39:32Z + 2015-08-11T11:54:01Z ABC-12345 - ccReg-6348378603 + ccReg-4916468828 @@ -416,12 +467,12 @@ RESPONSE: FIRST0:ABC:ABC:12345 - 2015-07-28T08:39:32Z + 2015-08-11T11:54:01Z ABC-12345 - ccReg-6309817337 + ccReg-9016083927 @@ -473,7 +524,7 @@ RESPONSE: ABC-12345 - ccReg-3718665628 + ccReg-3212008733 @@ -525,7 +576,7 @@ RESPONSE: ABC-12345 - ccReg-7046803120 + ccReg-8511471629 @@ -577,7 +628,7 @@ RESPONSE: ABC-12345 - ccReg-7830897117 + ccReg-1241570735 @@ -630,7 +681,7 @@ RESPONSE: ABC-12345 - ccReg-0585936448 + ccReg-9718956708 @@ -680,7 +731,7 @@ RESPONSE: ABC-12345 - ccReg-9395726958 + ccReg-0579468088 @@ -733,7 +784,7 @@ RESPONSE: ABC-12345 - ccReg-3003187201 + ccReg-8588827952 @@ -786,12 +837,12 @@ RESPONSE: FIRST0:CID:FIRST0:ABC:ABC:NEW:12345 - 2015-07-28T08:39:38Z + 2015-08-11T11:54:07Z ABC-12345 - ccReg-3792142117 + ccReg-9156643507 @@ -844,12 +895,12 @@ RESPONSE: FIRST0:CID:FIRST0:ABC:CID:ABC:NEW:12345 - 2015-07-28T08:39:38Z + 2015-08-11T11:54:07Z ABC-12345 - ccReg-8833719931 + ccReg-1774855635 @@ -902,12 +953,12 @@ RESPONSE: FIRST0:ABC22 - 2015-07-28T08:39:39Z + 2015-08-11T11:54:07Z ABC-12345 - ccReg-9289988831 + ccReg-3574147962 @@ -960,12 +1011,12 @@ RESPONSE: FIRST0:CID2:FIRST0:ABC:ABC:11111 - 2015-07-28T08:39:39Z + 2015-08-11T11:54:08Z ABC-12345 - ccReg-8383857357 + ccReg-0447899806 @@ -1018,12 +1069,12 @@ RESPONSE: FIRST0:CID:FIRST0 - 2015-07-28T08:39:39Z + 2015-08-11T11:54:08Z ABC-12345 - ccReg-5997788919 + ccReg-5679805727 @@ -1074,13 +1125,13 @@ RESPONSE: - FIRST0:87E70060 - 2015-07-28T08:39:39Z + FIRST0:06BD3C8C + 2015-08-11T11:54:08Z ABC-12345 - ccReg-9532742811 + ccReg-8613111681 @@ -1131,13 +1182,13 @@ RESPONSE: - FIRST0:A74EABFE - 2015-07-28T08:39:39Z + FIRST0:BD59CDA7 + 2015-08-11T11:54:08Z ABC-12345 - ccReg-2995036796 + ccReg-0189667500 @@ -1189,7 +1240,7 @@ RESPONSE: ABC-12345 - ccReg-9068419905 + ccReg-3513815797 @@ -1241,7 +1292,7 @@ RESPONSE: ABC-12345 - ccReg-3667432897 + ccReg-2265155495 @@ -1274,7 +1325,7 @@ RESPONSE: ABC-12345 - ccReg-8184249905 + ccReg-9450535622 @@ -1327,7 +1378,7 @@ RESPONSE: ABC-12345 - ccReg-7422710793 + ccReg-1241202461 @@ -1378,12 +1429,12 @@ RESPONSE: FIRST0:SH8013 - 2015-07-28T08:39:41Z + 2015-08-11T11:54:10Z ABC-12345 - ccReg-4865022436 + ccReg-1676808251 @@ -1424,12 +1475,12 @@ RESPONSE: FIRST0:SH8013 - 2015-07-28T08:39:41Z + 2015-08-11T11:54:10Z ABC-12345 - ccReg-6633367984 + ccReg-3841640389 @@ -1477,7 +1528,7 @@ RESPONSE: ABC-12345 - ccReg-7530163933 + ccReg-7368384228 @@ -1526,12 +1577,12 @@ RESPONSE: FIRST0:SH8013 - 2015-07-28T08:39:41Z + 2015-08-11T11:54:10Z ABC-12345 - ccReg-4277646314 + ccReg-8647496616 @@ -1577,7 +1628,7 @@ RESPONSE: ABC-12345 - ccReg-4538846364 + ccReg-4146436220 @@ -1625,7 +1676,7 @@ RESPONSE: ABC-12345 - ccReg-6831340132 + ccReg-5737511484 @@ -1663,7 +1714,7 @@ RESPONSE: ABC-12345 - ccReg-6564840615 + ccReg-7339726178 @@ -1709,7 +1760,7 @@ RESPONSE: ABC-12345 - ccReg-5442863323 + ccReg-4434689187 @@ -1762,7 +1813,57 @@ RESPONSE: ABC-12345 - ccReg-8528718455 + ccReg-1430550210 + + + +``` + +### EPP Contact with valid user update command should return email issue + +REQUEST: + +```xml + + + + + + FIRST0:SH8013 + + + John Doe Edited + + +372.7654321 + legacy@wrong + + password + + + + + + + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Email is invalid [email] + + + ABC-12345 + ccReg-2794881800 @@ -1813,7 +1914,7 @@ RESPONSE: ABC-12345 - ccReg-4331200914 + ccReg-1436918030 @@ -1864,7 +1965,7 @@ RESPONSE: ABC-12345 - ccReg-4397523800 + ccReg-2413220348 @@ -1915,7 +2016,7 @@ RESPONSE: ABC-12345 - ccReg-7928150587 + ccReg-6059161763 @@ -1966,7 +2067,7 @@ RESPONSE: ABC-12345 - ccReg-3817458970 + ccReg-6512798819 @@ -2005,7 +2106,7 @@ RESPONSE: ABC-12345 - ccReg-3807652405 + ccReg-7467392690 @@ -2047,12 +2148,12 @@ RESPONSE: FIRST0:SH8013 - 2015-07-28T08:39:41Z + 2015-08-11T11:54:10Z ABC-12345 - ccReg-8133702938 + ccReg-2448465521 @@ -2097,7 +2198,7 @@ RESPONSE: ABC-12345 - ccReg-7011374408 + ccReg-9595670057 @@ -2141,7 +2242,7 @@ RESPONSE: ABC-12345 - ccReg-7610710976 + ccReg-7092339553 @@ -2185,7 +2286,7 @@ RESPONSE: ABC-12345 - ccReg-6395479303 + ccReg-5659939459 @@ -2226,7 +2327,7 @@ RESPONSE: ABC-12345 - ccReg-7007003785 + ccReg-8711843559 @@ -2270,7 +2371,7 @@ RESPONSE: ABC-12345 - ccReg-8061878233 + ccReg-7889570431 @@ -2314,7 +2415,7 @@ RESPONSE: ABC-12345 - ccReg-3091851486 + ccReg-9368399872 @@ -2361,7 +2462,7 @@ RESPONSE: ABC-12345 - ccReg-8609322144 + ccReg-8584439021 @@ -2404,7 +2505,7 @@ RESPONSE: ABC-12345 - ccReg-0582559112 + ccReg-9972353508 @@ -2448,12 +2549,12 @@ RESPONSE: FIRST0:SH8013 - 2015-07-28T08:39:41Z + 2015-08-11T11:54:10Z ABC-12345 - ccReg-8655942919 + ccReg-0465840835 @@ -2496,7 +2597,7 @@ RESPONSE: ABC-12345 - ccReg-9481106190 + ccReg-5948287752 @@ -2529,7 +2630,7 @@ RESPONSE: ABC-12345 - ccReg-5578564225 + ccReg-2005766067 @@ -2576,7 +2677,7 @@ RESPONSE: ABC-12345 - ccReg-6663525094 + ccReg-4783450134 @@ -2592,7 +2693,7 @@ REQUEST: - FIRST0:SH231039313 + FIRST0:SH801687153 password @@ -2620,7 +2721,7 @@ RESPONSE: ABC-12345 - ccReg-3780043277 + ccReg-8065634571 @@ -2636,7 +2737,7 @@ REQUEST: - FIRST0:SH495814614 + FIRST0:SH596230584 wrong password @@ -2664,7 +2765,7 @@ RESPONSE: ABC-12345 - ccReg-7212720521 + ccReg-8152139127 @@ -2680,7 +2781,7 @@ REQUEST: - FIRST0:SH345416025 + FIRST0:SH827840235 ABC-12345 @@ -2699,7 +2800,7 @@ RESPONSE: ABC-12345 - ccReg-6437000685 + ccReg-5094671453 @@ -2715,7 +2816,7 @@ REQUEST: - FIRST0:SH527033126 + FIRST0:SH543664306 password @@ -2743,7 +2844,7 @@ RESPONSE: ABC-12345 - ccReg-1807855170 + ccReg-9770009820 @@ -2791,7 +2892,7 @@ RESPONSE: ABC-12345 - ccReg-0288992099 + ccReg-0320951230 @@ -2805,7 +2906,7 @@ REQUEST: - FIRST0:SH031616179 + FIRST0:SH337053769 password @@ -2833,7 +2934,7 @@ RESPONSE: ABC-12345 - ccReg-4336841702 + ccReg-0617016997 @@ -2879,7 +2980,7 @@ RESPONSE: ABC-12345 - ccReg-8729288024 + ccReg-0539629581 @@ -2927,7 +3028,7 @@ RESPONSE: ABC-12345 - ccReg-6840346616 + ccReg-8866995360 @@ -2941,7 +3042,7 @@ REQUEST: - FIRST0:SH2297814310 + FIRST0:SH2750056010 ABC-12345 @@ -2960,7 +3061,7 @@ RESPONSE: ABC-12345 - ccReg-3383228806 + ccReg-6611721334 @@ -3006,7 +3107,7 @@ RESPONSE: ABC-12345 - ccReg-4682199982 + ccReg-6821784195 @@ -3054,7 +3155,7 @@ RESPONSE: ABC-12345 - ccReg-6469460670 + ccReg-2739951858 @@ -3068,7 +3169,7 @@ REQUEST: - FIRST0:SH3326380711 + FIRST0:SH7547714011 wrong password @@ -3096,7 +3197,7 @@ RESPONSE: ABC-12345 - ccReg-7404986506 + ccReg-6380340749 @@ -3142,7 +3243,7 @@ RESPONSE: ABC-12345 - ccReg-7294017342 + ccReg-5489286626 @@ -3175,7 +3276,7 @@ RESPONSE: ABC-12345 - ccReg-7052563758 + ccReg-2448090373 @@ -3222,7 +3323,7 @@ RESPONSE: ABC-12345 - ccReg-9831020858 + ccReg-1430458904 @@ -3269,7 +3370,7 @@ RESPONSE: ABC-12345 - ccReg-3695978327 + ccReg-3551943099 @@ -3302,7 +3403,7 @@ RESPONSE: ABC-12345 - ccReg-0977011305 + ccReg-2097504056 @@ -3343,7 +3444,7 @@ RESPONSE: ABC-12345 - ccReg-5298387301 + ccReg-4245808410 @@ -3395,10 +3496,10 @@ RESPONSE: +372.12345678 - adaline.farrell@wilkinson.org + berenice@kuhlmandickens.biz fixed registrar TEST-CREATOR - 2015-07-28T08:40:06Z + 2015-08-11T11:54:34Z password @@ -3411,7 +3512,7 @@ RESPONSE: ABC-12345 - ccReg-5155368245 + ccReg-6860164806 @@ -3463,10 +3564,10 @@ RESPONSE: +372.12345678 - adaline.farrell@wilkinson.org + berenice@kuhlmandickens.biz fixed registrar TEST-CREATOR - 2015-07-28T08:40:06Z + 2015-08-11T11:54:34Z password @@ -3479,7 +3580,7 @@ RESPONSE: ABC-12345 - ccReg-5763471786 + ccReg-4906024902 @@ -3531,10 +3632,10 @@ RESPONSE: +372.12345678 - adaline.farrell@wilkinson.org + berenice@kuhlmandickens.biz registrar1 TEST-CREATOR - 2015-07-28T08:40:06Z + 2015-08-11T11:54:34Z password @@ -3547,7 +3648,7 @@ RESPONSE: ABC-12345 - ccReg-1407507322 + ccReg-8249779521 @@ -3563,7 +3664,7 @@ REQUEST: - FIRST0:SH401752550 + FIRST0:SH828429550 wrong-pw @@ -3585,11 +3686,11 @@ RESPONSE: - FIRST0:SH401752550 + FIRST0:SH828429550 EIS-1 - Gloria Boyer MD0 + Adell O'Connell0 Short street 11 Tallinn @@ -3599,10 +3700,10 @@ RESPONSE: +372.12345678 - adaline.farrell@wilkinson.org + berenice@kuhlmandickens.biz registrar1 TEST-CREATOR - 2015-07-28T08:39:30Z + 2015-08-11T11:53:58Z password @@ -3615,7 +3716,7 @@ RESPONSE: ABC-12345 - ccReg-6798027147 + ccReg-7409111261 @@ -3657,7 +3758,7 @@ RESPONSE: EIS-32 - Mr. Brooks Crooks15 + Asia Labadie15 Short street 11 Tallinn @@ -3667,10 +3768,10 @@ RESPONSE: +372.12345678 - adaline.farrell@wilkinson.org + berenice@kuhlmandickens.biz fixed registrar TEST-CREATOR - 2015-07-28T08:40:06Z + 2015-08-11T11:54:35Z password @@ -3683,7 +3784,7 @@ RESPONSE: ABC-12345 - ccReg-3521737420 + ccReg-6138234631 @@ -3731,7 +3832,7 @@ RESPONSE: ABC-12345 - ccReg-9495273454 + ccReg-4837905217 @@ -3745,7 +3846,7 @@ REQUEST: - FIRST0:SH401752550 + FIRST0:SH828429550 password @@ -3767,11 +3868,11 @@ RESPONSE: - FIRST0:SH401752550 + FIRST0:SH828429550 EIS-1 - Gloria Boyer MD0 + Adell O'Connell0 Short street 11 Tallinn @@ -3781,10 +3882,10 @@ RESPONSE: +372.12345678 - adaline.farrell@wilkinson.org + berenice@kuhlmandickens.biz registrar1 TEST-CREATOR - 2015-07-28T08:39:30Z + 2015-08-11T11:53:58Z password @@ -3797,7 +3898,7 @@ RESPONSE: ABC-12345 - ccReg-7991464495 + ccReg-4619937530 @@ -3843,7 +3944,7 @@ RESPONSE: ABC-12345 - ccReg-4527051077 + ccReg-7648304008 @@ -3891,7 +3992,7 @@ RESPONSE: ABC-12345 - ccReg-0913409657 + ccReg-5442967201 @@ -3905,7 +4006,7 @@ REQUEST: - FIRST0:SH401752550 + FIRST0:SH828429550 wrong-pw @@ -3927,7 +4028,7 @@ RESPONSE: ABC-12345 - ccReg-6286749211 + ccReg-5316232237 @@ -3973,7 +4074,7 @@ RESPONSE: ABC-12345 - ccReg-8291798513 + ccReg-9170407002 @@ -4021,7 +4122,7 @@ RESPONSE: ABC-12345 - ccReg-5404035767 + ccReg-5697070528 @@ -4035,7 +4136,7 @@ REQUEST: - FIRST0:SH401752550 + FIRST0:SH828429550 @@ -4057,20 +4158,20 @@ RESPONSE: - FIRST0:SH401752550 + FIRST0:SH828429550 EIS-1 - Gloria Boyer MD0 + Adell O'Connell0 registrar1 TEST-CREATOR - 2015-07-28T08:39:30Z + 2015-08-11T11:53:58Z ABC-12345 - ccReg-2003839888 + ccReg-9096756536 @@ -4116,7 +4217,7 @@ RESPONSE: ABC-12345 - ccReg-5982274752 + ccReg-0828079009 @@ -4162,7 +4263,7 @@ RESPONSE: ABC-12345 - ccReg-1309091299 + ccReg-3048546936 @@ -4178,7 +4279,7 @@ REQUEST: - example92166977555993338.ee + example95956441774481215.ee 1 @@ -4225,7 +4326,7 @@ RESPONSE: ABC-12345 - ccReg-0406877402 + ccReg-8436943426 @@ -4241,7 +4342,7 @@ REQUEST: - example81690264966073237.ee + example36499490920514040.ee 1 @@ -4297,7 +4398,7 @@ RESPONSE: ABC-12345 - ccReg-7250362476 + ccReg-9458458331 @@ -4341,7 +4442,7 @@ RESPONSE: ABC-12345 - ccReg-0791690819 + ccReg-0312397391 @@ -4357,7 +4458,7 @@ REQUEST: - example32543506110306742.ee + example41098418244018042.ee 1 @@ -4404,14 +4505,14 @@ RESPONSE: - example32543506110306742.ee - 2015-07-28T08:40:12Z - 2016-07-28T08:40:12Z + example41098418244018042.ee + 2015-08-11T11:54:39Z + 2016-08-11T11:54:39Z ABC-12345 - ccReg-3409698461 + ccReg-6617612080 @@ -4427,7 +4528,7 @@ REQUEST: - example36382345567850627.ee + example65312373017135527.ee 1 @@ -4466,14 +4567,14 @@ RESPONSE: - example36382345567850627.ee - 2015-07-28T08:40:12Z - 2016-07-28T08:40:12Z + example65312373017135527.ee + 2015-08-11T11:54:39Z + 2016-08-11T11:54:39Z ABC-12345 - ccReg-4473161202 + ccReg-1229745778 @@ -4489,14 +4590,14 @@ REQUEST: - example94744851802697081.ee + example89348353823075344.ee 1 - ns1.example94744851802697081.ee + ns1.example89348353823075344.ee - ns2.example94744851802697081.ee + ns2.example89348353823075344.ee FIXED:CITIZEN_1234 @@ -4534,7 +4635,7 @@ RESPONSE: ABC-12345 - ccReg-0945142666 + ccReg-4184179047 @@ -4597,7 +4698,7 @@ RESPONSE: ABC-12345 - ccReg-1975664747 + ccReg-9262976252 @@ -4660,7 +4761,7 @@ RESPONSE: ABC-12345 - ccReg-1640127046 + ccReg-3870597963 @@ -4724,7 +4825,7 @@ RESPONSE: ABC-12345 - ccReg-2908502858 + ccReg-5039734544 @@ -4791,13 +4892,13 @@ RESPONSE: 1162.ee - 2015-07-28T08:40:17Z - 2016-07-28T08:40:17Z + 2015-08-11T11:54:44Z + 2016-08-11T11:54:44Z ABC-12345 - ccReg-0275498048 + ccReg-9326300859 @@ -4855,15 +4956,15 @@ RESPONSE: - - Domain name is blocked [name_dirty] + + Data management policy violation: Domain name is blocked [name] ftp.ee ABC-12345 - ccReg-9470981751 + ccReg-0435453253 @@ -4879,7 +4980,7 @@ REQUEST: - example62168642411513599.ee + example39938014756398389.ee 1 @@ -4922,7 +5023,7 @@ RESPONSE: ABC-12345 - ccReg-0968519360 + ccReg-6770301273 @@ -4938,7 +5039,7 @@ REQUEST: - example71800352143417997.ee + example51056249191798470.ee 1 FIXED:CITIZEN_1234 FIXED:SH8013 @@ -4978,7 +5079,7 @@ RESPONSE: ABC-12345 - ccReg-7839854930 + ccReg-5945666312 @@ -4994,7 +5095,7 @@ REQUEST: - example71680402331588779.ee + example92106127815766703.ee 1 @@ -5075,7 +5176,7 @@ RESPONSE: ABC-12345 - ccReg-3550426764 + ccReg-9078085118 @@ -5091,7 +5192,7 @@ REQUEST: - example68109979538689428.ee + example99991222910237006.ee 1 @@ -5145,7 +5246,7 @@ RESPONSE: ABC-12345 - ccReg-3024443751 + ccReg-8892994384 @@ -5161,7 +5262,7 @@ REQUEST: - example76831955690582435.ee + example25089417819765873.ee 1 ns1.example.ee @@ -5202,7 +5303,7 @@ RESPONSE: ABC-12345 - ccReg-6323264384 + ccReg-5174942352 @@ -5218,7 +5319,7 @@ REQUEST: - example32514723684684037.ee + example29956310300538261.ee 1 @@ -5260,14 +5361,14 @@ RESPONSE: - example32514723684684037.ee - 2015-07-28T08:40:23Z - 2016-07-28T08:40:23Z + example29956310300538261.ee + 2015-08-11T11:54:51Z + 2016-08-11T11:54:51Z ABC-12345 - ccReg-5056598055 + ccReg-5456107878 @@ -5283,7 +5384,7 @@ REQUEST: - example40338285586899571.ee + example83118712448109400.ee 1 @@ -5334,7 +5435,7 @@ RESPONSE: ABC-12345 - ccReg-0826897719 + ccReg-0920572204 @@ -5350,7 +5451,7 @@ REQUEST: - example66186778295502856.ee + example33790642820062255.ee 365 @@ -5397,14 +5498,14 @@ RESPONSE: - example66186778295502856.ee - 2015-07-28T08:40:25Z - 2016-07-28T08:40:25Z + example33790642820062255.ee + 2015-08-11T11:54:52Z + 2016-08-11T11:54:52Z ABC-12345 - ccReg-1614664137 + ccReg-8870266468 @@ -5420,7 +5521,7 @@ REQUEST: - example91954080942379032.ee + example67780502006773133.ee 2 @@ -5467,14 +5568,14 @@ RESPONSE: - example91954080942379032.ee - 2015-07-28T08:40:25Z - 2017-07-28T08:40:25Z + example67780502006773133.ee + 2015-08-11T11:54:52Z + 2017-08-11T11:54:52Z ABC-12345 - ccReg-4703652719 + ccReg-6433181781 @@ -5490,7 +5591,7 @@ REQUEST: - example30928593583996919.ee + example44281759994524000.ee 36 @@ -5537,14 +5638,14 @@ RESPONSE: - example30928593583996919.ee - 2015-07-28T08:40:26Z - 2018-07-28T08:40:26Z + example44281759994524000.ee + 2015-08-11T11:54:53Z + 2018-08-11T11:54:53Z ABC-12345 - ccReg-7270105536 + ccReg-5571781200 @@ -5560,7 +5661,7 @@ REQUEST: - example46362933949869671.ee + example66964589593603082.ee ns1.example.net @@ -5606,14 +5707,14 @@ RESPONSE: - example46362933949869671.ee - 2015-07-28T08:40:26Z - 2016-07-28T08:40:26Z + example66964589593603082.ee + 2015-08-11T11:54:53Z + 2016-08-11T11:54:53Z ABC-12345 - ccReg-1881376659 + ccReg-2547938752 @@ -5629,7 +5730,7 @@ REQUEST: - example11714535017331079.ee + example23535744421817439.ee 367 @@ -5679,7 +5780,7 @@ RESPONSE: ABC-12345 - ccReg-5484931345 + ccReg-9162816785 @@ -5695,7 +5796,7 @@ REQUEST: - example12063060146758107.ee + example23286870139469348.ee 1 @@ -5745,7 +5846,7 @@ RESPONSE: ABC-12345 - ccReg-8109184091 + ccReg-3488863467 @@ -5759,7 +5860,7 @@ REQUEST: - example22134060080142573.ee + example75186835336151620.ee 1 @@ -5809,7 +5910,7 @@ RESPONSE: ABC-12345 - ccReg-6082364829 + ccReg-6955477457 @@ -5825,7 +5926,7 @@ REQUEST: - example81422504470924299.ee + example49838956314740546.ee 1 @@ -5884,14 +5985,14 @@ RESPONSE: - example81422504470924299.ee - 2015-07-28T08:40:30Z - 2016-07-28T08:40:30Z + example49838956314740546.ee + 2015-08-11T11:54:57Z + 2016-08-11T11:54:57Z ABC-12345 - ccReg-1274053409 + ccReg-3975282652 @@ -5907,7 +6008,7 @@ REQUEST: - example52530934380418051.ee + example12885310810259783.ee 1 @@ -5969,7 +6070,7 @@ RESPONSE: ABC-12345 - ccReg-0039779987 + ccReg-9621270982 @@ -5983,7 +6084,7 @@ REQUEST: - example6111657126731846.ee + example76366275886530462.ee 1 @@ -6075,7 +6176,7 @@ RESPONSE: ABC-12345 - ccReg-5415301002 + ccReg-2852166470 @@ -6091,7 +6192,7 @@ REQUEST: - example59960668723180884.ee + example50792045522631645.ee 1 @@ -6147,7 +6248,7 @@ RESPONSE: ABC-12345 - ccReg-3029612280 + ccReg-4544925351 @@ -6163,7 +6264,7 @@ REQUEST: - example96012563680688440.ee + example33131074878956347.ee 1 @@ -6216,7 +6317,7 @@ RESPONSE: ABC-12345 - ccReg-0186058439 + ccReg-3093561380 @@ -6232,7 +6333,7 @@ REQUEST: - example76656279799751526.ee + example50489697149207160.ee 1 @@ -6279,14 +6380,14 @@ RESPONSE: - example76656279799751526.ee - 2015-07-28T08:40:35Z - 2016-07-28T08:40:35Z + example50489697149207160.ee + 2015-08-11T11:55:01Z + 2016-08-11T11:55:01Z ABC-12345 - ccReg-2063281633 + ccReg-5861716362 @@ -6302,7 +6403,7 @@ REQUEST: - example70580501288966544.ee + example40308503479082638.ee 1 @@ -6355,14 +6456,14 @@ RESPONSE: - example70580501288966544.ee - 2015-07-28T08:40:35Z - 2016-07-28T08:40:35Z + example40308503479082638.ee + 2015-08-11T11:55:02Z + 2016-08-11T11:55:02Z ABC-12345 - ccReg-4381859223 + ccReg-9793298475 @@ -6378,7 +6479,7 @@ REQUEST: - example95275486168393163.ee + example50735151990715294.ee 1 @@ -6431,7 +6532,7 @@ RESPONSE: ABC-12345 - ccReg-3354909144 + ccReg-2538777510 @@ -6447,7 +6548,7 @@ REQUEST: - example97367469702829730.ee + example16812641166048993.ee 1 @@ -6494,7 +6595,7 @@ RESPONSE: ABC-12345 - ccReg-8644792351 + ccReg-3495549455 @@ -6510,7 +6611,7 @@ REQUEST: - example70071198549943103.ee + example22021081880584996.ee 1 @@ -6563,7 +6664,7 @@ RESPONSE: ABC-12345 - ccReg-8173091592 + ccReg-3343130414 @@ -6579,7 +6680,7 @@ REQUEST: - example22431835510518513.ee + example6073069410185410.ee 1 @@ -6624,14 +6725,14 @@ RESPONSE: - example22431835510518513.ee - 2015-07-28T08:40:39Z - 2016-07-28T08:40:39Z + example6073069410185410.ee + 2015-08-11T11:55:05Z + 2016-08-11T11:55:05Z ABC-12345 - ccReg-2819985278 + ccReg-3861156552 @@ -6647,7 +6748,7 @@ REQUEST: - example59566819674530307.ee + example52106871088693975.ee 1 @@ -6692,7 +6793,7 @@ RESPONSE: ABC-12345 - ccReg-6708083266 + ccReg-0039198223 @@ -6708,7 +6809,7 @@ REQUEST: - example72083543502407430.ee + example56559769086909790.ee 1 @@ -6756,7 +6857,7 @@ RESPONSE: ABC-12345 - ccReg-7325897703 + ccReg-7911712466 @@ -6804,7 +6905,7 @@ RESPONSE: ABC-12345 - ccReg-4047445422 + ccReg-7145621242 @@ -6820,7 +6921,7 @@ REQUEST: domain1.ee - 512701cc6a8455e43612526cfd613ef1 + 22f7e8ef0096471c89cd111e3526bfec @@ -6848,15 +6949,15 @@ RESPONSE: domain1.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:42Z + 2015-08-11T11:55:08Z REGDOMAIN1 - 2015-07-28T08:40:42Z - 2016-07-28T08:40:41Z + 2015-08-11T11:55:08Z + 2016-08-11T11:55:08Z ABC-12345 - ccReg-2882098037 + ccReg-0598996094 @@ -6902,7 +7003,7 @@ RESPONSE: ABC-12345 - ccReg-4020170558 + ccReg-2129626529 @@ -6930,23 +7031,23 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-28T08:40:42Z - Domain transfer was approved, associated contacts were: ["FIXED:SH0465812013", "FIXED:SH3835271712"] and registrant was FIXED:REGISTRANT779976690 + 2015-08-11T11:55:08Z + Domain transfer was approved, associated contacts were: ["FIXED:SH1877813513", "FIXED:SH9602273212"] and registrant was FIXED:REGISTRANT227422540 domain1.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:42Z + 2015-08-11T11:55:08Z REGDOMAIN1 - 2015-07-28T08:40:42Z - 2016-07-28T08:40:41Z + 2015-08-11T11:55:08Z + 2016-08-11T11:55:08Z ABC-12345 - ccReg-2433533762 + ccReg-2870614930 @@ -6958,19 +7059,7 @@ REQUEST: - - - domain1.ee - - 3c706b7554d122c07c3a96255b62f728 - - - - - - dGVzdCBmYWlsCg== - - + ABC-12345 @@ -6985,330 +7074,10 @@ RESPONSE: Command completed successfully - - - domain1.ee - pending - REGDOMAIN1 - 2015-07-28T08:40:42Z - REGDOMAIN2 - 2015-07-28T09:40:42Z - 2016-07-28T08:40:41Z - - + ABC-12345 - ccReg-9163815770 - - - -``` - -REQUEST: - -```xml - - - - - - domain1.ee - - 3c706b7554d122c07c3a96255b62f728 - - - - - - dGVzdCBmYWlsCg== - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain1.ee - pending - REGDOMAIN1 - 2015-07-28T08:40:42Z - REGDOMAIN2 - 2015-07-28T09:40:42Z - 2016-07-28T08:40:41Z - - - - ABC-12345 - ccReg-1344906774 - - - -``` - -REQUEST: - -```xml - - - - - registrar2 - ghyt9e4fu - - 1.0 - en - - - https://epp.tld.ee/schema/domain-eis-1.0.xsd - https://epp.tld.ee/schema/contact-eis-1.0.xsd - urn:ietf:params:xml:ns:host-1.0 - urn:ietf:params:xml:ns:keyrelay-1.0 - - urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - ABC-12345 - ccReg-2023826073 - - - -``` - -REQUEST: - -```xml - - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully; ack to dequeue - - - 2015-07-28T08:40:42Z - Transfer requested. - - - - domain1.ee - pending - REGDOMAIN1 - 2015-07-28T08:40:42Z - REGDOMAIN2 - 2015-07-28T09:40:42Z - 2016-07-28T08:40:41Z - - - - ABC-12345 - ccReg-1404467939 - - - -``` - -REQUEST: - -```xml - - - - - registrar1 - ghyt9e4fu - - 1.0 - en - - - https://epp.tld.ee/schema/domain-eis-1.0.xsd - https://epp.tld.ee/schema/contact-eis-1.0.xsd - urn:ietf:params:xml:ns:host-1.0 - urn:ietf:params:xml:ns:keyrelay-1.0 - - urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - ABC-12345 - ccReg-8545555548 - - - -``` - -REQUEST: - -```xml - - - - - registrar2 - ghyt9e4fu - - 1.0 - en - - - https://epp.tld.ee/schema/domain-eis-1.0.xsd - https://epp.tld.ee/schema/contact-eis-1.0.xsd - urn:ietf:params:xml:ns:host-1.0 - urn:ietf:params:xml:ns:keyrelay-1.0 - - urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - ABC-12345 - ccReg-8253885703 - - - -``` - -REQUEST: - -```xml - - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - ABC-12345 - ccReg-3483466836 - - - -``` - -REQUEST: - -```xml - - - - - registrar1 - ghyt9e4fu - - 1.0 - en - - - https://epp.tld.ee/schema/domain-eis-1.0.xsd - https://epp.tld.ee/schema/contact-eis-1.0.xsd - urn:ietf:params:xml:ns:host-1.0 - urn:ietf:params:xml:ns:keyrelay-1.0 - - urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - ABC-12345 - ccReg-4285977126 + ccReg-7574478981 @@ -7356,7 +7125,7 @@ RESPONSE: ABC-12345 - ccReg-4057108889 + ccReg-3485024523 @@ -7372,7 +7141,7 @@ REQUEST: domain2.ee - 5d98f2cbe11306469ce55447e995a1c4 + 93724d15456623b8f6aeb257b00450c1 @@ -7398,17 +7167,17 @@ RESPONSE: domain2.ee - pending + serverApproved REGDOMAIN2 - 2015-07-28T08:40:43Z + 2015-08-11T11:55:09Z REGDOMAIN1 - 2015-07-28T09:40:43Z - 2016-07-28T08:40:43Z + 2015-08-11T11:55:09Z + 2016-08-11T11:55:08Z ABC-12345 - ccReg-4612548825 + ccReg-6805791315 @@ -7454,7 +7223,7 @@ RESPONSE: ABC-12345 - ccReg-4051705615 + ccReg-4275952981 @@ -7500,7 +7269,7 @@ RESPONSE: ABC-12345 - ccReg-1410613698 + ccReg-7987485087 @@ -7516,7 +7285,7 @@ REQUEST: domain2.ee - 5d98f2cbe11306469ce55447e995a1c4 + 93724d15456623b8f6aeb257b00450c1 @@ -7536,23 +7305,12 @@ RESPONSE: - - Command completed successfully + + Authorization error - - - domain2.ee - pending - REGDOMAIN2 - 2015-07-28T08:40:43Z - REGDOMAIN1 - 2015-07-28T09:40:43Z - 2016-07-28T08:40:43Z - - ABC-12345 - ccReg-2313898331 + ccReg-9036229459 @@ -7598,7 +7356,7 @@ RESPONSE: ABC-12345 - ccReg-5075928895 + ccReg-1240024032 @@ -7646,7 +7404,7 @@ RESPONSE: ABC-12345 - ccReg-8432415801 + ccReg-9098619557 @@ -7662,7 +7420,7 @@ REQUEST: domain3.ee - d21cc5784da4f1cd0a69ebccd64ea825 + 7c54d1dfea0df2312afa777675f61b8c @@ -7685,15 +7443,15 @@ RESPONSE: domain3.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:44Z + 2015-08-11T11:55:09Z REGDOMAIN1 - 2015-07-28T08:40:44Z - 2016-07-28T08:40:44Z + 2015-08-11T11:55:09Z + 2016-08-11T11:55:09Z ABC-12345 - ccReg-8319808701 + ccReg-5266624324 @@ -7739,7 +7497,7 @@ RESPONSE: ABC-12345 - ccReg-3709709960 + ccReg-4244053147 @@ -7787,7 +7545,7 @@ RESPONSE: ABC-12345 - ccReg-7289638867 + ccReg-1145113468 @@ -7803,7 +7561,7 @@ REQUEST: domain4.ee - c542d3f99353e1d042716d824f6fec12 + 5631abbafc7550e96e3e5736b0e9eaac @@ -7826,15 +7584,15 @@ RESPONSE: domain4.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:45Z + 2015-08-11T11:55:10Z REGDOMAIN1 - 2015-07-28T08:40:45Z - 2016-07-28T08:40:45Z + 2015-08-11T11:55:10Z + 2016-08-11T11:55:10Z ABC-12345 - ccReg-6544417100 + ccReg-2690357600 @@ -7880,7 +7638,7 @@ RESPONSE: ABC-12345 - ccReg-9728924318 + ccReg-8532612089 @@ -7928,7 +7686,7 @@ RESPONSE: ABC-12345 - ccReg-4703756087 + ccReg-0745479379 @@ -7944,7 +7702,7 @@ REQUEST: domain5.ee - d4bf9e0bc0fd09c7252541a194473cec + 04dbcd87852c667ee8fd0c8ffb957e37 @@ -7967,15 +7725,15 @@ RESPONSE: domain5.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:46Z + 2015-08-11T11:55:11Z REGDOMAIN1 - 2015-07-28T08:40:46Z - 2016-07-28T08:40:46Z + 2015-08-11T11:55:11Z + 2016-08-11T11:55:11Z ABC-12345 - ccReg-1877217438 + ccReg-6667852304 @@ -8021,7 +7779,7 @@ RESPONSE: ABC-12345 - ccReg-3796353322 + ccReg-4285327571 @@ -8069,7 +7827,7 @@ RESPONSE: ABC-12345 - ccReg-3792624699 + ccReg-6493678819 @@ -8085,7 +7843,7 @@ REQUEST: domain8.ee - 0bd19effb6079c4790d1475bd0199723 + 59b5dc1ad087fcbe5991cfe5ba28e06f @@ -8108,15 +7866,15 @@ RESPONSE: domain8.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:47Z + 2015-08-11T11:55:12Z REGDOMAIN1 - 2015-07-28T08:40:47Z - 2016-07-28T08:40:46Z + 2015-08-11T11:55:12Z + 2016-08-11T11:55:12Z ABC-12345 - ccReg-2654465761 + ccReg-0151424412 @@ -8162,7 +7920,7 @@ RESPONSE: ABC-12345 - ccReg-9967282082 + ccReg-3294109763 @@ -8210,7 +7968,7 @@ RESPONSE: ABC-12345 - ccReg-7212461778 + ccReg-8744928434 @@ -8226,7 +7984,7 @@ REQUEST: domain9.ee - 10eadc71cf7e6f1e87e1bf54bc99e263 + 3c48b5439c82db073370596ddb5ba199 @@ -8249,15 +8007,15 @@ RESPONSE: domain9.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:48Z + 2015-08-11T11:55:13Z REGDOMAIN1 - 2015-07-28T08:40:48Z - 2016-07-28T08:40:47Z + 2015-08-11T11:55:13Z + 2016-08-11T11:55:13Z ABC-12345 - ccReg-1877104282 + ccReg-8506851943 @@ -8303,7 +8061,7 @@ RESPONSE: ABC-12345 - ccReg-6337086891 + ccReg-6166041451 @@ -8351,7 +8109,7 @@ RESPONSE: ABC-12345 - ccReg-0660234392 + ccReg-2599921516 @@ -8367,7 +8125,7 @@ REQUEST: domain11.ee - 5d943994996a6a851e7247db3d2c1c4a + 9b20daba8ec3c362783fe7969ac83b04 @@ -8390,15 +8148,15 @@ RESPONSE: domain11.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:48Z + 2015-08-11T11:55:14Z REGDOMAIN1 - 2015-07-28T08:40:48Z - 2016-07-28T08:40:48Z + 2015-08-11T11:55:14Z + 2016-08-11T11:55:13Z ABC-12345 - ccReg-9157975420 + ccReg-7432784653 @@ -8444,7 +8202,7 @@ RESPONSE: ABC-12345 - ccReg-6402981411 + ccReg-9617529453 @@ -8492,7 +8250,7 @@ RESPONSE: ABC-12345 - ccReg-4407801058 + ccReg-3374688656 @@ -8508,7 +8266,7 @@ REQUEST: domain14.ee - 75065639f9945045256b9c5fe2a8fadc + 8c1bde6bb8b265951bb44ba26a5fcfdd @@ -8531,15 +8289,15 @@ RESPONSE: domain14.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:49Z + 2015-08-11T11:55:14Z REGDOMAIN1 - 2015-07-28T08:40:49Z - 2016-07-28T08:40:49Z + 2015-08-11T11:55:14Z + 2016-08-11T11:55:14Z ABC-12345 - ccReg-9637117596 + ccReg-5971983303 @@ -8585,7 +8343,7 @@ RESPONSE: ABC-12345 - ccReg-0421936954 + ccReg-0354959229 @@ -8633,7 +8391,7 @@ RESPONSE: ABC-12345 - ccReg-8532719762 + ccReg-5074830148 @@ -8649,7 +8407,7 @@ REQUEST: domain15.ee - e6349b913cb0788975f93a02ba220510 + dfb460a50d569d15cb5dfec1e28dfa4b @@ -8672,15 +8430,15 @@ RESPONSE: domain15.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:50Z + 2015-08-11T11:55:15Z REGDOMAIN1 - 2015-07-28T08:40:50Z - 2016-07-28T08:40:50Z + 2015-08-11T11:55:15Z + 2016-08-11T11:55:15Z ABC-12345 - ccReg-1495969172 + ccReg-0446599269 @@ -8726,7 +8484,7 @@ RESPONSE: ABC-12345 - ccReg-1225162463 + ccReg-3899474830 @@ -8774,7 +8532,7 @@ RESPONSE: ABC-12345 - ccReg-5138326156 + ccReg-5107128349 @@ -8810,7 +8568,7 @@ RESPONSE: ABC-12345 - ccReg-9171426317 + ccReg-2956409472 @@ -8856,7 +8614,7 @@ RESPONSE: ABC-12345 - ccReg-2262790683 + ccReg-8062552401 @@ -8874,7 +8632,7 @@ REQUEST: domain17.ee - d0d6f5f660ba9b1cb777074e05c9f9d5 + 36e43cb473f9c84fa062f7c0140a6c27 @@ -8902,15 +8660,15 @@ RESPONSE: domain17.ee clientApproved REGDOMAIN2 - 2015-07-28T08:40:51Z + 2015-08-11T11:55:15Z REGDOMAIN1 - 2015-07-28T08:40:51Z - 2016-07-28T08:40:51Z + 2015-08-11T11:55:15Z + 2016-08-11T11:55:15Z ABC-12345 - ccReg-2925262739 + ccReg-1731534669 @@ -8958,7 +8716,7 @@ RESPONSE: ABC-12345 - ccReg-2033369372 + ccReg-2855459641 @@ -8974,7 +8732,7 @@ REQUEST: domain18.ee - f40c17f5451f5c80e562bf9250ccd4d2 + 3b4848b958d2fd92b9ff4e57aaf64d1c @@ -8999,7 +8757,7 @@ RESPONSE: ABC-12345 - ccReg-7553628884 + ccReg-4418967428 @@ -9045,7 +8803,7 @@ RESPONSE: ABC-12345 - ccReg-8494729995 + ccReg-6054605262 @@ -9061,7 +8819,7 @@ REQUEST: domain18.ee - f40c17f5451f5c80e562bf9250ccd4d2 + 3b4848b958d2fd92b9ff4e57aaf64d1c @@ -9089,15 +8847,15 @@ RESPONSE: domain18.ee clientRejected REGDOMAIN2 - 2015-07-28T08:40:51Z + 2015-08-11T11:55:16Z REGDOMAIN1 - 2015-07-28T08:40:51Z - 2016-07-28T08:40:51Z + 2015-08-11T11:55:16Z + 2016-08-11T11:55:16Z ABC-12345 - ccReg-0035055015 + ccReg-0721272063 @@ -9145,7 +8903,7 @@ RESPONSE: ABC-12345 - ccReg-8757184492 + ccReg-7872048381 @@ -9161,7 +8919,7 @@ REQUEST: domain19.ee - 619c6d2109ee1b2deca3674b73619fda + d1ee6ab75f56acd328d548920230fd7f @@ -9186,7 +8944,7 @@ RESPONSE: ABC-12345 - ccReg-4815280002 + ccReg-8416351931 @@ -9232,7 +8990,7 @@ RESPONSE: ABC-12345 - ccReg-2650484631 + ccReg-0109476397 @@ -9275,7 +9033,7 @@ RESPONSE: ABC-12345 - ccReg-1473008535 + ccReg-9271730314 @@ -9293,7 +9051,7 @@ REQUEST: domain21.ee - fd06d8982dbdecde7e39f41d7f278c7d + d518e6d743362fd164b61d3266689ef9 @@ -9318,7 +9076,7 @@ RESPONSE: ABC-12345 - ccReg-0989479481 + ccReg-9842488474 @@ -9334,7 +9092,7 @@ REQUEST: - example44755290217170574.ee + example55687516553954347.ee 98oiewslkfkd @@ -9359,7 +9117,7 @@ RESPONSE: ABC-12345 - ccReg-7927987439 + ccReg-9686106085 @@ -9407,7 +9165,7 @@ RESPONSE: ABC-12345 - ccReg-2792059598 + ccReg-7881280571 @@ -9423,7 +9181,7 @@ REQUEST: domain22.ee - d7aa8aba40bf70cb78dfebc9474664b2 + 67abb90c2173f935c9c027eaaf390c1f @@ -9451,15 +9209,15 @@ RESPONSE: domain22.ee serverApproved REGDOMAIN2 - 2015-07-28T08:40:57Z + 2015-08-11T11:55:21Z REGDOMAIN1 - 2015-07-28T08:40:57Z - 2016-07-28T08:40:57Z + 2015-08-11T11:55:21Z + 2016-08-11T11:55:21Z ABC-12345 - ccReg-0573122351 + ccReg-5808219238 @@ -9475,7 +9233,7 @@ REQUEST: domain22.ee - d7aa8aba40bf70cb78dfebc9474664b2 + 67abb90c2173f935c9c027eaaf390c1f @@ -9500,7 +9258,7 @@ RESPONSE: ABC-12345 - ccReg-0832624566 + ccReg-6385015232 @@ -9546,7 +9304,7 @@ RESPONSE: ABC-12345 - ccReg-8225650710 + ccReg-6947473842 @@ -9564,7 +9322,7 @@ REQUEST: domain23.ee - 2c47c46daf97e12ddc0d9fc80da511d0 + e369bda5c6a263f3fadc6c68f19c0063 @@ -9589,7 +9347,7 @@ RESPONSE: ABC-12345 - ccReg-2025440519 + ccReg-0492735137 @@ -9607,7 +9365,7 @@ REQUEST: domain24.ee - 9bbf18edcc83fb42ddf249dc1f3e42af + 74042f7e28ba757ca91256d11782f218 @@ -9627,299 +9385,7 @@ RESPONSE: ABC-12345 - ccReg-8629472751 - - - -``` - -### EPP Domain with valid domain should allow querying domain transfer - -REQUEST: - -```xml - - - - - registrar2 - ghyt9e4fu - - 1.0 - en - - - https://epp.tld.ee/schema/domain-eis-1.0.xsd - https://epp.tld.ee/schema/contact-eis-1.0.xsd - urn:ietf:params:xml:ns:host-1.0 - urn:ietf:params:xml:ns:keyrelay-1.0 - - urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - ABC-12345 - ccReg-7696022252 - - - -``` - -REQUEST: - -```xml - - - - - - domain25.ee - - 0935877a40fea9441ffd17fee6c0e7d8 - - - - - - dGVzdCBmYWlsCg== - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain25.ee - pending - REGDOMAIN2 - 2015-07-28T08:41:00Z - REGDOMAIN1 - 2015-07-28T09:41:00Z - 2016-07-28T08:41:00Z - - - - ABC-12345 - ccReg-7042077941 - - - -``` - -REQUEST: - -```xml - - - - - - domain25.ee - - 0935877a40fea9441ffd17fee6c0e7d8 - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain25.ee - pending - REGDOMAIN2 - 2015-07-28T08:41:00Z - REGDOMAIN1 - 2015-07-28T09:41:00Z - 2016-07-28T08:41:00Z - - - - ABC-12345 - ccReg-4814615747 - - - -``` - -REQUEST: - -```xml - - - - - registrar1 - ghyt9e4fu - - 1.0 - en - - - https://epp.tld.ee/schema/domain-eis-1.0.xsd - https://epp.tld.ee/schema/contact-eis-1.0.xsd - urn:ietf:params:xml:ns:host-1.0 - urn:ietf:params:xml:ns:keyrelay-1.0 - - urn:ietf:params:xml:ns:secDNS-1.1 - https://epp.tld.ee/schema/eis-1.0.xsd - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - ABC-12345 - ccReg-6824308586 - - - -``` - -REQUEST: - -```xml - - - - - - domain25.ee - - 0935877a40fea9441ffd17fee6c0e7d8 - - - - - - dGVzdCBmYWlsCg== - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain25.ee - clientApproved - REGDOMAIN2 - 2015-07-28T08:41:00Z - REGDOMAIN1 - 2015-07-28T08:41:00Z - 2016-07-28T08:41:00Z - - - - ABC-12345 - ccReg-2690846279 - - - -``` - -REQUEST: - -```xml - - - - - - domain25.ee - - 665baee3468e834243928ce917ecc3ef - - - - ABC-12345 - - -``` - -RESPONSE: - -```xml - - - - - Command completed successfully - - - - domain25.ee - clientApproved - REGDOMAIN2 - 2015-07-28T08:41:00Z - REGDOMAIN1 - 2015-07-28T08:41:00Z - 2016-07-28T08:41:00Z - - - - ABC-12345 - ccReg-9400606855 + ccReg-0081798294 @@ -9967,7 +9433,7 @@ RESPONSE: ABC-12345 - ccReg-1604970396 + ccReg-6625933830 @@ -9981,10 +9447,10 @@ REQUEST: - domain26.ee + domain25.ee 1 - e0c3f74927da4bb3eee5667c66115352 + f668fe2ea4255d41310163771be05c3a @@ -10007,7 +9473,7 @@ RESPONSE: ABC-12345 - ccReg-8617519056 + ccReg-1429364526 @@ -10053,7 +9519,7 @@ RESPONSE: ABC-12345 - ccReg-1118050637 + ccReg-1751119123 @@ -10069,7 +9535,7 @@ REQUEST: - domain27.ee + domain26.ee FIXED:CITIZEN_1234 @@ -10097,7 +9563,7 @@ RESPONSE: ABC-12345 - ccReg-2670008628 + ccReg-6751900694 @@ -10113,7 +9579,7 @@ REQUEST: - domain28.ee + domain27.ee FIXED:CITIZEN_1234 @@ -10141,7 +9607,7 @@ RESPONSE: ABC-12345 - ccReg-8289277865 + ccReg-9775763247 @@ -10157,17 +9623,17 @@ REQUEST: - domain29.ee + domain28.ee - ns.bernhard89.ee + ns.ondricka84.ee - ns.effertzebert88.ee + ns.oconnell85.ee - ns.ondrickajakubowski87.ee + ns.wolff86.ee @@ -10198,7 +9664,7 @@ RESPONSE: ABC-12345 - ccReg-1648208045 + ccReg-8193078533 @@ -10208,6 +9674,50 @@ RESPONSE: REQUEST: +```xml + + + + + + domain29.ee + + FIXED:CITIZEN_1234 + + + + + + + dGVzdCBmYWlsCg== + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Nameservers count must be between 2-11 [nameservers] + + + ABC-12345 + ccReg-7770119639 + + + +``` + +### EPP Domain with valid domain should not allow any update when status pending update + +REQUEST: + ```xml @@ -10237,18 +9747,18 @@ RESPONSE: - - Nameservers count must be between 2-11 [nameservers] + + Object status prohibits operation ABC-12345 - ccReg-5575143855 + ccReg-1506907458 ``` -### EPP Domain with valid domain should not allow any update when status pending update +### EPP Domain with valid domain should not allow any update when status force delete REQUEST: @@ -10286,7 +9796,7 @@ RESPONSE: ABC-12345 - ccReg-7420673440 + ccReg-4941877020 @@ -10355,7 +9865,7 @@ RESPONSE: ABC-12345 - ccReg-5413112744 + ccReg-9371256889 @@ -10419,7 +9929,7 @@ RESPONSE: ABC-12345 - ccReg-3340757346 + ccReg-2822952906 @@ -10481,13 +9991,13 @@ RESPONSE: Nameserver already exists on this domain [hostname] - ns2.example.com + ns1.example.com Nameserver already exists on this domain [hostname] - ns1.example.com + ns2.example.com @@ -10499,18 +10009,18 @@ RESPONSE: Public key already exists [public_key] - 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f + 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 Public key already exists [public_key] - 841936717ae427ace63c28d04918569a841936717ae427ace63c28d0 + 700b97b591ed27ec2590d19f06f88bba700b97b591ed27ec2590d19f ABC-12345 - ccReg-2640140355 + ccReg-9115010550 @@ -10585,7 +10095,7 @@ RESPONSE: ABC-12345 - ccReg-7630828881 + ccReg-9593704075 @@ -10655,7 +10165,7 @@ RESPONSE: ABC-12345 - ccReg-4914897472 + ccReg-3366912413 @@ -10694,7 +10204,7 @@ RESPONSE: ABC-12345 - ccReg-1063100515 + ccReg-5904323751 @@ -10760,7 +10270,7 @@ RESPONSE: ABC-12345 - ccReg-6247129672 + ccReg-7006132836 @@ -10814,7 +10324,7 @@ RESPONSE: ABC-12345 - ccReg-1536077793 + ccReg-2164010902 @@ -10889,7 +10399,7 @@ RESPONSE: ABC-12345 - ccReg-9074810399 + ccReg-3122413442 @@ -10930,7 +10440,7 @@ RESPONSE: ABC-12345 - ccReg-6433694543 + ccReg-8442543391 @@ -10950,10 +10460,10 @@ REQUEST: - ns.westemmerich108.ee + ns.pacocha108.ee - FIXED:SH2488479285 + FIXED:SH6764575385 @@ -10973,7 +10483,7 @@ RESPONSE: ABC-12345 - ccReg-2752561257 + ccReg-6803494102 @@ -10991,10 +10501,10 @@ REQUEST: - ns.westemmerich108.ee + ns.pacocha108.ee - FIXED:SH2488479285 + FIXED:SH6764575385 @@ -11012,18 +10522,18 @@ RESPONSE: Nameserver already exists on this domain [hostname] - ns.westemmerich108.ee + ns.pacocha108.ee Contact already exists on this domain [contact_code_cache] - FIXED:SH2488479285 + FIXED:SH6764575385 ABC-12345 - ccReg-9298371804 + ccReg-5929738624 @@ -11061,7 +10571,7 @@ RESPONSE: ABC-12345 - ccReg-4198817730 + ccReg-6694675619 @@ -11102,7 +10612,7 @@ RESPONSE: ABC-12345 - ccReg-8053378605 + ccReg-0685931406 @@ -11119,7 +10629,7 @@ REQUEST: domain40.ee - 2016-07-28 + 2016-08-11 1 @@ -11140,12 +10650,12 @@ RESPONSE: domain40.ee - 2017-07-28T08:41:19Z + 2017-08-11T11:55:43Z ABC-12345 - ccReg-2144233121 + ccReg-7894957170 @@ -11162,7 +10672,7 @@ REQUEST: domain41.ee - 2016-07-28 + 2016-08-11 1 @@ -11183,12 +10693,12 @@ RESPONSE: domain41.ee - 2017-07-28T08:41:20Z + 2017-08-11T11:55:43Z ABC-12345 - ccReg-6734533900 + ccReg-4818602643 @@ -11205,7 +10715,7 @@ REQUEST: domain42.ee - 2016-07-28 + 2016-08-11 ABC-12345 @@ -11225,12 +10735,12 @@ RESPONSE: domain42.ee - 2017-07-28T08:41:20Z + 2017-08-11T11:55:44Z ABC-12345 - ccReg-1952216525 + ccReg-5568347905 @@ -11247,7 +10757,7 @@ REQUEST: domain43.ee - 2016-07-28 + 2016-08-11 1 @@ -11270,7 +10780,7 @@ RESPONSE: ABC-12345 - ccReg-9450436889 + ccReg-6111537092 @@ -11285,7 +10795,7 @@ REQUEST: domain43.ee - 2016-07-28 + 2016-08-11 1 @@ -11308,7 +10818,7 @@ RESPONSE: ABC-12345 - ccReg-1447208589 + ccReg-8948273525 @@ -11325,7 +10835,7 @@ REQUEST: domain44.ee - 2015-08-07 + 2015-08-21 730 @@ -11346,12 +10856,12 @@ RESPONSE: domain44.ee - 2017-08-07T00:00:00Z + 2017-08-21T00:00:00Z ABC-12345 - ccReg-8888058768 + ccReg-9301611301 @@ -11368,7 +10878,7 @@ REQUEST: domain45.ee - 2015-08-07 + 2015-08-21 36 @@ -11389,12 +10899,12 @@ RESPONSE: domain45.ee - 2018-08-07T00:00:00Z + 2018-08-21T00:00:00Z ABC-12345 - ccReg-2368607304 + ccReg-1011945556 @@ -11411,7 +10921,7 @@ REQUEST: domain46.ee - 2015-08-07 + 2015-08-21 1 @@ -11431,7 +10941,7 @@ RESPONSE: ABC-12345 - ccReg-6821240882 + ccReg-7985467355 @@ -11474,7 +10984,7 @@ RESPONSE: ABC-12345 - ccReg-3646435252 + ccReg-4848773826 @@ -11491,7 +11001,7 @@ REQUEST: domain48.ee - 2015-08-07 + 2015-08-21 4 @@ -11514,7 +11024,7 @@ RESPONSE: ABC-12345 - ccReg-6217040456 + ccReg-5698763115 @@ -11531,7 +11041,7 @@ REQUEST: domain49.ee - 2015-10-26 + 2015-11-09 1 @@ -11551,7 +11061,7 @@ RESPONSE: ABC-12345 - ccReg-8796521058 + ccReg-8336303107 @@ -11566,7 +11076,7 @@ REQUEST: domain49.ee - 2015-10-25 + 2015-11-08 1 @@ -11587,12 +11097,12 @@ RESPONSE: domain49.ee - 2016-10-25T00:00:00Z + 2016-11-08T00:00:00Z ABC-12345 - ccReg-0448578516 + ccReg-4520499014 @@ -11609,7 +11119,7 @@ REQUEST: domain50.ee - 2020-07-28 + 2020-08-11 1 @@ -11630,12 +11140,12 @@ RESPONSE: domain50.ee - 2021-07-28T00:00:00Z + 2021-08-11T00:00:00Z ABC-12345 - ccReg-5093886658 + ccReg-4003912281 @@ -11652,7 +11162,7 @@ REQUEST: domain51.ee - 2015-08-07 + 2015-08-21 1 @@ -11672,7 +11182,7 @@ RESPONSE: ABC-12345 - ccReg-1090831490 + ccReg-2838847035 @@ -11680,6 +11190,47 @@ RESPONSE: ### EPP Domain with valid domain should renew a expired domain +REQUEST: + +```xml + + + + + + domain52.ee + 2015-05-13 + 1 + + + ABC-12345 + + +``` + +RESPONSE: + +```xml + + + + + Command completed successfully + + + + domain52.ee + 2016-05-13T11:55:53Z + + + + ABC-12345 + ccReg-9837541136 + + + +``` + ### EPP Domain with valid domain does not renew foreign domain REQUEST: @@ -11722,7 +11273,7 @@ RESPONSE: ABC-12345 - ccReg-0660211759 + ccReg-3159259519 @@ -11737,7 +11288,7 @@ REQUEST: domain53.ee - 2016-07-28 + 2016-08-11 1 @@ -11757,7 +11308,7 @@ RESPONSE: ABC-12345 - ccReg-9082042804 + ccReg-3581184901 @@ -11803,7 +11354,7 @@ RESPONSE: ABC-12345 - ccReg-0461998559 + ccReg-9114812387 @@ -11843,20 +11394,20 @@ RESPONSE: domain54.ee EIS-66 - FIXED:REGISTRANT3821775852 - FIXED:SH92766468122 - FIXED:SH95283245121 + FIXED:REGISTRANT6678728752 + FIXED:SH55312836122 + FIXED:SH23048934121 - ns.halvorsonkeeling162.ee + ns.muellerlindgren162.ee 192.168.1.1 - ns.cummings163.ee + ns.nicolas163.ee 192.168.1.1 - ns.dibbert164.ee + ns.harris164.ee 192.168.1.1 @@ -11866,11 +11417,11 @@ RESPONSE: registrar1 - 2015-07-28T08:41:31Z - 2015-07-28T08:41:31Z - 2016-07-28T08:41:31Z + 2015-08-11T11:55:54Z + 2015-08-11T11:55:54Z + 2016-08-11T11:55:54Z - 7bde3f39e40a68635bf5a69098169cc5 + e405e982392e123281cbe3024e833231 @@ -11903,7 +11454,7 @@ RESPONSE: - ccReg-6011078959 + ccReg-1762927056 @@ -11941,20 +11492,20 @@ RESPONSE: domain54.ee EIS-66 - FIXED:REGISTRANT3821775852 - FIXED:SH92766468122 - FIXED:SH95283245121 + FIXED:REGISTRANT6678728752 + FIXED:SH55312836122 + FIXED:SH23048934121 - ns.halvorsonkeeling162.ee + ns.muellerlindgren162.ee 192.168.1.1 - ns.cummings163.ee + ns.nicolas163.ee 192.168.1.1 - ns.dibbert164.ee + ns.harris164.ee 192.168.1.1 @@ -11964,11 +11515,11 @@ RESPONSE: registrar1 - 2015-07-28T08:41:31Z - 2015-07-28T08:41:31Z - 2016-07-28T08:41:31Z + 2015-08-11T11:55:54Z + 2015-08-11T11:55:54Z + 2016-08-11T11:55:54Z - 7bde3f39e40a68635bf5a69098169cc5 + e405e982392e123281cbe3024e833231 @@ -12001,7 +11552,7 @@ RESPONSE: - ccReg-9484163738 + ccReg-8611042006 @@ -12040,7 +11591,7 @@ RESPONSE: Element '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}name', attribute 'hosts': 'invalid' is not a valid value of the atomic type '{https://epp.tld.ee/schema/domain-eis-1.0.xsd}hostsType'. - ccReg-6664642362 + ccReg-5710285862 @@ -12078,9 +11629,9 @@ RESPONSE: domain55.ee EIS-67 - FIXED:REGISTRANT0861566953 - FIXED:SH41938455124 - FIXED:SH51239690123 + FIXED:REGISTRANT1864627453 + FIXED:SH98335431124 + FIXED:SH14972112123 ns1.domain55.ee @@ -12094,16 +11645,16 @@ RESPONSE: registrar1 - 2015-07-28T08:41:31Z - 2015-07-28T08:41:31Z - 2016-07-28T08:41:31Z + 2015-08-11T11:55:54Z + 2015-08-11T11:55:55Z + 2016-08-11T11:55:54Z - 1f00f9c3dd3137349c89cb6122fd2087 + 6b82cec718a752daa0d054ddb47124f5 - ccReg-4706656698 + ccReg-7441088699 @@ -12141,9 +11692,9 @@ RESPONSE: domain55.ee EIS-67 - FIXED:REGISTRANT0861566953 - FIXED:SH41938455124 - FIXED:SH51239690123 + FIXED:REGISTRANT1864627453 + FIXED:SH98335431124 + FIXED:SH14972112123 ns3.test.ee @@ -12152,16 +11703,16 @@ RESPONSE: registrar1 - 2015-07-28T08:41:31Z - 2015-07-28T08:41:31Z - 2016-07-28T08:41:31Z + 2015-08-11T11:55:54Z + 2015-08-11T11:55:55Z + 2016-08-11T11:55:54Z - 1f00f9c3dd3137349c89cb6122fd2087 + 6b82cec718a752daa0d054ddb47124f5 - ccReg-6524782384 + ccReg-8877712602 @@ -12199,20 +11750,20 @@ RESPONSE: domain55.ee EIS-67 - FIXED:REGISTRANT0861566953 - FIXED:SH41938455124 - FIXED:SH51239690123 + FIXED:REGISTRANT1864627453 + FIXED:SH98335431124 + FIXED:SH14972112123 registrar1 - 2015-07-28T08:41:31Z - 2015-07-28T08:41:31Z - 2016-07-28T08:41:31Z + 2015-08-11T11:55:54Z + 2015-08-11T11:55:55Z + 2016-08-11T11:55:54Z - 1f00f9c3dd3137349c89cb6122fd2087 + 6b82cec718a752daa0d054ddb47124f5 - ccReg-6513443999 + ccReg-1985874847 @@ -12250,9 +11801,9 @@ RESPONSE: domain55.ee EIS-67 - FIXED:REGISTRANT0861566953 - FIXED:SH41938455124 - FIXED:SH51239690123 + FIXED:REGISTRANT1864627453 + FIXED:SH98335431124 + FIXED:SH14972112123 ns1.domain55.ee @@ -12271,16 +11822,16 @@ RESPONSE: registrar1 - 2015-07-28T08:41:31Z - 2015-07-28T08:41:31Z - 2016-07-28T08:41:31Z + 2015-08-11T11:55:54Z + 2015-08-11T11:55:55Z + 2016-08-11T11:55:54Z - 1f00f9c3dd3137349c89cb6122fd2087 + 6b82cec718a752daa0d054ddb47124f5 - ccReg-4393101167 + ccReg-7895563387 @@ -12319,7 +11870,7 @@ RESPONSE: - ccReg-7830292127 + ccReg-4606312676 @@ -12359,34 +11910,34 @@ RESPONSE: domain56.ee EIS-68 - FIXED:REGISTRANT8926104554 - FIXED:SH54896149126 - FIXED:SH80337499125 + FIXED:REGISTRANT6615814554 + FIXED:SH33692771126 + FIXED:SH04611136125 - ns.conroy168.ee + ns.pfannerstillschiller168.ee 192.168.1.1 - ns.bahringer169.ee + ns.krajcik169.ee 192.168.1.1 - ns.kochhyatt170.ee + ns.reichert170.ee 192.168.1.1 registrar1 - 2015-07-28T08:41:33Z - 2015-07-28T08:41:33Z - 2016-07-28T08:41:33Z + 2015-08-11T11:55:56Z + 2015-08-11T11:55:56Z + 2016-08-11T11:55:56Z - da322dc86ce37e526f9c2dedc0f5c9f4 + 9693144ac2a6c862944bbd89378f8e8d - ccReg-0824891046 + ccReg-8592733577 @@ -12434,7 +11985,7 @@ RESPONSE: ABC-12345 - ccReg-7661910824 + ccReg-8350220504 @@ -12468,7 +12019,7 @@ RESPONSE: Authorization error - ccReg-8708797571 + ccReg-3347584229 @@ -12514,7 +12065,7 @@ RESPONSE: ABC-12345 - ccReg-2730417805 + ccReg-5538659128 @@ -12562,7 +12113,7 @@ RESPONSE: ABC-12345 - ccReg-0152975550 + ccReg-2825253645 @@ -12597,31 +12148,31 @@ RESPONSE: domain58.ee EIS-70 - FIXED:REGISTRANT2923781556 - FIXED:SH74442662130 - FIXED:SH98223564129 + FIXED:REGISTRANT5046526256 + FIXED:SH31743232130 + FIXED:SH35555172129 - ns.wizastanton174.ee + ns.wunscharmstrong174.ee 192.168.1.1 - ns.hermann175.ee + ns.schaefer175.ee 192.168.1.1 - ns.mrazhintz176.ee + ns.feest176.ee 192.168.1.1 registrar1 - 2015-07-28T08:41:33Z - 2015-07-28T08:41:33Z - 2016-07-28T08:41:33Z + 2015-08-11T11:55:56Z + 2015-08-11T11:55:56Z + 2016-08-11T11:55:56Z - ccReg-5496759020 + ccReg-7305520906 @@ -12667,7 +12218,7 @@ RESPONSE: ABC-12345 - ccReg-5839948259 + ccReg-7996586807 @@ -12715,7 +12266,7 @@ RESPONSE: ABC-12345 - ccReg-9962481595 + ccReg-1769652713 @@ -12731,7 +12282,7 @@ REQUEST: domain59.ee - d1a0c13cf710ce60125dda34bc047357 + 7763e2a63bb5324a562b832ea91f4ea4 @@ -12753,34 +12304,34 @@ RESPONSE: domain59.ee EIS-71 - FIXED:REGISTRANT9338146457 - FIXED:SH08033657132 - FIXED:SH95760244131 + FIXED:REGISTRANT4215092657 + FIXED:SH67223411132 + FIXED:SH37311668131 - ns.hansen177.ee + ns.legros177.ee 192.168.1.1 - ns.bechtelar178.ee + ns.bosco178.ee 192.168.1.1 - ns.ryan179.ee + ns.kohler179.ee 192.168.1.1 registrar1 - 2015-07-28T08:41:34Z - 2015-07-28T08:41:34Z - 2016-07-28T08:41:34Z + 2015-08-11T11:55:57Z + 2015-08-11T11:55:57Z + 2016-08-11T11:55:57Z - d1a0c13cf710ce60125dda34bc047357 + 7763e2a63bb5324a562b832ea91f4ea4 - ccReg-5565279418 + ccReg-9758443099 @@ -12826,7 +12377,7 @@ RESPONSE: ABC-12345 - ccReg-1086178421 + ccReg-3535251971 @@ -12866,7 +12417,7 @@ RESPONSE: ABC-12345 - ccReg-6748161709 + ccReg-6418120672 @@ -12906,7 +12457,7 @@ RESPONSE: ABC-12345 - ccReg-3721491187 + ccReg-1091198620 @@ -12946,7 +12497,7 @@ RESPONSE: ABC-12345 - ccReg-8985283918 + ccReg-9096837356 @@ -12981,7 +12532,7 @@ RESPONSE: ABC-12345 - ccReg-6341995809 + ccReg-8675330286 @@ -13023,7 +12574,7 @@ RESPONSE: ABC-12345 - ccReg-5323793544 + ccReg-7290268396 @@ -13064,7 +12615,7 @@ RESPONSE: ABC-12345 - ccReg-9376664446 + ccReg-0077508545 @@ -13114,7 +12665,7 @@ RESPONSE: ABC-12345 - ccReg-8665354623 + ccReg-8086738861 @@ -13161,7 +12712,7 @@ RESPONSE: ABC-12345 - ccReg-0776655399 + ccReg-1647524069 @@ -13209,7 +12760,7 @@ RESPONSE: ABC-12345 - ccReg-6119482698 + ccReg-0909822570 @@ -13232,13 +12783,13 @@ REQUEST: cmlraXN0aGViZXN0 - 5a561b9d331c998c4f0383c7c67837be + 2607db9557ab057a5ffd16029160a608 P1M13D - 1438072899 + 1439294162 ``` @@ -13256,8 +12807,8 @@ RESPONSE: - 1438072899 - ccReg-0546548236 + 1439294162 + ccReg-7220924017 @@ -13279,13 +12830,13 @@ REQUEST: cmlraXN0aGViZXN0 - 5a561b9d331c998c4f0383c7c67837be + 2607db9557ab057a5ffd16029160a608 Invalid Expiry - 1438072900 + 1439294163 ``` @@ -13306,8 +12857,8 @@ RESPONSE: - 1438072900 - ccReg-6339589638 + 1439294163 + ccReg-9778324427 @@ -13330,13 +12881,13 @@ REQUEST: cmlraXN0aGViZXN0 - 5a561b9d331c998c4f0383c7c67837be + 2607db9557ab057a5ffd16029160a608 Invalid Expiry - 1438072901 + 1439294164 ``` @@ -13354,8 +12905,8 @@ RESPONSE: - 1438072901 - ccReg-5588050715 + 1439294164 + ccReg-8033554407 @@ -13378,13 +12929,13 @@ REQUEST: cmlraXN0aGViZXN0 - 5a561b9d331c998c4f0383c7c67837be + 2607db9557ab057a5ffd16029160a608 Invalid Absolute - 1438072902 + 1439294165 ``` @@ -13402,8 +12953,8 @@ RESPONSE: - 1438072902 - ccReg-3072813596 + 1439294165 + ccReg-3720220217 @@ -13426,7 +12977,7 @@ REQUEST: cmlraXN0aGViZXN0 - 5a561b9d331c998c4f0383c7c67837be + 2607db9557ab057a5ffd16029160a608 P1D @@ -13435,7 +12986,7 @@ REQUEST: JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - 1438072903 + 1439294166 ``` @@ -13453,8 +13004,8 @@ RESPONSE: - 1438072903 - ccReg-8005218060 + 1439294166 + ccReg-2343439515 @@ -13477,7 +13028,7 @@ REQUEST: cmlraXN0aGViZXN0 - 5a561b9d331c998c4f0383c7c67837be + 2607db9557ab057a5ffd16029160a608 P1D @@ -13486,7 +13037,7 @@ REQUEST: JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0Zp== - 1438072904 + 1439294167 ``` @@ -13501,8 +13052,8 @@ RESPONSE: Attribute is invalid: type - 1438072904 - ccReg-7669723424 + 1439294167 + ccReg-0401411681 @@ -13548,7 +13099,7 @@ RESPONSE: ABC-12345 - ccReg-7183215230 + ccReg-7730088590 @@ -13563,7 +13114,7 @@ REQUEST: - 1438072906 + 1439294168 ``` @@ -13578,8 +13129,8 @@ RESPONSE: Command completed successfully; no messages - 1438072906 - ccReg-0904688053 + 1439294168 + ccReg-2280914410 @@ -13627,7 +13178,7 @@ RESPONSE: ABC-12345 - ccReg-9330176861 + ccReg-1986697051 @@ -13640,7 +13191,7 @@ REQUEST: - 1438072906 + 1439294169 ``` @@ -13655,8 +13206,8 @@ RESPONSE: Command completed successfully; no messages - 1438072906 - ccReg-9666096812 + 1439294169 + ccReg-5202120928 @@ -13702,7 +13253,7 @@ RESPONSE: ABC-12345 - ccReg-2827332510 + ccReg-9446890199 @@ -13715,7 +13266,7 @@ REQUEST: - 1438072906 + 1439294169 ``` @@ -13730,12 +13281,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-28T08:41:46Z + 2015-08-11T11:56:09Z Balance low. - 1438072906 - ccReg-8105139529 + 1439294169 + ccReg-5767853600 @@ -13781,7 +13332,7 @@ RESPONSE: ABC-12345 - ccReg-4202898264 + ccReg-1789858043 @@ -13794,7 +13345,7 @@ REQUEST: - 1438072906 + 1439294169 ``` @@ -13812,8 +13363,8 @@ RESPONSE: - 1438072906 - ccReg-6713795149 + 1439294169 + ccReg-1956891962 @@ -13859,7 +13410,7 @@ RESPONSE: ABC-12345 - ccReg-8383726441 + ccReg-9092138622 @@ -13872,7 +13423,7 @@ REQUEST: - 1438072906 + 1439294169 ``` @@ -13888,8 +13439,8 @@ RESPONSE: - 1438072906 - ccReg-9660232901 + 1439294169 + ccReg-6745736020 @@ -13902,7 +13453,7 @@ REQUEST: - 1438072906 + 1439294169 ``` @@ -13920,8 +13471,8 @@ RESPONSE: - 1438072906 - ccReg-8436895537 + 1439294169 + ccReg-3500436361 @@ -13936,7 +13487,7 @@ REQUEST: - 1438072909 + 1439294171 ``` @@ -13954,8 +13505,8 @@ RESPONSE: Element '{urn:ietf:params:xml:ns:epp-1.0}poll', attribute 'op': 'bla' is not a valid value of the atomic type '{urn:ietf:params:xml:ns:epp-1.0}pollOpType'. - 1438072909 - ccReg-0720048091 + 1439294171 + ccReg-4493252063 @@ -13970,7 +13521,7 @@ REQUEST: - 1438072910 + 1439294172 ``` @@ -13985,12 +13536,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-28T08:41:50Z + 2015-08-11T11:56:12Z Smth else. - 1438072910 - ccReg-4999056673 + 1439294172 + ccReg-3040938898 @@ -14003,7 +13554,7 @@ REQUEST: - 1438072910 + 1439294172 ``` @@ -14019,8 +13570,8 @@ RESPONSE: - 1438072910 - ccReg-2484759210 + 1439294172 + ccReg-4471665589 @@ -14033,7 +13584,7 @@ REQUEST: - 1438072910 + 1439294172 ``` @@ -14048,12 +13599,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-28T08:41:50Z + 2015-08-11T11:56:12Z Something. - 1438072910 - ccReg-8852256138 + 1439294172 + ccReg-6475550625 @@ -14066,7 +13617,7 @@ REQUEST: - 1438072910 + 1439294172 ``` @@ -14082,8 +13633,8 @@ RESPONSE: - 1438072910 - ccReg-4857662573 + 1439294172 + ccReg-9624718637 @@ -14096,7 +13647,7 @@ REQUEST: - 1438072910 + 1439294172 ``` @@ -14111,12 +13662,12 @@ RESPONSE: Command completed successfully; ack to dequeue - 2015-07-28T08:41:50Z + 2015-08-11T11:56:12Z Balance low. - 1438072910 - ccReg-7845130069 + 1439294172 + ccReg-3070249876 @@ -14129,7 +13680,7 @@ REQUEST: - 1438072910 + 1439294173 ``` @@ -14145,8 +13696,8 @@ RESPONSE: - 1438072910 - ccReg-5213820888 + 1439294173 + ccReg-4968625677 @@ -14159,7 +13710,7 @@ REQUEST: - 1438072910 + 1439294173 ``` @@ -14174,8 +13725,8 @@ RESPONSE: Command completed successfully; no messages - 1438072910 - ccReg-5526530522 + 1439294173 + ccReg-9296884701 @@ -14190,7 +13741,7 @@ RESPONSE: EPP server (EIS) - 2015-07-28T08:41:50Z + 2015-08-11T11:56:13Z 1.0 en @@ -14266,7 +13817,7 @@ RESPONSE: ABC-12345 - ccReg-3357021379 + ccReg-8845299596 @@ -14314,7 +13865,7 @@ RESPONSE: ABC-12345 - ccReg-7648731033 + ccReg-5595047459 @@ -14349,7 +13900,7 @@ RESPONSE: ABC-12345 - ccReg-9110727237 + ccReg-0543938056 @@ -14395,7 +13946,7 @@ RESPONSE: Authentication error; server closing connection (API user not found) - ccReg-3560736149 + ccReg-3872468269 @@ -14443,7 +13994,7 @@ RESPONSE: ABC-12345 - ccReg-9604669451 + ccReg-8811138694 @@ -14491,7 +14042,7 @@ RESPONSE: ABC-12345 - ccReg-2841249388 + ccReg-2886908735 @@ -14539,7 +14090,7 @@ RESPONSE: ABC-12345 - ccReg-7967943283 + ccReg-8092163355 @@ -14585,7 +14136,7 @@ RESPONSE: ABC-12345 - ccReg-8815596190 + ccReg-7898443219 @@ -14633,7 +14184,7 @@ RESPONSE: ABC-12345 - ccReg-3572848696 + ccReg-4059475229 @@ -14662,7 +14213,7 @@ RESPONSE: ABC-12345 - ccReg-9539000551 + ccReg-0841409227 @@ -14711,7 +14262,7 @@ RESPONSE: ABC-12345 - ccReg-6256430973 + ccReg-9094322774 @@ -14763,7 +14314,7 @@ RESPONSE: ABC-12345 - ccReg-6382004519 + ccReg-3240158726 diff --git a/doc/epp/contact.md b/doc/epp/contact.md index b8a0be47d..26a88af24 100644 --- a/doc/epp/contact.md +++ b/doc/epp/contact.md @@ -13,8 +13,10 @@ Contact Mapping protocol short version: ----------------------- ------- ----------------- 1 1 Attribute: xmlns:contact="https://epp.tld.ee/schema/contact-eis-1.0.xsd" - 0-1 Contact id, optional, string, no spaces, max 100 characters, - generated automatically if missing + 0-1 Contact id, optional, + string: ASCII letters, numbers, ':', '-' characters, no spaces, + max 100 characters, + generated automatically if missing. 1 Postal information container 1 Full name of the contact 0 Org is not supported and must be blank or missing diff --git a/doc/schemas/eis-1.0.xsd b/doc/schemas/eis-1.0.xsd index a8b7221a3..262281cca 100644 --- a/doc/schemas/eis-1.0.xsd +++ b/doc/schemas/eis-1.0.xsd @@ -70,6 +70,9 @@ + + + diff --git a/lib/schemas/eis-1.0.xsd b/lib/schemas/eis-1.0.xsd index a8b7221a3..262281cca 100644 --- a/lib/schemas/eis-1.0.xsd +++ b/lib/schemas/eis-1.0.xsd @@ -70,6 +70,9 @@ + + + diff --git a/lib/tasks/import.rake b/lib/tasks/import.rake index 9a89d2b72..7b3625ad2 100644 --- a/lib/tasks/import.rake +++ b/lib/tasks/import.rake @@ -54,7 +54,7 @@ namespace :import do Rake::Task['import:registrars'].invoke Rake::Task['import:contacts'].invoke Rake::Task['import:domains'].invoke - Rake::Task['import:eis_domains'].invoke + Rake::Task['import:zones'].invoke end desc 'Import registrars' @@ -473,246 +473,197 @@ namespace :import do puts "-----> Imported #{count} new domains in #{(Time.zone.now.to_f - start).round(2)} seconds" end - desc 'Import EIS domains' - task eis_domains: :environment do + desc 'Import zones' + task zones: :environment do start = Time.zone.now.to_f - puts '-----> Importing EIS domains...' + puts '-----> Importing zones...' - eis = Registrar.where( - name: 'EIS', - reg_no: '90010019', - phone: '+3727271000', - country_code: 'EE', - vat_no: 'EE101286464', - email: 'info@internet.ee', - state: 'Harjumaa', - city: 'Tallinn', - street: 'Paldiski mnt 80', - zip: '10617', - url: 'www.internet.ee', - code: 'EIS' - ).first_or_create! + ns_records, a_records, a4_records = parse_zone_ns_data('ee', 1) - unless eis.cash_account - eis.accounts.create(account_type: Account::CASH, currency: 'EUR') - eis.save - end - - c = Registrant.where( - name: 'Eesti Interneti Sihtasutus', - phone: '+372.7271000', - email: 'info@internet.ee', - ident: '90010019', - ident_type: 'passport', - city: 'Tallinn', - country_code: 'ee', - street: 'Paldiski mnt 80', - zip: '10617', - registrar: eis - ).first_or_create! - - # ee - ns_list = [] - Legacy::ZoneNs.where(zone: 1).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end - - Domain.create!( - name: 'ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) # edu.ee - ns_list = [] - Legacy::ZoneNs.where(zone: 6).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end + ns_records, a_records, a4_records = parse_zone_ns_data('edu.ee', 6) - Domain.create!( - name: 'edu.ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'edu.ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) # aip.ee - ns_list = [] - Legacy::ZoneNs.where(zone: 9).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end + ns_records, a_records, a4_records = parse_zone_ns_data('aip.ee', 9) - Domain.create!( - name: 'aip.ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'aip.ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) # org.ee - ns_list = [] - Legacy::ZoneNs.where(zone: 10).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end + ns_records, a_records, a4_records = parse_zone_ns_data('org.ee', 10) - Domain.create!( - name: 'org.ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'org.ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) # pri.ee - ns_list = [] - Legacy::ZoneNs.where(zone: 2).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end + ns_records, a_records, a4_records = parse_zone_ns_data('pri.ee', 2) - Domain.create!( - name: 'pri.ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'pri.ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) # med.ee - ns_list = [] - Legacy::ZoneNs.where(zone: 3).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end + ns_records, a_records, a4_records = parse_zone_ns_data('med.ee', 3) - Domain.create!( - name: 'med.ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'med.ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) # fie.ee - ns_list = [] - Legacy::ZoneNs.where(zone: 4).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end + ns_records, a_records, a4_records = parse_zone_ns_data('fie.ee', 4) - Domain.create!( - name: 'fie.ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'fie.ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) # com.ee - ns_list = [] - Legacy::ZoneNs.where(zone: 5).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end + ns_records, a_records, a4_records = parse_zone_ns_data('com.ee', 5) - Domain.create!( - name: 'com.ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'com.ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) # gov.ee - ns_list = [] - Legacy::ZoneNs.where(zone: 7).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end + ns_records, a_records, a4_records = parse_zone_ns_data('gov.ee', 7) - Domain.create!( - name: 'gov.ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'gov.ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) # riik.ee - ns_list = [] - Legacy::ZoneNs.where(zone: 8).each do |x| - ipv4 = x.addrs.select { |addr| addr.ipv4? }.first - ipv6 = x.addrs.select { |addr| addr.ipv6? }.first - ns_list << Nameserver.new(hostname: x.fqdn, ipv4: ipv4, ipv6: ipv6) - end + ns_records, a_records, a4_records = parse_zone_ns_data('riik.ee', 8) - Domain.create!( - name: 'riik.ee', - valid_to: Date.new(9999, 1, 1), - period: 1, - period_unit: 'y', - registrant: c, - nameservers: ns_list, - admin_contacts: [c], - tech_contacts: [c], - registrar: eis - ) + ZonefileSetting.create!({ + origin: 'riik.ee', + ttl: 43200, + refresh: 3600, + retry: 900, + expire: 1209600, + minimum_ttl: 3600, + email: 'hostmaster.eestiinternet.ee', + master_nameserver: 'ns.tld.ee', + ns_records: ns_records, + a_records: a_records, + a4_records: a4_records + }) - puts "-----> Imported EIS domains in #{(Time.zone.now.to_f - start).round(2)} seconds" + puts "-----> Imported zones in #{(Time.zone.now.to_f - start).round(2)} seconds" end end + +def parse_zone_ns_data(domain, zone) + ns_records = '' + a_records = '' + a4_records = '' + Legacy::ZoneNs.where(zone: zone).each do |x| + ipv4 = x.addrs.select { |addr| addr.ipv4? }.first + ipv6 = x.addrs.select { |addr| addr.ipv6? }.first + + ns_records += "#{domain}. IN NS #{x.fqdn}.\n" + a_records += "#{x.fqdn}. IN A #{ipv4}\n" if ipv4.present? + a4_records += "#{x.fqdn}. IN AAAA #{ipv6}\n" if ipv6.present? + end + [ns_records.strip, a_records.strip, a4_records.strip] +end # rubocop: enable Performance/Detect # rubocop: enable Style/SymbolProc diff --git a/lib/tasks/zonefile.rake b/lib/tasks/zonefile.rake index 4829f5324..510bb60c1 100644 --- a/lib/tasks/zonefile.rake +++ b/lib/tasks/zonefile.rake @@ -40,33 +40,28 @@ namespace :zonefile do ret = concat(tmp_var, chr(10), chr(10)); + -- origin ns records + SELECT ns_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + ret := concat(ret, '; Zone NS Records', chr(10), tmp_var, chr(10)); + -- ns records SELECT array_to_string( array( SELECT concat(d.name_puny, '. IN NS ', ns.hostname, '.') FROM domains d JOIN nameservers ns ON ns.domain_id = d.id - WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter OR d.name = i_origin + WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter + AND NOT ('{serverHold,clientHold}' && d.statuses) ORDER BY d.name ), chr(10) ) INTO tmp_var; - ret := concat(ret, '; Zone NS Records', chr(10), tmp_var, chr(10), chr(10)); + ret := concat(ret, tmp_var, chr(10), chr(10)); - -- a glue records for origin nameservers - SELECT array_to_string( - array( - SELECT concat(ns.hostname, '. IN A ', ns.ipv4) - FROM nameservers ns - JOIN domains d ON d.id = ns.domain_id - WHERE d.name = i_origin - AND ns.hostname LIKE '%.' || d.name - AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '' - ), chr(10) - ) INTO tmp_var; - - ret := concat(ret, '; Zone A Records', chr(10), tmp_var); + -- origin a glue records + SELECT a_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + ret := concat(ret, '; Zone A Records', chr(10), tmp_var, chr(10)); -- a glue records for other nameservers SELECT array_to_string( @@ -78,43 +73,15 @@ namespace :zonefile do AND ns.hostname LIKE '%.' || d.name AND d.name <> i_origin AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '' - AND NOT EXISTS ( -- filter out glue records that already appeared in origin glue recrods - SELECT 1 FROM nameservers nsi - JOIN domains di ON nsi.domain_id = di.id - WHERE di.name = i_origin - AND nsi.hostname = ns.hostname - ) + AND NOT ('{serverHold,clientHold}' && d.statuses) ), chr(10) ) INTO tmp_var; - -- TODO This is a possible subtitition to the previous query, stress testing is needed to see which is faster + ret := concat(ret, tmp_var, chr(10), chr(10)); - -- SELECT ns.* - -- FROM nameservers ns - -- JOIN domains d ON d.id = ns.domain_id - -- WHERE d.name LIKE '%ee' AND d.name NOT LIKE '%pri.ee' - -- AND ns.hostname LIKE '%.' || d.name - -- AND d.name <> 'ee' - -- AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '' - -- AND ns.hostname NOT IN ( - -- SELECT ns.hostname FROM domains d JOIN nameservers ns ON d.id = ns.domain_id WHERE d.name = 'ee' - -- ) - - ret := concat(ret, chr(10), tmp_var, chr(10), chr(10)); - - -- aaaa glue records for origin nameservers - SELECT array_to_string( - array( - SELECT concat(ns.hostname, '. IN AAAA ', ns.ipv6) - FROM nameservers ns - JOIN domains d ON d.id = ns.domain_id - WHERE d.name = i_origin - AND ns.hostname LIKE '%.' || d.name - AND ns.ipv6 IS NOT NULL AND ns.ipv6 <> '' - ), chr(10) - ) INTO tmp_var; - - ret := concat(ret, '; Zone AAAA Records', chr(10), tmp_var); + -- origin aaaa glue records + SELECT a4_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var; + ret := concat(ret, '; Zone AAAA Records', chr(10), tmp_var, chr(10)); -- aaaa glue records for other nameservers SELECT array_to_string( @@ -126,16 +93,11 @@ namespace :zonefile do AND ns.hostname LIKE '%.' || d.name AND d.name <> i_origin AND ns.ipv6 IS NOT NULL AND ns.ipv6 <> '' - AND NOT EXISTS ( -- filter out glue records that already appeared in origin glue recrods - SELECT 1 FROM nameservers nsi - JOIN domains di ON nsi.domain_id = di.id - WHERE di.name = i_origin - AND nsi.hostname = ns.hostname - ) + AND NOT ('{serverHold,clientHold}' && d.statuses) ), chr(10) ) INTO tmp_var; - ret := concat(ret, chr(10), tmp_var, chr(10), chr(10)); + ret := concat(ret, tmp_var, chr(10), chr(10)); -- ds records SELECT array_to_string( @@ -147,6 +109,7 @@ namespace :zonefile do FROM domains d JOIN dnskeys dk ON dk.domain_id = d.id WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter AND dk.flags = 257 + AND NOT ('{serverHold,clientHold}' && d.statuses) ), chr(10) ) INTO tmp_var; diff --git a/public/assets/.sprockets-manifest-48c2dd3ff16b86b70040480e74a50543.json b/public/assets/.sprockets-manifest-48c2dd3ff16b86b70040480e74a50543.json index c5fd0c69d..f2801d8ce 100644 --- a/public/assets/.sprockets-manifest-48c2dd3ff16b86b70040480e74a50543.json +++ b/public/assets/.sprockets-manifest-48c2dd3ff16b86b70040480e74a50543.json @@ -1 +1 @@ -{"files":{"admin-manifest-58660819bb55d95ee3f0c8149722a0e2ea507a3a45f24d22a2610d060bdc8dc0.css":{"logical_path":"admin-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":435358,"digest":"58660819bb55d95ee3f0c8149722a0e2ea507a3a45f24d22a2610d060bdc8dc0","integrity":"sha256-WGYIGbtV2V7j8MgUlyKg4upQejpF8k0iomENBgvcjcA="},"admin-manifest-025801216a3b153631239205b373c5e4ac42d55cc9a53960d3c485b5eed9d467.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":712602,"digest":"025801216a3b153631239205b373c5e4ac42d55cc9a53960d3c485b5eed9d467","integrity":"sha256-AlgBIWo7FTYxI5IFs3PF5KxC1VzJpTlg08SFte7Z1Gc="},"registrar-manifest-70dd177301fef149b726705917e97491911b4a74c1760a223eaefaaf3918a38b.css":{"logical_path":"registrar-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":475725,"digest":"70dd177301fef149b726705917e97491911b4a74c1760a223eaefaaf3918a38b","integrity":"sha256-cN0XcwH+8Um3JnBZF+l0kZEbSnTBdgoiPq76rzkYo4s="},"registrar-manifest-037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":730835,"digest":"037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6","integrity":"sha256-A3IXE3591Q0qDErsMJ5TK5zSaW3kXIJswMT/i/WAJeY="},"registrant-manifest-6bfceed2fd52330f303b890fa9d229b1ecd097fda1b7df2db41829b8c25d40c0.css":{"logical_path":"registrant-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":476257,"digest":"6bfceed2fd52330f303b890fa9d229b1ecd097fda1b7df2db41829b8c25d40c0","integrity":"sha256-a/zu0v1SMw8wO4kPqdIpsezQl/2ht98ttBgpuMJdQMA="},"registrant-manifest-037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":730835,"digest":"037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6","integrity":"sha256-A3IXE3591Q0qDErsMJ5TK5zSaW3kXIJswMT/i/WAJeY="},"shared/pdf-2f929bf92af2ce26249b1b02bb998c63cf49da0ae4e3526f869fccd0af65ac3b.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-15T15:29:32+03:00","size":353119,"digest":"2f929bf92af2ce26249b1b02bb998c63cf49da0ae4e3526f869fccd0af65ac3b","integrity":"sha256-L5Kb+SryziYkmxsCu5mMY89J2grk41Jvhp/M0K9lrDs="},"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png":{"logical_path":"select2.png","mtime":"2015-05-14T14:33:49+03:00","size":613,"digest":"d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8","integrity":"sha256-1rXY2D28GPuNd8h2HTMc2eUSPJaElQurBAbpiiSsWug="},"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif":{"logical_path":"select2-spinner.gif","mtime":"2015-05-14T14:33:49+03:00","size":1849,"digest":"f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c","integrity":"sha256-9uz/YX7Cun9Vnm9TXK2bcKP5ESBzdTXatNRUimyDV2w="},"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png":{"logical_path":"select2x2.png","mtime":"2015-05-14T14:33:49+03:00","size":845,"digest":"6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2","integrity":"sha256-b+KNaH3A7U2WAWI4xgi6HnGYycmsz6CzYLeAGLn7m8I="},"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"alpha.png","mtime":"2015-05-15T15:29:32+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg":{"logical_path":"bg.jpg","mtime":"2015-05-15T15:29:32+03:00","size":69058,"digest":"b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05","integrity":"sha256-uANqvS8PNuOrVNXVslsPusEdY+xhBtlZ3z+hgLN53gU="},"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png":{"logical_path":"danske.png","mtime":"2015-05-15T15:29:32+03:00","size":1130,"digest":"07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96","integrity":"sha256-B6Q5XMQGeF2hKUFOFYcv4dak9vbaAGbaZwG1bNty6pY="},"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"development.png","mtime":"2015-05-15T15:29:32+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png":{"logical_path":"eis-logo-et.png","mtime":"2015-05-15T15:29:32+03:00","size":1440,"digest":"86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307","integrity":"sha256-hqVJ0mbNpz4yJcXuuhRTLFnUmOH9mA7BKf3taNqLswc="},"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico":{"logical_path":"favicon.ico","mtime":"2015-05-15T15:29:32+03:00","size":1150,"digest":"309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49","integrity":"sha256-MJ4A4vePmisEKrwoBqik7Zz2u10/AMzAmFsTCL/YbEk="},"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif":{"logical_path":"id_card.gif","mtime":"2015-05-15T15:29:32+03:00","size":564,"digest":"ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e","integrity":"sha256-6lBqSbJcjeTmjnhtkPXsXe+2yOiVuQ8vEpgV9eVQ/o4="},"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png":{"logical_path":"lhv.png","mtime":"2015-05-15T15:29:32+03:00","size":3417,"digest":"4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030","integrity":"sha256-TQnTEmoF3zkrc8VPqbHrYFeYwum9Nhz0RQD3MDiDIDA="},"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif":{"logical_path":"mid.gif","mtime":"2015-05-15T15:29:32+03:00","size":1566,"digest":"275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239","integrity":"sha256-J1VD7Oo3fevhrIkkcPOupPfn8PkIn8D76k3kEHQuUjk="},"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png":{"logical_path":"nordea.png","mtime":"2015-05-15T15:29:32+03:00","size":1181,"digest":"75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b","integrity":"sha256-dck4x0NuDIMW8Fa+jfis0Oixbgl5Dnj3jaltn4Yz7zs="},"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"registrar/bg-alpha.png","mtime":"2015-05-15T15:29:32+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"registrar/bg-development.png","mtime":"2015-05-15T15:29:32+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"registrar/bg-staging.png","mtime":"2015-05-15T15:29:32+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico":{"logical_path":"registrar/favicon.ico","mtime":"2015-05-15T15:29:32+03:00","size":0,"digest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","integrity":"sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="},"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png":{"logical_path":"seb.png","mtime":"2015-05-15T15:29:32+03:00","size":2439,"digest":"9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e","integrity":"sha256-nJ2UMBTMTucGJEiTzYosSop8yXv73vambiLHLzPV8l4="},"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"staging.png","mtime":"2015-05-15T15:29:32+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png":{"logical_path":"swed.png","mtime":"2015-05-15T15:29:32+03:00","size":1521,"digest":"2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb","integrity":"sha256-LPRXKQYs9fpjQke6NyxXnJfzguXMQ/oREhkHfnRz/bs="},"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"test.png","mtime":"2015-05-15T15:29:32+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"admin/application-b1444f5083209e83d34a087d1ff78a91b8a3eb487815a1987cbc5a120bf4e48f.js":{"logical_path":"admin/application.js","mtime":"2015-06-08T11:23:15+03:00","size":396,"digest":"b1444f5083209e83d34a087d1ff78a91b8a3eb487815a1987cbc5a120bf4e48f","integrity":"sha256-sURPUIMgnoPTSgh9H/eKkbij60h4FaGYfLxaEgv05I8="},"registrar/application-8ad3d7cb40be14b5c7dd76340db3618c0cd651644aa1e29bff59cc32e454ea85.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T15:29:08+03:00","size":1107,"digest":"8ad3d7cb40be14b5c7dd76340db3618c0cd651644aa1e29bff59cc32e454ea85","integrity":"sha256-itPXy0C+FLXH3XY0DbNhjAzWUWRKoeKb/1nMMuRU6oU="},"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot":{"logical_path":"etelkalight-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23109,"digest":"baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0","integrity":"sha256-uvfjWrL2S/HG+kR205NMdCIGKZVzj9nlcVsC9VAC18A="},"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg":{"logical_path":"etelkalight-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":64768,"digest":"2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24","integrity":"sha256-K1dfbkaW10lXryenx7t5drfKMdDr6Owlu0w0lNXRbiQ="},"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf":{"logical_path":"etelkalight-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":49748,"digest":"f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1","integrity":"sha256-9oottjRthk+Cw7PnJe5gsCF+keRuxH+WcQ9w+Za2GvE="},"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff":{"logical_path":"etelkalight-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26204,"digest":"1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043","integrity":"sha256-HtONusa4F790vUapjWEAWqJhXbesdD5ANzZNECEIQEM="},"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot":{"logical_path":"etelkalightbold-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23707,"digest":"1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39","integrity":"sha256-HZTKvm+1WwX3Rv4KpRp6UDaD16/baDYO0mv6wD4bPDk="},"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg":{"logical_path":"etelkalightbold-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":62829,"digest":"bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555","integrity":"sha256-uwyOF7mbEPIRvjUxpR1q1IpcbkZwyPthYKMp+kdYxVU="},"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf":{"logical_path":"etelkalightbold-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":51172,"digest":"0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429","integrity":"sha256-DwbR5/CZV44cwOmxh1rKKnEowMoNZA/VBOl7rgsChCk="},"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff":{"logical_path":"etelkalightbold-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26956,"digest":"d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805","integrity":"sha256-1gjANrPj8EyoehxJT42eliCnKbJ2C16x3O5SxLyOiAU="},"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot":{"logical_path":"etelkalightitalic-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":26426,"digest":"ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654","integrity":"sha256-zlzf/mxYmm3GvSxILHGEhv9ftBarAXQHUNsyUXnlhlQ="},"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg":{"logical_path":"etelkalightitalic-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":69857,"digest":"dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517","integrity":"sha256-3VNTwq9Opj4dDpnsXx+FFizuDE3Qo4QCYKJgbu/D5Rc="},"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf":{"logical_path":"etelkalightitalic-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":57040,"digest":"54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a","integrity":"sha256-VOuRrQ4LY59QvgK3wlg2yZrZiRhfXSokDWDqFKG3OEo="},"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff":{"logical_path":"etelkalightitalic-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":29884,"digest":"d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3","integrity":"sha256-0fuWIdQO9FEEB4pKW5jOTLoAhyz4rFbimc8Tl8FGysM="},"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot":{"logical_path":"infotexb-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23124,"digest":"1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001","integrity":"sha256-GVHkPh2auZsNSZirukqrNPPmizN76QgA21F+So0n0AE="},"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg":{"logical_path":"infotexb-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":90188,"digest":"0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf","integrity":"sha256-Ddpy400NDO12k7Ve0IrMYPsakDav13NuQyrD8i8ub98="},"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf":{"logical_path":"infotexb-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":47396,"digest":"c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd","integrity":"sha256-wHN9Hi7f9QZF4gG/mfaPIxNQLuK96y5WQ17iRyG69c0="},"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff":{"logical_path":"infotexb-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26228,"digest":"8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc","integrity":"sha256-jaMubbI8OTkMVd1eqJSXFHV/3bpRbF22XnKGdQRJP7w="},"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot":{"logical_path":"infotexm-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23273,"digest":"74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26","integrity":"sha256-dN+Z+utm2LApZriIS4YK8Dw1ntQdNI3bgT28w8Rg6yY="},"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg":{"logical_path":"infotexm-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":90423,"digest":"0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557","integrity":"sha256-C1LvEGILjLconcgJqsZ4JtUDHmqwQBlP23Nl3IPpVVc="},"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf":{"logical_path":"infotexm-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":47484,"digest":"1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b","integrity":"sha256-HSRNJ6TsTBpfmMgpZvqibnhVxCkscwQpR3ADttq1wIs="},"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff":{"logical_path":"infotexm-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26492,"digest":"872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0","integrity":"sha256-hytatOC33mZVpS8TejyZ8eeUH6kf8hpWVQ8gOYNO6dA="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-06-08T14:38:06+03:00","size":180,"digest":"9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab","integrity":"sha256-moSSpYC/hdPpiuiGH71FVn5aH4Pur8+VdNoDmdX2Aqs="},"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-06-08T14:38:06+03:00","size":178,"digest":"39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5","integrity":"sha256-Oat8zZ9Ogledp4qSQSZd8ojY62XbvXz0iu0tASmIffU="},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":120,"digest":"691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c","integrity":"sha256-aRWX6KQKiR6pTTWJl27Pwz5hRcSUIkQ7AKwrWgAilkw="},"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":105,"digest":"f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2","integrity":"sha256-8ObNkbg31cVkTQJuX/7M2QeVMxfNXA9omQFzOv2iYLI="},"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":111,"digest":"c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4","integrity":"sha256-wQj1y/LdnsB6JlMGld3ZXhZkWXzmwFauRMFizC4ozsQ="},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":110,"digest":"ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550","integrity":"sha256-3fXdTg7ysYXouwr3tukOvnSoQ4TLRwBljnbnVMi/5VA="},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":119,"digest":"f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c","integrity":"sha256-9vHBvt8aDzfP74HRL18BKGnR7nyYR3WlaYJ6F4TTT1w="},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-06-08T14:38:06+03:00","size":101,"digest":"54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a","integrity":"sha256-VCcGVt8HnE2lGCYpoID8YztvhLh5hesBbSWlYOLDjUo="},"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc","integrity":"sha256-V62w1l9OkdrP7pddlXRCK+50hsihgtYBM3KMZy8s27w="},"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9","integrity":"sha256-IPjGZnr8SKpDPunrbYoFhL29a0pKkJH/Hms62zHmO9k="},"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f","integrity":"sha256-B0YOhDw+WaqtuzQjHmmehWopgHU8eke2ZEfaXZ+T+38="},"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b","integrity":"sha256-6i4pYl3jRjRl6TsAKwZfWDPgW5f3oFKxwUHnVNYuGos="},"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b","integrity":"sha256-HjLG2/XT/TQvJ6eKqIFVDWQSqiB/SEaHJKahVAK2BBs="},"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot":{"logical_path":"bootstrap/glyphicons-halflings-regular.eot","mtime":"2015-06-29T12:04:56+03:00","size":20127,"digest":"13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407","integrity":"sha256-E2NNqH2eI/jD7ZEIzhck0YOjmtBy5z4bPYy/ZG0tBAc="},"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg":{"logical_path":"bootstrap/glyphicons-halflings-regular.svg","mtime":"2015-06-29T12:04:56+03:00","size":108738,"digest":"42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5","integrity":"sha256-QvYGWdJlwaPDD5+kKry7Vr1KU69Ng9MW1t16NpA8Q+U="},"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf":{"logical_path":"bootstrap/glyphicons-halflings-regular.ttf","mtime":"2015-06-29T12:04:56+03:00","size":45404,"digest":"e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456","integrity":"sha256-45UEQJN1fYKvyxOJV9BqHqk2G9zwtELQahioBRr1dFY="},"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff","mtime":"2015-06-29T12:04:56+03:00","size":23424,"digest":"a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742","integrity":"sha256-omOU9+3hAMoRjv8u2ghZYnWpg5uVnCJuFUOVV6WoB0I="},"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff2","mtime":"2015-06-29T12:04:56+03:00","size":18028,"digest":"fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c","integrity":"sha256-/hhdEaSWdokNR7t4MxKgzaWkTEA5IUCU55V7TAQO8Rw="},"admin-manifest-1b7a9adf38de3299af2f97b0c037bf01c21b7056910e5ee41507a91ab675bd4d.css":{"logical_path":"admin-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":163910,"digest":"1b7a9adf38de3299af2f97b0c037bf01c21b7056910e5ee41507a91ab675bd4d","integrity":"sha256-G3qa3zjeMpmvL5ewwDe/AcIbcFaRDl7kFQepGrZ1vU0="},"admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":323893,"digest":"5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3","integrity":"sha256-X2EvWcnv/MoL5TlsTwBlTeI20rsbFrvfkptH5lBDgfM="},"registrar-manifest-b4694748846de7a7f12463c4524f71013645b58fc770188432dfc5c5a93ded3a.css":{"logical_path":"registrar-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":187703,"digest":"b4694748846de7a7f12463c4524f71013645b58fc770188432dfc5c5a93ded3a","integrity":"sha256-tGlHSIRt56fxJGPEUk9xATZFtY/HcBiEMt/Fxak97To="},"registrar-manifest-700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":314928,"digest":"700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7","integrity":"sha256-cA9onZq91zUWJg0mIrkSqNPgA96WaZa6ejMb+gZXIOc="},"registrant-manifest-ffb2502ddd176bf6bf64424abdf509f1c2fa44883cd159ffc6e0bf5bba81a226.css":{"logical_path":"registrant-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":187888,"digest":"ffb2502ddd176bf6bf64424abdf509f1c2fa44883cd159ffc6e0bf5bba81a226","integrity":"sha256-/7JQLd0Xa/a/ZEJKvfUJ8cL6RIg80Vn/xuC/W7qBoiY="},"registrant-manifest-700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":314928,"digest":"700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7","integrity":"sha256-cA9onZq91zUWJg0mIrkSqNPgA96WaZa6ejMb+gZXIOc="},"shared/pdf-8d8bf4207c64d5de1ad8a683ed3c0d97dbe85a73644e9440b3a7c1d638c93590.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-15T15:29:32+03:00","size":119782,"digest":"8d8bf4207c64d5de1ad8a683ed3c0d97dbe85a73644e9440b3a7c1d638c93590","integrity":"sha256-jYv0IHxk1d4a2KaD7TwNl9voWnNkTpRAs6fB1jjJNZA="},"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js":{"logical_path":"admin/application.js","mtime":"2015-06-08T11:23:15+03:00","size":287,"digest":"2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542","integrity":"sha256-LkqvyU286NQ9e6xOtVIaFKcuO77s47Q2NJTXD80nRUI="},"registrar/application-f96ff2f3f4d2326db627c9191074e5c10ad3679eac8eb2d22e3a9faef39e06a9.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T15:29:08+03:00","size":826,"digest":"f96ff2f3f4d2326db627c9191074e5c10ad3679eac8eb2d22e3a9faef39e06a9","integrity":"sha256-+W/y8/TSMm22J8kZEHTlwQrTZ56sjrLSLjqfrvOeBqk="},"registrar-manifest-413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":314906,"digest":"413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3","integrity":"sha256-QT/aBXgysl3unUX18HsprDafyF9R7NnnvCze+lKXtPM="},"registrant-manifest-f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":314906,"digest":"f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48","integrity":"sha256-+enXld5PfavjhzZf0ynByyTakjvTV5iMEgzFcQIwzEg="},"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T16:03:53+03:00","size":804,"digest":"978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9","integrity":"sha256-l4shqZrjyqu4qeMB3MqguT+GzHialZUVjJjuUTk7jLk="},"admin-manifest-6e5e54ad9b1f48eb4372bf4d3ffd1854d859dc5e2ab4977dbf59c4abfeebd760.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":169226,"digest":"6e5e54ad9b1f48eb4372bf4d3ffd1854d859dc5e2ab4977dbf59c4abfeebd760","integrity":"sha256-bl5UrZsfSOtDcr9NP/0YVNhZ3F4qtJd9v1nEq/7r12A="},"admin-manifest-b904d5679d9ed357c2412b8d9054c5d60b6c8524e11e4ff80d2e45580108e709.js":{"logical_path":"admin-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":325028,"digest":"b904d5679d9ed357c2412b8d9054c5d60b6c8524e11e4ff80d2e45580108e709","integrity":"sha256-uQTVZ52e01fCQSuNkFTF1gtshSThHk/4DS5FWAEI5wk="},"registrar-manifest-d9e1a3fb37873e44c313486ea2ad7ff1791e9ce4d6d44e95a602d87d480f27e1.css":{"logical_path":"registrar-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":193019,"digest":"d9e1a3fb37873e44c313486ea2ad7ff1791e9ce4d6d44e95a602d87d480f27e1","integrity":"sha256-2eGj+zeHPkTDE0huoq1/8XkenOTW1E6VpgLYfUgPJ+E="},"registrar-manifest-0297caa2939148f9284b754e7a0cc2a08272b8ff3194d97be0c95858498cbe39.js":{"logical_path":"registrar-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":316041,"digest":"0297caa2939148f9284b754e7a0cc2a08272b8ff3194d97be0c95858498cbe39","integrity":"sha256-ApfKopORSPkoS3VOegzCoIJyuP8xlNl74MlYWEmMvjk="},"registrant-manifest-651e30954782cb9b1e582abeb18c47402c951e3fd4aa71311363a058869f4d66.css":{"logical_path":"registrant-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":193204,"digest":"651e30954782cb9b1e582abeb18c47402c951e3fd4aa71311363a058869f4d66","integrity":"sha256-ZR4wlUeCy5seWCq+sYxHQCyVHj/UqnExE2OgWIafTWY="},"registrant-manifest-a94cc4d69bafc048f1cb08fffd1c733fc37157e660e4897005207cf03f1d98ca.js":{"logical_path":"registrant-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":316041,"digest":"a94cc4d69bafc048f1cb08fffd1c733fc37157e660e4897005207cf03f1d98ca","integrity":"sha256-qUzE1puvwEjxywj//RxzP8NxV+Zg5IlwBSB88D8dmMo="},"shared/pdf-3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc.css":{"logical_path":"shared/pdf.css","mtime":"2015-06-29T12:04:56+03:00","size":125098,"digest":"3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc","integrity":"sha256-P2hYz7XuxgEALFpBiyh8zd3zi7lTER/9/xMh07H7vdw="},"admin-manifest-7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-22T12:51:15+03:00","size":169258,"digest":"7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b","integrity":"sha256-cFi3Bok690c3dZRvphcePD19gfX+MjxAKsyLIH6sTxs="},"registrar-manifest-12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb.css":{"logical_path":"registrar-manifest.css","mtime":"2015-07-22T12:51:15+03:00","size":193051,"digest":"12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb","integrity":"sha256-Et3z0nrrgu0im4p+xrUP36M8EVMmu1QNPGTWMBIjgrs="},"registrant-manifest-9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324.css":{"logical_path":"registrant-manifest.css","mtime":"2015-07-22T12:51:15+03:00","size":193236,"digest":"9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324","integrity":"sha256-lxHM7JFALUNd37Cw+/cIof/vZ4aKhsOAFPl1GD1h4yQ="},"admin-manifest-8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d.js":{"logical_path":"admin-manifest.js","mtime":"2015-07-29T11:55:32+03:00","size":325018,"digest":"8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d","integrity":"sha256-jn7ooS7LohNxsioPIl2RjEjE7bksTnk8dry8hfHRGy0="},"registrar-manifest-ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f.js":{"logical_path":"registrar-manifest.js","mtime":"2015-07-29T11:55:32+03:00","size":316031,"digest":"ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f","integrity":"sha256-zP7Gc0iLvxcJslf5Wd2roxU2ks1O0098EGF+fLgHnH8="},"registrant-manifest-029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45.js":{"logical_path":"registrant-manifest.js","mtime":"2015-07-29T11:55:32+03:00","size":316031,"digest":"029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45","integrity":"sha256-Aps1E/UxR4mEg4ayQUgxHkTfgWCgpLW1h6bmpEbt3UU="},"admin-manifest-faacc44f2693434d482abfa34e565890367f8a34a73a4334fb690dfd36606599.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-30T17:08:04+03:00","size":195931,"digest":"faacc44f2693434d482abfa34e565890367f8a34a73a4334fb690dfd36606599","integrity":"sha256-+qzETyaTQ01IKr+jTlZYkDZ/ijSnOkM0+2kN/TZgZZk="},"admin-manifest-2d50db228bce0154b10046fa6de58775cf879387a8a2e63e278e51ef7802ddba.js":{"logical_path":"admin-manifest.js","mtime":"2015-07-30T17:08:04+03:00","size":391499,"digest":"2d50db228bce0154b10046fa6de58775cf879387a8a2e63e278e51ef7802ddba","integrity":"sha256-LVDbIovOAVSxAEb6beWHdc+Hk4eoouY+J45R73gC3bo="}},"assets":{"admin-manifest.css":"admin-manifest-faacc44f2693434d482abfa34e565890367f8a34a73a4334fb690dfd36606599.css","admin-manifest.js":"admin-manifest-2d50db228bce0154b10046fa6de58775cf879387a8a2e63e278e51ef7802ddba.js","registrar-manifest.css":"registrar-manifest-12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb.css","registrar-manifest.js":"registrar-manifest-ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f.js","registrant-manifest.css":"registrant-manifest-9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324.css","registrant-manifest.js":"registrant-manifest-029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45.js","shared/pdf.css":"shared/pdf-3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc.css","select2.png":"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png","select2-spinner.gif":"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif","select2x2.png":"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png","alpha.png":"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","bg.jpg":"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg","danske.png":"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png","development.png":"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","eis-logo-et.png":"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png","favicon.ico":"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico","id_card.gif":"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif","lhv.png":"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png","mid.gif":"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif","nordea.png":"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png","registrar/bg-alpha.png":"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","registrar/bg-development.png":"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","registrar/bg-staging.png":"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","registrar/favicon.ico":"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico","seb.png":"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png","staging.png":"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","swed.png":"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png","test.png":"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","admin/application.js":"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js","registrar/application.js":"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js","etelkalight-webfont.eot":"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot","etelkalight-webfont.svg":"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg","etelkalight-webfont.ttf":"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf","etelkalight-webfont.woff":"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff","etelkalightbold-webfont.eot":"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot","etelkalightbold-webfont.svg":"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg","etelkalightbold-webfont.ttf":"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf","etelkalightbold-webfont.woff":"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff","etelkalightitalic-webfont.eot":"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot","etelkalightitalic-webfont.svg":"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg","etelkalightitalic-webfont.ttf":"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf","etelkalightitalic-webfont.woff":"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff","infotexb-webfont.eot":"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot","infotexb-webfont.svg":"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg","infotexb-webfont.ttf":"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf","infotexb-webfont.woff":"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff","infotexm-webfont.eot":"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot","infotexm-webfont.svg":"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg","infotexm-webfont.ttf":"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf","infotexm-webfont.woff":"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png","bootstrap/glyphicons-halflings-regular.eot":"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot","bootstrap/glyphicons-halflings-regular.svg":"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg","bootstrap/glyphicons-halflings-regular.ttf":"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf","bootstrap/glyphicons-halflings-regular.woff":"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff","bootstrap/glyphicons-halflings-regular.woff2":"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2"}} \ No newline at end of file +{"files":{"admin-manifest-58660819bb55d95ee3f0c8149722a0e2ea507a3a45f24d22a2610d060bdc8dc0.css":{"logical_path":"admin-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":435358,"digest":"58660819bb55d95ee3f0c8149722a0e2ea507a3a45f24d22a2610d060bdc8dc0","integrity":"sha256-WGYIGbtV2V7j8MgUlyKg4upQejpF8k0iomENBgvcjcA="},"admin-manifest-025801216a3b153631239205b373c5e4ac42d55cc9a53960d3c485b5eed9d467.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":712602,"digest":"025801216a3b153631239205b373c5e4ac42d55cc9a53960d3c485b5eed9d467","integrity":"sha256-AlgBIWo7FTYxI5IFs3PF5KxC1VzJpTlg08SFte7Z1Gc="},"registrar-manifest-70dd177301fef149b726705917e97491911b4a74c1760a223eaefaaf3918a38b.css":{"logical_path":"registrar-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":475725,"digest":"70dd177301fef149b726705917e97491911b4a74c1760a223eaefaaf3918a38b","integrity":"sha256-cN0XcwH+8Um3JnBZF+l0kZEbSnTBdgoiPq76rzkYo4s="},"registrar-manifest-037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":730835,"digest":"037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6","integrity":"sha256-A3IXE3591Q0qDErsMJ5TK5zSaW3kXIJswMT/i/WAJeY="},"registrant-manifest-6bfceed2fd52330f303b890fa9d229b1ecd097fda1b7df2db41829b8c25d40c0.css":{"logical_path":"registrant-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":476257,"digest":"6bfceed2fd52330f303b890fa9d229b1ecd097fda1b7df2db41829b8c25d40c0","integrity":"sha256-a/zu0v1SMw8wO4kPqdIpsezQl/2ht98ttBgpuMJdQMA="},"registrant-manifest-037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":730835,"digest":"037217137e7dd50d2a0c4aec309e532b9cd2696de45c826cc0c4ff8bf58025e6","integrity":"sha256-A3IXE3591Q0qDErsMJ5TK5zSaW3kXIJswMT/i/WAJeY="},"shared/pdf-2f929bf92af2ce26249b1b02bb998c63cf49da0ae4e3526f869fccd0af65ac3b.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-15T15:29:32+03:00","size":353119,"digest":"2f929bf92af2ce26249b1b02bb998c63cf49da0ae4e3526f869fccd0af65ac3b","integrity":"sha256-L5Kb+SryziYkmxsCu5mMY89J2grk41Jvhp/M0K9lrDs="},"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png":{"logical_path":"select2.png","mtime":"2015-05-14T14:33:49+03:00","size":613,"digest":"d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8","integrity":"sha256-1rXY2D28GPuNd8h2HTMc2eUSPJaElQurBAbpiiSsWug="},"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif":{"logical_path":"select2-spinner.gif","mtime":"2015-05-14T14:33:49+03:00","size":1849,"digest":"f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c","integrity":"sha256-9uz/YX7Cun9Vnm9TXK2bcKP5ESBzdTXatNRUimyDV2w="},"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png":{"logical_path":"select2x2.png","mtime":"2015-05-14T14:33:49+03:00","size":845,"digest":"6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2","integrity":"sha256-b+KNaH3A7U2WAWI4xgi6HnGYycmsz6CzYLeAGLn7m8I="},"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"alpha.png","mtime":"2015-05-15T15:29:32+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg":{"logical_path":"bg.jpg","mtime":"2015-05-15T15:29:32+03:00","size":69058,"digest":"b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05","integrity":"sha256-uANqvS8PNuOrVNXVslsPusEdY+xhBtlZ3z+hgLN53gU="},"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png":{"logical_path":"danske.png","mtime":"2015-05-15T15:29:32+03:00","size":1130,"digest":"07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96","integrity":"sha256-B6Q5XMQGeF2hKUFOFYcv4dak9vbaAGbaZwG1bNty6pY="},"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"development.png","mtime":"2015-05-15T15:29:32+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png":{"logical_path":"eis-logo-et.png","mtime":"2015-05-15T15:29:32+03:00","size":1440,"digest":"86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307","integrity":"sha256-hqVJ0mbNpz4yJcXuuhRTLFnUmOH9mA7BKf3taNqLswc="},"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico":{"logical_path":"favicon.ico","mtime":"2015-05-15T15:29:32+03:00","size":1150,"digest":"309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49","integrity":"sha256-MJ4A4vePmisEKrwoBqik7Zz2u10/AMzAmFsTCL/YbEk="},"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif":{"logical_path":"id_card.gif","mtime":"2015-05-15T15:29:32+03:00","size":564,"digest":"ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e","integrity":"sha256-6lBqSbJcjeTmjnhtkPXsXe+2yOiVuQ8vEpgV9eVQ/o4="},"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png":{"logical_path":"lhv.png","mtime":"2015-05-15T15:29:32+03:00","size":3417,"digest":"4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030","integrity":"sha256-TQnTEmoF3zkrc8VPqbHrYFeYwum9Nhz0RQD3MDiDIDA="},"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif":{"logical_path":"mid.gif","mtime":"2015-05-15T15:29:32+03:00","size":1566,"digest":"275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239","integrity":"sha256-J1VD7Oo3fevhrIkkcPOupPfn8PkIn8D76k3kEHQuUjk="},"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png":{"logical_path":"nordea.png","mtime":"2015-05-15T15:29:32+03:00","size":1181,"digest":"75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b","integrity":"sha256-dck4x0NuDIMW8Fa+jfis0Oixbgl5Dnj3jaltn4Yz7zs="},"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"registrar/bg-alpha.png","mtime":"2015-05-15T15:29:32+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png":{"logical_path":"registrar/bg-development.png","mtime":"2015-05-15T15:29:32+03:00","size":14496,"digest":"0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5","integrity":"sha256-C5k+IkEMeVI5SsGc47QbciqXuTE4qaACCR4eUibSm/U="},"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"registrar/bg-staging.png","mtime":"2015-05-15T15:29:32+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico":{"logical_path":"registrar/favicon.ico","mtime":"2015-05-15T15:29:32+03:00","size":0,"digest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","integrity":"sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="},"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png":{"logical_path":"seb.png","mtime":"2015-05-15T15:29:32+03:00","size":2439,"digest":"9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e","integrity":"sha256-nJ2UMBTMTucGJEiTzYosSop8yXv73vambiLHLzPV8l4="},"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png":{"logical_path":"staging.png","mtime":"2015-05-15T15:29:32+03:00","size":12294,"digest":"6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d","integrity":"sha256-Ynb4wAkRvJnzAfkZ5AiuPvcmxzeDJKxV/V03i6Ok3C0="},"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png":{"logical_path":"swed.png","mtime":"2015-05-15T15:29:32+03:00","size":1521,"digest":"2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb","integrity":"sha256-LPRXKQYs9fpjQke6NyxXnJfzguXMQ/oREhkHfnRz/bs="},"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png":{"logical_path":"test.png","mtime":"2015-05-15T15:29:32+03:00","size":7089,"digest":"9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947","integrity":"sha256-msRaazwT3Vxc8bXRjG8kpTfdLkWYI4Un0jKj4upbWUc="},"admin/application-b1444f5083209e83d34a087d1ff78a91b8a3eb487815a1987cbc5a120bf4e48f.js":{"logical_path":"admin/application.js","mtime":"2015-06-08T11:23:15+03:00","size":396,"digest":"b1444f5083209e83d34a087d1ff78a91b8a3eb487815a1987cbc5a120bf4e48f","integrity":"sha256-sURPUIMgnoPTSgh9H/eKkbij60h4FaGYfLxaEgv05I8="},"registrar/application-8ad3d7cb40be14b5c7dd76340db3618c0cd651644aa1e29bff59cc32e454ea85.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T15:29:08+03:00","size":1107,"digest":"8ad3d7cb40be14b5c7dd76340db3618c0cd651644aa1e29bff59cc32e454ea85","integrity":"sha256-itPXy0C+FLXH3XY0DbNhjAzWUWRKoeKb/1nMMuRU6oU="},"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot":{"logical_path":"etelkalight-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23109,"digest":"baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0","integrity":"sha256-uvfjWrL2S/HG+kR205NMdCIGKZVzj9nlcVsC9VAC18A="},"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg":{"logical_path":"etelkalight-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":64768,"digest":"2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24","integrity":"sha256-K1dfbkaW10lXryenx7t5drfKMdDr6Owlu0w0lNXRbiQ="},"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf":{"logical_path":"etelkalight-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":49748,"digest":"f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1","integrity":"sha256-9oottjRthk+Cw7PnJe5gsCF+keRuxH+WcQ9w+Za2GvE="},"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff":{"logical_path":"etelkalight-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26204,"digest":"1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043","integrity":"sha256-HtONusa4F790vUapjWEAWqJhXbesdD5ANzZNECEIQEM="},"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot":{"logical_path":"etelkalightbold-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23707,"digest":"1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39","integrity":"sha256-HZTKvm+1WwX3Rv4KpRp6UDaD16/baDYO0mv6wD4bPDk="},"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg":{"logical_path":"etelkalightbold-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":62829,"digest":"bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555","integrity":"sha256-uwyOF7mbEPIRvjUxpR1q1IpcbkZwyPthYKMp+kdYxVU="},"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf":{"logical_path":"etelkalightbold-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":51172,"digest":"0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429","integrity":"sha256-DwbR5/CZV44cwOmxh1rKKnEowMoNZA/VBOl7rgsChCk="},"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff":{"logical_path":"etelkalightbold-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26956,"digest":"d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805","integrity":"sha256-1gjANrPj8EyoehxJT42eliCnKbJ2C16x3O5SxLyOiAU="},"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot":{"logical_path":"etelkalightitalic-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":26426,"digest":"ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654","integrity":"sha256-zlzf/mxYmm3GvSxILHGEhv9ftBarAXQHUNsyUXnlhlQ="},"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg":{"logical_path":"etelkalightitalic-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":69857,"digest":"dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517","integrity":"sha256-3VNTwq9Opj4dDpnsXx+FFizuDE3Qo4QCYKJgbu/D5Rc="},"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf":{"logical_path":"etelkalightitalic-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":57040,"digest":"54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a","integrity":"sha256-VOuRrQ4LY59QvgK3wlg2yZrZiRhfXSokDWDqFKG3OEo="},"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff":{"logical_path":"etelkalightitalic-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":29884,"digest":"d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3","integrity":"sha256-0fuWIdQO9FEEB4pKW5jOTLoAhyz4rFbimc8Tl8FGysM="},"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot":{"logical_path":"infotexb-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23124,"digest":"1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001","integrity":"sha256-GVHkPh2auZsNSZirukqrNPPmizN76QgA21F+So0n0AE="},"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg":{"logical_path":"infotexb-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":90188,"digest":"0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf","integrity":"sha256-Ddpy400NDO12k7Ve0IrMYPsakDav13NuQyrD8i8ub98="},"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf":{"logical_path":"infotexb-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":47396,"digest":"c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd","integrity":"sha256-wHN9Hi7f9QZF4gG/mfaPIxNQLuK96y5WQ17iRyG69c0="},"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff":{"logical_path":"infotexb-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26228,"digest":"8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc","integrity":"sha256-jaMubbI8OTkMVd1eqJSXFHV/3bpRbF22XnKGdQRJP7w="},"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot":{"logical_path":"infotexm-webfont.eot","mtime":"2015-05-15T15:29:32+03:00","size":23273,"digest":"74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26","integrity":"sha256-dN+Z+utm2LApZriIS4YK8Dw1ntQdNI3bgT28w8Rg6yY="},"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg":{"logical_path":"infotexm-webfont.svg","mtime":"2015-05-15T15:29:32+03:00","size":90423,"digest":"0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557","integrity":"sha256-C1LvEGILjLconcgJqsZ4JtUDHmqwQBlP23Nl3IPpVVc="},"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf":{"logical_path":"infotexm-webfont.ttf","mtime":"2015-05-15T15:29:32+03:00","size":47484,"digest":"1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b","integrity":"sha256-HSRNJ6TsTBpfmMgpZvqibnhVxCkscwQpR3ADttq1wIs="},"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff":{"logical_path":"infotexm-webfont.woff","mtime":"2015-05-15T15:29:32+03:00","size":26492,"digest":"872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0","integrity":"sha256-hytatOC33mZVpS8TejyZ8eeUH6kf8hpWVQ8gOYNO6dA="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-06-08T14:38:06+03:00","size":180,"digest":"9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab","integrity":"sha256-moSSpYC/hdPpiuiGH71FVn5aH4Pur8+VdNoDmdX2Aqs="},"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-06-08T14:38:06+03:00","size":178,"digest":"39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5","integrity":"sha256-Oat8zZ9Ogledp4qSQSZd8ojY62XbvXz0iu0tASmIffU="},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":120,"digest":"691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c","integrity":"sha256-aRWX6KQKiR6pTTWJl27Pwz5hRcSUIkQ7AKwrWgAilkw="},"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":105,"digest":"f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2","integrity":"sha256-8ObNkbg31cVkTQJuX/7M2QeVMxfNXA9omQFzOv2iYLI="},"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":111,"digest":"c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4","integrity":"sha256-wQj1y/LdnsB6JlMGld3ZXhZkWXzmwFauRMFizC4ozsQ="},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":110,"digest":"ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550","integrity":"sha256-3fXdTg7ysYXouwr3tukOvnSoQ4TLRwBljnbnVMi/5VA="},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-06-08T14:38:06+03:00","size":119,"digest":"f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c","integrity":"sha256-9vHBvt8aDzfP74HRL18BKGnR7nyYR3WlaYJ6F4TTT1w="},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-06-08T14:38:06+03:00","size":101,"digest":"54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a","integrity":"sha256-VCcGVt8HnE2lGCYpoID8YztvhLh5hesBbSWlYOLDjUo="},"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc","integrity":"sha256-V62w1l9OkdrP7pddlXRCK+50hsihgtYBM3KMZy8s27w="},"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9","integrity":"sha256-IPjGZnr8SKpDPunrbYoFhL29a0pKkJH/Hms62zHmO9k="},"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f","integrity":"sha256-B0YOhDw+WaqtuzQjHmmehWopgHU8eke2ZEfaXZ+T+38="},"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b","integrity":"sha256-6i4pYl3jRjRl6TsAKwZfWDPgW5f3oFKxwUHnVNYuGos="},"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-06-08T14:38:06+03:00","size":4369,"digest":"1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b","integrity":"sha256-HjLG2/XT/TQvJ6eKqIFVDWQSqiB/SEaHJKahVAK2BBs="},"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot":{"logical_path":"bootstrap/glyphicons-halflings-regular.eot","mtime":"2015-06-29T12:04:56+03:00","size":20127,"digest":"13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407","integrity":"sha256-E2NNqH2eI/jD7ZEIzhck0YOjmtBy5z4bPYy/ZG0tBAc="},"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg":{"logical_path":"bootstrap/glyphicons-halflings-regular.svg","mtime":"2015-06-29T12:04:56+03:00","size":108738,"digest":"42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5","integrity":"sha256-QvYGWdJlwaPDD5+kKry7Vr1KU69Ng9MW1t16NpA8Q+U="},"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf":{"logical_path":"bootstrap/glyphicons-halflings-regular.ttf","mtime":"2015-06-29T12:04:56+03:00","size":45404,"digest":"e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456","integrity":"sha256-45UEQJN1fYKvyxOJV9BqHqk2G9zwtELQahioBRr1dFY="},"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff","mtime":"2015-06-29T12:04:56+03:00","size":23424,"digest":"a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742","integrity":"sha256-omOU9+3hAMoRjv8u2ghZYnWpg5uVnCJuFUOVV6WoB0I="},"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2":{"logical_path":"bootstrap/glyphicons-halflings-regular.woff2","mtime":"2015-06-29T12:04:56+03:00","size":18028,"digest":"fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c","integrity":"sha256-/hhdEaSWdokNR7t4MxKgzaWkTEA5IUCU55V7TAQO8Rw="},"admin-manifest-1b7a9adf38de3299af2f97b0c037bf01c21b7056910e5ee41507a91ab675bd4d.css":{"logical_path":"admin-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":163910,"digest":"1b7a9adf38de3299af2f97b0c037bf01c21b7056910e5ee41507a91ab675bd4d","integrity":"sha256-G3qa3zjeMpmvL5ewwDe/AcIbcFaRDl7kFQepGrZ1vU0="},"admin-manifest-5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3.js":{"logical_path":"admin-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":323893,"digest":"5f612f59c9effcca0be5396c4f00654de236d2bb1b16bbdf929b47e6504381f3","integrity":"sha256-X2EvWcnv/MoL5TlsTwBlTeI20rsbFrvfkptH5lBDgfM="},"registrar-manifest-b4694748846de7a7f12463c4524f71013645b58fc770188432dfc5c5a93ded3a.css":{"logical_path":"registrar-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":187703,"digest":"b4694748846de7a7f12463c4524f71013645b58fc770188432dfc5c5a93ded3a","integrity":"sha256-tGlHSIRt56fxJGPEUk9xATZFtY/HcBiEMt/Fxak97To="},"registrar-manifest-700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":314928,"digest":"700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7","integrity":"sha256-cA9onZq91zUWJg0mIrkSqNPgA96WaZa6ejMb+gZXIOc="},"registrant-manifest-ffb2502ddd176bf6bf64424abdf509f1c2fa44883cd159ffc6e0bf5bba81a226.css":{"logical_path":"registrant-manifest.css","mtime":"2015-06-16T16:19:54+03:00","size":187888,"digest":"ffb2502ddd176bf6bf64424abdf509f1c2fa44883cd159ffc6e0bf5bba81a226","integrity":"sha256-/7JQLd0Xa/a/ZEJKvfUJ8cL6RIg80Vn/xuC/W7qBoiY="},"registrant-manifest-700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-19T15:29:08+03:00","size":314928,"digest":"700f689d9abdd73516260d2622b912a8d3e003de966996ba7a331bfa065720e7","integrity":"sha256-cA9onZq91zUWJg0mIrkSqNPgA96WaZa6ejMb+gZXIOc="},"shared/pdf-8d8bf4207c64d5de1ad8a683ed3c0d97dbe85a73644e9440b3a7c1d638c93590.css":{"logical_path":"shared/pdf.css","mtime":"2015-05-15T15:29:32+03:00","size":119782,"digest":"8d8bf4207c64d5de1ad8a683ed3c0d97dbe85a73644e9440b3a7c1d638c93590","integrity":"sha256-jYv0IHxk1d4a2KaD7TwNl9voWnNkTpRAs6fB1jjJNZA="},"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js":{"logical_path":"admin/application.js","mtime":"2015-06-08T11:23:15+03:00","size":287,"digest":"2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542","integrity":"sha256-LkqvyU286NQ9e6xOtVIaFKcuO77s47Q2NJTXD80nRUI="},"registrar/application-f96ff2f3f4d2326db627c9191074e5c10ad3679eac8eb2d22e3a9faef39e06a9.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T15:29:08+03:00","size":826,"digest":"f96ff2f3f4d2326db627c9191074e5c10ad3679eac8eb2d22e3a9faef39e06a9","integrity":"sha256-+W/y8/TSMm22J8kZEHTlwQrTZ56sjrLSLjqfrvOeBqk="},"registrar-manifest-413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3.js":{"logical_path":"registrar-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":314906,"digest":"413fda057832b25dee9d45f5f07b29ac369fc85f51ecd9e7bc2cdefa5297b4f3","integrity":"sha256-QT/aBXgysl3unUX18HsprDafyF9R7NnnvCze+lKXtPM="},"registrant-manifest-f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48.js":{"logical_path":"registrant-manifest.js","mtime":"2015-06-08T14:38:06+03:00","size":314906,"digest":"f9e9d795de4f7dabe387365fd329c1cb24da923bd357988c120cc5710230cc48","integrity":"sha256-+enXld5PfavjhzZf0ynByyTakjvTV5iMEgzFcQIwzEg="},"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js":{"logical_path":"registrar/application.js","mtime":"2015-06-19T16:03:53+03:00","size":804,"digest":"978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9","integrity":"sha256-l4shqZrjyqu4qeMB3MqguT+GzHialZUVjJjuUTk7jLk="},"admin-manifest-6e5e54ad9b1f48eb4372bf4d3ffd1854d859dc5e2ab4977dbf59c4abfeebd760.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":169226,"digest":"6e5e54ad9b1f48eb4372bf4d3ffd1854d859dc5e2ab4977dbf59c4abfeebd760","integrity":"sha256-bl5UrZsfSOtDcr9NP/0YVNhZ3F4qtJd9v1nEq/7r12A="},"admin-manifest-b904d5679d9ed357c2412b8d9054c5d60b6c8524e11e4ff80d2e45580108e709.js":{"logical_path":"admin-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":325028,"digest":"b904d5679d9ed357c2412b8d9054c5d60b6c8524e11e4ff80d2e45580108e709","integrity":"sha256-uQTVZ52e01fCQSuNkFTF1gtshSThHk/4DS5FWAEI5wk="},"registrar-manifest-d9e1a3fb37873e44c313486ea2ad7ff1791e9ce4d6d44e95a602d87d480f27e1.css":{"logical_path":"registrar-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":193019,"digest":"d9e1a3fb37873e44c313486ea2ad7ff1791e9ce4d6d44e95a602d87d480f27e1","integrity":"sha256-2eGj+zeHPkTDE0huoq1/8XkenOTW1E6VpgLYfUgPJ+E="},"registrar-manifest-0297caa2939148f9284b754e7a0cc2a08272b8ff3194d97be0c95858498cbe39.js":{"logical_path":"registrar-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":316041,"digest":"0297caa2939148f9284b754e7a0cc2a08272b8ff3194d97be0c95858498cbe39","integrity":"sha256-ApfKopORSPkoS3VOegzCoIJyuP8xlNl74MlYWEmMvjk="},"registrant-manifest-651e30954782cb9b1e582abeb18c47402c951e3fd4aa71311363a058869f4d66.css":{"logical_path":"registrant-manifest.css","mtime":"2015-07-13T18:30:38+03:00","size":193204,"digest":"651e30954782cb9b1e582abeb18c47402c951e3fd4aa71311363a058869f4d66","integrity":"sha256-ZR4wlUeCy5seWCq+sYxHQCyVHj/UqnExE2OgWIafTWY="},"registrant-manifest-a94cc4d69bafc048f1cb08fffd1c733fc37157e660e4897005207cf03f1d98ca.js":{"logical_path":"registrant-manifest.js","mtime":"2015-07-13T18:30:38+03:00","size":316041,"digest":"a94cc4d69bafc048f1cb08fffd1c733fc37157e660e4897005207cf03f1d98ca","integrity":"sha256-qUzE1puvwEjxywj//RxzP8NxV+Zg5IlwBSB88D8dmMo="},"shared/pdf-3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc.css":{"logical_path":"shared/pdf.css","mtime":"2015-06-29T12:04:56+03:00","size":125098,"digest":"3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc","integrity":"sha256-P2hYz7XuxgEALFpBiyh8zd3zi7lTER/9/xMh07H7vdw="},"admin-manifest-7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-22T12:51:15+03:00","size":169258,"digest":"7058b706893af7473775946fa6171e3c3d7d81f5fe323c402acc8b207eac4f1b","integrity":"sha256-cFi3Bok690c3dZRvphcePD19gfX+MjxAKsyLIH6sTxs="},"registrar-manifest-12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb.css":{"logical_path":"registrar-manifest.css","mtime":"2015-07-30T17:08:04+03:00","size":193051,"digest":"12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb","integrity":"sha256-Et3z0nrrgu0im4p+xrUP36M8EVMmu1QNPGTWMBIjgrs="},"registrant-manifest-9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324.css":{"logical_path":"registrant-manifest.css","mtime":"2015-07-30T17:08:04+03:00","size":193236,"digest":"9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324","integrity":"sha256-lxHM7JFALUNd37Cw+/cIof/vZ4aKhsOAFPl1GD1h4yQ="},"admin-manifest-8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d.js":{"logical_path":"admin-manifest.js","mtime":"2015-07-29T11:55:32+03:00","size":325018,"digest":"8e7ee8a12ecba21371b22a0f225d918c48c4edb92c4e793c76bcbc85f1d11b2d","integrity":"sha256-jn7ooS7LohNxsioPIl2RjEjE7bksTnk8dry8hfHRGy0="},"registrar-manifest-ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f.js":{"logical_path":"registrar-manifest.js","mtime":"2015-07-29T11:55:32+03:00","size":316031,"digest":"ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f","integrity":"sha256-zP7Gc0iLvxcJslf5Wd2roxU2ks1O0098EGF+fLgHnH8="},"registrant-manifest-029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45.js":{"logical_path":"registrant-manifest.js","mtime":"2015-07-29T11:55:32+03:00","size":316031,"digest":"029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45","integrity":"sha256-Aps1E/UxR4mEg4ayQUgxHkTfgWCgpLW1h6bmpEbt3UU="},"admin-manifest-faacc44f2693434d482abfa34e565890367f8a34a73a4334fb690dfd36606599.css":{"logical_path":"admin-manifest.css","mtime":"2015-07-30T17:08:04+03:00","size":195931,"digest":"faacc44f2693434d482abfa34e565890367f8a34a73a4334fb690dfd36606599","integrity":"sha256-+qzETyaTQ01IKr+jTlZYkDZ/ijSnOkM0+2kN/TZgZZk="},"admin-manifest-2d50db228bce0154b10046fa6de58775cf879387a8a2e63e278e51ef7802ddba.js":{"logical_path":"admin-manifest.js","mtime":"2015-07-30T17:08:04+03:00","size":391499,"digest":"2d50db228bce0154b10046fa6de58775cf879387a8a2e63e278e51ef7802ddba","integrity":"sha256-LVDbIovOAVSxAEb6beWHdc+Hk4eoouY+J45R73gC3bo="},"registrar-manifest-acc585f0f8ccb8f3a1b2ba4f54b847d34f588c8fcefc055a29cb89dc3045279e.js":{"logical_path":"registrar-manifest.js","mtime":"2015-08-11T16:52:25+03:00","size":360581,"digest":"acc585f0f8ccb8f3a1b2ba4f54b847d34f588c8fcefc055a29cb89dc3045279e","integrity":"sha256-rMWF8PjMuPOhsrpPVLhH009YjI/O/AVaKcuJ3DBFJ54="},"registrar-manifest-9bc7e99a627bcd8cd851f05e1595592ba458671ccd1fb663f500229671eb30c9.js":{"logical_path":"registrar-manifest.js","mtime":"2015-08-11T17:07:57+03:00","size":316080,"digest":"9bc7e99a627bcd8cd851f05e1595592ba458671ccd1fb663f500229671eb30c9","integrity":"sha256-m8fpmmJ7zYzYUfBeFZVZK6RYZxzNH7Zj9QAilnHrMMk="},"registrant-manifest-9bc7e99a627bcd8cd851f05e1595592ba458671ccd1fb663f500229671eb30c9.js":{"logical_path":"registrant-manifest.js","mtime":"2015-08-11T16:54:20+03:00","size":316080,"digest":"9bc7e99a627bcd8cd851f05e1595592ba458671ccd1fb663f500229671eb30c9","integrity":"sha256-m8fpmmJ7zYzYUfBeFZVZK6RYZxzNH7Zj9QAilnHrMMk="},"registrar/application-d550a9694cdd4555f5ebaa3317954f548b4a9109e33e4c81ecfeb386ae70eed6.js":{"logical_path":"registrar/application.js","mtime":"2015-08-11T16:54:20+03:00","size":853,"digest":"d550a9694cdd4555f5ebaa3317954f548b4a9109e33e4c81ecfeb386ae70eed6","integrity":"sha256-1VCpaUzdRVX166ozF5VPVItKkQnjPkyB7P6zhq5w7tY="}},"assets":{"admin-manifest.css":"admin-manifest-faacc44f2693434d482abfa34e565890367f8a34a73a4334fb690dfd36606599.css","admin-manifest.js":"admin-manifest-2d50db228bce0154b10046fa6de58775cf879387a8a2e63e278e51ef7802ddba.js","registrar-manifest.css":"registrar-manifest-12ddf3d27aeb82ed229b8a7ec6b50fdfa33c115326bb540d3c64d630122382bb.css","registrar-manifest.js":"registrar-manifest-ccfec673488bbf1709b257f959ddaba3153692cd4ed34f7c10617e7cb8079c7f.js","registrant-manifest.css":"registrant-manifest-9711ccec91402d435ddfb0b0fbf708a1ffef67868a86c38014f975183d61e324.css","registrant-manifest.js":"registrant-manifest-029b3513f5314789848386b24148311e44df8160a0a4b5b587a6e6a446eddd45.js","shared/pdf.css":"shared/pdf-3f6858cfb5eec601002c5a418b287ccdddf38bb953111ffdff1321d3b1fbbddc.css","select2.png":"select2-d6b5d8d83dbc18fb8d77c8761d331cd9e5123c9684950bab0406e98a24ac5ae8.png","select2-spinner.gif":"select2-spinner-f6ecff617ec2ba7f559e6f535cad9b70a3f91120737535dab4d4548a6c83576c.gif","select2x2.png":"select2x2-6fe28d687dc0ed4d96016238c608ba1e7198c9c9accfa0b360b78018b9fb9bc2.png","alpha.png":"alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","bg.jpg":"bg-b8036abd2f0f36e3ab54d5d5b25b0fbac11d63ec6106d959df3fa180b379de05.jpg","danske.png":"danske-07a4395cc406785da129414e15872fe1d6a4f6f6da0066da6701b56cdb72ea96.png","development.png":"development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","eis-logo-et.png":"eis-logo-et-86a549d266cda73e3225c5eeba14532c59d498e1fd980ec129fded68da8bb307.png","favicon.ico":"favicon-309e00e2f78f9a2b042abc2806a8a4ed9cf6bb5d3f00ccc0985b1308bfd86c49.ico","id_card.gif":"id_card-ea506a49b25c8de4e68e786d90f5ec5defb6c8e895b90f2f129815f5e550fe8e.gif","lhv.png":"lhv-4d09d3126a05df392b73c54fa9b1eb605798c2e9bd361cf44500f73038832030.png","mid.gif":"mid-275543ecea377debe1ac892470f3aea4f7e7f0f9089fc0fbea4de410742e5239.gif","nordea.png":"nordea-75c938c7436e0c8316f056be8df8acd0e8b16e09790e78f78da96d9f8633ef3b.png","registrar/bg-alpha.png":"registrar/bg-alpha-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","registrar/bg-development.png":"registrar/bg-development-0b993e22410c7952394ac19ce3b41b722a97b93138a9a002091e1e5226d29bf5.png","registrar/bg-staging.png":"registrar/bg-staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","registrar/favicon.ico":"registrar/favicon-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.ico","seb.png":"seb-9c9d943014cc4ee706244893cd8a2c4a8a7cc97bfbdef6a66e22c72f33d5f25e.png","staging.png":"staging-6276f8c00911bc99f301f919e408ae3ef726c7378324ac55fd5d378ba3a4dc2d.png","swed.png":"swed-2cf45729062cf5fa634247ba372c579c97f382e5cc43fa111219077e7473fdbb.png","test.png":"test-9ac45a6b3c13dd5c5cf1b5d18c6f24a537dd2e4598238527d232a3e2ea5b5947.png","admin/application.js":"admin/application-2e4aafc94dbce8d43d7bac4eb5521a14a72e3bbeece3b4363494d70fcd274542.js","registrar/application.js":"registrar/application-978b21a99ae3caabb8a9e301dccaa0b93f86cc789a9595158c98ee51393b8cb9.js","etelkalight-webfont.eot":"etelkalight-webfont-baf7e35ab2f64bf1c6fa4476d3934c7422062995738fd9e5715b02f55002d7c0.eot","etelkalight-webfont.svg":"etelkalight-webfont-2b575f6e4696d74957af27a7c7bb7976b7ca31d0ebe8ec25bb4c3494d5d16e24.svg","etelkalight-webfont.ttf":"etelkalight-webfont-f68a2db6346d864f82c3b3e725ee60b0217e91e46ec47f96710f70f996b61af1.ttf","etelkalight-webfont.woff":"etelkalight-webfont-1ed38dbac6b817bf74bd46a98d61005aa2615db7ac743e4037364d1021084043.woff","etelkalightbold-webfont.eot":"etelkalightbold-webfont-1d94cabe6fb55b05f746fe0aa51a7a503683d7afdb68360ed26bfac03e1b3c39.eot","etelkalightbold-webfont.svg":"etelkalightbold-webfont-bb0c8e17b99b10f211be3531a51d6ad48a5c6e4670c8fb6160a329fa4758c555.svg","etelkalightbold-webfont.ttf":"etelkalightbold-webfont-0f06d1e7f099578e1cc0e9b1875aca2a7128c0ca0d640fd504e97bae0b028429.ttf","etelkalightbold-webfont.woff":"etelkalightbold-webfont-d608c036b3e3f04ca87a1c494f8d9e9620a729b2760b5eb1dcee52c4bc8e8805.woff","etelkalightitalic-webfont.eot":"etelkalightitalic-webfont-ce5cdffe6c589a6dc6bd2c482c718486ff5fb416ab01740750db325179e58654.eot","etelkalightitalic-webfont.svg":"etelkalightitalic-webfont-dd5353c2af4ea63e1d0e99ec5f1f85162cee0c4dd0a3840260a2606eefc3e517.svg","etelkalightitalic-webfont.ttf":"etelkalightitalic-webfont-54eb91ad0e0b639f50be02b7c25836c99ad989185f5d2a240d60ea14a1b7384a.ttf","etelkalightitalic-webfont.woff":"etelkalightitalic-webfont-d1fb9621d40ef45104078a4a5b98ce4cba00872cf8ac56e299cf1397c146cac3.woff","infotexb-webfont.eot":"infotexb-webfont-1951e43e1d9ab99b0d4998abba4aab34f3e68b337be90800db517e4a8d27d001.eot","infotexb-webfont.svg":"infotexb-webfont-0dda72e34d0d0ced7693b55ed08acc60fb1a9036afd7736e432ac3f22f2e6fdf.svg","infotexb-webfont.ttf":"infotexb-webfont-c0737d1e2edff50645e201bf99f68f2313502ee2bdeb2e56435ee24721baf5cd.ttf","infotexb-webfont.woff":"infotexb-webfont-8da32e6db23c39390c55dd5ea8949714757fddba516c5db65e72867504493fbc.woff","infotexm-webfont.eot":"infotexm-webfont-74df99faeb66d8b02966b8884b860af03c359ed41d348ddb813dbcc3c460eb26.eot","infotexm-webfont.svg":"infotexm-webfont-0b52ef10620b8cb7289dc809aac67826d5031e6ab040194fdb7365dc83e95557.svg","infotexm-webfont.ttf":"infotexm-webfont-1d244d27a4ec4c1a5f98c82966faa26e7855c4292c730429477003b6dab5c08b.ttf","infotexm-webfont.woff":"infotexm-webfont-872b5ab4e0b7de6655a52f137a3c99f1e7941fa91ff21a56550f2039834ee9d0.woff","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-39ab7ccd9f4e82579da78a9241265df288d8eb65dbbd7cf48aed2d0129887df5.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-691597e8a40a891ea94d3589976ecfc33e6145c49422443b00ac2b5a0022964c.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-f0e6cd91b837d5c5644d026e5ffeccd907953317cd5c0f689901733afda260b2.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-c108f5cbf2dd9ec07a26530695ddd95e1664597ce6c056ae44c162cc2e28cec4.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-ddf5dd4e0ef2b185e8bb0af7b6e90ebe74a84384cb4700658e76e754c8bfe550.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-f6f1c1bedf1a0f37cfef81d12f5f012869d1ee7c984775a569827a1784d34f5c.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-54270656df079c4da5182629a080fc633b6f84b87985eb016d25a560e2c38d4a.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-57adb0d65f4e91dacfee975d9574422bee7486c8a182d60133728c672f2cdbbc.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-20f8c6667afc48aa433ee9eb6d8a0584bdbd6b4a4a9091ff1e6b3adb31e63bd9.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-07460e843c3e59aaadbb34231e699e856a2980753c7a47b66447da5d9f93fb7f.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ea2e29625de3463465e93b002b065f5833e05b97f7a052b1c141e754d62e1a8b.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b.png","bootstrap/glyphicons-halflings-regular.eot":"bootstrap/glyphicons-halflings-regular-13634da87d9e23f8c3ed9108ce1724d183a39ad072e73e1b3d8cbf646d2d0407.eot","bootstrap/glyphicons-halflings-regular.svg":"bootstrap/glyphicons-halflings-regular-42f60659d265c1a3c30f9fa42abcbb56bd4a53af4d83d316d6dd7a36903c43e5.svg","bootstrap/glyphicons-halflings-regular.ttf":"bootstrap/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf","bootstrap/glyphicons-halflings-regular.woff":"bootstrap/glyphicons-halflings-regular-a26394f7ede100ca118eff2eda08596275a9839b959c226e15439557a5a80742.woff","bootstrap/glyphicons-halflings-regular.woff2":"bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2"}} \ No newline at end of file diff --git a/public/assets/registrant-manifest-9bc7e99a627bcd8cd851f05e1595592ba458671ccd1fb663f500229671eb30c9.js b/public/assets/registrant-manifest-9bc7e99a627bcd8cd851f05e1595592ba458671ccd1fb663f500229671eb30c9.js new file mode 100644 index 000000000..d3efd1976 --- /dev/null +++ b/public/assets/registrant-manifest-9bc7e99a627bcd8cd851f05e1595592ba458671ccd1fb663f500229671eb30c9.js @@ -0,0 +1,170 @@ +/*! + * jQuery JavaScript Library v1.11.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-12-17T15:27Z + */ +!function(t,e){"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){function n(t){var e=t.length,n=re.type(t);return"function"===n||re.isWindow(t)?!1:1===t.nodeType&&e?!0:"array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t}function i(t,e,n){if(re.isFunction(e))return re.grep(t,function(t,i){return!!e.call(t,i,t)!==n});if(e.nodeType)return re.grep(t,function(t){return t===e!==n});if("string"==typeof e){if(he.test(e))return re.filter(e,t,n);e=re.filter(e,t)}return re.grep(t,function(t){return re.inArray(t,e)>=0!==n})}function r(t,e){do t=t[e];while(t&&1!==t.nodeType);return t}function s(t){var e=we[t]={};return re.each(t.match(be)||[],function(t,n){e[n]=!0}),e}function a(){fe.addEventListener?(fe.removeEventListener("DOMContentLoaded",o,!1),t.removeEventListener("load",o,!1)):(fe.detachEvent("onreadystatechange",o),t.detachEvent("onload",o))}function o(){(fe.addEventListener||"load"===event.type||"complete"===fe.readyState)&&(a(),re.ready())}function l(t,e,n){if(void 0===n&&1===t.nodeType){var i="data-"+e.replace(Te,"-$1").toLowerCase();if(n=t.getAttribute(i),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:De.test(n)?re.parseJSON(n):n}catch(r){}re.data(t,e,n)}else n=void 0}return n}function c(t){var e;for(e in t)if(("data"!==e||!re.isEmptyObject(t[e]))&&"toJSON"!==e)return!1;return!0}function u(t,e,n,i){if(re.acceptData(t)){var r,s,a=re.expando,o=t.nodeType,l=o?re.cache:t,c=o?t[a]:t[a]&&a;if(c&&l[c]&&(i||l[c].data)||void 0!==n||"string"!=typeof e)return c||(c=o?t[a]=Z.pop()||re.guid++:a),l[c]||(l[c]=o?{}:{toJSON:re.noop}),("object"==typeof e||"function"==typeof e)&&(i?l[c]=re.extend(l[c],e):l[c].data=re.extend(l[c].data,e)),s=l[c],i||(s.data||(s.data={}),s=s.data),void 0!==n&&(s[re.camelCase(e)]=n),"string"==typeof e?(r=s[e],null==r&&(r=s[re.camelCase(e)])):r=s,r}}function d(t,e,n){if(re.acceptData(t)){var i,r,s=t.nodeType,a=s?re.cache:t,o=s?t[re.expando]:re.expando;if(a[o]){if(e&&(i=n?a[o]:a[o].data)){re.isArray(e)?e=e.concat(re.map(e,re.camelCase)):e in i?e=[e]:(e=re.camelCase(e),e=e in i?[e]:e.split(" ")),r=e.length;for(;r--;)delete i[e[r]];if(n?!c(i):!re.isEmptyObject(i))return}(n||(delete a[o].data,c(a[o])))&&(s?re.cleanData([t],!0):ne.deleteExpando||a!=a.window?delete a[o]:a[o]=null)}}}function h(){return!0}function p(){return!1}function f(){try{return fe.activeElement}catch(t){}}function g(t){var e=Re.split("|"),n=t.createDocumentFragment();if(n.createElement)for(;e.length;)n.createElement(e.pop());return n}function m(t,e){var n,i,r=0,s=typeof t.getElementsByTagName!==ke?t.getElementsByTagName(e||"*"):typeof t.querySelectorAll!==ke?t.querySelectorAll(e||"*"):void 0;if(!s)for(s=[],n=t.childNodes||t;null!=(i=n[r]);r++)!e||re.nodeName(i,e)?s.push(i):re.merge(s,m(i,e));return void 0===e||e&&re.nodeName(t,e)?re.merge([t],s):s}function v(t){Fe.test(t.type)&&(t.defaultChecked=t.checked)}function y(t,e){return re.nodeName(t,"table")&&re.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function b(t){return t.type=(null!==re.find.attr(t,"type"))+"/"+t.type,t}function w(t){var e=Ke.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function x(t,e){for(var n,i=0;null!=(n=t[i]);i++)re._data(n,"globalEval",!e||re._data(e[i],"globalEval"))}function C(t,e){if(1===e.nodeType&&re.hasData(t)){var n,i,r,s=re._data(t),a=re._data(e,s),o=s.events;if(o){delete a.handle,a.events={};for(n in o)for(i=0,r=o[n].length;r>i;i++)re.event.add(e,n,o[n][i])}a.data&&(a.data=re.extend({},a.data))}}function k(t,e){var n,i,r;if(1===e.nodeType){if(n=e.nodeName.toLowerCase(),!ne.noCloneEvent&&e[re.expando]){r=re._data(e);for(i in r.events)re.removeEvent(e,i,r.handle);e.removeAttribute(re.expando)}"script"===n&&e.text!==t.text?(b(e).text=t.text,w(e)):"object"===n?(e.parentNode&&(e.outerHTML=t.outerHTML),ne.html5Clone&&t.innerHTML&&!re.trim(e.innerHTML)&&(e.innerHTML=t.innerHTML)):"input"===n&&Fe.test(t.type)?(e.defaultChecked=e.checked=t.checked,e.value!==t.value&&(e.value=t.value)):"option"===n?e.defaultSelected=e.selected=t.defaultSelected:("input"===n||"textarea"===n)&&(e.defaultValue=t.defaultValue)}}function D(e,n){var i,r=re(n.createElement(e)).appendTo(n.body),s=t.getDefaultComputedStyle&&(i=t.getDefaultComputedStyle(r[0]))?i.display:re.css(r[0],"display");return r.detach(),s}function T(t){var e=fe,n=Je[t];return n||(n=D(t,e),"none"!==n&&n||(Qe=(Qe||re("