+
Listing Users
+
+
+
+ <%= search_form_for @search, url: search_users_path, method: :post do |f| %>
+ <%= f.condition_fields do |c| %>
+ <%= render "condition_fields", f: c %>
+ <% end %>
+
<%= link_to_add_fields "Add Conditions", f, :condition %>
+
<%= f.submit "Search" %>
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
After looking over your qualifications, I think that you would be a great fit for my project! Please accept my invitation to join.
+
+
+
+
+
+
+<%= paginate @users %>
\ No newline at end of file
diff --git a/app/views/users/index.html_REMOTE_9644.erb b/app/views/users/index.html_REMOTE_9644.erb
new file mode 100644
index 0000000..6cdf4d1
--- /dev/null
+++ b/app/views/users/index.html_REMOTE_9644.erb
@@ -0,0 +1,57 @@
+
+
+
Listing Users
+
+
+
+ <%= search_form_for @search, url: search_users_path, method: :post do |f| %>
+ <%= f.condition_fields do |c| %>
+ <%= render "condition_fields", f: c %>
+ <% end %>
+
<%= link_to_add_fields "Add Conditions", f, :condition %>
+
<%= f.submit "Search" %>
+ <% end %>
+
+
+
+
+ <% @users.each do |user| %>
+
+
+
+ Contact <%= user.first_name %>
+
+
+
+ <% end %>
+
+
+
+
+
+
+
+
+
+
After looking over your qualifications, I think that you would be a great fit for my project! Please accept my invitation to join.
+
+
+
+
+
+
+ <%= paginate @users %>
+
+
\ No newline at end of file
diff --git a/app/views/users/manages.html.erb b/app/views/users/manages.html.erb
new file mode 100644
index 0000000..4e5b0a2
--- /dev/null
+++ b/app/views/users/manages.html.erb
@@ -0,0 +1,21 @@
+
+
+
My Projects
+ <% if can? :read, :all %>
+
<%= link_to "Create New Project", new_project_path, class: "btn btn-sm sqs-block-btn btn-black" %>
+ <% end %>
+
+
+
+
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index e618683..bcd7b2f 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -1,47 +1,52 @@
-
Profile Information
-
-
- Name:
- <%= @user.first_name %>
- <%= @user.last_name %>
-
-
- Age:
- <%= @user.age %>
-
-
-
-
- Education:
- <%= @user.education %>
-
-
- School:
- <%= @user.school %>
-
-
- Expertise:
- <%= @user.expertise %>
-
-
-
-
- About:
- <%= @user.description %>
-
-
-
-
- Availability:
- <%= @user.availability %>
-
-
-
- Email:
- <%= @user.email %>
-
+
+
+
Profile Information
+
+
+ Name:
+ <%= @user.first_name %>
+ <%= @user.last_name %>
+
+
+ Age:
+ <%= @user.age %>
+
+
+
+
+ Education:
+ <%= @user.education %>
+
+
+ School:
+ <%= @user.school %>
+
+
+ Expertise:
+ <%= @user.expertise %>
+
+
+
+
+ About:
+ <%= @user.description %>
+
+
+
+
+ Availability:
+ <%= @user.availability %>
+
+
-<%= link_to 'Edit Profile', edit_user_path(@user), class: "btn btn-sm btn-success" %> |
-<%= link_to 'Home', root_path, class: "btn btn-sm btn-primary" %>
-
\ No newline at end of file
+
+ Email:
+ <%= @user.email %>
+
+
+ <%= link_to 'Edit Profile', edit_user_path(@user), class: "btn btn-sm sqs-block-btn btn-black" %> |
+ <%= link_to 'Home', root_path, class: "btn btn-sm sqs-block-btn btn-black" %>
+
+
+
diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb
index 6fb7192..ae64e2c 100644
--- a/app/views/welcome/index.html.erb
+++ b/app/views/welcome/index.html.erb
@@ -1,36 +1,70 @@
<% if not user_signed_in? %>
-
Welcome to the Engineers Without Borders SF Volunteer System!
-
- If you would like to register as a volunteer, please click below!
-
- <%= link_to "Sign up now!", new_user_registration_path, class: "btn btn-md btn-primary" %>
+
+
+
Welcome to the Engineers Without Borders SF Volunteer System!
+
If you would like to register as a volunteer, please click below!
+
+
+ <%= link_to "GET INVOLVED", new_user_registration_path, class: "btn btn-md btn-color btn-round" %>
+
+
+
+
+
+
+
<% elsif not current_user.complete %>
-
Your account has been created... but we need some more information!
-
- Before we can effectively match you to projects, we need to know a little more about you. Please take a couple minutes to complete your newly created profile with some background information.
-
- <%= link_to "Update Your Profile", edit_user_path(current_user), class: "btn btn-md btn-danger" %>
-
-
Other things you can do!
- <%= link_to("Event Listings", events_path, class:"btn btn-sm btn-primary") %>
-
Check out current events that are happening!
- <%= link_to("Projects Listings", projects_path, class:"btn btn-sm btn-primary") %>
-
Check out current projects we are working on and see how you can help!
-
-
+
+
+
+
+
Need more information!
+
+
+ Before we can effectively match you to projects, we need to know a little more about you. Please take a couple minutes to complete your newly created profile with some background information.
+
+
+ <%= link_to "Update Your Profile", edit_user_path(current_user), class: "btn sqs-block-btn btn-mint" %>
+
+
+
+
+
Other things you can do!
+
+ <%= link_to("Projects Listings", projects_path, class:"btn sqs-block-btn btn-mint") %>
+
+
Check out current projects we are working on and see how you can help!
+
+
+
+
+
<% else %>
-
You're all set!
-
- Thank you for your time completing this application, and your interest in volunteering. We will be in touch with you soon.
-
-
- In the meantime, if you want to make changes to your profile you can update it at any time.
- <%= link_to "Update Your Profile", edit_user_path(current_user), class: "btn btn-md btn-danger" %>
-
-
Other things you can do!
- <%= link_to("Event Listings", events_path, class:"btn btn-sm btn-primary") %>
-
Check out current events that are happening!
- <%= link_to("Projects Listings", projects_path, class:"btn btn-sm btn-primary") %>
-
Check out current projects we are working on and see how you can help!
-
-<% end %>
\ No newline at end of file
+
+
+
You're all set!
+
+ Thank you for your time completing this application, and your interest in volunteering. We will be in touch with you soon.
+
+
+ In the meantime, if you want to make changes to your profile you can update it at any time.
+ <%= link_to "Update Your Profile", edit_user_path(current_user), class: "btn sqs-block-btn" %>
+
+
Other things you can do!
+ <%= link_to("Projects Listings", projects_path, class:"btn sqs-block-btn") %>
+
Check out current projects we are working on and see how you can help!
+
+
+<% end %>
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 30e8ea8..bb72735 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -23,14 +23,17 @@
# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
- config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
+ config.serve_static_files = true
# Compress JavaScripts and CSS.
config.assets.js_compressor = :uglifier
# config.assets.css_compressor = :sass
# Do not fallback to assets pipeline if a precompiled asset is missed.
- config.assets.compile = false
+ config.assets.compile = true
+
+ config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
+
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
# yet still be able to expire them through the digest params.
diff --git a/config/environments/test.rb b/config/environments/test.rb
index a66c99a..48ccc1e 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -40,4 +40,7 @@
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
+
+ #config.active_record.maintain_test_schema = false
+
end
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
index cf4e79c..81cba0e 100644
--- a/config/initializers/assets.rb
+++ b/config/initializers/assets.rb
@@ -5,7 +5,8 @@
Rails.application.config.assets.precompile += %w( bootstrap.min.css )
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
-
+Rails.application.config.assets.precompile << /\.(?:png|jpg|jpeg|gif)\z/
+Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|ttf)\z/
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index 12bc772..651b839 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -7,7 +7,7 @@
# Devise will use the `secret_key_base` as its `secret_key`
# by default. You can change it below and use your own secret key.
# config.secret_key = '707e96cf4b2f8c7da5e6c1c8cca86d70c28d00fe5ebfee39ba3a55348261b01b77088458b98512099c3047033af6846460639200b5f10a83a87207bf4dc58dd8'
-
+config.secret_key = '6c329cbb85fca7d021067446d279889bf15f0c42b3950b623ff4c9bb53d7de6dfbdf1564cfc42fcdab4e64a07a3025818a2eb36f3604a39c6d1ef5e6c838e210'
# ==> Mailer Configuration
# Configure the e-mail address which will be shown in Devise::Mailer,
# note that it will be overwritten if you use your own mailer class
diff --git a/config/initializers/rails_admin.rb b/config/initializers/rails_admin.rb
index ff5fcfd..00b68d9 100644
--- a/config/initializers/rails_admin.rb
+++ b/config/initializers/rails_admin.rb
@@ -23,6 +23,8 @@
## To disable Gravatar integration in Navigation Bar set to false
# config.show_gravatar true
+ #config.excluded_models << "Event"
+
config.actions do
dashboard # mandatory
index # mandatory
diff --git a/config/routes.rb b/config/routes.rb
index dd42bb3..85490a5 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -6,14 +6,15 @@
# suggested from http://stackoverflow.com/questions/10900664/rails-devise-how-can-i-edit-user-information
resources :users, only: [:index, :show, :edit, :update]
resources :projects, only: [:index, :show, :new, :create, :edit, :update]
- resources :events, only: [:index, :show, :new, :create, :edit, :update]
resources :users do
get :autocomplete_user_school, :on => :collection
end
resources :users do
collection { post :search, to: 'users#index'}
end
-
+
+ get '/users/:id/manages', to: 'users#manages', as: "user_manages"
+
# WELCOME ROUTES
get 'welcome/index' => 'welcome#index'
root to: 'welcome#index'
diff --git a/db/migrate/20170708015523_create_join_table_users_projects.rb b/db/migrate/20170708015523_create_join_table_users_projects.rb
new file mode 100644
index 0000000..3a33810
--- /dev/null
+++ b/db/migrate/20170708015523_create_join_table_users_projects.rb
@@ -0,0 +1,8 @@
+class CreateJoinTableUsersProjects < ActiveRecord::Migration
+ def change
+ create_join_table :users, :projects do |t|
+ # t.index [:user_id, :project_id]
+ # t.index [:project_id, :user_id]
+ end
+ end
+end
diff --git a/db/migrate/20170712173011_create_skills.rb b/db/migrate/20170712173011_create_skills.rb
new file mode 100644
index 0000000..c23c634
--- /dev/null
+++ b/db/migrate/20170712173011_create_skills.rb
@@ -0,0 +1,13 @@
+class CreateSkills < ActiveRecord::Migration
+
+ def change
+ create_table :skills do |t|
+ t.belongs_to :user, index: true
+
+ t.string :name
+ t.string :description
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20170712180231_add_skill_association_to_user.rb b/db/migrate/20170712180231_add_skill_association_to_user.rb
new file mode 100644
index 0000000..60a1e9a
--- /dev/null
+++ b/db/migrate/20170712180231_add_skill_association_to_user.rb
@@ -0,0 +1,4 @@
+class AddSkillAssociationToUser < ActiveRecord::Migration
+ def change
+ end
+end
diff --git a/db/migrate/20170712204144_create_manager_model.rb b/db/migrate/20170712204144_create_manager_model.rb
new file mode 100644
index 0000000..acba11f
--- /dev/null
+++ b/db/migrate/20170712204144_create_manager_model.rb
@@ -0,0 +1,8 @@
+class CreateManagerModel < ActiveRecord::Migration
+ def change
+ create_table :manager do |t|
+ t.belongs_to :user, index: true
+ t.belongs_to :project, index: true
+ end
+ end
+end
diff --git a/db/migrate/20170712205703_rename_manager_to_managers.rb b/db/migrate/20170712205703_rename_manager_to_managers.rb
new file mode 100644
index 0000000..36b57bf
--- /dev/null
+++ b/db/migrate/20170712205703_rename_manager_to_managers.rb
@@ -0,0 +1,5 @@
+class RenameManagerToManagers < ActiveRecord::Migration
+ def change
+ rename_table :manager, :managers
+ end
+end
diff --git a/db/migrate/20170712215536_rename_managers_to_manager_relationships.rb b/db/migrate/20170712215536_rename_managers_to_manager_relationships.rb
new file mode 100644
index 0000000..647c7ce
--- /dev/null
+++ b/db/migrate/20170712215536_rename_managers_to_manager_relationships.rb
@@ -0,0 +1,5 @@
+class RenameManagersToManagerRelationships < ActiveRecord::Migration
+ def change
+ rename_table :managers, :manager_relationships
+ end
+end
diff --git a/db/migrate/20170712234535_change_projects_users_to_volunteer_relationship.rb b/db/migrate/20170712234535_change_projects_users_to_volunteer_relationship.rb
new file mode 100644
index 0000000..ae1a721
--- /dev/null
+++ b/db/migrate/20170712234535_change_projects_users_to_volunteer_relationship.rb
@@ -0,0 +1,12 @@
+class ChangeProjectsUsersToVolunteerRelationship < ActiveRecord::Migration
+ def change
+ drop_table :projects_users
+
+ create_table :volunteer_relationships do |t|
+ t.belongs_to :user, index: true
+ t.belongs_to :project, index: true
+ t.string :role
+ end
+
+ end
+end
diff --git a/db/migrate/20170712234605_skills_users.rb b/db/migrate/20170712234605_skills_users.rb
new file mode 100644
index 0000000..656293d
--- /dev/null
+++ b/db/migrate/20170712234605_skills_users.rb
@@ -0,0 +1,8 @@
+class SkillsUsers < ActiveRecord::Migration
+ def change
+ create_table :skills_users, :id => false do |t|
+ t.integer :skill_id
+ t.integer :user_id
+ end
+ end
+end
diff --git a/db/migrate/20170714213211_remove_deprecated_column_volunteers_from_project.rb b/db/migrate/20170714213211_remove_deprecated_column_volunteers_from_project.rb
new file mode 100644
index 0000000..99e080c
--- /dev/null
+++ b/db/migrate/20170714213211_remove_deprecated_column_volunteers_from_project.rb
@@ -0,0 +1,5 @@
+class RemoveDeprecatedColumnVolunteersFromProject < ActiveRecord::Migration
+ def change
+ remove_column :projects, :volunteers
+ end
+end
diff --git a/db/migrate/20170715215531_drop_events_table.rb b/db/migrate/20170715215531_drop_events_table.rb
new file mode 100644
index 0000000..89f9fe0
--- /dev/null
+++ b/db/migrate/20170715215531_drop_events_table.rb
@@ -0,0 +1,9 @@
+class DropEventsTable < ActiveRecord::Migration
+ def up
+ drop_table :events
+ end
+
+ def down
+ raise ActiveRecord::IrreversibleMigration
+ end
+end
diff --git a/db/migrate/20170719173220_create_role_table.rb b/db/migrate/20170719173220_create_role_table.rb
new file mode 100644
index 0000000..18e7e73
--- /dev/null
+++ b/db/migrate/20170719173220_create_role_table.rb
@@ -0,0 +1,12 @@
+class CreateRoleTable < ActiveRecord::Migration
+ def change
+ create_table :roles do |t|
+ t.belongs_to :user, index: true
+ t.string :name, default: nil
+ end
+
+ remove_column :users, :role
+ #add_foreign_key :users, :roles
+
+ end
+end
diff --git a/db/migrate/20170719181224_add_unique_index_on_roles.rb b/db/migrate/20170719181224_add_unique_index_on_roles.rb
new file mode 100644
index 0000000..08cc9ba
--- /dev/null
+++ b/db/migrate/20170719181224_add_unique_index_on_roles.rb
@@ -0,0 +1,5 @@
+class AddUniqueIndexOnRoles < ActiveRecord::Migration
+ def change
+ add_index :roles, :name, unique: true
+ end
+end
diff --git a/db/migrate/20170719183402_remove_role_from_volunteer_relationship.rb b/db/migrate/20170719183402_remove_role_from_volunteer_relationship.rb
new file mode 100644
index 0000000..30f07f1
--- /dev/null
+++ b/db/migrate/20170719183402_remove_role_from_volunteer_relationship.rb
@@ -0,0 +1,5 @@
+class RemoveRoleFromVolunteerRelationship < ActiveRecord::Migration
+ def change
+ remove_column :volunteer_relationships, :role, type: :string
+ end
+end
diff --git a/db/migrate/20170719184113_add_admin_bool_to_users.rb b/db/migrate/20170719184113_add_admin_bool_to_users.rb
new file mode 100644
index 0000000..a308abb
--- /dev/null
+++ b/db/migrate/20170719184113_add_admin_bool_to_users.rb
@@ -0,0 +1,6 @@
+class AddAdminBoolToUsers < ActiveRecord::Migration
+ def change
+ add_column :users, :admin, :boolean, {default: false}
+ add_column :users, :manager, :boolean, {default: false}
+ end
+end
diff --git a/db/migrate/20170720183804_add_certifications_table_and_join_it_with_users.rb b/db/migrate/20170720183804_add_certifications_table_and_join_it_with_users.rb
new file mode 100644
index 0000000..8052e97
--- /dev/null
+++ b/db/migrate/20170720183804_add_certifications_table_and_join_it_with_users.rb
@@ -0,0 +1,18 @@
+class AddCertificationsTableAndJoinItWithUsers < ActiveRecord::Migration
+ def change
+
+ remove_column :users, :certifications
+
+ create_table :certifications do |t|
+ t.string :name
+ end
+
+ add_index :certifications, :name, unique: true
+
+ create_join_table :users, :certifications do |t|
+ t.index :user_id
+ t.index :certification_id
+ end
+
+ end
+end
diff --git a/db/migrate/20170721222309_create_project_skills_join_table.rb b/db/migrate/20170721222309_create_project_skills_join_table.rb
new file mode 100644
index 0000000..755c811
--- /dev/null
+++ b/db/migrate/20170721222309_create_project_skills_join_table.rb
@@ -0,0 +1,8 @@
+class CreateProjectSkillsJoinTable < ActiveRecord::Migration
+ def change
+ create_table :projects_skills, id: false do |t|
+ t.belongs_to :project, index: true
+ t.belongs_to :skills, index: true
+ end
+ end
+end
diff --git a/db/migrate/20170721223230_drop_project_skills_table.rb b/db/migrate/20170721223230_drop_project_skills_table.rb
new file mode 100644
index 0000000..7c9d0c5
--- /dev/null
+++ b/db/migrate/20170721223230_drop_project_skills_table.rb
@@ -0,0 +1,5 @@
+class DropProjectSkillsTable < ActiveRecord::Migration
+ def change
+ drop_table :projects_skills
+ end
+end
diff --git a/db/migrate/20170721223321_create_project_skill_table.rb b/db/migrate/20170721223321_create_project_skill_table.rb
new file mode 100644
index 0000000..b366eb1
--- /dev/null
+++ b/db/migrate/20170721223321_create_project_skill_table.rb
@@ -0,0 +1,8 @@
+class CreateProjectSkillTable < ActiveRecord::Migration
+ def change
+ create_table :projects_skills , :id => false do |t|
+ t.integer :skill_id
+ t.integer :user_id
+ end
+ end
+end
diff --git a/db/migrate/20170721223703_drop_project_skill_table.rb b/db/migrate/20170721223703_drop_project_skill_table.rb
new file mode 100644
index 0000000..d665cc6
--- /dev/null
+++ b/db/migrate/20170721223703_drop_project_skill_table.rb
@@ -0,0 +1,5 @@
+class DropProjectSkillTable < ActiveRecord::Migration
+ def change
+ drop_table :projects_skills
+ end
+end
diff --git a/db/migrate/20170721223741_create_construction_experiences.rb b/db/migrate/20170721223741_create_construction_experiences.rb
new file mode 100644
index 0000000..b28d596
--- /dev/null
+++ b/db/migrate/20170721223741_create_construction_experiences.rb
@@ -0,0 +1,9 @@
+class CreateConstructionExperiences < ActiveRecord::Migration
+ def change
+ create_table :construction_experiences do |t|
+ t.string :name
+
+ t.timestamps null: false
+ end
+ end
+end
diff --git a/db/migrate/20170721223749_create_projects_skills_table.rb b/db/migrate/20170721223749_create_projects_skills_table.rb
new file mode 100644
index 0000000..5b6d88e
--- /dev/null
+++ b/db/migrate/20170721223749_create_projects_skills_table.rb
@@ -0,0 +1,8 @@
+class CreateProjectsSkillsTable < ActiveRecord::Migration
+ def change
+ create_table :projects_skills , :id => false do |t|
+ t.integer :skill_id
+ t.integer :project_id
+ end
+ end
+end
\ No newline at end of file
diff --git a/db/migrate/20170721223826_create_design_experiences.rb b/db/migrate/20170721223826_create_design_experiences.rb
new file mode 100644
index 0000000..5e39ae9
--- /dev/null
+++ b/db/migrate/20170721223826_create_design_experiences.rb
@@ -0,0 +1,9 @@
+class CreateDesignExperiences < ActiveRecord::Migration
+ def change
+ create_table :design_experiences do |t|
+ t.string :name
+
+ t.timestamps null: false
+ end
+ end
+end
diff --git a/db/migrate/20170721232821_create_user_design_experience.rb b/db/migrate/20170721232821_create_user_design_experience.rb
new file mode 100644
index 0000000..bfc4647
--- /dev/null
+++ b/db/migrate/20170721232821_create_user_design_experience.rb
@@ -0,0 +1,13 @@
+class CreateUserDesignExperience < ActiveRecord::Migration
+ def change
+ create_table :user_design_experiences do |t|
+ t.integer :design_experience_id
+ t.integer :user_id
+ end
+
+ create_table :project_design_experiences do |t|
+ t.integer :design_experience_id
+ t.integer :project_id
+ end
+ end
+end
\ No newline at end of file
diff --git a/db/migrate/20170721233308_drop_design_experience_user_project_tables.rb b/db/migrate/20170721233308_drop_design_experience_user_project_tables.rb
new file mode 100644
index 0000000..0a5507d
--- /dev/null
+++ b/db/migrate/20170721233308_drop_design_experience_user_project_tables.rb
@@ -0,0 +1,6 @@
+class DropDesignExperienceUserProjectTables < ActiveRecord::Migration
+ def change
+ drop_table :user_design_experiences
+ drop_table :project_design_experiences
+ end
+end
diff --git a/db/migrate/20170721233435_create_design_exp_user_project_join.rb b/db/migrate/20170721233435_create_design_exp_user_project_join.rb
new file mode 100644
index 0000000..1c302ac
--- /dev/null
+++ b/db/migrate/20170721233435_create_design_exp_user_project_join.rb
@@ -0,0 +1,13 @@
+class CreateDesignExpUserProjectJoin < ActiveRecord::Migration
+ def change
+ create_table :design_experiences_user do |t|
+ t.integer :design_experience_id
+ t.integer :user_id
+ end
+
+ create_table :design_experiences_project do |t|
+ t.integer :design_experience_id
+ t.integer :project_id
+ end
+ end
+end
diff --git a/db/migrate/20170722194815_drop_design_experience_user_project.rb b/db/migrate/20170722194815_drop_design_experience_user_project.rb
new file mode 100644
index 0000000..714b9f0
--- /dev/null
+++ b/db/migrate/20170722194815_drop_design_experience_user_project.rb
@@ -0,0 +1,16 @@
+class DropDesignExperienceUserProject < ActiveRecord::Migration
+ def change
+ drop_table :design_experiences_user
+ drop_table :design_experiences_project
+
+ create_table :design_experiences_users do |t|
+ t.integer :design_experience_id
+ t.integer :user_id
+ end
+
+ create_table :design_experiences_projects do |t|
+ t.integer :design_experience_id
+ t.integer :project_id
+ end
+ end
+end
diff --git a/db/migrate/20170722195316_drop_design_experience_user_project2.rb b/db/migrate/20170722195316_drop_design_experience_user_project2.rb
new file mode 100644
index 0000000..e443c43
--- /dev/null
+++ b/db/migrate/20170722195316_drop_design_experience_user_project2.rb
@@ -0,0 +1,16 @@
+class DropDesignExperienceUserProject2 < ActiveRecord::Migration
+ def change
+ drop_table :design_experiences_users
+ drop_table :design_experiences_projects
+
+ create_table :design_experiences_users, :id => false do |t|
+ t.integer :design_experience_id
+ t.integer :user_id
+ end
+
+ create_table :design_experiences_projects, :id => false do |t|
+ t.integer :design_experience_id
+ t.integer :project_id
+ end
+ end
+end
diff --git a/db/migrate/20170722200738_create_construction_project_user.rb b/db/migrate/20170722200738_create_construction_project_user.rb
new file mode 100644
index 0000000..479a964
--- /dev/null
+++ b/db/migrate/20170722200738_create_construction_project_user.rb
@@ -0,0 +1,13 @@
+class CreateConstructionProjectUser < ActiveRecord::Migration
+ def change
+ create_table :construction_experiences_users, :id => false do |t|
+ t.integer :construction_experience_id
+ t.integer :user_id
+ end
+
+ create_table :construction_experiences_projects, :id => false do |t|
+ t.integer :construction_experience_id
+ t.integer :project_id
+ end
+ end
+end
diff --git a/db/migrate/20170723000827_add_unique_index_on_name_to_both_experiences.rb b/db/migrate/20170723000827_add_unique_index_on_name_to_both_experiences.rb
new file mode 100644
index 0000000..32ffc87
--- /dev/null
+++ b/db/migrate/20170723000827_add_unique_index_on_name_to_both_experiences.rb
@@ -0,0 +1,9 @@
+class AddUniqueIndexOnNameToBothExperiences < ActiveRecord::Migration
+ def change
+
+ add_index :construction_experiences, :name, unique: true
+
+ add_index :design_experiences, :name, unique: true
+
+ end
+end
diff --git a/db/migrate/20170723003711_create_join_table.rb b/db/migrate/20170723003711_create_join_table.rb
new file mode 100644
index 0000000..aa2461e
--- /dev/null
+++ b/db/migrate/20170723003711_create_join_table.rb
@@ -0,0 +1,12 @@
+class CreateJoinTable < ActiveRecord::Migration
+ def change
+
+ create_join_table :projects, :certifications do |t|
+ t.index :project_id
+ t.index :certification_id
+ end
+
+ add_index :skills, :name, unique: true
+
+ end
+end
diff --git a/db/migrate/20170723174551_create_availability_table.rb b/db/migrate/20170723174551_create_availability_table.rb
new file mode 100644
index 0000000..56216a7
--- /dev/null
+++ b/db/migrate/20170723174551_create_availability_table.rb
@@ -0,0 +1,37 @@
+class CreateAvailabilityTable < ActiveRecord::Migration
+ def change
+ create_table :availability do |t|
+ t.boolean :monday_morning, null: false
+ t.boolean :monday_afternoon, null: false
+ t.boolean :monday_evening, null: false
+
+ t.boolean :tuesday_morning, null: false
+ t.boolean :tuesday_afternoon, null: false
+ t.boolean :tuesday_evening, null: false
+
+ t.boolean :wednesday_morning, null: false
+ t.boolean :wednesday_afternoon, null: false
+ t.boolean :wednesday_evening, null: false
+
+ t.boolean :thursday_morning, null: false
+ t.boolean :thursday_afternoon, null: false
+ t.boolean :thursday_evening, null: false
+
+ t.boolean :friday_morning, null: false
+ t.boolean :friday_afternoon, null: false
+ t.boolean :friday_evening, null: false
+
+ t.boolean :saturday_morning, null: false
+ t.boolean :saturday_afternoon, null: false
+ t.boolean :saturday_evening, null: false
+
+ t.boolean :sunday_morning, null: false
+ t.boolean :sunday_afternoon, null: false
+ t.boolean :sunday_evening, null: false
+
+ t.integer :user_id
+
+
+ end
+ end
+end
diff --git a/db/migrate/20170723181301_add_availability_id_to_user.rb b/db/migrate/20170723181301_add_availability_id_to_user.rb
new file mode 100644
index 0000000..f4bf4c2
--- /dev/null
+++ b/db/migrate/20170723181301_add_availability_id_to_user.rb
@@ -0,0 +1,5 @@
+class AddAvailabilityIdToUser < ActiveRecord::Migration
+ def change
+ add_column :users, :availability_id, :integer
+ end
+end
diff --git a/db/migrate/20170723182313_rename_availability.rb b/db/migrate/20170723182313_rename_availability.rb
new file mode 100644
index 0000000..53dc2ed
--- /dev/null
+++ b/db/migrate/20170723182313_rename_availability.rb
@@ -0,0 +1,5 @@
+class RenameAvailability < ActiveRecord::Migration
+ def change
+ rename_table :availability, :availabilities
+ end
+end
diff --git a/db/migrate/20170723234439_add_days_to_availability.rb b/db/migrate/20170723234439_add_days_to_availability.rb
new file mode 100644
index 0000000..549e47a
--- /dev/null
+++ b/db/migrate/20170723234439_add_days_to_availability.rb
@@ -0,0 +1,33 @@
+class AddDaysToAvailability < ActiveRecord::Migration
+ def change
+
+ change_column :availabilities, :monday_morning, :boolean, :default => false
+ change_column :availabilities, :monday_afternoon, :boolean, :default => false
+ change_column :availabilities, :monday_evening, :boolean, :default => false
+
+ change_column :availabilities, :tuesday_morning, :boolean, :default => false
+ change_column :availabilities, :tuesday_afternoon, :boolean, :default => false
+ change_column :availabilities, :tuesday_evening, :boolean, :default => false
+
+ change_column :availabilities, :wednesday_morning, :boolean, :default => false
+ change_column :availabilities, :wednesday_afternoon, :boolean, :default => false
+ change_column :availabilities, :wednesday_evening, :boolean, :default => false
+
+ change_column :availabilities, :thursday_morning, :boolean, :default => false
+ change_column :availabilities, :thursday_afternoon, :boolean, :default => false
+ change_column :availabilities, :thursday_evening, :boolean, :default => false
+
+ change_column :availabilities, :friday_morning, :boolean, :default => false
+ change_column :availabilities, :friday_afternoon, :boolean, :default => false
+ change_column :availabilities, :friday_evening, :boolean, :default => false
+
+ change_column :availabilities, :saturday_morning, :boolean, :default => false
+ change_column :availabilities, :saturday_afternoon, :boolean, :default => false
+ change_column :availabilities, :saturday_evening, :boolean, :default => false
+
+ change_column :availabilities, :sunday_morning, :boolean, :default => false
+ change_column :availabilities, :sunday_afternoon, :boolean, :default => false
+ change_column :availabilities, :sunday_evening, :boolean, :default => false
+
+ end
+end
diff --git a/db/migrate/20170724204508_fix_user_roles_association.rb b/db/migrate/20170724204508_fix_user_roles_association.rb
new file mode 100644
index 0000000..e299a73
--- /dev/null
+++ b/db/migrate/20170724204508_fix_user_roles_association.rb
@@ -0,0 +1,6 @@
+class FixUserRolesAssociation < ActiveRecord::Migration
+ def change
+ remove_column :roles, :user_id, :integer
+ add_reference :users, :role, index: true
+ end
+end
diff --git a/db/migrate/20170724225815_remove_availability_from_user.rb b/db/migrate/20170724225815_remove_availability_from_user.rb
new file mode 100644
index 0000000..c4c4519
--- /dev/null
+++ b/db/migrate/20170724225815_remove_availability_from_user.rb
@@ -0,0 +1,5 @@
+class RemoveAvailabilityFromUser < ActiveRecord::Migration
+ def change
+ remove_column :users, :availability, :string
+ end
+end
diff --git a/db/migrate/20170724230412_remove_availability_days_from_user.rb b/db/migrate/20170724230412_remove_availability_days_from_user.rb
new file mode 100644
index 0000000..e64e4f0
--- /dev/null
+++ b/db/migrate/20170724230412_remove_availability_days_from_user.rb
@@ -0,0 +1,13 @@
+class RemoveAvailabilityDaysFromUser < ActiveRecord::Migration
+ def change
+ remove_column :users, :sunday_availability, :string
+ remove_column :users, :monday_availability, :string
+ remove_column :users, :tuesday_availability, :string
+ remove_column :users, :wednesday_availability, :string
+ remove_column :users, :thursday_availability, :string
+ remove_column :users, :friday_availability, :string
+ remove_column :users, :saturday_availability, :string
+
+
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index f717a46..edb515a 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,21 +11,99 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20161129205702) do
+ActiveRecord::Schema.define(version: 20170724230412) do
- create_table "events", force: :cascade do |t|
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ create_table "availabilities", force: :cascade do |t|
+ t.boolean "monday_morning", default: false, null: false
+ t.boolean "monday_afternoon", default: false, null: false
+ t.boolean "monday_evening", default: false, null: false
+ t.boolean "tuesday_morning", default: false, null: false
+ t.boolean "tuesday_afternoon", default: false, null: false
+ t.boolean "tuesday_evening", default: false, null: false
+ t.boolean "wednesday_morning", default: false, null: false
+ t.boolean "wednesday_afternoon", default: false, null: false
+ t.boolean "wednesday_evening", default: false, null: false
+ t.boolean "thursday_morning", default: false, null: false
+ t.boolean "thursday_afternoon", default: false, null: false
+ t.boolean "thursday_evening", default: false, null: false
+ t.boolean "friday_morning", default: false, null: false
+ t.boolean "friday_afternoon", default: false, null: false
+ t.boolean "friday_evening", default: false, null: false
+ t.boolean "saturday_morning", default: false, null: false
+ t.boolean "saturday_afternoon", default: false, null: false
+ t.boolean "saturday_evening", default: false, null: false
+ t.boolean "sunday_morning", default: false, null: false
+ t.boolean "sunday_afternoon", default: false, null: false
+ t.boolean "sunday_evening", default: false, null: false
+ t.integer "user_id"
+ end
+
+ create_table "certifications", force: :cascade do |t|
+ t.string "name"
+ end
+
+ add_index "certifications", ["name"], name: "index_certifications_on_name", unique: true
+
+ create_table "certifications_projects", id: false, force: :cascade do |t|
+ t.integer "project_id", null: false
+ t.integer "certification_id", null: false
+ end
+
+ add_index "certifications_projects", ["certification_id"], name: "index_certifications_projects_on_certification_id"
+ add_index "certifications_projects", ["project_id"], name: "index_certifications_projects_on_project_id"
+
+ create_table "certifications_users", id: false, force: :cascade do |t|
+ t.integer "user_id", null: false
+ t.integer "certification_id", null: false
+ end
+
+ add_index "certifications_users", ["certification_id"], name: "index_certifications_users_on_certification_id"
+ add_index "certifications_users", ["user_id"], name: "index_certifications_users_on_user_id"
+
+ create_table "construction_experiences", force: :cascade do |t|
t.string "name"
- t.string "description"
- t.date "start_time"
- t.date "end_time"
- t.string "location"
- t.boolean "repeats"
- t.string "days"
- t.integer "project_id"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
+ add_index "construction_experiences", ["name"], name: "index_construction_experiences_on_name", unique: true
+
+ create_table "construction_experiences_projects", id: false, force: :cascade do |t|
+ t.integer "construction_experience_id"
+ t.integer "project_id"
+ end
+
+ create_table "construction_experiences_users", id: false, force: :cascade do |t|
+ t.integer "construction_experience_id"
+ t.integer "user_id"
+ end
+
+ create_table "design_experiences", force: :cascade do |t|
+ t.string "name"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
+ add_index "design_experiences", ["name"], name: "index_design_experiences_on_name", unique: true
+
+ create_table "design_experiences_projects", id: false, force: :cascade do |t|
+ t.integer "design_experience_id"
+ t.integer "project_id"
+ end
+
+ create_table "design_experiences_users", id: false, force: :cascade do |t|
+ t.integer "design_experience_id"
+ t.integer "user_id"
+ end
+
+ create_table "manager_relationships", force: :cascade do |t|
+ t.integer "user_id"
+ t.integer "project_id"
end
+ add_index "manager_relationships", ["project_id"], name: "index_manager_relationships_on_project_id"
+ add_index "manager_relationships", ["user_id"], name: "index_manager_relationships_on_user_id"
+
create_table "projects", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -34,13 +112,40 @@
t.string "description"
t.string "string"
t.integer "volunteer_capacity"
- t.integer "volunteers"
t.string "location"
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
t.integer "hours_per_week"
+ t.integer "manager_id"
+ end
+
+ create_table "projects_skills", id: false, force: :cascade do |t|
+ t.integer "skill_id"
+ t.integer "project_id"
+ end
+
+ create_table "roles", force: :cascade do |t|
+ t.string "name"
+ end
+
+ add_index "roles", ["name"], name: "index_roles_on_name", unique: true
+
+ create_table "skills", force: :cascade do |t|
+ t.integer "user_id"
+ t.string "name"
+ t.string "description"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "skills", ["name"], name: "index_skills_on_name", unique: true
+ add_index "skills", ["user_id"], name: "index_skills_on_user_id"
+
+ create_table "skills_users", id: false, force: :cascade do |t|
+ t.integer "skill_id"
+ t.integer "user_id"
end
create_table "users", force: :cascade do |t|
@@ -63,9 +168,7 @@
t.string "expertise"
t.string "description"
t.string "school"
- t.string "availability"
t.boolean "complete", default: false
- t.string "role"
t.string "phone"
t.integer "zip"
t.string "location"
@@ -74,19 +177,24 @@
t.string "lang2"
t.string "lang2_fluency"
t.string "time_commitment"
- t.string "sunday_availability"
- t.string "monday_availability"
- t.string "tuesday_availability"
- t.string "wednesday_availability"
- t.string "thursday_availability"
- t.string "friday_availability"
- t.string "saturday_availability"
t.string "availability_comments"
- t.string "certifications"
t.string "travel"
+ t.boolean "admin", default: false
+ t.boolean "manager", default: false
+ t.integer "availability_id"
+ t.integer "role_id"
end
add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
+ add_index "users", ["role_id"], name: "index_users_on_role_id"
+
+ create_table "volunteer_relationships", force: :cascade do |t|
+ t.integer "user_id"
+ t.integer "project_id"
+ end
+
+ add_index "volunteer_relationships", ["project_id"], name: "index_volunteer_relationships_on_project_id"
+ add_index "volunteer_relationships", ["user_id"], name: "index_volunteer_relationships_on_user_id"
end
diff --git a/db/seeds.rb b/db/seeds.rb
index 0cb7369..8236f89 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -6,11 +6,88 @@
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
# Mayor.create(name: 'Emanuel', city: cities.first)
+# Leaving these unchanged, but I think its better to generate test data using
+# Cucumber and step definitions for isolation purposes.
+
user_list = [["jbarns@berkeley.edu", "password", "Jack", "Barnett", 20],
["mikewazoski@gmail.com", "password", "Mike", "Wazoski", 131],
["natalie@gmail.com", "password", "Natalie", "Barnett", 17],
["benbarns@gmail.com", "password", "Ben", "Barnett", 14]]
-user_list.each do |email, password, first_name, last_name, age|
- User.create(email: email, password: password, first_name: first_name, last_name: last_name, age: age)
+user_list.map! do |email, password, first_name, last_name, age|
+ User.create(email: email, password: password, first_name: first_name,
+ last_name: last_name, age: age)
+end
+
+skills = [Faker::Job.unique.key_skill, Faker::Job.unique.key_skill, Faker::Job.unique.key_skill]
+
+skills.map! do |skill|
+ Skill.create(name: skill)
+end
+
+skills.each do |skill|
+ user_num = Faker::Number.between(0, 3)
+ user_list[user_num].skills << skill
+end
+
+test_manager = User.create(first_name: Faker::Name::first_name,
+ last_name: Faker::Name.last_name,
+ email: Faker::Internet.unique.email, password: "asdfghjkl",
+ encrypted_password: "asdf", sign_in_count: 1,
+ created_at: 10.years.ago,
+ updated_at: 10.years.ago)
+
+test_manager_two = User.create(first_name: Faker::Name::first_name,
+ last_name: Faker::Name.last_name,
+ email: Faker::Internet.unique.email, password: "asdfghjkl",
+ encrypted_password: "asdf", sign_in_count: 1,
+ created_at: 10.years.ago,
+ updated_at: 10.years.ago)
+
+test_manager_three = User.create(first_name: Faker::Name::first_name,
+ last_name: Faker::Name.last_name,
+ email: Faker::Internet.unique.email, password: "asdfghjkl",
+ encrypted_password: "asdf", sign_in_count: 1,
+ created_at: 10.years.ago,
+ updated_at: 10.years.ago)
+
+test_project = Project.create(name: "Remba Island Project",
+ description: "Creating a large-scale water filter system",
+ volunteer_capacity: 25,
+ location: "Remba Island, Kenya")
+
+test_project.managers << test_manager
+test_project.managers << test_manager_two
+test_project.managers << test_manager_three
+
+# Will generate some fake data for Adolfo
+
+adolfo = User.create(first_name: "Adolfo", last_name: "Espino",
+ email: "adolfo.espino@gmail.com", password: "asdfgh")
+test_project = FactoryGirl.create(:project)
+adolfo.manager = true
+adolfo.manages << test_project
+
+@user = User.create(first_name: "Tobias", last_name: "Brachmann",
+ email: "tobybrachmann@gmail.com", password: "asdfgh",
+ manager: true, admin: true)
+
+5.times do
+ @project = FactoryGirl.create(:project)
+ @user.manages << @project
+ @user = FactoryGirl.create(:user, password: "asdfgh")
+ @user.manages << @project
+end
+
+certifications = ["Agricultural and Biological Engineering", "Architectural", "Chemical",
+"Civil: Construction", "Civil: Geotechnical", "Civil: Structural", "Civil: Transportation",
+"Civil: Water Resources and Environmental", "Control Systems", "Electrical and Computer: Computer Engineering",
+"Electrical and Computer: Electrical and Electronics", "Electrical and Computer: Power",
+"Environmental", "Fire Protection", "Industrial and Systems", "Mechanical: HVAC and Refrigeration",
+"Mechanical: Machine Design and Materials", "Mechanical: Thermal and Fluids Systems", "Metallurgical and Materials",
+"Mining and Mineral Processing", "Naval Architecture and Marine", "Nuclear",
+"Petroleum", "Software", "Structural"]
+
+certifications.each do |name|
+ Certification.create!(name: name)
end
\ No newline at end of file
diff --git a/features/alphabetize.feature b/features/alphabetize.feature
new file mode 100644
index 0000000..371d367
--- /dev/null
+++ b/features/alphabetize.feature
@@ -0,0 +1,20 @@
+Feature: display alphabetized list of volunteers
+
+ As a EWB Project Manager
+ So that I can recruit volunteers for my project
+ I want to see an alphabetized list of applicants
+
+Background: Volunteers have been added to the project page
+
+ Given the following volunteers exist:
+ |User |
+ |"Schmoe, Joe" |
+ |"User, Random"|
+
+ And I am on a project page
+
+Scenario: Sort volunteers list alphabetically
+
+ When I press "View Applicants"
+
+ Then I should see "Schmoe, Joe" before "User, Random"
diff --git a/features/and_filter_criteria.feature b/features/and_filter_criteria.feature
new file mode 100644
index 0000000..96c3671
--- /dev/null
+++ b/features/and_filter_criteria.feature
@@ -0,0 +1,71 @@
+Feature: Only view Volunteers who match all selection criteria in "Find Volunteers"
+ As a Project Manager
+ I want to only view Volunteers that match all my selected criteria
+ So I can find Volunteers that match my precise needs
+
+ Background:
+ Given I am a project manager
+ Given the following users exist with the given qualities:
+ | last_name | first_name | email | password | skills | certifications | field of study |
+ | Conolly | Jeniffer | jcon@ucon.edu | palmtree43 | people skills, empathetic, organization management, structural engineering | emt | civil engineering |
+ | Garrett | Brad | bgarrett@plant.org | Fungi169 | organization management, grassroots engagement, implementation, | teacher | environmental engineering |
+ | Gutierrez | Maria Laura | mlg@yahoo.com | bigmac99 | trilingual, English, Spanish, Italian | cpr, emt, sustainable development | computer science, civil engineering |
+ Given I am on the find volunteers page
+
+ Scenario: Nothing is checked
+ Then I should see everyone
+
+ Scenario: Check a Skill and a Certification -- happy path
+ When I check "People Skills"
+ And I check "EMT"
+ Then I should see "Jeniffer Conolly"
+ And I should not see "Brad Garrett"
+ And I should not see "Maria Laura Gutierrez"
+
+ Scenario: Check a Skill and a Certification -- sad path
+ When I check "People Skills"
+ And I check "Teacher"
+ Then I should see noone
+
+ Scenario: Check a Certification and a Field of Study -- happy path
+ When I check "CPR"
+ And I check "Civil Engineering"
+ Then I should see "Maria Laura Gutierrez"
+ And I should not see "Jeniffer Conolly"
+ And I should not see "Brad Garrett"
+
+ Scenario: Check a Certification and a Field of Study -- sad path
+ When I check "Teacher"
+ And I check "Computer Science"
+ Then I should see noone
+
+ Scenario: Check a Skill and a Field of Study -- happy path
+ When I check "Organization Management"
+ And I check "Environmental Engineering"
+ Then I should see "Brad Garrett"
+ And I should not see "Jeniffer Conolly"
+ And I should not see "Maria Laura Gutierrez"
+
+ Scenario: Check a Skill and a Field of Study -- sad path
+ When I check "Trilingual"
+ And I check "Environmental Engineering"
+ Then I should see noone
+
+ Scenario: Check many boxes -- happy path
+ When I check "Trilingual"
+ And I check "Italian"
+ And I check "Sustainable Development"
+ And I check "Computer Science"
+ Then I should see "Maria Laura Gutierrez"
+ And I should not see "Jeniffer Conolly"
+ And I should not see "Brad Garrett"
+
+ Scenario: Check many boxes -- sad path
+ When I check "Trilingual"
+ And I check "Italian"
+ And I check "Sustainable Development"
+ And I check "Computer Science"
+ And I check "Environmental Engineering"
+ Then I should see noone
+
+
\ No newline at end of file
diff --git a/features/delete_events.feature b/features/delete_events.feature
new file mode 100644
index 0000000..75e8e62
--- /dev/null
+++ b/features/delete_events.feature
@@ -0,0 +1,30 @@
+Feature: Refactor Events
+ As a volunteer for Engineers Without Borders
+ I do not want to see an Events Listing page
+ Because it already exists on the main EWB page
+
+ As a project manager
+ I do not want to see an Events Listing page
+ Because I want to reduce redundancy on my website
+
+ Background:
+ Given I am a project manager
+ Given I am on the home page
+
+ Scenario: On the Home Page
+ Then I should not see "Event Listings"
+
+ Scenario: On a Project Page
+ When I follow "My Projects"
+ And I follow "Create New Project"
+ Then I should be on the new project page
+ And I fill in "Name" with "Tester Project"
+ And I fill in "Description" with "Tester Project for Events"
+ And I fill in "Volunteer capacity" with "25"
+ And I fill in "Location" with "Berkeley"
+ And I press "Create Project"
+ When I follow "Project Listings"
+ Then I should be on the projects page
+ And I should see "Tester Project"
+ And I follow "Tester Project"
+ Then I should not see "Create Event"
diff --git a/features/filter_attributes.feature b/features/filter_attributes.feature
new file mode 100644
index 0000000..9da1f45
--- /dev/null
+++ b/features/filter_attributes.feature
@@ -0,0 +1,33 @@
+Feature: display list of volunteers filtered by different skills/certifications
+
+ As a EWB Project Manager
+ So that I can recruit potential volunteers for my project
+ I want to see only volunteers that meet the selected qualifications
+
+Background: Volunteers have been added to the project page
+
+ Given the following volunteers exist:
+ |last_name | first_name | email | password |
+ |"Schmoe" | "Joe" | "joe@joe.com" | "password" |
+ |"User" | "Random" | "rando@bob.com" | "abcdefg" |
+
+ Given the following skill table exists:
+ |user_id | name |
+ | 1 | "Pump Design" |
+ | 1 | "Professional Fluency in Spanish" |
+ | 2 | "Solar Panels" |
+
+ And I am a project manager
+ And I am on the "Find Volunteers" page
+
+ Scenario: filter the volunteers list by a certain attribute
+ #When I select "Skills"
+ When I check "Professional Fluency in Spanish"
+ Then I should see "Joe Schmoe" #A user that meets these specified qualifications
+ Then I should not see "Random User"
+
+ Scenario: Filter volunteers by multiple critera
+ When I check "Pump Design"
+ And I check "Solar Panels"
+ Then I should see "Joe Schmoe" #A user that meets these specified qualifications
+ And I should see "Random User" #A user that meets these specified qualifications
diff --git a/features/filter_by_field.feature b/features/filter_by_field.feature
new file mode 100644
index 0000000..a6d6dc6
--- /dev/null
+++ b/features/filter_by_field.feature
@@ -0,0 +1,42 @@
+Feature: Filter Volunteers by Field of Study
+ As a project manager
+ I want to be able to filter prospective volunteers by their field of study
+ So I can determine which volunteers are best suited for my projects
+
+ Background:
+ Given I am a project manager
+ Given the following users exist with the given qualities:
+ | last_name | first_name | email | password | skills | certifications | field of study |
+ | Conolly | Jeniffer | jcon@ucon.edu | palmtree43 | people skills, empathetic, organization management, structural engineering | emt | civil engineering |
+ | Garrett | Brad | bgarrett@plant.org | Fungi169 | organization management, grassroots engagement, implementation, | teacher | environmental engineering |
+ | Gutierrez | Maria Laura | mlg@yahoo.com | bigmac99 | trilingual, English, Spanish, Italian | cpr, emt, sustainable development | computer science, civil engineering |
+ Given I am on the find volunteers page
+
+ Scenario: Nothing is checked
+ Then I should see everyone
+
+
+ Scenario: Filtering by one field of study -- happy path
+ When I check "Civil Engineering"
+ Then I should see "Jeniffer Conolly"
+ And I should see "Maria Laura Gutierrez"
+ But I should not see "Brad Garrett"
+
+ Scenario: Filtering by one field of study -- sad path
+ When I check "Education"
+ Then I should see noone
+
+ Scenario: Filtering by two fields of study -- happy path
+ When I check "Civil Engineering"
+ And I check "Computer Science"
+ Then I should see "Maria Laura Gutierrez"
+ But I should not see "Jeniffer Conolly"
+ And I should not see "Brad Garrett"
+
+ Scenario: Filtering by two fields of study -- sad path
+ When I check "Civil Engineering"
+ And I check "Education"
+ Then I should see noone
+
+
+
\ No newline at end of file
diff --git a/features/manage_events.feature b/features/manage_events.feature
deleted file mode 100644
index 8a1ae1a..0000000
--- a/features/manage_events.feature
+++ /dev/null
@@ -1,41 +0,0 @@
-Feature: Managing Projects
- As a project manager
- I should be able to create and edit events
- So that volunteers can sign up for individual events
-
- Background:
- Given I am a project manager
- Given the following users exist:
- | email | password | first_name | last_name |
- | admin@gmail.com | testPass | Admin | Guy |
-
- Scenario: Creating and Updating an Event
- Given I am on the projects page
- When I follow "New Project"
- Then I should be on the new project page
- And I fill in "Name" with "Tester Project"
- And I fill in "Description" with "Tester Project for Events"
- And I fill in "Volunteer capacity" with "25"
- And I fill in "Volunteers" with "10"
- And I fill in "Location" with "Berkeley"
- And I press "Create Project"
- When I follow "Project Listings"
- Then I should be on the projects page
- And I should see "Tester Project"
- And I follow "Tester Project"
-
- Then I should see "Create Event"
- Then I follow "Create Event"
- Then I should be on the new event page
- And I fill in "Name" with "Tester Event"
- And I fill in "Description" with "Tester Event basic description"
- And I fill in "Location" with "Berkeley"
- And select "Yes" from "Repeats:"
- And I press "Create Event"
-
- Then I should see "Tester Event"
- And I should see "Tester Event basic description"
- And I should see "Berkeley"
-
-
-
diff --git a/features/manage_projects.feature b/features/manage_projects.feature
index 578272d..d2f40fd 100644
--- a/features/manage_projects.feature
+++ b/features/manage_projects.feature
@@ -10,14 +10,16 @@ Background:
| buzz@starcommand.com | infinity | Buzz | Lightyear |
Scenario: Creating and Updating a Project
- Given I am on the projects page
- When I follow "New Project"
+ Given I am on the home page
+ When I follow "My Projects"
+ When I follow "Create New Project"
Then I should be on the new project page
And I fill in "Name" with "Remove Snakes From Boots"
And I fill in "Description" with "Assist toy cowboys with recurring problem."
And I fill in "Volunteer capacity" with "2"
- And I fill in "Volunteers" with "1"
And I fill in "Location" with "Andy's Room"
+ # And I fill in "key skill 1" with "CAD"
+ # And I fill in "key skill 2" with "Geospatial analysis"
And I press "Create Project"
When I follow "Project Listings"
Then I should be on the projects page
@@ -42,4 +44,4 @@ Scenario: Creating and Updating a Project
# When I go to the projects page
# And I follow "Remove Poison From Water Hole"
# Then I should see "Buzz Lightyear"
- # Then I should see "Pending Confirmation"
\ No newline at end of file
+ # Then I should see "Pending Confirmation"
diff --git a/features/pm_my_projects_view.feature b/features/pm_my_projects_view.feature
new file mode 100644
index 0000000..e379e32
--- /dev/null
+++ b/features/pm_my_projects_view.feature
@@ -0,0 +1,16 @@
+Feature: See "My Projects" instead of Project Listings
+ As a project manager
+ I should be able to see all the projects I manage
+ So that I can select which project to manage
+
+Background:
+ Given I am a project manager on "Remba Island Project"
+ Given there exists a project "Fake Remba Island Project"
+
+Scenario: Viewing only my managed projects on "My Projects" page
+ Given I am on the home page
+ Then I should see "Project Listings"
+ And I should see "My Projects"
+ When I follow "My Projects"
+ Then I should see "Remba Island Project"
+ But I should not see "Fake Remba Island Project"
diff --git a/features/project_required_skills.feature b/features/project_required_skills.feature
new file mode 100644
index 0000000..03cdbc3
--- /dev/null
+++ b/features/project_required_skills.feature
@@ -0,0 +1,14 @@
+Feature: Viewing Required Skills
+ As a volunteer for Engineers Without Borders
+ I should be able to see what projects I am qualified for
+ So that I can choose projects to apply for
+
+Background:
+ Given I am a new, authenticated user
+ Given there exists a project "Remba Island Project"
+
+Scenario: View project required skills
+ Given I am on the projects page
+ When I follow the project link for "Remba Island Project"
+ Then I should see "Key Skills"
+ And I should see "Ruby"
diff --git a/features/step_definitions/ewb_steps.rb b/features/step_definitions/ewb_steps.rb
index 33d71ab..b5ec2d6 100644
--- a/features/step_definitions/ewb_steps.rb
+++ b/features/step_definitions/ewb_steps.rb
@@ -3,7 +3,7 @@
end
Given /^I am a new, authenticated user$/ do
- email = 'testing@man.net'
+ email = 'testing@user.net'
password = 'secretpass'
User.new(:email => email, :password => password, :password_confirmation => password).save!
@@ -13,11 +13,58 @@
click_button "Log in"
end
+Given /^I am a project manager on "(.+)"/ do |project_name|
+ email = "testing@man.net"
+ password = "asdfghjkl"
+ if(!User.exists?(email: email))
+ manager = User.create(email: email, password: password, manager: true)
+ else
+ manager = User.find_by email: email
+ end
+ if(!Project.exists?(name: project_name))
+ test_project = Project.create(name: project_name,
+ description: "Creating a large-scale water filter system",
+ volunteer_capacity: 25, location: "Remba Island, Kenya")
+ skill = Skill.new(name: "Ruby")
+ if Skill.exists?(:name => "Ruby")
+ test_project.skills << Skill.find_by_name(skill.name)
+ else
+ test_project.skills << skill
+ end
+ cert = Certification.new(name: "Microsoft Excel")
+ if Certification.exists?(:name => "Microsoft Excel")
+ test_project.certifications << Certification.find_by_name(cert.name)
+ else
+ test_project.certifications << cert
+ end
+ construction_exp = ConstructionExperience.new(name: "Well")
+ if ConstructionExperience.exists?(:name => "Well")
+ test_project.construction_experiences << ConstructionExperience
+ .find_by_name(construction_exp.name)
+ else
+ test_project.construction_experiences << construction_exp
+ end
+ design_exp = DesignExperience.new(name: "Road")
+ if DesignExperience.exists?(:name => "Road")
+ test_project.design_experiences << DesignExperience.find_by_name(design_exp.name)
+ else
+ test_project.design_experiences << design_exp
+ end
+ end
+ project = Project.find_by name: project_name
+ project.managers << manager
+
+ visit new_user_session_path
+ fill_in "user_email", :with => email
+ fill_in "user_password", :with => password
+ click_button "Log in"
+end
+
+
Given /^I am a project manager$/ do
email = 'testing@man.net'
password = 'secretpass'
- role = 'manager'
- User.new(:email => email, :password => password, :role => role).save!
+ User.create(:email => email, :password => password, :manager => true)
visit new_user_session_path
fill_in "user_email", :with => email
@@ -25,6 +72,7 @@
click_button "Log in"
end
+
Given /^the following users exist:$/ do |table|
table.hashes.each do |table_hash|
User.new(:email => table_hash[:email],
@@ -32,4 +80,174 @@
:first_name => table_hash[:first_name],
:last_name => table_hash[:last_name]).save!
end
+end
+
+Given /^the following volunteers exist: $/ do |table|
+ puts table
+ pending
+end
+
+When /^I follow the project link for "(.+)"$/ do |project_name|
+ click_link(project_name)
+end
+
+When(/^I select the "([^"]*)" option from the "([^"]*)" drop\-down field$/) do |arg1, arg2|
+ select(arg1, from: arg2)
+end
+
+Given /^there exists a project "([^"]*)"$/ do |arg1|
+ test_project = Project.create(name: arg1,
+ description: "Creating a large-scale water filter system",
+ volunteer_capacity: 25,
+ location: "Remba Island, Kenya")
+ test_project_manager = User.create(first_name: "Luke",
+ last_name: "Skywalker",
+ email: 'not_current@man.net',
+ password: "asdfghjkl",
+ manager: true)
+ test_project.managers << test_project_manager
+ skill = Skill.new(name: "Ruby")
+ if Skill.exists?(:name => "Ruby")
+ test_project.skills << Skill.find_by_name(skill.name)
+ else
+ test_project.skills << skill
+ end
+ cert = Certification.new(name: "Microsoft Excel")
+ if Certification.exists?(:name => "Microsoft Excel")
+ test_project.certifications << Certification.find_by_name(cert.name)
+ else
+ test_project.certifications << cert
+ end
+ construction_exp = ConstructionExperience.new(name: "Well")
+ if ConstructionExperience.exists?(:name => "Well")
+ test_project.construction_experiences << ConstructionExperience.find_by_name(construction_exp.name)
+ else
+ test_project.construction_experiences << construction_exp
+ end
+ design_exp = DesignExperience.new(name: "Road")
+ if DesignExperience.exists?(:name => "Road")
+ test_project.design_experiences << DesignExperience.find_by_name(design_exp.name)
+ else
+ test_project.design_experiences << design_exp
+ end
+end
+
+Given(/^the following volunteers exist:$/) do |volunteer_table|
+ volunteer_table.hashes.each do |volunteer|
+ User.create!(volunteer)
+ end
+end
+
+Given(/^the following skill table exists:$/) do |skill_table|
+ skill_table.hashes.each do |skill|
+ Skill.create!(skill)
+ end
+end
+
+Then(/^I should see "([^"]*)" before "([^"]*)"$/) do |arg1, arg2|
+ puts arg1
+ puts arg2
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+When(/^I select "([^"]*)"$/) do |arg1|
+ puts arg1
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+When(/^I press the "([^"]*)" button$/) do |arg1|
+ puts arg1
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^I should see "([^"]*)" \#A user that meets these specified qualifications$/) do |arg1|
+ name = arg1.split(/\s+/)
+ if page.respond_to? :should
+ page.should have_content(name[0])
+ page.should have_content(name[1])
+ else
+ assert page.has_content?(text)
+ end
+ # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^I should not see "([^"]*)" \#A user that does not$/) do |arg1|
+ puts arg1
+ # Write code here that turns the phrase above into concrete actions
+end
+
+When(/^I select attribute field$/) do
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+When(/^I select predicate field$/) do
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^the number of attibute fields should be (\d+)$/) do |arg1|
+ puts arg1
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^the number of predicate fields should be (\d+)$/) do |arg1|
+ puts arg1
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Given(/^Volunteer (\d+) exists$/) do |arg1|
+ puts arg1
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+When(/^I press the checkbox next to the first volunteer$/) do
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+When(/^press the checkbox next to the second volunteer$/) do
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^the number of checked boxes should be (\d+)$/) do |arg1|
+ puts arg1
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^there will be no checked box for the first volunteer$/) do
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^I should see that the page headings, font styles, and text sizes are uniform across the website$/) do
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^I should see that the page theme and colors are consistent with the main EWB website$/) do
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Given(/^the following users exist with the given qualities:$/) do |table|
+ puts table
+ # table is a Cucumber::MultilineArgument::DataTable
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^I should see "([^"]*)"'s qualities$/) do |arg1|
+ puts arg1
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^I should not see "([^"]*)"'s qualities$/) do |arg1|
+ puts arg1
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^I should see everyone$/) do
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^I should see noone$/) do
+ pending # Write code here that turns the phrase above into concrete actions
+end
+
+Then(/^I should see everyone's qualities$/) do
+ pending # Write code here that turns the phrase above into concrete actions
end
\ No newline at end of file
diff --git a/features/support/paths.rb b/features/support/paths.rb
index 4a502db..4d9dd16 100644
--- a/features/support/paths.rb
+++ b/features/support/paths.rb
@@ -14,7 +14,7 @@ module NavigationHelpers
#
def path_to(page_name)
case page_name
-
+
when /^the home\s?page$/
'/'
@@ -23,6 +23,9 @@ def path_to(page_name)
when /^the list volunteers page$/
'/volunteers'
+
+ when /^the "Find Volunteers" page$/
+ '/users'
when /^the Successfully Created page$/
'volunteers/' + Volunteer.id
diff --git a/features/uniform_ui_theme.feature b/features/uniform_ui_theme.feature
new file mode 100644
index 0000000..83cc96b
--- /dev/null
+++ b/features/uniform_ui_theme.feature
@@ -0,0 +1,24 @@
+Feature:
+ As a user of the EWB volunteers website
+ I want to see a consistent interface,
+ With the same text fonts and theme colors
+ And I also want to see that all page headings are the same font size, style, and color
+ And I want to see that the theme is consistent with the main EWB website
+
+Background:
+ Given I am a new, authenticated user
+
+Scenario: Visiting the home page
+ Given I am on the home page
+ Then I should see that the page headings, font styles, and text sizes are uniform across the website
+ Then I should see that the page theme and colors are consistent with the main EWB website
+
+Scenario: Visiting the projects page
+ Given I am on the projects page
+ Then I should see that the page headings, font styles, and text sizes are uniform across the website
+ Then I should see that the page theme and colors are consistent with the main EWB website
+
+Scenario: Visiting the User Information page
+ Given I am on the users page
+ Then I should see that the page headings, font styles, and text sizes are uniform across the website
+ Then I should see that the page theme and colors are consistent with the main EWB website
\ No newline at end of file
diff --git a/features/user_update.feature b/features/user_update.feature
index d642dad..01ae53b 100644
--- a/features/user_update.feature
+++ b/features/user_update.feature
@@ -10,11 +10,11 @@ Scenario: Updating Profile Information
And I follow "Edit Profile"
And I select "Bachelor's Degree" from "Education:"
And I select "Computer Science" from "Field of Study or Expertise:"
- And I select "Chemical" from "Certifications Related to Field:"
+ #And I select "Chemical" from "Certifications Related to Field:"
And I select "Spanish" from "First Language:"
And I select "5 - Native or Bilingual Proficiency" from "First Language Fluency:"
And I select "20" from "Age"
- And I fill in "About:" with "College rules!"
+ And I fill in "Please tell us very briefly a little about yourself and why you want to volunteer for Engineers without Borders." with "College rules!"
And I fill in "Name of University/College:" with "Berkeley"
And I press "Update Background"
@@ -22,4 +22,5 @@ Scenario: Updating Profile Information
Then I should see "Computer Science"
Then I should see "20"
Then I should see "College rules!"
- Then I should see "Berkeley"
\ No newline at end of file
+ Then I should see "Berkeley"
+
diff --git a/features/view_featured_opps.feature b/features/view_featured_opps.feature
new file mode 100644
index 0000000..aa3b7d7
--- /dev/null
+++ b/features/view_featured_opps.feature
@@ -0,0 +1,26 @@
+Feature: Display Featured Opportunities on a banner at the top of the projects page
+ As a volunteer
+ I want to see a list of qualities in high demand
+ So I can see if my set of skills is valuable to a certain project right now
+
+ As a project manager
+ I want to list qualities I need in a volunteer
+ So I can attract volunteers that fit my needs
+
+ Background:
+ Given I am on the projects page
+
+ Scenario: Viewing the Projects Page as a Volunteer
+ Given I am a new, authenticated user
+ Then I should see "Featured Opportunities"
+ And I should not see "Add an Opportunity"
+
+ Scenario: Viewing the Projects Page as a Project Manager
+ Given I am a project manager
+ Then I should see "Featured Opportunities"
+ And I should see "Add an Opportunity"
+
+ Scenario: Adding an Opportunity
+ Given I am a project manager
+ When I follow "Add an Opportunity"
+ Then I should be on the add an opportunity page
diff --git a/features/view_project_info.feature b/features/view_project_info.feature
new file mode 100644
index 0000000..6dd003c
--- /dev/null
+++ b/features/view_project_info.feature
@@ -0,0 +1,19 @@
+Feature: Viewing Project Information
+ As a volunteer for Engineers Without Borders
+ I should be able to view information about various projects
+ So that I can choose projects to apply for
+
+ Scenario: Clicking on a Project Listing
+ Given I am a new, authenticated user
+ Given there exists a project "Remba Island Project"
+ Given I am on the projects page
+ When I follow the project link for "Remba Island Project"
+ Then I should see "Creating a large-scale water filter system"
+ And I should see "Remba Island, Kenya"
+ And I should see "Luke Skywalker"
+ And I should see "not_current@man.net"
+ And I should see "25"
+ And I should see "Ruby"
+ And I should see "Microsoft Excel"
+ And I should see "Well"
+ And I should see "Road"
diff --git a/features/view_user_qualities.feature b/features/view_user_qualities.feature
new file mode 100644
index 0000000..652ae2c
--- /dev/null
+++ b/features/view_user_qualities.feature
@@ -0,0 +1,34 @@
+Feature: View Volunteers' Skills, Certifications, and Field of Study on Find Volunteers page
+ As a project manager
+ I want to see a volunteer's skills, certifications, and field of study next to their name on the find volunteers page
+ So I can quickly see who is best suited for my projects
+
+ Background:
+ Given I am a project manager
+ Given the following users exist with the given qualities:
+ | last_name | first_name | email | password | skills | certifications | field of study |
+ | Conolly | Jeniffer | jcon@ucon.edu | palmtree43 | people skills, empathetic, organization management, structural engineering | emt | civil engineering |
+ | Garrett | Brad | bgarrett@plant.org | Fungi169 | organization management, grassroots engagement, implementation, | teacher | environmental engineering |
+ | Gutierrez | Maria Laura | mlg@yahoo.com | bigmac99 | trilingual, English, Spanish, Italian | cpr, emt, sustainable development | computer science, civil engineering |
+ Given I am on the find volunteers page
+
+ Scenario: Nothing is checked
+ Then I should see everyone's qualities
+
+ Scenario: Skills are checked
+ When I check "People Skills"
+ Then I should see "Jeniffer Conolly"'s qualities
+ And I should not see "Brad Garrett"'s qualities
+ And I should not see "Maria Laura Gutierrez"'s qualities
+
+ Scenario: Certifications are checked
+ When I check "EMT"
+ Then I should see "Jeniffer Conolly"'s qualities
+ And I should see "Maria Laura Gutierrez"'s qualities
+ And I should not see "Brad Garrett"'s qualities
+
+ Scenario: Field of study is checked
+ When I check "Environmental Engineering"
+ Then I should see "Brad Garrett"'s qualities
+ And I should not see "Jeniffer Conolly"'s qualities
+ And I should not see "Maria Laura Gutierrez"'s qualities
diff --git a/features/volunteer_register.feature b/features/volunteer_register.feature
index 6764274..a942899 100644
--- a/features/volunteer_register.feature
+++ b/features/volunteer_register.feature
@@ -5,12 +5,11 @@ Feature: User Registration
Scenario: Filling out the Volunteer Form by subscribing
Given I am on the home page
- Then I should see "Sign up now!"
- When I follow "Sign up now!"
+ Then I should see "GET INVOLVED"
+ When I follow "GET INVOLVED"
When I fill in "Email" with "woody@andysroom.com"
And I fill in "user_password" with "reachforthesky"
And I fill in "user_password_confirmation" with "reachforthesky"
And I press "Sign up"
Then I should see "Update Your Profile"
- Then I should see "Event Listings"
Then I should see "Project Listings"
diff --git a/features/volunteer_search.feature b/features/volunteer_search.feature
new file mode 100644
index 0000000..cbf9579
--- /dev/null
+++ b/features/volunteer_search.feature
@@ -0,0 +1,31 @@
+Feature: Reducing search parameters for Find Volunteers page
+ As a project manager wanting to search for volunters
+ I should see fields for search criteria
+ But not see a field for conditionals such as greater than and is null
+ And only search using the conditional contains
+ And being able to select multiple search criteria using Add Conditions
+
+Background:
+ Given I am a project manager
+ And I am on the "Find Volunteers" page
+
+Scenario: Minimize attribute filter criteria to fields like certifications
+ When I select attribute field
+ Then I should see "Certifications"
+ And I should see "First Name"
+ But I should not see "created at"
+ And I should not see "id"
+
+Scenario: Minimize predicate criteria to contains
+ When I select predicate field
+ Then I should see "contains"
+ But I should not see "null"
+ And I should not see "eq"
+
+Scenario: Be able to properly add conditions to search by
+ When I press the "Add Conditions" button
+ Then the number of attibute fields should be 2
+ And the number of predicate fields should be 2
+ When I press the "remove" button
+ Then the number of attibute fields should be 1
+ And the number of predicate fields should be 1
diff --git a/features/volunteer_select_many.feature b/features/volunteer_select_many.feature
new file mode 100644
index 0000000..dfda4ab
--- /dev/null
+++ b/features/volunteer_select_many.feature
@@ -0,0 +1,21 @@
+Feature: Allowing for multiple selection on Find Volunteers page
+ As a project manager wanting to search for volunters
+ I should be able to see checkboxes to the left of each volunteer
+ And be able to select multiple volunteers
+ And press the contact all button to email out # need to implement for next iter
+
+Background:
+ Given I am a project manager
+ And I am on the "Find Volunteers" page
+ And I should see "Listing Users"
+ And Volunteer 1 exists
+ And Volunteer 2 exists
+
+Scenario: Select multiple volunteers
+ #When I am on the "Find Volunteers" page
+ When I press the checkbox next to the first volunteer
+ And press the checkbox next to the second volunteer
+ Then the number of checked boxes should be 2
+ When I press the checkbox next to the first volunteer
+ Then the number of checked boxes should be 1
+ And there will be no checked box for the first volunteer
\ No newline at end of file
diff --git a/iterations/iter0.md b/iterations/iter0.md
index f4ecf62..e61471d 100644
--- a/iterations/iter0.md
+++ b/iterations/iter0.md
@@ -1,3 +1,13 @@
--[Interview with Jennifer](https://www.youtube.com/watch?v=FlaDXKL6-yk)
+-[Interview with Adolfo](https://www.youtube.com/watch?v=vTYoWUjP5xo&feature=youtu.be)
--[Screencast](https://www.youtube.com/watch?v=71nNvWm0Itk)
+-[Arman Jaffer's Screencast](https://www.youtube.com/watch?v=iJtlG43GDDQ&feature=youtu.be)
+
+-[Bill Yeo's Screencast](https://www.youtube.com/watch?v=9rYq7RD7-cQ&feature=youtu.be)
+
+-[Claire Scheele's Screencast](https://www.youtube.com/watch?v=l6XsC3JbtRI&feature=youtu.be)
+
+-[Jerry Wu's Screencast](https://www.youtube.com/watch?v=1iXo2UrphsA&feature=youtu.be)
+
+-[Sasank Chaganty's Screencast](https://www.youtube.com/watch?v=13epkw_iPMc&feature=youtu.be)
+
+-[Toby Brachmann's Screencast](https://www.youtube.com/watch?v=3fm2pmslVcE&feature=youtu.be)
\ No newline at end of file
diff --git a/public/assets/.sprockets-manifest-a3550939de0f824959c7d980317dbc23.json b/public/assets/.sprockets-manifest-a3550939de0f824959c7d980317dbc23.json
index 8df5bd3..4c93faf 100644
--- a/public/assets/.sprockets-manifest-a3550939de0f824959c7d980317dbc23.json
+++ b/public/assets/.sprockets-manifest-a3550939de0f824959c7d980317dbc23.json
@@ -1 +1 @@
-{"files":{"rails_admin/rails_admin-5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887.js":{"logical_path":"rails_admin/rails_admin.js","mtime":"2016-11-14T04:38:53+00:00","size":1185038,"digest":"5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887","integrity":"sha256-Xk9JcUt6bbtARHzy1FFQV9yf6yYGfVPecmzURw8XmIc="},"rails_admin/rails_admin-4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501.css":{"logical_path":"rails_admin/rails_admin.css","mtime":"2016-11-14T04:38:53+00:00","size":520061,"digest":"4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501","integrity":"sha256-TsDyT4ZVMmI4+93Jg7YmiKbJ2yMQ4/UAVuqGnC4SVQE="},"rails_admin/aristo/images/bg_fallback-bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903.png":{"logical_path":"rails_admin/aristo/images/bg_fallback.png","mtime":"2016-11-14T04:38:52+00:00","size":168,"digest":"bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903","integrity":"sha256-utU87iZpSkK9unFzN+Len5l+vz3tMAuMP/SKxRksGQM="},"rails_admin/aristo/images/ui-icons_222222_256x240-310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321.png":{"logical_path":"rails_admin/aristo/images/ui-icons_222222_256x240.png","mtime":"2016-11-14T04:38:52+00:00","size":3699,"digest":"310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321","integrity":"sha256-MQrnPvxndHFvCoDOIUFWX93sUXAjMKgGb9XiIEN64yE="},"rails_admin/aristo/images/ui-icons_454545_256x240-d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474.png":{"logical_path":"rails_admin/aristo/images/ui-icons_454545_256x240.png","mtime":"2016-11-14T04:38:52+00:00","size":3699,"digest":"d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474","integrity":"sha256-1ZxtpDbRoZqjW8vy1ACtFg8rJWj7v6L56/wZLRQCVHQ="},"rails_admin/aristo/images/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png":{"logical_path":"rails_admin/aristo/images/icon_sprite.png","mtime":"2016-11-14T04:38:52+00:00","size":2660,"digest":"34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded","integrity":"sha256-NKMIBvy6Q6Lv/Jc5y3o3CoZRmafTi/y8fCR07z/3De0="},"rails_admin/aristo/images/slider_handles-4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484.png":{"logical_path":"rails_admin/aristo/images/slider_handles.png","mtime":"2016-11-14T04:38:52+00:00","size":1351,"digest":"4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484","integrity":"sha256-S1I/PRvRivX+wj7H1Y7YXkx+j0aF/oWoQH4tkBe/ZIQ="},"rails_admin/aristo/images/progress_bar-a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289.gif":{"logical_path":"rails_admin/aristo/images/progress_bar.gif","mtime":"2016-11-14T04:38:52+00:00","size":494,"digest":"a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289","integrity":"sha256-ou1xLXbc/8egaRjNOJURvKLPe7kcErHYZb9Ex7LEYok="},"rails_admin/multiselect/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png":{"logical_path":"rails_admin/multiselect/icon_sprite.png","mtime":"2016-11-14T04:38:52+00:00","size":2660,"digest":"34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded","integrity":"sha256-NKMIBvy6Q6Lv/Jc5y3o3CoZRmafTi/y8fCR07z/3De0="},"rails_admin/multiselect/ui-icon-circle-triangle-n-light-e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-n-light.png","mtime":"2016-11-14T04:38:52+00:00","size":492,"digest":"e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b","integrity":"sha256-59rzFpJZqf1rgXe46J/yuWTNPaur1YCkbX+07swHdjs="},"rails_admin/multiselect/ui-icon-circle-triangle-n-dark-bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png","mtime":"2016-11-14T04:38:52+00:00","size":334,"digest":"bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b","integrity":"sha256-u1MmnkQXOkltJiC60gHKg4pXtnxAs0ObXOiTRe+eiIs="},"rails_admin/multiselect/ui-icon-circle-triangle-s-light-e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-s-light.png","mtime":"2016-11-14T04:38:52+00:00","size":484,"digest":"e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160","integrity":"sha256-4WmNN/N/fbhc5nNoEKNLGiKTBr6KPzvhVvuqR91s0WA="},"rails_admin/multiselect/ui-icon-circle-triangle-s-dark-2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png","mtime":"2016-11-14T04:38:52+00:00","size":338,"digest":"2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0","integrity":"sha256-K/CXeY4rHbdmoW/08zXT/pS9Ufktwt30fIo3C6MRicA="},"rails_admin/colorpicker/select2-8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b.png":{"logical_path":"rails_admin/colorpicker/select2.png","mtime":"2016-11-14T04:38:52+00:00","size":305,"digest":"8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b","integrity":"sha256-jd9oDRqG1gNlPkP2lLu23BAQqoH1wMnIcYHhDgZOUDs="},"rails_admin/colorpicker/custom_background-52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976.png":{"logical_path":"rails_admin/colorpicker/custom_background.png","mtime":"2016-11-14T04:38:52+00:00","size":1557,"digest":"52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976","integrity":"sha256-UpZ7WVrnGK2VUguc8rIlUfuMsNgaFx24abANK2BLSXY="},"rails_admin/colorpicker/colorpicker_overlay-ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856.png":{"logical_path":"rails_admin/colorpicker/colorpicker_overlay.png","mtime":"2016-11-14T04:38:52+00:00","size":6971,"digest":"ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856","integrity":"sha256-uiGrhcWRZ7Ya9QjjSiLuNEyXuxFFTSh6R2kfovsYKFY="},"rails_admin/colorpicker/colorpicker_select-980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d.gif":{"logical_path":"rails_admin/colorpicker/colorpicker_select.gif","mtime":"2016-11-14T04:38:52+00:00","size":72,"digest":"980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d","integrity":"sha256-mArobWqrdR9vZ6EZHXjA+lS1M1g0VrkF7EOzTVgG7i0="},"rails_admin/colorpicker/custom_indic-8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7.gif":{"logical_path":"rails_admin/colorpicker/custom_indic.gif","mtime":"2016-11-14T04:38:52+00:00","size":85,"digest":"8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7","integrity":"sha256-jKYu6FAV5nZx8jEqL+rWM3QDNfZeJU2PTD6im5n2Lec="},"rails_admin/colorpicker/custom_hex-4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37.png":{"logical_path":"rails_admin/colorpicker/custom_hex.png","mtime":"2016-11-14T04:38:52+00:00","size":347,"digest":"4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37","integrity":"sha256-Sxp7CDEu3DcyzzDH2NUpGr6kHGQxHD0F1npYbL49zzc="},"rails_admin/colorpicker/custom_rgb_r-54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_r.png","mtime":"2016-11-14T04:38:52+00:00","size":727,"digest":"54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6","integrity":"sha256-VCicytid8AUU2Eum0W0aCrwNYd6V3PwFS/IgLiOKfLY="},"rails_admin/colorpicker/custom_rgb_g-8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_g.png","mtime":"2016-11-14T04:38:52+00:00","size":780,"digest":"8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f","integrity":"sha256-irTUHEb8JggLde7Mb4wl2PbbUmTPVuzEmT+G0QDr1x8="},"rails_admin/colorpicker/custom_rgb_b-22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_b.png","mtime":"2016-11-14T04:38:52+00:00","size":722,"digest":"22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31","integrity":"sha256-IvLaGBDNnaGKH5NBi49FvTy2dqqXkK1eGro3d5+zrDE="},"rails_admin/colorpicker/custom_hsb_h-df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_h.png","mtime":"2016-11-14T04:38:52+00:00","size":711,"digest":"df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3","integrity":"sha256-3wHtuApxDN2dkFcgHqpoKoyGzYCtbGkp8dSpGCrWrtM="},"rails_admin/colorpicker/custom_hsb_s-9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_s.png","mtime":"2016-11-14T04:38:52+00:00","size":845,"digest":"9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706","integrity":"sha256-knfz/Z63m67yOE97OJaBhP1A1jECQUnHtBVDt3lsBwY="},"rails_admin/colorpicker/custom_hsb_b-7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_b.png","mtime":"2016-11-14T04:38:52+00:00","size":795,"digest":"7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b","integrity":"sha256-cWC1/VxXeRAsuR93G4DvJiHavhC/Bug1nerv7OgxtYs="},"rails_admin/colorpicker/custom_submit-3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5.png":{"logical_path":"rails_admin/colorpicker/custom_submit.png","mtime":"2016-11-14T04:38:52+00:00","size":791,"digest":"3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5","integrity":"sha256-Ole62Hj21gi5mONqzv4jJdeG1GMavuzF1ADKXAYvXOU="},"fontawesome-webfont-50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1.eot":{"logical_path":"fontawesome-webfont.eot","mtime":"2016-11-14T04:38:51+00:00","size":76518,"digest":"50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1","integrity":"sha256-ULvpGSaX55Hi7k73OReusbA+cn3/CKH8jXTwDkqoEuE="},"fontawesome-webfont-7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73.woff2":{"logical_path":"fontawesome-webfont.woff2","mtime":"2016-11-14T04:38:51+00:00","size":71896,"digest":"7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73","integrity":"sha256-faz4P1EXnejXmApRPmerOgjyxicrtZRt+P13wNF2O3M="},"fontawesome-webfont-adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c.woff":{"logical_path":"fontawesome-webfont.woff","mtime":"2016-11-14T04:38:51+00:00","size":90412,"digest":"adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c","integrity":"sha256-rbxPlettfyc4lZzw7Lw3RnL85H6FYFCo6XkfRXYjrCw="},"fontawesome-webfont-ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912.ttf":{"logical_path":"fontawesome-webfont.ttf","mtime":"2016-11-14T04:38:51+00:00","size":152796,"digest":"ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912","integrity":"sha256-rhni5MBPKwS/AwaExMHbj69cj+PuA9HgxAkEZgiziRI="},"fontawesome-webfont-8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae.svg":{"logical_path":"fontawesome-webfont.svg","mtime":"2016-11-14T04:38:51+00:00","size":391622,"digest":"8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae","integrity":"sha256-jjWGOJu0zQGz+FuztiJzm95mJ/KLumOgIMIjypzxua4="},"rails_admin/jquery.colorpicker-65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf.js":{"logical_path":"rails_admin/jquery.colorpicker.js","mtime":"2016-11-14T04:38:52+00:00","size":18773,"digest":"65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf","integrity":"sha256-ZaVApqjmFWmjmje9FFZUOuXlu+SIaCRzcr7UCh3/K88="},"rails_admin/jquery.colorpicker-ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c.css":{"logical_path":"rails_admin/jquery.colorpicker.css","mtime":"2016-11-14T04:38:52+00:00","size":7295,"digest":"ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c","integrity":"sha256-ukZiGj4UhHkjHMfyVbGvtwUs46QUk8UGNu2v52HmsRw="},"proximanova-2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1.ttf":{"logical_path":"proximanova.ttf","mtime":"2016-10-07T18:38:43+00:00","size":51648,"digest":"2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1","integrity":"sha256-LXfNLfUs6+PR64cRqaudBBj+zbND04Qc+dT+4h5k6bE="},"ewb-sfp-logo-d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf.png":{"logical_path":"ewb-sfp-logo.png","mtime":"2016-10-07T18:38:43+00:00","size":26458,"digest":"d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf","integrity":"sha256-1QNfFpCWj71qWFvSjTEDFx7QY8i8Nw11oiLS4b6XDc8="},"application-f2204fdd0647c4d627dc20817b4e6d83d2105c231955d3922f5c708ba69035bb.js":{"logical_path":"application.js","mtime":"2016-11-14T08:32:56+00:00","size":992213,"digest":"f2204fdd0647c4d627dc20817b4e6d83d2105c231955d3922f5c708ba69035bb","integrity":"sha256-8iBP3QZHxNYn3CCBe05tg9IQXCMZVdOSL1xwi6aQNbs="},"application-c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630.css":{"logical_path":"application.css","mtime":"2016-11-14T07:32:23+00:00","size":266990,"digest":"c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630","integrity":"sha256-xy+SfbPwYNxtnoatP+6dyjUcvs1d/8FbptA3U5xZxjA="},"application-e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5.js":{"logical_path":"application.js","mtime":"2016-11-14T10:05:09+00:00","size":972143,"digest":"e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5","integrity":"sha256-5dxeYPE+4Kt+WG1Uys3N+8jyOsj38a38Opg85E+pF+U="}},"assets":{"rails_admin/rails_admin.js":"rails_admin/rails_admin-5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887.js","rails_admin/rails_admin.css":"rails_admin/rails_admin-4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501.css","rails_admin/aristo/images/bg_fallback.png":"rails_admin/aristo/images/bg_fallback-bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903.png","rails_admin/aristo/images/ui-icons_222222_256x240.png":"rails_admin/aristo/images/ui-icons_222222_256x240-310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321.png","rails_admin/aristo/images/ui-icons_454545_256x240.png":"rails_admin/aristo/images/ui-icons_454545_256x240-d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474.png","rails_admin/aristo/images/icon_sprite.png":"rails_admin/aristo/images/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png","rails_admin/aristo/images/slider_handles.png":"rails_admin/aristo/images/slider_handles-4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484.png","rails_admin/aristo/images/progress_bar.gif":"rails_admin/aristo/images/progress_bar-a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289.gif","rails_admin/multiselect/icon_sprite.png":"rails_admin/multiselect/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png","rails_admin/multiselect/ui-icon-circle-triangle-n-light.png":"rails_admin/multiselect/ui-icon-circle-triangle-n-light-e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b.png","rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png":"rails_admin/multiselect/ui-icon-circle-triangle-n-dark-bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b.png","rails_admin/multiselect/ui-icon-circle-triangle-s-light.png":"rails_admin/multiselect/ui-icon-circle-triangle-s-light-e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160.png","rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png":"rails_admin/multiselect/ui-icon-circle-triangle-s-dark-2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0.png","rails_admin/colorpicker/select2.png":"rails_admin/colorpicker/select2-8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b.png","rails_admin/colorpicker/custom_background.png":"rails_admin/colorpicker/custom_background-52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976.png","rails_admin/colorpicker/colorpicker_overlay.png":"rails_admin/colorpicker/colorpicker_overlay-ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856.png","rails_admin/colorpicker/colorpicker_select.gif":"rails_admin/colorpicker/colorpicker_select-980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d.gif","rails_admin/colorpicker/custom_indic.gif":"rails_admin/colorpicker/custom_indic-8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7.gif","rails_admin/colorpicker/custom_hex.png":"rails_admin/colorpicker/custom_hex-4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37.png","rails_admin/colorpicker/custom_rgb_r.png":"rails_admin/colorpicker/custom_rgb_r-54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6.png","rails_admin/colorpicker/custom_rgb_g.png":"rails_admin/colorpicker/custom_rgb_g-8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f.png","rails_admin/colorpicker/custom_rgb_b.png":"rails_admin/colorpicker/custom_rgb_b-22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31.png","rails_admin/colorpicker/custom_hsb_h.png":"rails_admin/colorpicker/custom_hsb_h-df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3.png","rails_admin/colorpicker/custom_hsb_s.png":"rails_admin/colorpicker/custom_hsb_s-9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706.png","rails_admin/colorpicker/custom_hsb_b.png":"rails_admin/colorpicker/custom_hsb_b-7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b.png","rails_admin/colorpicker/custom_submit.png":"rails_admin/colorpicker/custom_submit-3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5.png","fontawesome-webfont.eot":"fontawesome-webfont-50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1.eot","fontawesome-webfont.woff2":"fontawesome-webfont-7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73.woff2","fontawesome-webfont.woff":"fontawesome-webfont-adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c.woff","fontawesome-webfont.ttf":"fontawesome-webfont-ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912.ttf","fontawesome-webfont.svg":"fontawesome-webfont-8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae.svg","rails_admin/jquery.colorpicker.js":"rails_admin/jquery.colorpicker-65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf.js","rails_admin/jquery.colorpicker.css":"rails_admin/jquery.colorpicker-ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c.css","proximanova.ttf":"proximanova-2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1.ttf","ewb-sfp-logo.png":"ewb-sfp-logo-d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf.png","application.js":"application-e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5.js","application.css":"application-c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630.css"}}
\ No newline at end of file
+{"files":{"rails_admin/rails_admin-5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887.js":{"logical_path":"rails_admin/rails_admin.js","mtime":"2016-11-14T04:38:53+00:00","size":1185038,"digest":"5e4f49714b7a6dbb40447cf2d4515057dc9feb26067d53de726cd4470f179887","integrity":"sha256-Xk9JcUt6bbtARHzy1FFQV9yf6yYGfVPecmzURw8XmIc="},"rails_admin/rails_admin-4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501.css":{"logical_path":"rails_admin/rails_admin.css","mtime":"2016-11-14T04:38:53+00:00","size":520061,"digest":"4ec0f24f8655326238fbddc983b62688a6c9db2310e3f50056ea869c2e125501","integrity":"sha256-TsDyT4ZVMmI4+93Jg7YmiKbJ2yMQ4/UAVuqGnC4SVQE="},"rails_admin/aristo/images/bg_fallback-bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903.png":{"logical_path":"rails_admin/aristo/images/bg_fallback.png","mtime":"2017-07-15T18:44:40+00:00","size":168,"digest":"bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903","integrity":"sha256-utU87iZpSkK9unFzN+Len5l+vz3tMAuMP/SKxRksGQM="},"rails_admin/aristo/images/ui-icons_222222_256x240-310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321.png":{"logical_path":"rails_admin/aristo/images/ui-icons_222222_256x240.png","mtime":"2017-07-15T18:44:40+00:00","size":3699,"digest":"310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321","integrity":"sha256-MQrnPvxndHFvCoDOIUFWX93sUXAjMKgGb9XiIEN64yE="},"rails_admin/aristo/images/ui-icons_454545_256x240-d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474.png":{"logical_path":"rails_admin/aristo/images/ui-icons_454545_256x240.png","mtime":"2017-07-15T18:44:40+00:00","size":3699,"digest":"d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474","integrity":"sha256-1ZxtpDbRoZqjW8vy1ACtFg8rJWj7v6L56/wZLRQCVHQ="},"rails_admin/aristo/images/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png":{"logical_path":"rails_admin/aristo/images/icon_sprite.png","mtime":"2017-07-15T18:44:40+00:00","size":2660,"digest":"34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded","integrity":"sha256-NKMIBvy6Q6Lv/Jc5y3o3CoZRmafTi/y8fCR07z/3De0="},"rails_admin/aristo/images/slider_handles-4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484.png":{"logical_path":"rails_admin/aristo/images/slider_handles.png","mtime":"2017-07-15T18:44:40+00:00","size":1351,"digest":"4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484","integrity":"sha256-S1I/PRvRivX+wj7H1Y7YXkx+j0aF/oWoQH4tkBe/ZIQ="},"rails_admin/aristo/images/progress_bar-a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289.gif":{"logical_path":"rails_admin/aristo/images/progress_bar.gif","mtime":"2017-07-15T18:44:40+00:00","size":494,"digest":"a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289","integrity":"sha256-ou1xLXbc/8egaRjNOJURvKLPe7kcErHYZb9Ex7LEYok="},"rails_admin/multiselect/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png":{"logical_path":"rails_admin/multiselect/icon_sprite.png","mtime":"2017-07-15T18:44:40+00:00","size":2660,"digest":"34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded","integrity":"sha256-NKMIBvy6Q6Lv/Jc5y3o3CoZRmafTi/y8fCR07z/3De0="},"rails_admin/multiselect/ui-icon-circle-triangle-n-light-e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-n-light.png","mtime":"2017-07-15T18:44:40+00:00","size":492,"digest":"e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b","integrity":"sha256-59rzFpJZqf1rgXe46J/yuWTNPaur1YCkbX+07swHdjs="},"rails_admin/multiselect/ui-icon-circle-triangle-n-dark-bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png","mtime":"2017-07-15T18:44:40+00:00","size":334,"digest":"bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b","integrity":"sha256-u1MmnkQXOkltJiC60gHKg4pXtnxAs0ObXOiTRe+eiIs="},"rails_admin/multiselect/ui-icon-circle-triangle-s-light-e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-s-light.png","mtime":"2017-07-15T18:44:40+00:00","size":484,"digest":"e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160","integrity":"sha256-4WmNN/N/fbhc5nNoEKNLGiKTBr6KPzvhVvuqR91s0WA="},"rails_admin/multiselect/ui-icon-circle-triangle-s-dark-2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0.png":{"logical_path":"rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png","mtime":"2017-07-15T18:44:40+00:00","size":338,"digest":"2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0","integrity":"sha256-K/CXeY4rHbdmoW/08zXT/pS9Ufktwt30fIo3C6MRicA="},"rails_admin/colorpicker/select2-8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b.png":{"logical_path":"rails_admin/colorpicker/select2.png","mtime":"2017-07-15T18:44:40+00:00","size":305,"digest":"8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b","integrity":"sha256-jd9oDRqG1gNlPkP2lLu23BAQqoH1wMnIcYHhDgZOUDs="},"rails_admin/colorpicker/custom_background-52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976.png":{"logical_path":"rails_admin/colorpicker/custom_background.png","mtime":"2017-07-15T18:44:40+00:00","size":1557,"digest":"52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976","integrity":"sha256-UpZ7WVrnGK2VUguc8rIlUfuMsNgaFx24abANK2BLSXY="},"rails_admin/colorpicker/colorpicker_overlay-ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856.png":{"logical_path":"rails_admin/colorpicker/colorpicker_overlay.png","mtime":"2017-07-15T18:44:40+00:00","size":6971,"digest":"ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856","integrity":"sha256-uiGrhcWRZ7Ya9QjjSiLuNEyXuxFFTSh6R2kfovsYKFY="},"rails_admin/colorpicker/colorpicker_select-980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d.gif":{"logical_path":"rails_admin/colorpicker/colorpicker_select.gif","mtime":"2017-07-15T18:44:40+00:00","size":72,"digest":"980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d","integrity":"sha256-mArobWqrdR9vZ6EZHXjA+lS1M1g0VrkF7EOzTVgG7i0="},"rails_admin/colorpicker/custom_indic-8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7.gif":{"logical_path":"rails_admin/colorpicker/custom_indic.gif","mtime":"2017-07-15T18:44:40+00:00","size":85,"digest":"8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7","integrity":"sha256-jKYu6FAV5nZx8jEqL+rWM3QDNfZeJU2PTD6im5n2Lec="},"rails_admin/colorpicker/custom_hex-4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37.png":{"logical_path":"rails_admin/colorpicker/custom_hex.png","mtime":"2017-07-15T18:44:40+00:00","size":347,"digest":"4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37","integrity":"sha256-Sxp7CDEu3DcyzzDH2NUpGr6kHGQxHD0F1npYbL49zzc="},"rails_admin/colorpicker/custom_rgb_r-54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_r.png","mtime":"2017-07-15T18:44:40+00:00","size":727,"digest":"54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6","integrity":"sha256-VCicytid8AUU2Eum0W0aCrwNYd6V3PwFS/IgLiOKfLY="},"rails_admin/colorpicker/custom_rgb_g-8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_g.png","mtime":"2017-07-15T18:44:40+00:00","size":780,"digest":"8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f","integrity":"sha256-irTUHEb8JggLde7Mb4wl2PbbUmTPVuzEmT+G0QDr1x8="},"rails_admin/colorpicker/custom_rgb_b-22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31.png":{"logical_path":"rails_admin/colorpicker/custom_rgb_b.png","mtime":"2017-07-15T18:44:40+00:00","size":722,"digest":"22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31","integrity":"sha256-IvLaGBDNnaGKH5NBi49FvTy2dqqXkK1eGro3d5+zrDE="},"rails_admin/colorpicker/custom_hsb_h-df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_h.png","mtime":"2017-07-15T18:44:40+00:00","size":711,"digest":"df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3","integrity":"sha256-3wHtuApxDN2dkFcgHqpoKoyGzYCtbGkp8dSpGCrWrtM="},"rails_admin/colorpicker/custom_hsb_s-9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_s.png","mtime":"2017-07-15T18:44:40+00:00","size":845,"digest":"9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706","integrity":"sha256-knfz/Z63m67yOE97OJaBhP1A1jECQUnHtBVDt3lsBwY="},"rails_admin/colorpicker/custom_hsb_b-7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b.png":{"logical_path":"rails_admin/colorpicker/custom_hsb_b.png","mtime":"2017-07-15T18:44:40+00:00","size":795,"digest":"7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b","integrity":"sha256-cWC1/VxXeRAsuR93G4DvJiHavhC/Bug1nerv7OgxtYs="},"rails_admin/colorpicker/custom_submit-3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5.png":{"logical_path":"rails_admin/colorpicker/custom_submit.png","mtime":"2017-07-15T18:44:40+00:00","size":791,"digest":"3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5","integrity":"sha256-Ole62Hj21gi5mONqzv4jJdeG1GMavuzF1ADKXAYvXOU="},"fontawesome-webfont-50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1.eot":{"logical_path":"fontawesome-webfont.eot","mtime":"2016-11-14T04:38:51+00:00","size":76518,"digest":"50bbe9192697e791e2ee4ef73917aeb1b03e727dff08a1fc8d74f00e4aa812e1","integrity":"sha256-ULvpGSaX55Hi7k73OReusbA+cn3/CKH8jXTwDkqoEuE="},"fontawesome-webfont-7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73.woff2":{"logical_path":"fontawesome-webfont.woff2","mtime":"2016-11-14T04:38:51+00:00","size":71896,"digest":"7dacf83f51179de8d7980a513e67ab3a08f2c6272bb5946df8fd77c0d1763b73","integrity":"sha256-faz4P1EXnejXmApRPmerOgjyxicrtZRt+P13wNF2O3M="},"fontawesome-webfont-adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c.woff":{"logical_path":"fontawesome-webfont.woff","mtime":"2016-11-14T04:38:51+00:00","size":90412,"digest":"adbc4f95eb6d7f2738959cf0ecbc374672fce47e856050a8e9791f457623ac2c","integrity":"sha256-rbxPlettfyc4lZzw7Lw3RnL85H6FYFCo6XkfRXYjrCw="},"fontawesome-webfont-ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912.ttf":{"logical_path":"fontawesome-webfont.ttf","mtime":"2016-11-14T04:38:51+00:00","size":152796,"digest":"ae19e2e4c04f2b04bf030684c4c1db8faf5c8fe3ee03d1e0c409046608b38912","integrity":"sha256-rhni5MBPKwS/AwaExMHbj69cj+PuA9HgxAkEZgiziRI="},"fontawesome-webfont-8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae.svg":{"logical_path":"fontawesome-webfont.svg","mtime":"2016-11-14T04:38:51+00:00","size":391622,"digest":"8e3586389bb4cd01b3f85bb3b622739bde6627f28bba63a020c223ca9cf1b9ae","integrity":"sha256-jjWGOJu0zQGz+FuztiJzm95mJ/KLumOgIMIjypzxua4="},"rails_admin/jquery.colorpicker-65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf.js":{"logical_path":"rails_admin/jquery.colorpicker.js","mtime":"2016-11-14T04:38:52+00:00","size":18773,"digest":"65a540a6a8e61569a39a37bd1456543ae5e5bbe48868247372bed40a1dff2bcf","integrity":"sha256-ZaVApqjmFWmjmje9FFZUOuXlu+SIaCRzcr7UCh3/K88="},"rails_admin/jquery.colorpicker-ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c.css":{"logical_path":"rails_admin/jquery.colorpicker.css","mtime":"2016-11-14T04:38:52+00:00","size":7295,"digest":"ba46621a3e148479231cc7f255b1afb7052ce3a41493c50636edafe761e6b11c","integrity":"sha256-ukZiGj4UhHkjHMfyVbGvtwUs46QUk8UGNu2v52HmsRw="},"proximanova-2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1.ttf":{"logical_path":"proximanova.ttf","mtime":"2017-07-03T01:35:40+00:00","size":51648,"digest":"2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1","integrity":"sha256-LXfNLfUs6+PR64cRqaudBBj+zbND04Qc+dT+4h5k6bE="},"ewb-sfp-logo-d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf.png":{"logical_path":"ewb-sfp-logo.png","mtime":"2017-07-03T01:35:40+00:00","size":26458,"digest":"d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf","integrity":"sha256-1QNfFpCWj71qWFvSjTEDFx7QY8i8Nw11oiLS4b6XDc8="},"application-f2204fdd0647c4d627dc20817b4e6d83d2105c231955d3922f5c708ba69035bb.js":{"logical_path":"application.js","mtime":"2016-11-14T08:32:56+00:00","size":992213,"digest":"f2204fdd0647c4d627dc20817b4e6d83d2105c231955d3922f5c708ba69035bb","integrity":"sha256-8iBP3QZHxNYn3CCBe05tg9IQXCMZVdOSL1xwi6aQNbs="},"application-c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630.css":{"logical_path":"application.css","mtime":"2016-11-14T07:32:23+00:00","size":266990,"digest":"c72f927db3f060dc6d9e86ad3fee9dca351cbecd5dffc15ba6d037539c59c630","integrity":"sha256-xy+SfbPwYNxtnoatP+6dyjUcvs1d/8FbptA3U5xZxjA="},"application-e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5.js":{"logical_path":"application.js","mtime":"2016-11-14T10:05:09+00:00","size":972143,"digest":"e5dc5e60f13ee0ab7e586d54cacdcdfbc8f23ac8f7f1adfc3a983ce44fa917e5","integrity":"sha256-5dxeYPE+4Kt+WG1Uys3N+8jyOsj38a38Opg85E+pF+U="},"rails_admin/rails_admin-7433259f8b06edf85f74c06ff05334ae846740d790fa940aa06cd820680d275d.js":{"logical_path":"rails_admin/rails_admin.js","mtime":"2017-07-18T01:11:12+00:00","size":550971,"digest":"7433259f8b06edf85f74c06ff05334ae846740d790fa940aa06cd820680d275d","integrity":"sha256-dDMln4sG7fhfdMBv8FM0roRnQNeQ+pQKoGzYIGgNJ10="},"rails_admin/rails_admin-5e56168b8a6d559383c73157b0eeb860a5065d4a8f5a168ed531a4608990c234.css":{"logical_path":"rails_admin/rails_admin.css","mtime":"2017-07-18T01:11:12+00:00","size":184491,"digest":"5e56168b8a6d559383c73157b0eeb860a5065d4a8f5a168ed531a4608990c234","integrity":"sha256-XlYWi4ptVZODxzFXsO64YKUGXUqPWhaO1TGkYImQwjQ="},"fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot":{"logical_path":"fontawesome-webfont.eot","mtime":"2017-07-15T18:44:38+00:00","size":165742,"digest":"7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979","integrity":"sha256-e/yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk="},"fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2":{"logical_path":"fontawesome-webfont.woff2","mtime":"2017-07-15T18:44:38+00:00","size":77160,"digest":"2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe","integrity":"sha256-Kt78vAQefRj88tQXh53FoJmXqmTWdbejxLbOM9oT8/4="},"fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff":{"logical_path":"fontawesome-webfont.woff","mtime":"2017-07-15T18:44:38+00:00","size":98024,"digest":"ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07","integrity":"sha256-ugxZ3rVFD1y0Gz+TYJ7i0NmVQVh33foiPoqKdTNHTwc="},"fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf":{"logical_path":"fontawesome-webfont.ttf","mtime":"2017-07-15T18:44:38+00:00","size":165548,"digest":"aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8","integrity":"sha256-qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg="},"fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg":{"logical_path":"fontawesome-webfont.svg","mtime":"2017-07-15T18:44:38+00:00","size":444379,"digest":"ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4","integrity":"sha256-rWFXkmwWIrpOHQPUePFUE2hSS/xG9R5C/g2UX37zI+Q="},"rails_admin/jquery.colorpicker-aeb6c9e7214d3f2107b27be9b879a17b72b7f42f3f410bae9eb8e0d5f8fcf9d9.js":{"logical_path":"rails_admin/jquery.colorpicker.js","mtime":"2017-07-15T18:44:40+00:00","size":10411,"digest":"aeb6c9e7214d3f2107b27be9b879a17b72b7f42f3f410bae9eb8e0d5f8fcf9d9","integrity":"sha256-rrbJ5yFNPyEHsnvpuHmhe3K39C8/QQuunrjg1fj8+dk="},"rails_admin/jquery.colorpicker-17a04cd55ca585e49dd291bbe9ff1c5dc7ebefc092eac763d85512eba90f4821.css":{"logical_path":"rails_admin/jquery.colorpicker.css","mtime":"2017-07-15T18:44:40+00:00","size":4202,"digest":"17a04cd55ca585e49dd291bbe9ff1c5dc7ebefc092eac763d85512eba90f4821","integrity":"sha256-F6BM1VylheSd0pG76f8cXcfr78CS6sdj2FUS66kPSCE="},"main1-ce7842c6f5117e4e8c8b84803e560466590d70b52b8a56ed1a20536387000649.png":{"logical_path":"main1.png","mtime":"2017-07-18T01:11:12+00:00","size":115937,"digest":"ce7842c6f5117e4e8c8b84803e560466590d70b52b8a56ed1a20536387000649","integrity":"sha256-znhCxvURfk6Mi4SAPlYEZlkNcLUrilbtGiBTY4cABkk="},"main2-81eba1fb59738754a61af7ddbb8a0fa807b81325227525049e74be37c27465b1.png":{"logical_path":"main2.png","mtime":"2017-07-18T01:11:12+00:00","size":120939,"digest":"81eba1fb59738754a61af7ddbb8a0fa807b81325227525049e74be37c27465b1","integrity":"sha256-geuh+1lzh1SmGvfdu4oPqAe4EyUidSUEnnS+N8J0ZbE="},"main3-015d07d3d7e7eba8aac81d6457782ea2e71e5ed5a4b807356490777996de2498.png":{"logical_path":"main3.png","mtime":"2017-07-18T01:11:12+00:00","size":84758,"digest":"015d07d3d7e7eba8aac81d6457782ea2e71e5ed5a4b807356490777996de2498","integrity":"sha256-AV0H09fn66iqyB1kV3guouceXtWkuAc1ZJB3eZbeJJg="},"application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js":{"logical_path":"application.js","mtime":"2017-07-18T01:11:12+00:00","size":545543,"digest":"231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08","integrity":"sha256-Ixxi6yCUNaZ5j8k/TvymBJlvcf65oER1fuptndmgKwg="},"application-83aa794b7b146afdb9a893750bf5287e65e0e67f5eb4f971f072c3a565c2c3e3.css":{"logical_path":"application.css","mtime":"2017-07-18T01:11:12+00:00","size":2913,"digest":"83aa794b7b146afdb9a893750bf5287e65e0e67f5eb4f971f072c3a565c2c3e3","integrity":"sha256-g6p5S3sUav25qJN1C/UofmXg5n9etPlx8HLDpWXCw+M="},"greyzz-52f4bd54c3e5eb29a6cd5aa2f3336117e268fa10994cdc47a1a7f12cbc28a8c9.png":{"logical_path":"greyzz.png","mtime":"2017-07-03T01:35:40+00:00","size":6084,"digest":"52f4bd54c3e5eb29a6cd5aa2f3336117e268fa10994cdc47a1a7f12cbc28a8c9","integrity":"sha256-UvS9VMPl6ymmzVqi8zNhF+Jo+hCZTNxHoafxLLwoqMk="},"rails_admin/bootstrap/glyphicons-halflings-white-c5007cc31a9a80308ad8fc678cf7e92d7d2d205d8000a59866c12b37f10b0013.png":{"logical_path":"rails_admin/bootstrap/glyphicons-halflings-white.png","mtime":"2017-07-15T18:44:40+00:00","size":8728,"digest":"c5007cc31a9a80308ad8fc678cf7e92d7d2d205d8000a59866c12b37f10b0013","integrity":"sha256-xQB8wxqagDCK2PxnjPfpLX0tIF2AAKWYZsErN/ELABM="},"rails_admin/bootstrap/glyphicons-halflings-d8f698f711889b597570752ec3dd9d5df2633ffcccbed4f549a6163d81ecd818.png":{"logical_path":"rails_admin/bootstrap/glyphicons-halflings.png","mtime":"2017-07-15T18:44:40+00:00","size":12600,"digest":"d8f698f711889b597570752ec3dd9d5df2633ffcccbed4f549a6163d81ecd818","integrity":"sha256-2PaY9xGIm1l1cHUuw92dXfJjP/zMvtT1SaYWPYHs2Bg="},"rails_admin/bullet_black-b7235a2da3e96f46a9c751ebca0645f36814b91a6d6f348b02be338c74ad6ff5.png":{"logical_path":"rails_admin/bullet_black.png","mtime":"2017-07-15T18:44:40+00:00","size":150,"digest":"b7235a2da3e96f46a9c751ebca0645f36814b91a6d6f348b02be338c74ad6ff5","integrity":"sha256-tyNaLaPpb0apx1HrygZF82gUuRptbzSLAr4zjHStb/U="},"rails_admin/bullet_white-1e2cfd722d716b7ded9dd1b0f7e9705b3b69cd59e7ff4133509a9de3e8ae8789.png":{"logical_path":"rails_admin/bullet_white.png","mtime":"2017-07-15T18:44:40+00:00","size":140,"digest":"1e2cfd722d716b7ded9dd1b0f7e9705b3b69cd59e7ff4133509a9de3e8ae8789","integrity":"sha256-Hiz9ci1xa33tndGw9+lwWztpzVnn/0EzUJqd4+iuh4k="},"rails_admin/calendar-36e14adbcda9a98ebe5bd007d4f4ee2da589a7d5dbcbf71fd7b6fa25dff58b1c.png":{"logical_path":"rails_admin/calendar.png","mtime":"2017-07-15T18:44:40+00:00","size":596,"digest":"36e14adbcda9a98ebe5bd007d4f4ee2da589a7d5dbcbf71fd7b6fa25dff58b1c","integrity":"sha256-NuFK282pqY6+W9AH1PTuLaWJp9Xby/cf17b6Jd/1ixw="},"rails_admin/clock-8f855a8769c00034992805bb16fe7d8c58f498729c0e425d330a992fd0fd87cd.png":{"logical_path":"rails_admin/clock.png","mtime":"2017-07-15T18:44:40+00:00","size":800,"digest":"8f855a8769c00034992805bb16fe7d8c58f498729c0e425d330a992fd0fd87cd","integrity":"sha256-j4Vah2nAADSZKAW7Fv59jFj0mHKcDkJdMwqZL9D9h80="},"rails_admin/colorpicker/colorpicker_background-5dc685918f94b564efe5b37fdedb99413fb2f56d038b29fb3d9b59989cb7fa30.png":{"logical_path":"rails_admin/colorpicker/colorpicker_background.png","mtime":"2017-07-15T18:44:40+00:00","size":1550,"digest":"5dc685918f94b564efe5b37fdedb99413fb2f56d038b29fb3d9b59989cb7fa30","integrity":"sha256-XcaFkY+UtWTv5bN/3tuZQT+y9W0Diyn7PZtZmJy3+jA="},"rails_admin/colorpicker/colorpicker_hex-8aa461c8348958c5338be86542d84d7744ff71a9c268f47d8106c3e4a56f821b.png":{"logical_path":"rails_admin/colorpicker/colorpicker_hex.png","mtime":"2017-07-15T18:44:40+00:00","size":361,"digest":"8aa461c8348958c5338be86542d84d7744ff71a9c268f47d8106c3e4a56f821b","integrity":"sha256-iqRhyDSJWMUzi+hlQthNd0T/canCaPR9gQbD5KVvghs="},"rails_admin/colorpicker/colorpicker_hsb_b-b41d1e159cf33b8c41dbde656c5f2c25d43a6c43487275e581014d4eb9997724.png":{"logical_path":"rails_admin/colorpicker/colorpicker_hsb_b.png","mtime":"2017-07-15T18:44:40+00:00","size":748,"digest":"b41d1e159cf33b8c41dbde656c5f2c25d43a6c43487275e581014d4eb9997724","integrity":"sha256-tB0eFZzzO4xB295lbF8sJdQ6bENIcnXlgQFNTrmZdyQ="},"rails_admin/colorpicker/colorpicker_hsb_h-92af49202aba35419db6d23a0cc5d86dc303eb3b93d25294d92fc7ad65530635.png":{"logical_path":"rails_admin/colorpicker/colorpicker_hsb_h.png","mtime":"2017-07-15T18:44:40+00:00","size":737,"digest":"92af49202aba35419db6d23a0cc5d86dc303eb3b93d25294d92fc7ad65530635","integrity":"sha256-kq9JICq6NUGdttI6DMXYbcMD6zuT0lKU2S/HrWVTBjU="},"rails_admin/colorpicker/colorpicker_hsb_s-57a99dad7075e5d4e2d056aa7f8af74ebc09d88dac6b9575b43fb9807afc492a.png":{"logical_path":"rails_admin/colorpicker/colorpicker_hsb_s.png","mtime":"2017-07-15T18:44:40+00:00","size":786,"digest":"57a99dad7075e5d4e2d056aa7f8af74ebc09d88dac6b9575b43fb9807afc492a","integrity":"sha256-V6mdrXB15dTi0Faqf4r3TrwJ2I2sa5V1tD+5gHr8SSo="},"rails_admin/colorpicker/colorpicker_indic-a6d6b9fd877155781ffd2f08c0fc32135093000653181cccce5070ace89cf453.gif":{"logical_path":"rails_admin/colorpicker/colorpicker_indic.gif","mtime":"2017-07-15T18:44:40+00:00","size":85,"digest":"a6d6b9fd877155781ffd2f08c0fc32135093000653181cccce5070ace89cf453","integrity":"sha256-pta5/YdxVXgf/S8IwPwyE1CTAAZTGBzMzlBwrOic9FM="},"rails_admin/colorpicker/colorpicker_rgb_b-a0e453946728dd84f0d7034765a9ece3cbba0d34b1b9f64ddba588da6f51640e.png":{"logical_path":"rails_admin/colorpicker/colorpicker_rgb_b.png","mtime":"2017-07-15T18:44:40+00:00","size":749,"digest":"a0e453946728dd84f0d7034765a9ece3cbba0d34b1b9f64ddba588da6f51640e","integrity":"sha256-oORTlGco3YTw1wNHZans48u6DTSxufZN26WI2m9RZA4="},"rails_admin/colorpicker/colorpicker_rgb_g-eb69a1025a7fcee713e7c2ace7cdf15f49e2f69626877a67a04d82c9e72c8691.png":{"logical_path":"rails_admin/colorpicker/colorpicker_rgb_g.png","mtime":"2017-07-15T18:44:40+00:00","size":805,"digest":"eb69a1025a7fcee713e7c2ace7cdf15f49e2f69626877a67a04d82c9e72c8691","integrity":"sha256-62mhAlp/zucT58Ks583xX0ni9pYmh3pnoE2CyecshpE="},"rails_admin/colorpicker/colorpicker_rgb_r-f30bcb7d61767ab99f7ba8218bfafb536558104ac88ff9817429e8d6dace3d1d.png":{"logical_path":"rails_admin/colorpicker/colorpicker_rgb_r.png","mtime":"2017-07-15T18:44:40+00:00","size":761,"digest":"f30bcb7d61767ab99f7ba8218bfafb536558104ac88ff9817429e8d6dace3d1d","integrity":"sha256-8wvLfWF2ermfe6ghi/r7U2VYEErIj/mBdCno1trOPR0="},"rails_admin/colorpicker/colorpicker_submit-1fc662963883872cd6e0061d83aea1ba428894d2baeb730b16ce555f458cd4cf.png":{"logical_path":"rails_admin/colorpicker/colorpicker_submit.png","mtime":"2017-07-15T18:44:40+00:00","size":750,"digest":"1fc662963883872cd6e0061d83aea1ba428894d2baeb730b16ce555f458cd4cf","integrity":"sha256-H8ZiljiDhyzW4AYdg66hukKIlNK663MLFs5VX0WM1M8="},"rails_admin/colorpicker/select-d8094cb7e821a5303d07de49e112fc3924a786e5ea337e2124a9cfcc8b25cd72.png":{"logical_path":"rails_admin/colorpicker/select.png","mtime":"2017-07-15T18:44:40+00:00","size":253,"digest":"d8094cb7e821a5303d07de49e112fc3924a786e5ea337e2124a9cfcc8b25cd72","integrity":"sha256-2AlMt+ghpTA9B95J4RL8OSSnhuXqM34hJKnPzIslzXI="},"rails_admin/colorpicker/slider-4390ddaed657d5ce9f87423e32b5f93b07a84f47bdb66716e4f38654394e7474.png":{"logical_path":"rails_admin/colorpicker/slider.png","mtime":"2017-07-15T18:44:40+00:00","size":235,"digest":"4390ddaed657d5ce9f87423e32b5f93b07a84f47bdb66716e4f38654394e7474","integrity":"sha256-Q5DdrtZX1c6fh0I+MrX5OweoT0e9tmcW5POGVDlOdHQ="},"rails_admin/logo-15a34fba049a986902dc27d5e55fefb86e37d4084b765b917486d5621bad1156.png":{"logical_path":"rails_admin/logo.png","mtime":"2017-07-15T18:44:40+00:00","size":942,"digest":"15a34fba049a986902dc27d5e55fefb86e37d4084b765b917486d5621bad1156","integrity":"sha256-FaNPugSamGkC3CfV5V/vuG431AhLdluRdIbVYhutEVY="},"rails_admin/magnifier-88692f99f21f1f23c25becf583fcd0f7ee942d7828677ba6b5813c98e8a71b5d.png":{"logical_path":"rails_admin/magnifier.png","mtime":"2017-07-15T18:44:40+00:00","size":319,"digest":"88692f99f21f1f23c25becf583fcd0f7ee942d7828677ba6b5813c98e8a71b5d","integrity":"sha256-iGkvmfIfHyPCW+z1g/zQ9+6ULXgoZ3umtYE8mOinG10="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-9a8492a580bf85d3e98ae8861fbd45567e5a1f83eeafcf9574da0399d5f602ab.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00: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":"2017-07-15T18:44:37+00:00","size":4369,"digest":"1e32c6dbf5d3fd342f27a78aa881550d6412aa207f48468724a6a15402b6041b","integrity":"sha256-HjLG2/XT/TQvJ6eKqIFVDWQSqiB/SEaHJKahVAK2BBs="},"rails_admin/rails_admin-7176b61f7d55f3a57ca160196e7f3edb0331e19ce4f16a1f7b83eb35a554267e.js":{"logical_path":"rails_admin/rails_admin.js","mtime":"2017-07-24T21:13:10+00:00","size":1185059,"digest":"7176b61f7d55f3a57ca160196e7f3edb0331e19ce4f16a1f7b83eb35a554267e","integrity":"sha256-cXa2H31V86V8oWAZbn8+2wMx4Zzk8Wofe4PrNaVUJn4="},"rails_admin/rails_admin-3b6bee78c9cde98ac8ca4c25099a7f84851c4f4ced283e28483f41ae704ee593.css":{"logical_path":"rails_admin/rails_admin.css","mtime":"2017-07-24T21:13:10+00:00","size":528916,"digest":"3b6bee78c9cde98ac8ca4c25099a7f84851c4f4ced283e28483f41ae704ee593","integrity":"sha256-O2vueMnN6YrIykwlCZp/hIUcT0ztKD4oSD9BrnBO5ZM="},"rails_admin/jquery.colorpicker-3a18b8912af93099a30d1cf8f47c1084f093d1d208863a218e28f098f64dbf78.js":{"logical_path":"rails_admin/jquery.colorpicker.js","mtime":"2017-07-15T18:44:40+00:00","size":18775,"digest":"3a18b8912af93099a30d1cf8f47c1084f093d1d208863a218e28f098f64dbf78","integrity":"sha256-Ohi4kSr5MJmjDRz49HwQhPCT0dIIhjohjijwmPZNv3g="},"rails_admin/jquery.colorpicker-a4d52d1f47b3d88143fb19bed1fbbe4c1f72324eb68fbfd8574c8bd713244cf8.css":{"logical_path":"rails_admin/jquery.colorpicker.css","mtime":"2017-07-15T18:44:40+00:00","size":7295,"digest":"a4d52d1f47b3d88143fb19bed1fbbe4c1f72324eb68fbfd8574c8bd713244cf8","integrity":"sha256-pNUtH0ez2IFD+xm+0fu+TB9yMk62j7/YV0yL1xMkTPg="},"application-c91d3ceb3a48896ac7e15d90c4bc3262cd0dcd05c474ebe5df45a972b539d194.js":{"logical_path":"application.js","mtime":"2017-07-24T21:13:10+00:00","size":1098594,"digest":"c91d3ceb3a48896ac7e15d90c4bc3262cd0dcd05c474ebe5df45a972b539d194","integrity":"sha256-yR086zpIiWrH4V2QxLwyYs0NzQXEdOvl30WpcrU50ZQ="},"application-7d503d0a6221f338fe42252d354c7a04b18ab4405c2b969f83c9ee7d64b2b1d0.css":{"logical_path":"application.css","mtime":"2017-07-24T21:13:10+00:00","size":12736,"digest":"7d503d0a6221f338fe42252d354c7a04b18ab4405c2b969f83c9ee7d64b2b1d0","integrity":"sha256-fVA9CmIh8zj+QiUtNUx6BLGKtEBcK5afg8nufWSysdA="}},"assets":{"rails_admin/rails_admin.js":"rails_admin/rails_admin-7176b61f7d55f3a57ca160196e7f3edb0331e19ce4f16a1f7b83eb35a554267e.js","rails_admin/rails_admin.css":"rails_admin/rails_admin-3b6bee78c9cde98ac8ca4c25099a7f84851c4f4ced283e28483f41ae704ee593.css","rails_admin/aristo/images/bg_fallback.png":"rails_admin/aristo/images/bg_fallback-bad53cee26694a42bdba717337e2de9f997ebf3ded300b8c3ff48ac5192c1903.png","rails_admin/aristo/images/ui-icons_222222_256x240.png":"rails_admin/aristo/images/ui-icons_222222_256x240-310ae73efc6774716f0a80ce2141565fddec51702330a8066fd5e220437ae321.png","rails_admin/aristo/images/ui-icons_454545_256x240.png":"rails_admin/aristo/images/ui-icons_454545_256x240-d59c6da436d1a19aa35bcbf2d400ad160f2b2568fbbfa2f9ebfc192d14025474.png","rails_admin/aristo/images/icon_sprite.png":"rails_admin/aristo/images/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png","rails_admin/aristo/images/slider_handles.png":"rails_admin/aristo/images/slider_handles-4b523f3d1bd18af5fec23ec7d58ed85e4c7e8f4685fe85a8407e2d9017bf6484.png","rails_admin/aristo/images/progress_bar.gif":"rails_admin/aristo/images/progress_bar-a2ed712d76dcffc7a06918cd389511bca2cf7bb91c12b1d865bf44c7b2c46289.gif","rails_admin/multiselect/icon_sprite.png":"rails_admin/multiselect/icon_sprite-34a30806fcba43a2effc9739cb7a370a865199a7d38bfcbc7c2474ef3ff70ded.png","rails_admin/multiselect/ui-icon-circle-triangle-n-light.png":"rails_admin/multiselect/ui-icon-circle-triangle-n-light-e7daf3169259a9fd6b8177b8e89ff2b964cd3dababd580a46d7fb4eecc07763b.png","rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png":"rails_admin/multiselect/ui-icon-circle-triangle-n-dark-bb53269e44173a496d2620bad201ca838a57b67c40b3439b5ce89345ef9e888b.png","rails_admin/multiselect/ui-icon-circle-triangle-s-light.png":"rails_admin/multiselect/ui-icon-circle-triangle-s-light-e1698d37f37f7db85ce6736810a34b1a229306be8a3f3be156fbaa47dd6cd160.png","rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png":"rails_admin/multiselect/ui-icon-circle-triangle-s-dark-2bf097798e2b1db766a16ff4f335d3fe94bd51f92dc2ddf47c8a370ba31189c0.png","rails_admin/colorpicker/select2.png":"rails_admin/colorpicker/select2-8ddf680d1a86d603653e43f694bbb6dc1010aa81f5c0c9c87181e10e064e503b.png","rails_admin/colorpicker/custom_background.png":"rails_admin/colorpicker/custom_background-52967b595ae718ad95520b9cf2b22551fb8cb0d81a171db869b00d2b604b4976.png","rails_admin/colorpicker/colorpicker_overlay.png":"rails_admin/colorpicker/colorpicker_overlay-ba21ab85c59167b61af508e34a22ee344c97bb11454d287a47691fa2fb182856.png","rails_admin/colorpicker/colorpicker_select.gif":"rails_admin/colorpicker/colorpicker_select-980ae86d6aab751f6f67a1191d78c0fa54b533583456b905ec43b34d5806ee2d.gif","rails_admin/colorpicker/custom_indic.gif":"rails_admin/colorpicker/custom_indic-8ca62ee85015e67671f2312a2fead633740335f65e254d8f4c3ea29b99f62de7.gif","rails_admin/colorpicker/custom_hex.png":"rails_admin/colorpicker/custom_hex-4b1a7b08312edc3732cf30c7d8d5291abea41c64311c3d05d67a586cbe3dcf37.png","rails_admin/colorpicker/custom_rgb_r.png":"rails_admin/colorpicker/custom_rgb_r-54289ccad89df00514d84ba6d16d1a0abc0d61de95dcfc054bf2202e238a7cb6.png","rails_admin/colorpicker/custom_rgb_g.png":"rails_admin/colorpicker/custom_rgb_g-8ab4d41c46fc26080b75eecc6f8c25d8f6db5264cf56ecc4993f86d100ebd71f.png","rails_admin/colorpicker/custom_rgb_b.png":"rails_admin/colorpicker/custom_rgb_b-22f2da1810cd9da18a1f93418b8f45bd3cb676aa9790ad5e1aba37779fb3ac31.png","rails_admin/colorpicker/custom_hsb_h.png":"rails_admin/colorpicker/custom_hsb_h-df01edb80a710cdd9d9057201eaa682a8c86cd80ad6c6929f1d4a9182ad6aed3.png","rails_admin/colorpicker/custom_hsb_s.png":"rails_admin/colorpicker/custom_hsb_s-9277f3fd9eb79baef2384f7b38968184fd40d631024149c7b41543b7796c0706.png","rails_admin/colorpicker/custom_hsb_b.png":"rails_admin/colorpicker/custom_hsb_b-7160b5fd5c5779102cb91f771b80ef2621dabe10bf06e8359deaefece831b58b.png","rails_admin/colorpicker/custom_submit.png":"rails_admin/colorpicker/custom_submit-3a57bad878f6d608b998e36acefe2325d786d4631abeecc5d400ca5c062f5ce5.png","fontawesome-webfont.eot":"fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot","fontawesome-webfont.woff2":"fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2","fontawesome-webfont.woff":"fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff","fontawesome-webfont.ttf":"fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf","fontawesome-webfont.svg":"fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg","rails_admin/jquery.colorpicker.js":"rails_admin/jquery.colorpicker-3a18b8912af93099a30d1cf8f47c1084f093d1d208863a218e28f098f64dbf78.js","rails_admin/jquery.colorpicker.css":"rails_admin/jquery.colorpicker-a4d52d1f47b3d88143fb19bed1fbbe4c1f72324eb68fbfd8574c8bd713244cf8.css","proximanova.ttf":"proximanova-2d77cd2df52cebe3d1eb8711a9ab9d0418fecdb343d3841cf9d4fee21e64e9b1.ttf","ewb-sfp-logo.png":"ewb-sfp-logo-d5035f1690968fbd6a585bd28d3103171ed063c8bc370d75a222d2e1be970dcf.png","application.js":"application-c91d3ceb3a48896ac7e15d90c4bc3262cd0dcd05c474ebe5df45a972b539d194.js","application.css":"application-7d503d0a6221f338fe42252d354c7a04b18ab4405c2b969f83c9ee7d64b2b1d0.css","main1.png":"main1-ce7842c6f5117e4e8c8b84803e560466590d70b52b8a56ed1a20536387000649.png","main2.png":"main2-81eba1fb59738754a61af7ddbb8a0fa807b81325227525049e74be37c27465b1.png","main3.png":"main3-015d07d3d7e7eba8aac81d6457782ea2e71e5ed5a4b807356490777996de2498.png","greyzz.png":"greyzz-52f4bd54c3e5eb29a6cd5aa2f3336117e268fa10994cdc47a1a7f12cbc28a8c9.png","rails_admin/bootstrap/glyphicons-halflings-white.png":"rails_admin/bootstrap/glyphicons-halflings-white-c5007cc31a9a80308ad8fc678cf7e92d7d2d205d8000a59866c12b37f10b0013.png","rails_admin/bootstrap/glyphicons-halflings.png":"rails_admin/bootstrap/glyphicons-halflings-d8f698f711889b597570752ec3dd9d5df2633ffcccbed4f549a6163d81ecd818.png","rails_admin/bullet_black.png":"rails_admin/bullet_black-b7235a2da3e96f46a9c751ebca0645f36814b91a6d6f348b02be338c74ad6ff5.png","rails_admin/bullet_white.png":"rails_admin/bullet_white-1e2cfd722d716b7ded9dd1b0f7e9705b3b69cd59e7ff4133509a9de3e8ae8789.png","rails_admin/calendar.png":"rails_admin/calendar-36e14adbcda9a98ebe5bd007d4f4ee2da589a7d5dbcbf71fd7b6fa25dff58b1c.png","rails_admin/clock.png":"rails_admin/clock-8f855a8769c00034992805bb16fe7d8c58f498729c0e425d330a992fd0fd87cd.png","rails_admin/colorpicker/colorpicker_background.png":"rails_admin/colorpicker/colorpicker_background-5dc685918f94b564efe5b37fdedb99413fb2f56d038b29fb3d9b59989cb7fa30.png","rails_admin/colorpicker/colorpicker_hex.png":"rails_admin/colorpicker/colorpicker_hex-8aa461c8348958c5338be86542d84d7744ff71a9c268f47d8106c3e4a56f821b.png","rails_admin/colorpicker/colorpicker_hsb_b.png":"rails_admin/colorpicker/colorpicker_hsb_b-b41d1e159cf33b8c41dbde656c5f2c25d43a6c43487275e581014d4eb9997724.png","rails_admin/colorpicker/colorpicker_hsb_h.png":"rails_admin/colorpicker/colorpicker_hsb_h-92af49202aba35419db6d23a0cc5d86dc303eb3b93d25294d92fc7ad65530635.png","rails_admin/colorpicker/colorpicker_hsb_s.png":"rails_admin/colorpicker/colorpicker_hsb_s-57a99dad7075e5d4e2d056aa7f8af74ebc09d88dac6b9575b43fb9807afc492a.png","rails_admin/colorpicker/colorpicker_indic.gif":"rails_admin/colorpicker/colorpicker_indic-a6d6b9fd877155781ffd2f08c0fc32135093000653181cccce5070ace89cf453.gif","rails_admin/colorpicker/colorpicker_rgb_b.png":"rails_admin/colorpicker/colorpicker_rgb_b-a0e453946728dd84f0d7034765a9ece3cbba0d34b1b9f64ddba588da6f51640e.png","rails_admin/colorpicker/colorpicker_rgb_g.png":"rails_admin/colorpicker/colorpicker_rgb_g-eb69a1025a7fcee713e7c2ace7cdf15f49e2f69626877a67a04d82c9e72c8691.png","rails_admin/colorpicker/colorpicker_rgb_r.png":"rails_admin/colorpicker/colorpicker_rgb_r-f30bcb7d61767ab99f7ba8218bfafb536558104ac88ff9817429e8d6dace3d1d.png","rails_admin/colorpicker/colorpicker_submit.png":"rails_admin/colorpicker/colorpicker_submit-1fc662963883872cd6e0061d83aea1ba428894d2baeb730b16ce555f458cd4cf.png","rails_admin/colorpicker/select.png":"rails_admin/colorpicker/select-d8094cb7e821a5303d07de49e112fc3924a786e5ea337e2124a9cfcc8b25cd72.png","rails_admin/colorpicker/slider.png":"rails_admin/colorpicker/slider-4390ddaed657d5ce9f87423e32b5f93b07a84f47bdb66716e4f38654394e7474.png","rails_admin/logo.png":"rails_admin/logo-15a34fba049a986902dc27d5e55fefb86e37d4084b765b917486d5621bad1156.png","rails_admin/magnifier.png":"rails_admin/magnifier-88692f99f21f1f23c25becf583fcd0f7ee942d7828677ba6b5813c98e8a71b5d.png","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"}}
\ No newline at end of file
diff --git a/public/assets/application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js b/public/assets/application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js
new file mode 100644
index 0000000..985d83e
--- /dev/null
+++ b/public/assets/application-231c62eb209435a6798fc93f4efca604996f71feb9a044757eea6d9dd9a02b08.js
@@ -0,0 +1,17 @@
+if(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 i(t){var e=!!t&&"length"in t&&t.length,i=pt.type(t);return"function"!==i&&!pt.isWindow(t)&&("array"===i||0===e||"number"==typeof e&&e>0&&e-1 in t)}function n(t,e,i){if(pt.isFunction(e))return pt.grep(t,function(t,n){return!!e.call(t,n,t)!==i});if(e.nodeType)return pt.grep(t,function(t){return t===e!==i});if("string"==typeof e){if(kt.test(e))return pt.filter(e,t,i);e=pt.filter(e,t)}return pt.grep(t,function(t){return pt.inArray(t,e)>-1!==i})}function s(t,e){do{t=t[e]}while(t&&1!==t.nodeType);return t}function o(t){var e={};return pt.each(t.match(Et)||[],function(t,i){e[i]=!0}),e}function r(){nt.addEventListener?(nt.removeEventListener("DOMContentLoaded",a),t.removeEventListener("load",a)):(nt.detachEvent("onreadystatechange",a),t.detachEvent("onload",a))}function a(){(nt.addEventListener||"load"===t.event.type||"complete"===nt.readyState)&&(r(),pt.ready())}function l(t,e,i){if(i===undefined&&1===t.nodeType){var n="data-"+e.replace(Ot,"-$1").toLowerCase();if("string"==typeof(i=t.getAttribute(n))){try{i="true"===i||"false"!==i&&("null"===i?null:+i+""===i?+i:Nt.test(i)?pt.parseJSON(i):i)}catch(t){}pt.data(t,e,i)}else i=undefined}return i}function h(t){var e;for(e in t)if(("data"!==e||!pt.isEmptyObject(t[e]))&&"toJSON"!==e)return!1;return!0}function u(t,e,i,n){if(It(t)){var s,o,r=pt.expando,a=t.nodeType,l=a?pt.cache:t,h=a?t[r]:t[r]&&r;if(h&&l[h]&&(n||l[h].data)||i!==undefined||"string"!=typeof e)return h||(h=a?t[r]=it.pop()||pt.guid++:r),l[h]||(l[h]=a?{}:{toJSON:pt.noop}),"object"!=typeof e&&"function"!=typeof e||(n?l[h]=pt.extend(l[h],e):l[h].data=pt.extend(l[h].data,e)),o=l[h],n||(o.data||(o.data={}),o=o.data),i!==undefined&&(o[pt.camelCase(e)]=i),"string"==typeof e?null==(s=o[e])&&(s=o[pt.camelCase(e)]):s=o,s}}function c(t,e,i){if(It(t)){var n,s,o=t.nodeType,r=o?pt.cache:t,a=o?t[pt.expando]:pt.expando;if(r[a]){if(e&&(n=i?r[a]:r[a].data)){pt.isArray(e)?e=e.concat(pt.map(e,pt.camelCase)):e in n?e=[e]:(e=pt.camelCase(e),e=e in n?[e]:e.split(" ")),s=e.length;for(;s--;)delete n[e[s]];if(i?!h(n):!pt.isEmptyObject(n))return}(i||(delete r[a].data,h(r[a])))&&(o?pt.cleanData([t],!0):ct.deleteExpando||r!=r.window?delete r[a]:r[a]=undefined)}}}function d(t,e,i,n){var s,o=1,r=20,a=n?function(){return n.cur()}:function(){return pt.css(t,e,"")},l=a(),h=i&&i[3]||(pt.cssNumber[e]?"":"px"),u=(pt.cssNumber[e]||"px"!==h&&+l)&&Ht.exec(pt.css(t,e));if(u&&u[3]!==h){h=h||u[3],i=i||[],u=+l||1;do{o=o||".5",u/=o,pt.style(t,e,u+h)}while(o!==(o=a()/l)&&1!==o&&--r)}return i&&(u=+u||+l||0,s=i[1]?u+(i[1]+1)*i[2]:+i[2],n&&(n.unit=h,n.start=u,n.end=s)),s}function p(t){var e=Bt.split("|"),i=t.createDocumentFragment();if(i.createElement)for(;e.length;)i.createElement(e.pop());return i}function f(t,e){var i,n,s=0,o="undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e||"*"):"undefined"!=typeof t.querySelectorAll?t.querySelectorAll(e||"*"):undefined;if(!o)for(o=[],i=t.childNodes||t;null!=(n=i[s]);s++)!e||pt.nodeName(n,e)?o.push(n):pt.merge(o,f(n,e));return e===undefined||e&&pt.nodeName(t,e)?pt.merge([t],o):o}function m(t,e){for(var i,n=0;null!=(i=t[n]);n++)pt._data(i,"globalEval",!e||pt._data(e[n],"globalEval"))}function g(t){Wt.test(t.type)&&(t.defaultChecked=t.checked)}function v(t,e,i,n,s){for(var o,r,a,l,h,u,c,d=t.length,v=p(e),y=[],b=0;b
"!==c[1]||Yt.test(r)?0:l:l.firstChild,o=r&&r.childNodes.length;o--;)pt.nodeName(u=r.childNodes[o],"tbody")&&!u.childNodes.length&&r.removeChild(u);for(pt.merge(y,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=v.lastChild}else y.push(e.createTextNode(r));for(l&&v.removeChild(l),ct.appendChecked||pt.grep(f(y,"input"),g),b=0;r=y[b++];)if(n&&pt.inArray(r,n)>-1)s&&s.push(r);else if(a=pt.contains(r.ownerDocument,r),l=f(v.appendChild(r),"script"),a&&m(l),i)for(o=0;r=l[o++];)zt.test(r.type||"")&&i.push(r);return l=null,v}function y(){return!0}function b(){return!1}function _(){try{return nt.activeElement}catch(t){}}function w(t,e,i,n,s,o){var r,a;if("object"==typeof e){"string"!=typeof i&&(n=n||i,i=undefined);for(a in e)w(t,a,i,n,e[a],o);return t}if(null==n&&null==s?(s=i,n=i=undefined):null==s&&("string"==typeof i?(s=n,n=undefined):(s=n,n=i,i=undefined)),!1===s)s=b;else if(!s)return t;return 1===o&&(r=s,s=function(t){return pt().off(t),r.apply(this,arguments)},s.guid=r.guid||(r.guid=pt.guid++)),t.each(function(){pt.event.add(this,e,s,n,i)})}function C(t,e){return pt.nodeName(t,"table")&&pt.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function k(t){return t.type=(null!==pt.find.attr(t,"type"))+"/"+t.type,t}function D(t){var e=ne.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function T(t,e){if(1===e.nodeType&&pt.hasData(t)){var i,n,s,o=pt._data(t),r=pt._data(e,o),a=o.events;if(a){delete r.handle,r.events={};for(i in a)for(n=0,s=a[i].length;n1&&"string"==typeof p&&!ct.checkClone&&ie.test(p))return t.each(function(s){var o=t.eq(s);m&&(e[0]=p.call(this,s,o.html())),x(o,e,i,n)});if(c&&(h=v(e,t[0].ownerDocument,!1,t,n),s=h.firstChild,1===h.childNodes.length&&(h=s),s||n)){for(a=pt.map(f(h,"script"),k),r=a.length;u ")).appendTo(e.documentElement),e=(ae[0].contentWindow||ae[0].contentDocument).document,e.write(),e.close(),i=A(t,e),ae.detach()),le[t]=i),i}function I(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}function N(t){if(t in ke)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),i=Ce.length;i--;)if((t=Ce[i]+e)in ke)return t}function O(t,e){for(var i,n,s,o=[],r=0,a=t.length;r=0&&i=0},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},isPlainObject:function(t){var e;if(!t||"object"!==pt.type(t)||t.nodeType||pt.isWindow(t))return!1;try{if(t.constructor&&!ut.call(t,"constructor")&&!ut.call(t.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}if(!ct.ownFirst)for(e in t)return ut.call(t,e);for(e in t);return e===undefined||ut.call(t,e)},type:function(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?lt[ht.call(t)]||"object":typeof t},globalEval:function(e){e&&pt.trim(e)&&(t.execScript||function(e){t.eval.call(t,e)})(e)},camelCase:function(t){return t.replace(mt,"ms-").replace(gt,vt)},nodeName:function(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()},each:function(t,e){var n,s=0;if(i(t))for(n=t.length;sC.cacheLength&&delete t[e.shift()],t[i+" "]=n}var e=[];return t}function n(t){return t[W]=!0,t}function s(t){var e=N.createElement("div");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function o(t,e){for(var i=t.split("|"),n=i.length;n--;)C.attrHandle[i[n]]=e}function r(t,e){var i=e&&t,n=i&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||J)-(~t.sourceIndex||J);if(n)return n;if(i)for(;i=i.nextSibling;)if(i===e)return-1;return t?1:-1}function a(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function l(t){return function(e){var i=e.nodeName.toLowerCase();return("input"===i||"button"===i)&&e.type===t}}function h(t){return n(function(e){return e=+e,n(function(i,n){for(var s,o=t([],i.length,e),r=o.length;r--;)i[s=o[r]]&&(i[s]=!(n[s]=i[s]))})})}function u(t){return t&&"undefined"!=typeof t.getElementsByTagName&&t}function c(){}function d(t){for(var e=0,i=t.length,n="";e1?function(e,i,n){for(var s=t.length;s--;)if(!t[s](e,i,n))return!1;return!0}:t[0]}function m(t,i,n){for(var s=0,o=i.length;s-1&&(n[h]=!(r[h]=c))}}else b=g(b===r?b.splice(f,b.length):b),o?o(null,r,b,l):$.apply(r,b)})}function y(t){for(var e,i,n,s=t.length,o=C.relative[t[0].type],r=o||C.relative[" "],a=o?1:0,l=p(function(t){return t===e},r,!0),h=p(function(t){return tt(e,t)>-1},r,!0),u=[function(t,i,n){var s=!o&&(n||i!==E)||((e=i).nodeType?l(t,i,n):h(t,i,n));return e=null,s}];a1&&f(u),a>1&&d(t.slice(0,a-1).concat({value:" "===t[a-2].type?"*":""})).replace(at,"$1"),i,a0,o=t.length>0,r=function(n,r,a,l,h){var u,c,d,p=0,f="0",m=n&&[],v=[],y=E,b=n||o&&C.find.TAG("*",h),_=z+=null==y?1:Math.random()||.1,w=b.length;for(h&&(E=r===N||r||h);f!==w&&null!=(u=b[f]);f++){if(o&&u){for(c=0,r||u.ownerDocument===N||(I(u),a=!P);d=t[c++];)if(d(u,r||N,a)){l.push(u);break}h&&(z=_)}s&&((u=!d&&u)&&p--,n&&m.push(u))}if(p+=f,s&&f!==p){for(c=0;d=i[c++];)d(m,v,r,a);if(n){if(p>0)for(;f--;)m[f]||v[f]||(v[f]=G.call(l));v=g(v)}$.apply(l,v),h&&!n&&v.length>0&&p+i.length>1&&e.uniqueSort(l)}return h&&(z=_,E=y),m};return s?n(r):r}var _,w,C,k,D,T,S,x,E,A,M,I,N,O,P,H,L,j,F,W="sizzle"+1*new Date,R=t.document,z=0,q=0,B=i(),U=i(),V=i(),Y=function(t,e){return t===e&&(M=!0),0},J=1<<31,Q={}.hasOwnProperty,K=[],G=K.pop,X=K.push,$=K.push,Z=K.slice,tt=function(t,e){for(var i=0,n=t.length;i+~]|"+it+")"+it+"*"),ut=new RegExp("="+it+"*([^\\]'\"]*?)"+it+"*\\]","g"),ct=new RegExp(ot),dt=new RegExp("^"+nt+"$"),pt={ID:new RegExp("^#("+nt+")"),CLASS:new RegExp("^\\.("+nt+")"),TAG:new RegExp("^("+nt+"|[*])"),ATTR:new RegExp("^"+st),PSEUDO:new RegExp("^"+ot),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+it+"*(even|odd|(([+-]|)(\\d*)n|)"+it+"*(?:([+-]|)"+it+"*(\\d+)|))"+it+"*\\)|)","i"),bool:new RegExp("^(?:"+et+")$","i"),needsContext:new RegExp("^"+it+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+it+"*((?:-\\d)?\\d*)"+it+"*\\)|)(?=[^-]|$)","i")},ft=/^(?:input|select|textarea|button)$/i,mt=/^h\d$/i,gt=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,bt=/'|\\/g,_t=new RegExp("\\\\([\\da-f]{1,6}"+it+"?|("+it+")|.)","ig"),wt=function(t,e,i){var n="0x"+e-65536;return n!==n||i?e:n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320)},Ct=function(){I()};try{$.apply(K=Z.call(R.childNodes),R.childNodes),K[R.childNodes.length].nodeType}catch(t){$={apply:K.length?function(t,e){X.apply(t,Z.call(e))}:function(t,e){for(var i=t.length,n=0;t[i++]=e[n++];);t.length=i-1}}}w=e.support={},D=e.isXML=function(t){var e=t&&(t.ownerDocument||t).documentElement;return!!e&&"HTML"!==e.nodeName},I=e.setDocument=function(t){var e,i,n=t?t.ownerDocument||t:R;return n!==N&&9===n.nodeType&&n.documentElement?(N=n,O=N.documentElement,P=!D(N),(i=N.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",Ct,!1):i.attachEvent&&i.attachEvent("onunload",Ct)),w.attributes=s(function(t){return t.className="i",!t.getAttribute("className")}),w.getElementsByTagName=s(function(t){return t.appendChild(N.createComment("")),!t.getElementsByTagName("*").length}),w.getElementsByClassName=gt.test(N.getElementsByClassName),w.getById=s(function(t){return O.appendChild(t).id=W,!N.getElementsByName||!N.getElementsByName(W).length}),w.getById?(C.find.ID=function(t,e){if("undefined"!=typeof e.getElementById&&P){var i=e.getElementById(t);return i?[i]:[]}},C.filter.ID=function(t){var e=t.replace(_t,wt);return function(t){return t.getAttribute("id")===e}}):(delete C.find.ID,C.filter.ID=function(t){var e=t.replace(_t,wt);return function(t){var i="undefined"!=typeof t.getAttributeNode&&t.getAttributeNode("id");return i&&i.value===e}}),C.find.TAG=w.getElementsByTagName?function(t,e){return"undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t):w.qsa?e.querySelectorAll(t):void 0}:function(t,e){var i,n=[],s=0,o=e.getElementsByTagName(t);if("*"===t){for(;i=o[s++];)1===i.nodeType&&n.push(i);return n}return o},C.find.CLASS=w.getElementsByClassName&&function(t,e){if("undefined"!=typeof e.getElementsByClassName&&P)return e.getElementsByClassName(t)},L=[],H=[],(w.qsa=gt.test(N.querySelectorAll))&&(s(function(t){O.appendChild(t).innerHTML=" ",t.querySelectorAll("[msallowcapture^='']").length&&H.push("[*^$]="+it+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||H.push("\\["+it+"*(?:value|"+et+")"),t.querySelectorAll("[id~="+W+"-]").length||H.push("~="),t.querySelectorAll(":checked").length||H.push(":checked"),t.querySelectorAll("a#"+W+"+*").length||H.push(".#.+[+~]")}),s(function(t){var e=N.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&H.push("name"+it+"*[*^$|!~]?="),t.querySelectorAll(":enabled").length||H.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),H.push(",.*:")})),(w.matchesSelector=gt.test(j=O.matches||O.webkitMatchesSelector||O.mozMatchesSelector||O.oMatchesSelector||O.msMatchesSelector))&&s(function(t){w.disconnectedMatch=j.call(t,"div"),j.call(t,"[s!='']:x"),L.push("!=",ot)}),H=H.length&&new RegExp(H.join("|")),L=L.length&&new RegExp(L.join("|")),e=gt.test(O.compareDocumentPosition),F=e||gt.test(O.contains)?function(t,e){var i=9===t.nodeType?t.documentElement:t,n=e&&e.parentNode;return t===n||!(!n||1!==n.nodeType||!(i.contains?i.contains(n):t.compareDocumentPosition&&16&t.compareDocumentPosition(n)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},Y=e?function(t,e){if(t===e)return M=!0,0;var i=!t.compareDocumentPosition-!e.compareDocumentPosition;return i||(i=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1,1&i||!w.sortDetached&&e.compareDocumentPosition(t)===i?t===N||t.ownerDocument===R&&F(R,t)?-1:e===N||e.ownerDocument===R&&F(R,e)?1:A?tt(A,t)-tt(A,e):0:4&i?-1:1)}:function(t,e){if(t===e)return M=!0,0;var i,n=0,s=t.parentNode,o=e.parentNode,a=[t],l=[e];if(!s||!o)return t===N?-1:e===N?1:s?-1:o?1:A?tt(A,t)-tt(A,e):0;if(s===o)return r(t,e);for(i=t;i=i.parentNode;)a.unshift(i);for(i=e;i=i.parentNode;)l.unshift(i);for(;a[n]===l[n];)n++;return n?r(a[n],l[n]):a[n]===R?-1:l[n]===R?1:0},N):N},e.matches=function(t,i){return e(t,null,null,i)},e.matchesSelector=function(t,i){if((t.ownerDocument||t)!==N&&I(t),i=i.replace(ut,"='$1']"),w.matchesSelector&&P&&!V[i+" "]&&(!L||!L.test(i))&&(!H||!H.test(i)))try{var n=j.call(t,i);if(n||w.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){}return e(i,N,null,[t]).length>0},e.contains=function(t,e){return(t.ownerDocument||t)!==N&&I(t),F(t,e)},e.attr=function(t,e){(t.ownerDocument||t)!==N&&I(t);var i=C.attrHandle[e.toLowerCase()],n=i&&Q.call(C.attrHandle,e.toLowerCase())?i(t,e,!P):undefined;return n!==undefined?n:w.attributes||!P?t.getAttribute(e):(n=t.getAttributeNode(e))&&n.specified?n.value:null},e.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},e.uniqueSort=function(t){var e,i=[],n=0,s=0;if(M=!w.detectDuplicates,A=!w.sortStable&&t.slice(0),t.sort(Y),M){for(;e=t[s++];)e===t[s]&&(n=i.push(s));for(;n--;)t.splice(i[n],1)}return A=null,t},k=e.getText=function(t){var e,i="",n=0,s=t.nodeType;if(s){if(1===s||9===s||11===s){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)i+=k(t)}else if(3===s||4===s)return t.nodeValue}else for(;e=t[n++];)i+=k(e);return i},C=e.selectors={cacheLength:50,createPseudo:n,match:pt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(_t,wt),t[3]=(t[3]||t[4]||t[5]||"").replace(_t,wt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(t){var e,i=!t[6]&&t[2];return pt.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":i&&ct.test(i)&&(e=T(i,!0))&&(e=i.indexOf(")",i.length-e)-i.length)&&(t[0]=t[0].slice(0,e),t[2]=i.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(_t,wt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=B[t+" "];return e||(e=new RegExp("(^|"+it+")"+t+"("+it+"|$)"))&&B(t,function(t){return e.test("string"==typeof t.className&&t.className||"undefined"!=typeof t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,i,n){return function(s){var o=e.attr(s,t);return null==o?"!="===i:!i||(o+="","="===i?o===n:"!="===i?o!==n:"^="===i?n&&0===o.indexOf(n):"*="===i?n&&o.indexOf(n)>-1:"$="===i?n&&o.slice(-n.length)===n:"~="===i?(" "+o.replace(rt," ")+" ").indexOf(n)>-1:"|="===i&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,i,n,s){var o="nth"!==t.slice(0,3),r="last"!==t.slice(-4),a="of-type"===e;return 1===n&&0===s?function(t){return!!t.parentNode}:function(e,i,l){var h,u,c,d,p,f,m=o!==r?"nextSibling":"previousSibling",g=e.parentNode,v=a&&e.nodeName.toLowerCase(),y=!l&&!a,b=!1;if(g){if(o){for(;m;){for(d=e;d=d[m];)if(a?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;f=m="only"===t&&!f&&"nextSibling"}return!0}if(f=[r?g.firstChild:g.lastChild],r&&y){for(d=g,c=d[W]||(d[W]={}),u=c[d.uniqueID]||(c[d.uniqueID]={}),h=u[t]||[],p=h[0]===z&&h[1],b=p&&h[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(b=p=0)||f.pop();)if(1===d.nodeType&&++b&&d===e){u[t]=[z,p,b];break}}else if(y&&(d=e,c=d[W]||(d[W]={}),u=c[d.uniqueID]||(c[d.uniqueID]={}),h=u[t]||[],p=h[0]===z&&h[1],b=p),!1===b)for(;(d=++p&&d&&d[m]||(b=p=0)||f.pop())&&((a?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++b||(y&&(c=d[W]||(d[W]={}),u=c[d.uniqueID]||(c[d.uniqueID]={}),u[t]=[z,b]),d!==e)););return(b-=s)===n||b%n==0&&b/n>=0}}},PSEUDO:function(t,i){var s,o=C.pseudos[t]||C.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[W]?o(i):o.length>1?(s=[t,t,"",i],C.setFilters.hasOwnProperty(t.toLowerCase())?n(function(t,e){for(var n,s=o(t,i),r=s.length;r--;)n=tt(t,s[r]),t[n]=!(e[n]=s[r])
+}):function(t){return o(t,0,s)}):o}},pseudos:{not:n(function(t){var e=[],i=[],s=S(t.replace(at,"$1"));return s[W]?n(function(t,e,i,n){for(var o,r=s(t,null,n,[]),a=t.length;a--;)(o=r[a])&&(t[a]=!(e[a]=o))}):function(t,n,o){return e[0]=t,s(e,null,o,i),e[0]=null,!i.pop()}}),has:n(function(t){return function(i){return e(t,i).length>0}}),contains:n(function(t){return t=t.replace(_t,wt),function(e){return(e.textContent||e.innerText||k(e)).indexOf(t)>-1}}),lang:n(function(t){return dt.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(_t,wt).toLowerCase(),function(e){var i;do{if(i=P?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(i=i.toLowerCase())===t||0===i.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var i=t.location&&t.location.hash;return i&&i.slice(1)===e.id},root:function(t){return t===O},focus:function(t){return t===N.activeElement&&(!N.hasFocus||N.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:function(t){return!1===t.disabled},disabled:function(t){return!0===t.disabled},checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!C.pseudos.empty(t)},header:function(t){return mt.test(t.nodeName)},input:function(t){return ft.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:h(function(){return[0]}),last:h(function(t,e){return[e-1]}),eq:h(function(t,e,i){return[i<0?i+e:i]}),even:h(function(t,e){for(var i=0;i=0;)t.push(n);return t}),gt:h(function(t,e,i){for(var n=i<0?i+e:i;++n2&&"ID"===(r=o[0]).type&&w.getById&&9===e.nodeType&&P&&C.relative[o[1].type]){if(!(e=(C.find.ID(r.matches[0].replace(_t,wt),e)||[])[0]))return i;h&&(e=e.parentNode),t=t.slice(o.shift().value.length)}for(s=pt.needsContext.test(t)?0:o.length;s--&&(r=o[s],!C.relative[a=r.type]);)if((l=C.find[a])&&(n=l(r.matches[0].replace(_t,wt),yt.test(o[0].type)&&u(e.parentNode)||e))){if(o.splice(s,1),!(t=n.length&&d(o)))return $.apply(i,n),i;break}}return(h||S(t,c))(n,e,!P,i,!e||yt.test(t)&&u(e.parentNode)||e),i},w.sortStable=W.split("").sort(Y).join("")===W,w.detectDuplicates=!!M,I(),w.sortDetached=s(function(t){return 1&t.compareDocumentPosition(N.createElement("div"))}),s(function(t){return t.innerHTML=" ","#"===t.firstChild.getAttribute("href")})||o("type|href|height|width",function(t,e,i){if(!i)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),w.attributes&&s(function(t){return t.innerHTML=" ",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||o("value",function(t,e,i){if(!i&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),s(function(t){return null==t.getAttribute("disabled")})||o(et,function(t,e,i){var n;if(!i)return!0===t[e]?e.toLowerCase():(n=t.getAttributeNode(e))&&n.specified?n.value:null}),e}(t);pt.find=yt,pt.expr=yt.selectors,pt.expr[":"]=pt.expr.pseudos,pt.uniqueSort=pt.unique=yt.uniqueSort,pt.text=yt.getText,pt.isXMLDoc=yt.isXML,pt.contains=yt.contains;var bt=function(t,e,i){for(var n=[],s=i!==undefined;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(s&&pt(t).is(i))break;n.push(t)}return n},_t=function(t,e){for(var i=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&i.push(t);return i},wt=pt.expr.match.needsContext,Ct=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,kt=/^.[^:#\[\.,]*$/;pt.filter=function(t,e,i){var n=e[0];return i&&(t=":not("+t+")"),1===e.length&&1===n.nodeType?pt.find.matchesSelector(n,t)?[n]:[]:pt.find.matches(t,pt.grep(e,function(t){return 1===t.nodeType}))},pt.fn.extend({find:function(t){var e,i=[],n=this,s=n.length;if("string"!=typeof t)return this.pushStack(pt(t).filter(function(){for(e=0;e1?pt.unique(i):i),i.selector=this.selector?this.selector+" "+t:t,i},filter:function(t){return this.pushStack(n(this,t||[],!1))},not:function(t){return this.pushStack(n(this,t||[],!0))},is:function(t){return!!n(this,"string"==typeof t&&wt.test(t)?pt(t):t||[],!1).length}});var Dt,Tt=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;(pt.fn.init=function(t,e,i){var n,s;if(!t)return this;if(i=i||Dt,"string"==typeof t){if(!(n="<"===t.charAt(0)&&">"===t.charAt(t.length-1)&&t.length>=3?[null,t,null]:Tt.exec(t))||!n[1]&&e)return!e||e.jquery?(e||i).find(t):this.constructor(e).find(t);if(n[1]){if(e=e instanceof pt?e[0]:e,pt.merge(this,pt.parseHTML(n[1],e&&e.nodeType?e.ownerDocument||e:nt,!0)),Ct.test(n[1])&&pt.isPlainObject(e))for(n in e)pt.isFunction(this[n])?this[n](e[n]):this.attr(n,e[n]);return this}if((s=nt.getElementById(n[2]))&&s.parentNode){if(s.id!==n[2])return Dt.find(t);this.length=1,this[0]=s}return this.context=nt,this.selector=t,this}return t.nodeType?(this.context=this[0]=t,this.length=1,this):pt.isFunction(t)?"undefined"!=typeof i.ready?i.ready(t):t(pt):(t.selector!==undefined&&(this.selector=t.selector,this.context=t.context),pt.makeArray(t,this))}).prototype=pt.fn,Dt=pt(nt);var St=/^(?:parents|prev(?:Until|All))/,xt={children:!0,contents:!0,next:!0,prev:!0};pt.fn.extend({has:function(t){var e,i=pt(t,this),n=i.length;return this.filter(function(){for(e=0;e-1:1===i.nodeType&&pt.find.matchesSelector(i,t))){o.push(i);break}return this.pushStack(o.length>1?pt.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?pt.inArray(this[0],pt(t)):pt.inArray(t.jquery?t[0]:t,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(pt.uniqueSort(pt.merge(this.get(),pt(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),pt.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return bt(t,"parentNode")},parentsUntil:function(t,e,i){return bt(t,"parentNode",i)},next:function(t){return s(t,"nextSibling")},prev:function(t){return s(t,"previousSibling")},nextAll:function(t){return bt(t,"nextSibling")},prevAll:function(t){return bt(t,"previousSibling")},nextUntil:function(t,e,i){return bt(t,"nextSibling",i)},prevUntil:function(t,e,i){return bt(t,"previousSibling",i)},siblings:function(t){return _t((t.parentNode||{}).firstChild,t)},children:function(t){return _t(t.firstChild)},contents:function(t){return pt.nodeName(t,"iframe")?t.contentDocument||t.contentWindow.document:pt.merge([],t.childNodes)}},function(t,e){pt.fn[t]=function(i,n){var s=pt.map(this,e,i);return"Until"!==t.slice(-5)&&(n=i),n&&"string"==typeof n&&(s=pt.filter(n,s)),this.length>1&&(xt[t]||(s=pt.uniqueSort(s)),St.test(t)&&(s=s.reverse())),this.pushStack(s)}});var Et=/\S+/g;pt.Callbacks=function(t){t="string"==typeof t?o(t):pt.extend({},t);var e,i,n,s,r=[],a=[],l=-1,h=function(){for(s=t.once,n=e=!0;a.length;l=-1)for(i=a.shift();++l-1;)r.splice(i,1),i<=l&&l--}),this},has:function(t){return t?pt.inArray(t,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return s=a=[],r=i="",this},disabled:function(){return!r},lock:function(){return s=!0,i||u.disable(),this},locked:function(){return!!s},fireWith:function(t,i){return s||(i=i||[],i=[t,i.slice?i.slice():i],a.push(i),e||h()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!n}};return u},pt.extend({Deferred:function(t){var e=[["resolve","done",pt.Callbacks("once memory"),"resolved"],["reject","fail",pt.Callbacks("once memory"),"rejected"],["notify","progress",pt.Callbacks("memory")]],i="pending",n={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},then:function(){var t=arguments;return pt.Deferred(function(i){pt.each(e,function(e,o){var r=pt.isFunction(t[e])&&t[e];s[o[1]](function(){var t=r&&r.apply(this,arguments);t&&pt.isFunction(t.promise)?t.promise().progress(i.notify).done(i.resolve).fail(i.reject):i[o[0]+"With"](this===n?i.promise():this,r?[t]:arguments)})}),t=null}).promise()},promise:function(t){return null!=t?pt.extend(t,n):n}},s={};return n.pipe=n.then,pt.each(e,function(t,o){var r=o[2],a=o[3];n[o[1]]=r.add,a&&r.add(function(){i=a},e[1^t][2].disable,e[2][2].lock),s[o[0]]=function(){return s[o[0]+"With"](this===s?n:this,arguments),this},s[o[0]+"With"]=r.fireWith}),n.promise(s),t&&t.call(s,s),s},when:function(t){var e,i,n,s=0,o=st.call(arguments),r=o.length,a=1!==r||t&&pt.isFunction(t.promise)?r:0,l=1===a?t:pt.Deferred(),h=function(t,i,n){return function(s){i[t]=this,n[t]=arguments.length>1?st.call(arguments):s,n===e?l.notifyWith(i,n):--a||l.resolveWith(i,n)}};if(r>1)for(e=new Array(r),i=new Array(r),n=new Array(r);s0||(At.resolveWith(nt,[pt]),pt.fn.triggerHandler&&(pt(nt).triggerHandler("ready"),pt(nt).off("ready"))))}}),pt.ready.promise=function(e){if(!At)if(At=pt.Deferred(),"complete"===nt.readyState||"loading"!==nt.readyState&&!nt.documentElement.doScroll)t.setTimeout(pt.ready);else if(nt.addEventListener)nt.addEventListener("DOMContentLoaded",a),t.addEventListener("load",a);else{nt.attachEvent("onreadystatechange",a),t.attachEvent("onload",a);var i=!1;try{i=null==t.frameElement&&nt.documentElement}catch(t){}i&&i.doScroll&&function e(){if(!pt.isReady){try{i.doScroll("left")}catch(i){return t.setTimeout(e,50)}r(),pt.ready()}}()}return At.promise(e)},pt.ready.promise();var Mt;for(Mt in pt(ct))break;ct.ownFirst="0"===Mt,ct.inlineBlockNeedsLayout=!1,pt(function(){var t,e,i,n;(i=nt.getElementsByTagName("body")[0])&&i.style&&(e=nt.createElement("div"),n=nt.createElement("div"),n.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",i.appendChild(n).appendChild(e),"undefined"!=typeof e.style.zoom&&(e.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",ct.inlineBlockNeedsLayout=t=3===e.offsetWidth,t&&(i.style.zoom=1)),i.removeChild(n))}),function(){var t=nt.createElement("div");ct.deleteExpando=!0;try{delete t.test}catch(t){ct.deleteExpando=!1}t=null}();var It=function(t){var e=pt.noData[(t.nodeName+" ").toLowerCase()],i=+t.nodeType||1;return(1===i||9===i)&&(!e||!0!==e&&t.getAttribute("classid")===e)},Nt=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Ot=/([A-Z])/g;pt.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(t){return!!(t=t.nodeType?pt.cache[t[pt.expando]]:t[pt.expando])&&!h(t)},data:function(t,e,i){return u(t,e,i)},removeData:function(t,e){return c(t,e)},_data:function(t,e,i){return u(t,e,i,!0)},_removeData:function(t,e){return c(t,e,!0)}}),pt.fn.extend({data:function(t,e){var i,n,s,o=this[0],r=o&&o.attributes;if(t===undefined){if(this.length&&(s=pt.data(o),1===o.nodeType&&!pt._data(o,"parsedAttrs"))){for(i=r.length;i--;)r[i]&&(n=r[i].name,0===n.indexOf("data-")&&(n=pt.camelCase(n.slice(5)),l(o,n,s[n])));pt._data(o,"parsedAttrs",!0)}return s}return"object"==typeof t?this.each(function(){pt.data(this,t)}):arguments.length>1?this.each(function(){pt.data(this,t,e)}):o?l(o,t,pt.data(o,t)):undefined},removeData:function(t){return this.each(function(){pt.removeData(this,t)})}}),pt.extend({queue:function(t,e,i){var n;if(t)return e=(e||"fx")+"queue",n=pt._data(t,e),i&&(!n||pt.isArray(i)?n=pt._data(t,e,pt.makeArray(i)):n.push(i)),n||[]},dequeue:function(t,e){e=e||"fx";var i=pt.queue(t,e),n=i.length,s=i.shift(),o=pt._queueHooks(t,e),r=function(){pt.dequeue(t,e)};"inprogress"===s&&(s=i.shift(),n--),s&&("fx"===e&&i.unshift("inprogress"),delete o.stop,s.call(t,r,o)),!n&&o&&o.empty.fire()},_queueHooks:function(t,e){var i=e+"queueHooks";return pt._data(t,i)||pt._data(t,i,{empty:pt.Callbacks("once memory").add(function(){pt._removeData(t,e+"queue"),pt._removeData(t,i)})})}}),pt.fn.extend({queue:function(t,e){var i=2;return"string"!=typeof t&&(e=t,t="fx",i--),arguments.lengtha ",ct.leadingWhitespace=3===t.firstChild.nodeType,ct.tbody=!t.getElementsByTagName("tbody").length,ct.htmlSerialize=!!t.getElementsByTagName("link").length,ct.html5Clone="<:nav>"!==nt.createElement("nav").cloneNode(!0).outerHTML,i.type="checkbox",i.checked=!0,e.appendChild(i),ct.appendChecked=i.checked,t.innerHTML="",ct.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,e.appendChild(t),i=nt.createElement("input"),i.setAttribute("type","radio"),i.setAttribute("checked","checked"),i.setAttribute("name","t"),t.appendChild(i),ct.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,ct.noCloneEvent=!!t.addEventListener,t[pt.expando]=1,ct.attributes=!t.getAttribute(pt.expando)}();var Ut={option:[1,""," "],legend:[1,""," "],area:[1,""," "],param:[1,""," "],thead:[1,""],tr:[2,""],col:[2,""],td:[3,""],_default:ct.htmlSerialize?[0,"",""]:[1,"X","
"]};Ut.optgroup=Ut.option,Ut.tbody=Ut.tfoot=Ut.colgroup=Ut.caption=Ut.thead,Ut.th=Ut.td;var Vt=/<|?\w+;/,Yt=/-1&&(f=p.split("."),p=f.shift(),f.sort()),r=p.indexOf(":")<0&&"on"+p,e=e[pt.expando]?e:new pt.Event(p,"object"==typeof e&&e),e.isTrigger=s?2:3,e.namespace=f.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=undefined,e.target||(e.target=n),i=null==i?[e]:pt.makeArray(i,[e]),h=pt.event.special[p]||{},s||!h.trigger||!1!==h.trigger.apply(n,i))){if(!s&&!h.noBubble&&!pt.isWindow(n)){for(l=h.delegateType||p,Gt.test(l+p)||(a=a.parentNode);a;a=a.parentNode)d.push(a),u=a;u===(n.ownerDocument||nt)&&d.push(u.defaultView||u.parentWindow||t)}for(c=0;(a=d[c++])&&!e.isPropagationStopped();)e.type=c>1?l:h.bindType||p,o=(pt._data(a,"events")||{})[e.type]&&pt._data(a,"handle"),o&&o.apply(a,i),(o=r&&a[r])&&o.apply&&It(a)&&(e.result=o.apply(a,i),!1===e.result&&e.preventDefault());if(e.type=p,!s&&!e.isDefaultPrevented()&&(!h._default||!1===h._default.apply(d.pop(),i))&&It(n)&&r&&n[p]&&!pt.isWindow(n)){u=n[r],u&&(n[r]=null),pt.event.triggered=p;try{n[p]()}catch(t){}pt.event.triggered=undefined,u&&(n[r]=u)}return e.result}},dispatch:function(t){t=pt.event.fix(t);var e,i,n,s,o,r=[],a=st.call(arguments),l=(pt._data(this,"events")||{})[t.type]||[],h=pt.event.special[t.type]||{};if(a[0]=t,t.delegateTarget=this,!h.preDispatch||!1!==h.preDispatch.call(this,t)){for(r=pt.event.handlers.call(this,t,l),e=0;(s=r[e++])&&!t.isPropagationStopped();)for(t.currentTarget=s.elem,i=0;(o=s.handlers[i++])&&!t.isImmediatePropagationStopped();)t.rnamespace&&!t.rnamespace.test(o.namespace)||(t.handleObj=o,t.data=o.data,(n=((pt.event.special[o.origType]||{}).handle||o.handler).apply(s.elem,a))!==undefined&&!1===(t.result=n)&&(t.preventDefault(),t.stopPropagation()));return h.postDispatch&&h.postDispatch.call(this,t),t.result}},handlers:function(t,e){var i,n,s,o,r=[],a=e.delegateCount,l=t.target;if(a&&l.nodeType&&("click"!==t.type||isNaN(t.button)||t.button<1))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(!0!==l.disabled||"click"!==t.type)){for(n=[],i=0;i-1:pt.find(s,this,null,[l]).length),n[s]&&n.push(o);n.length&&r.push({elem:l,handlers:n})}return a ]","i"),te=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,ee=/