sidecar_token_auth 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +13 -0
  3. data/README.md +12 -0
  4. data/Rakefile +42 -0
  5. data/app/controllers/devise_token_auth/application_controller.rb +79 -0
  6. data/app/controllers/devise_token_auth/concerns/resource_finder.rb +44 -0
  7. data/app/controllers/devise_token_auth/concerns/set_user_by_token.rb +162 -0
  8. data/app/controllers/devise_token_auth/confirmations_controller.rb +90 -0
  9. data/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb +287 -0
  10. data/app/controllers/devise_token_auth/passwords_controller.rb +206 -0
  11. data/app/controllers/devise_token_auth/registrations_controller.rb +283 -0
  12. data/app/controllers/devise_token_auth/sessions_controller.rb +245 -0
  13. data/app/controllers/devise_token_auth/token_validations_controller.rb +31 -0
  14. data/app/controllers/devise_token_auth/unlocks_controller.rb +89 -0
  15. data/app/models/devise_token_auth/concerns/active_record_support.rb +16 -0
  16. data/app/models/devise_token_auth/concerns/confirmable_support.rb +28 -0
  17. data/app/models/devise_token_auth/concerns/mongoid_support.rb +19 -0
  18. data/app/models/devise_token_auth/concerns/tokens_serialization.rb +19 -0
  19. data/app/models/devise_token_auth/concerns/user.rb +257 -0
  20. data/app/models/devise_token_auth/concerns/user_omniauth_callbacks.rb +31 -0
  21. data/app/validators/devise_token_auth_email_validator.rb +23 -0
  22. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  23. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  24. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  25. data/app/views/devise_token_auth/omniauth_external_window.html.erb +38 -0
  26. data/config/locales/da-DK.yml +52 -0
  27. data/config/locales/de.yml +51 -0
  28. data/config/locales/en.yml +60 -0
  29. data/config/locales/es.yml +51 -0
  30. data/config/locales/fr.yml +51 -0
  31. data/config/locales/he.yml +52 -0
  32. data/config/locales/it.yml +48 -0
  33. data/config/locales/ja.yml +48 -0
  34. data/config/locales/ko.yml +51 -0
  35. data/config/locales/nl.yml +32 -0
  36. data/config/locales/pl.yml +51 -0
  37. data/config/locales/pt-BR.yml +48 -0
  38. data/config/locales/pt.yml +51 -0
  39. data/config/locales/ro.yml +48 -0
  40. data/config/locales/ru.yml +52 -0
  41. data/config/locales/sq.yml +48 -0
  42. data/config/locales/sv.yml +52 -0
  43. data/config/locales/uk.yml +61 -0
  44. data/config/locales/vi.yml +52 -0
  45. data/config/locales/zh-CN.yml +48 -0
  46. data/config/locales/zh-HK.yml +50 -0
  47. data/config/locales/zh-TW.yml +50 -0
  48. data/lib/devise_token_auth.rb +14 -0
  49. data/lib/devise_token_auth/blacklist.rb +2 -0
  50. data/lib/devise_token_auth/controllers/helpers.rb +157 -0
  51. data/lib/devise_token_auth/controllers/url_helpers.rb +10 -0
  52. data/lib/devise_token_auth/engine.rb +96 -0
  53. data/lib/devise_token_auth/errors.rb +8 -0
  54. data/lib/devise_token_auth/rails/routes.rb +116 -0
  55. data/lib/devise_token_auth/token_factory.rb +126 -0
  56. data/lib/devise_token_auth/url.rb +44 -0
  57. data/lib/devise_token_auth/version.rb +5 -0
  58. data/lib/generators/devise_token_auth/USAGE +31 -0
  59. data/lib/generators/devise_token_auth/install_generator.rb +91 -0
  60. data/lib/generators/devise_token_auth/install_generator_helpers.rb +98 -0
  61. data/lib/generators/devise_token_auth/install_mongoid_generator.rb +46 -0
  62. data/lib/generators/devise_token_auth/install_views_generator.rb +18 -0
  63. data/lib/generators/devise_token_auth/templates/devise_token_auth.rb +60 -0
  64. data/lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb +49 -0
  65. data/lib/generators/devise_token_auth/templates/user.rb.erb +9 -0
  66. data/lib/generators/devise_token_auth/templates/user_mongoid.rb.erb +56 -0
  67. data/lib/tasks/devise_token_auth_tasks.rake +6 -0
  68. data/test/controllers/custom/custom_confirmations_controller_test.rb +25 -0
  69. data/test/controllers/custom/custom_omniauth_callbacks_controller_test.rb +33 -0
  70. data/test/controllers/custom/custom_passwords_controller_test.rb +79 -0
  71. data/test/controllers/custom/custom_registrations_controller_test.rb +63 -0
  72. data/test/controllers/custom/custom_sessions_controller_test.rb +39 -0
  73. data/test/controllers/custom/custom_token_validations_controller_test.rb +42 -0
  74. data/test/controllers/demo_group_controller_test.rb +151 -0
  75. data/test/controllers/demo_mang_controller_test.rb +284 -0
  76. data/test/controllers/demo_user_controller_test.rb +629 -0
  77. data/test/controllers/devise_token_auth/confirmations_controller_test.rb +191 -0
  78. data/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +441 -0
  79. data/test/controllers/devise_token_auth/passwords_controller_test.rb +780 -0
  80. data/test/controllers/devise_token_auth/registrations_controller_test.rb +907 -0
  81. data/test/controllers/devise_token_auth/sessions_controller_test.rb +503 -0
  82. data/test/controllers/devise_token_auth/token_validations_controller_test.rb +102 -0
  83. data/test/controllers/devise_token_auth/unlocks_controller_test.rb +196 -0
  84. data/test/controllers/overrides/confirmations_controller_test.rb +47 -0
  85. data/test/controllers/overrides/omniauth_callbacks_controller_test.rb +53 -0
  86. data/test/controllers/overrides/passwords_controller_test.rb +64 -0
  87. data/test/controllers/overrides/registrations_controller_test.rb +46 -0
  88. data/test/controllers/overrides/sessions_controller_test.rb +35 -0
  89. data/test/controllers/overrides/token_validations_controller_test.rb +43 -0
  90. data/test/dummy/README.rdoc +28 -0
  91. data/test/dummy/app/active_record/confirmable_user.rb +11 -0
  92. data/test/dummy/app/active_record/lockable_user.rb +7 -0
  93. data/test/dummy/app/active_record/mang.rb +5 -0
  94. data/test/dummy/app/active_record/only_email_user.rb +7 -0
  95. data/test/dummy/app/active_record/scoped_user.rb +9 -0
  96. data/test/dummy/app/active_record/unconfirmable_user.rb +9 -0
  97. data/test/dummy/app/active_record/unregisterable_user.rb +9 -0
  98. data/test/dummy/app/active_record/user.rb +6 -0
  99. data/test/dummy/app/controllers/application_controller.rb +18 -0
  100. data/test/dummy/app/controllers/auth_origin_controller.rb +7 -0
  101. data/test/dummy/app/controllers/custom/confirmations_controller.rb +13 -0
  102. data/test/dummy/app/controllers/custom/omniauth_callbacks_controller.rb +13 -0
  103. data/test/dummy/app/controllers/custom/passwords_controller.rb +39 -0
  104. data/test/dummy/app/controllers/custom/registrations_controller.rb +39 -0
  105. data/test/dummy/app/controllers/custom/sessions_controller.rb +29 -0
  106. data/test/dummy/app/controllers/custom/token_validations_controller.rb +19 -0
  107. data/test/dummy/app/controllers/demo_group_controller.rb +15 -0
  108. data/test/dummy/app/controllers/demo_mang_controller.rb +14 -0
  109. data/test/dummy/app/controllers/demo_user_controller.rb +27 -0
  110. data/test/dummy/app/controllers/overrides/confirmations_controller.rb +28 -0
  111. data/test/dummy/app/controllers/overrides/omniauth_callbacks_controller.rb +16 -0
  112. data/test/dummy/app/controllers/overrides/passwords_controller.rb +35 -0
  113. data/test/dummy/app/controllers/overrides/registrations_controller.rb +29 -0
  114. data/test/dummy/app/controllers/overrides/sessions_controller.rb +36 -0
  115. data/test/dummy/app/controllers/overrides/token_validations_controller.rb +23 -0
  116. data/test/dummy/app/helpers/application_helper.rb +1058 -0
  117. data/test/dummy/app/models/concerns/favorite_color.rb +19 -0
  118. data/test/dummy/app/mongoid/confirmable_user.rb +52 -0
  119. data/test/dummy/app/mongoid/lockable_user.rb +38 -0
  120. data/test/dummy/app/mongoid/mang.rb +46 -0
  121. data/test/dummy/app/mongoid/only_email_user.rb +33 -0
  122. data/test/dummy/app/mongoid/scoped_user.rb +50 -0
  123. data/test/dummy/app/mongoid/unconfirmable_user.rb +44 -0
  124. data/test/dummy/app/mongoid/unregisterable_user.rb +47 -0
  125. data/test/dummy/app/mongoid/user.rb +49 -0
  126. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  127. data/test/dummy/config.ru +18 -0
  128. data/test/dummy/config/application.rb +48 -0
  129. data/test/dummy/config/application.yml.bk +0 -0
  130. data/test/dummy/config/boot.rb +11 -0
  131. data/test/dummy/config/environment.rb +7 -0
  132. data/test/dummy/config/environments/development.rb +46 -0
  133. data/test/dummy/config/environments/production.rb +84 -0
  134. data/test/dummy/config/environments/test.rb +50 -0
  135. data/test/dummy/config/initializers/assets.rb +10 -0
  136. data/test/dummy/config/initializers/backtrace_silencers.rb +9 -0
  137. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  138. data/test/dummy/config/initializers/devise.rb +290 -0
  139. data/test/dummy/config/initializers/devise_token_auth.rb +55 -0
  140. data/test/dummy/config/initializers/figaro.rb +3 -0
  141. data/test/dummy/config/initializers/filter_parameter_logging.rb +6 -0
  142. data/test/dummy/config/initializers/inflections.rb +18 -0
  143. data/test/dummy/config/initializers/mime_types.rb +6 -0
  144. data/test/dummy/config/initializers/omniauth.rb +11 -0
  145. data/test/dummy/config/initializers/session_store.rb +5 -0
  146. data/test/dummy/config/initializers/wrap_parameters.rb +16 -0
  147. data/test/dummy/config/routes.rb +57 -0
  148. data/test/dummy/config/spring.rb +3 -0
  149. data/test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb +58 -0
  150. data/test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb +57 -0
  151. data/test/dummy/db/migrate/20140829044006_add_operating_thetan_to_user.rb +8 -0
  152. data/test/dummy/db/migrate/20140916224624_add_favorite_color_to_mangs.rb +7 -0
  153. data/test/dummy/db/migrate/20141222035835_devise_token_auth_create_only_email_users.rb +55 -0
  154. data/test/dummy/db/migrate/20141222053502_devise_token_auth_create_unregisterable_users.rb +56 -0
  155. data/test/dummy/db/migrate/20150708104536_devise_token_auth_create_unconfirmable_users.rb +56 -0
  156. data/test/dummy/db/migrate/20160103235141_devise_token_auth_create_scoped_users.rb +56 -0
  157. data/test/dummy/db/migrate/20160629184441_devise_token_auth_create_lockable_users.rb +56 -0
  158. data/test/dummy/db/migrate/20190924101113_devise_token_auth_create_confirmable_users.rb +49 -0
  159. data/test/dummy/db/schema.rb +198 -0
  160. data/test/dummy/lib/migration_database_helper.rb +43 -0
  161. data/test/factories/users.rb +41 -0
  162. data/test/lib/devise_token_auth/blacklist_test.rb +11 -0
  163. data/test/lib/devise_token_auth/token_factory_test.rb +191 -0
  164. data/test/lib/devise_token_auth/url_test.rb +26 -0
  165. data/test/lib/generators/devise_token_auth/install_generator_test.rb +217 -0
  166. data/test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb +222 -0
  167. data/test/lib/generators/devise_token_auth/install_views_generator_test.rb +25 -0
  168. data/test/models/concerns/mongoid_support_test.rb +31 -0
  169. data/test/models/concerns/tokens_serialization_test.rb +70 -0
  170. data/test/models/confirmable_user_test.rb +35 -0
  171. data/test/models/only_email_user_test.rb +29 -0
  172. data/test/models/user_test.rb +108 -0
  173. data/test/support/controllers/routes.rb +43 -0
  174. data/test/test_helper.rb +103 -0
  175. metadata +481 -0
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DemoUserController < ApplicationController
4
+ before_action :authenticate_user!
5
+
6
+ def members_only
7
+ render json: {
8
+ data: {
9
+ message: "Welcome #{current_user.name}",
10
+ user: current_user
11
+ }
12
+ }, status: 200
13
+ end
14
+
15
+ def members_only_remove_token
16
+ u = User.find(current_user.id)
17
+ u.tokens = {}
18
+ u.save!
19
+
20
+ render json: {
21
+ data: {
22
+ message: "Welcome #{current_user.name}",
23
+ user: current_user
24
+ }
25
+ }, status: 200
26
+ end
27
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class ConfirmationsController < DeviseTokenAuth::ConfirmationsController
5
+ def show
6
+ @resource = resource_class.confirm_by_token(params[:confirmation_token])
7
+
8
+ if @resource && @resource.id
9
+ token = @resource.create_token
10
+ @resource.save!
11
+
12
+ redirect_header_options = {
13
+ account_confirmation_success: true,
14
+ config: params[:config],
15
+ override_proof: '(^^,)'
16
+ }
17
+ redirect_headers = build_redirect_headers(token.token,
18
+ token.client,
19
+ redirect_header_options)
20
+
21
+ redirect_to(@resource.build_auth_url(params[:redirect_url],
22
+ redirect_headers))
23
+ else
24
+ raise ActionController::RoutingError, 'Not Found'
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class OmniauthCallbacksController < DeviseTokenAuth::OmniauthCallbacksController
5
+ DEFAULT_NICKNAME = 'stimpy'.freeze
6
+
7
+ def assign_provider_attrs(user, auth_hash)
8
+ user.assign_attributes(
9
+ nickname: DEFAULT_NICKNAME,
10
+ name: auth_hash['info']['name'],
11
+ image: auth_hash['info']['image'],
12
+ email: auth_hash['info']['email']
13
+ )
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class PasswordsController < DeviseTokenAuth::PasswordsController
5
+ OVERRIDE_PROOF = '(^^,)'.freeze
6
+
7
+ # this is where users arrive after visiting the email confirmation link
8
+ def edit
9
+ @resource = resource_class.reset_password_by_token(
10
+ reset_password_token: resource_params[:reset_password_token]
11
+ )
12
+
13
+ if @resource && @resource.id
14
+ token = @resource.create_token
15
+
16
+ # ensure that user is confirmed
17
+ @resource.skip_confirmation! unless @resource.confirmed_at
18
+
19
+ @resource.save!
20
+
21
+ redirect_header_options = {
22
+ override_proof: OVERRIDE_PROOF,
23
+ reset_password: true
24
+ }
25
+ redirect_headers = build_redirect_headers(token.token,
26
+ token.client,
27
+ redirect_header_options)
28
+ redirect_to(@resource.build_auth_url(params[:redirect_url],
29
+ redirect_headers))
30
+ else
31
+ raise ActionController::RoutingError, 'Not Found'
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class RegistrationsController < DeviseTokenAuth::RegistrationsController
5
+ OVERRIDE_PROOF = '(^^,)'.freeze
6
+
7
+ def update
8
+ if @resource
9
+ if @resource.update(account_update_params)
10
+ render json: {
11
+ status: 'success',
12
+ data: @resource.as_json,
13
+ override_proof: OVERRIDE_PROOF
14
+ }
15
+ else
16
+ render json: {
17
+ status: 'error',
18
+ errors: @resource.errors
19
+ }, status: 422
20
+ end
21
+ else
22
+ render json: {
23
+ status: 'error',
24
+ errors: ['User not found.']
25
+ }, status: 404
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class SessionsController < DeviseTokenAuth::SessionsController
5
+ OVERRIDE_PROOF = '(^^,)'.freeze
6
+
7
+ def create
8
+ @resource = resource_class.dta_find_by(email: resource_params[:email])
9
+
10
+ if @resource && valid_params?(:email, resource_params[:email]) && @resource.valid_password?(resource_params[:password]) && @resource.confirmed?
11
+ @token = @resource.create_token
12
+ @resource.save
13
+
14
+ render json: {
15
+ data: @resource.as_json(except: %i[tokens created_at updated_at]),
16
+ override_proof: OVERRIDE_PROOF
17
+ }
18
+
19
+ elsif @resource && (not @resource.confirmed?)
20
+ render json: {
21
+ success: false,
22
+ errors: [
23
+ "A confirmation email was sent to your account at #{@resource.email}. "\
24
+ 'You must follow the instructions in the email before your account '\
25
+ 'can be activated'
26
+ ]
27
+ }, status: 401
28
+
29
+ else
30
+ render json: {
31
+ errors: ['Invalid login credentials. Please try again.']
32
+ }, status: 401
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class TokenValidationsController < DeviseTokenAuth::TokenValidationsController
5
+ OVERRIDE_PROOF = '(^^,)'.freeze
6
+
7
+ def validate_token
8
+ # @resource will have been set by set_user_by_token concern
9
+ if @resource
10
+ render json: {
11
+ success: true,
12
+ data: @resource.as_json(except: %i[tokens created_at updated_at]),
13
+ override_proof: OVERRIDE_PROOF
14
+ }
15
+ else
16
+ render json: {
17
+ success: false,
18
+ errors: ['Invalid login credentials']
19
+ }, status: 401
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,1058 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ApplicationHelper
4
+ COLOR_NAMES = [
5
+ 'Acid green',
6
+ 'Aero',
7
+ 'Aero blue',
8
+ 'African violet',
9
+ 'Air Force blue',
10
+ 'Air superiority blue',
11
+ 'Alabama Crimson',
12
+ 'Alice blue',
13
+ 'Alizarin crimson',
14
+ 'Alloy orange',
15
+ 'Almond',
16
+ 'Amaranth',
17
+ 'Amaranth pink',
18
+ 'Amaranth purple',
19
+ 'Amazon',
20
+ 'Amber',
21
+ 'Amethyst',
22
+ 'Android green',
23
+ 'Anti-flash white',
24
+ 'Antique brass',
25
+ 'Antique bronze',
26
+ 'Antique fuchsia',
27
+ 'Antique ruby',
28
+ 'Antique white',
29
+ 'Ao',
30
+ 'Apple green',
31
+ 'Apricot',
32
+ 'Aqua',
33
+ 'Aquamarine',
34
+ 'Army green',
35
+ 'Arsenic',
36
+ 'Artichoke',
37
+ 'Arylide yellow',
38
+ 'Ash grey',
39
+ 'Asparagus',
40
+ 'Atomic tangerine',
41
+ 'Auburn',
42
+ 'Aureolin',
43
+ 'AuroMetalSaurus',
44
+ 'Avocado',
45
+ 'Azure',
46
+ 'Azure mist/web',
47
+
48
+ 'Baby blue',
49
+ 'Baby blue eyes',
50
+ 'Baby pink',
51
+ 'Baby powder',
52
+ 'Baker-Miller pink',
53
+ 'Ball blue',
54
+ 'Banana Mania',
55
+ 'Banana yellow',
56
+ 'Bangladesh green',
57
+ 'Barbie pink',
58
+ 'Barn red',
59
+ 'Battleship grey',
60
+ 'Bazaar',
61
+ 'Beau blue',
62
+ 'Beaver',
63
+ 'Beige',
64
+ "B'dazzled blue",
65
+ "Big dip o'ruby",
66
+ 'Bisque',
67
+ 'Bistre',
68
+ 'Bistre brown',
69
+ 'Bitter lemon',
70
+ 'Bitter lime',
71
+ 'Bittersweet',
72
+ 'Bittersweet shimmer',
73
+ 'Black',
74
+ 'Black bean',
75
+ 'Black leather jacket',
76
+ 'Black olive',
77
+ 'Blanched almond',
78
+ 'Blast-off bronze',
79
+ 'Bleu de France',
80
+ 'Blizzard Blue',
81
+ 'Blond',
82
+ 'Blue',
83
+ 'Blue Bell',
84
+ 'Blue-gray',
85
+ 'Blue-green',
86
+ 'Blue sapphire',
87
+ 'Blue-violet',
88
+ 'Blue yonder',
89
+ 'Blueberry',
90
+ 'Bluebonnet',
91
+ 'Blush',
92
+ 'Bole',
93
+ 'Bondi blue',
94
+ 'Bone',
95
+ 'Boston University Red',
96
+ 'Bottle green',
97
+ 'Boysenberry',
98
+ 'Brandeis blue',
99
+ 'Brass',
100
+ 'Brick red',
101
+ 'Bright cerulean',
102
+ 'Bright green',
103
+ 'Bright lavender',
104
+ 'Bright lilac',
105
+ 'Bright maroon',
106
+ 'Bright navy blue',
107
+ 'Bright pink',
108
+ 'Bright turquoise',
109
+ 'Bright ube',
110
+ 'Brilliant lavender',
111
+ 'Brilliant rose',
112
+ 'Brink pink',
113
+ 'British racing green',
114
+ 'Bronze',
115
+ 'Bronze Yellow',
116
+ 'Brown',
117
+ 'Brown-nose',
118
+ 'Brunswick green',
119
+ 'Bubble gum',
120
+ 'Bubbles',
121
+ 'Buff',
122
+ 'Bud green',
123
+ 'Bulgarian rose',
124
+ 'Burgundy',
125
+ 'Burlywood',
126
+ 'Burnt orange',
127
+ 'Burnt sienna',
128
+ 'Burnt umber',
129
+ 'Byzantine',
130
+ 'Byzantium',
131
+
132
+ 'Cadet',
133
+ 'Cadet blue',
134
+ 'Cadet grey',
135
+ 'Cadmium green',
136
+ 'Cadmium orange',
137
+ 'Cadmium red',
138
+ 'Cadmium yellow',
139
+ 'Cafe au lait',
140
+ 'Cafe noir',
141
+ 'Cal Poly Pomona green',
142
+ 'Cambridge Blue',
143
+ 'Camel',
144
+ 'Cameo pink',
145
+ 'Camouflage green',
146
+ 'Canary yellow',
147
+ 'Candy apple red',
148
+ 'Candy pink',
149
+ 'Capri',
150
+ 'Caput mortuum',
151
+ 'Cardinal',
152
+ 'Caribbean green',
153
+ 'Carmine',
154
+ 'Carmine',
155
+ 'Carmine pink',
156
+ 'Carmine red',
157
+ 'Carnation pink',
158
+ 'Carnelian',
159
+ 'Carolina blue',
160
+ 'Carrot orange',
161
+ 'Castleton green',
162
+ 'Catalina blue',
163
+ 'Catawba',
164
+ 'Cedar Chest',
165
+ 'Ceil',
166
+ 'Celadon',
167
+ 'Celadon blue',
168
+ 'Celadon green',
169
+ 'Celeste',
170
+ 'Celestial blue',
171
+ 'Cerise',
172
+ 'Cerise pink',
173
+ 'Cerulean',
174
+ 'Cerulean blue',
175
+ 'Cerulean frost',
176
+ 'CG Blue',
177
+ 'CG Red',
178
+ 'Chamoisee',
179
+ 'Champagne',
180
+ 'Charcoal',
181
+ 'Charleston green',
182
+ 'Charm pink',
183
+ 'Chartreuse',
184
+ 'Cherry',
185
+ 'Cherry blossom pink',
186
+ 'Chestnut',
187
+ 'China pink',
188
+ 'China rose',
189
+ 'Chinese red',
190
+ 'Chinese violet',
191
+ 'Chocolate',
192
+ 'Chrome yellow',
193
+ 'Cinereous',
194
+ 'Cinnabar',
195
+ 'Cinnamon',
196
+ 'Citrine',
197
+ 'Citron',
198
+ 'Claret',
199
+ 'Classic rose',
200
+ 'Cobalt',
201
+ 'Cocoa brown',
202
+ 'Coconut',
203
+ 'Coffee',
204
+ 'Columbia blue',
205
+ 'Congo pink',
206
+ 'Cool grey',
207
+ 'Copper',
208
+ 'Copper penny',
209
+ 'Copper red',
210
+ 'Copper rose',
211
+ 'Coquelicot',
212
+ 'Coral',
213
+ 'Coral pink',
214
+ 'Coral red',
215
+ 'Cordovan',
216
+ 'Corn',
217
+ 'Cornell Red',
218
+ 'Cornflower blue',
219
+ 'Cornsilk',
220
+ 'Cosmic latte',
221
+ 'Cotton candy',
222
+ 'Cream',
223
+ 'Crimson',
224
+ 'Crimson glory',
225
+ 'Cyan',
226
+ 'Cyber grape',
227
+ 'Cyber yellow',
228
+
229
+ 'Daffodil',
230
+ 'Dandelion',
231
+ 'Dark blue',
232
+ 'Dark blue-gray',
233
+ 'Dark brown',
234
+ 'Dark byzantium',
235
+ 'Dark candy apple red',
236
+ 'Dark cerulean',
237
+ 'Dark chestnut',
238
+ 'Dark coral',
239
+ 'Dark cyan',
240
+ 'Dark electric blue',
241
+ 'Dark goldenrod',
242
+ 'Dark gray',
243
+ 'Dark green',
244
+ 'Dark imperial blue',
245
+ 'Dark jungle green',
246
+ 'Dark khaki',
247
+ 'Dark lava',
248
+ 'Dark lavender',
249
+ 'Dark liver',
250
+ 'Dark magenta',
251
+ 'Dark medium gray',
252
+ 'Dark midnight blue',
253
+ 'Dark moss green',
254
+ 'Dark olive green',
255
+ 'Dark orange',
256
+ 'Dark orchid',
257
+ 'Dark pastel blue',
258
+ 'Dark pastel green',
259
+ 'Dark pastel purple',
260
+ 'Dark pastel red',
261
+ 'Dark pink',
262
+ 'Dark powder blue',
263
+ 'Dark puce',
264
+ 'Dark raspberry',
265
+ 'Dark red',
266
+ 'Dark salmon',
267
+ 'Dark scarlet',
268
+ 'Dark sea green',
269
+ 'Dark sienna',
270
+ 'Dark sky blue',
271
+ 'Dark slate blue',
272
+ 'Dark slate gray',
273
+ 'Dark spring green',
274
+ 'Dark tan',
275
+ 'Dark tangerine',
276
+ 'Dark taupe',
277
+ 'Dark terra cotta',
278
+ 'Dark turquoise',
279
+ 'Dark vanilla',
280
+ 'Dark violet',
281
+ 'Dark yellow',
282
+ 'Dartmouth green',
283
+ "Davy's grey",
284
+ 'Debian red',
285
+ 'Deep carmine',
286
+ 'Deep carmine pink',
287
+ 'Deep carrot orange',
288
+ 'Deep cerise',
289
+ 'Deep champagne',
290
+ 'Deep chestnut',
291
+ 'Deep coffee',
292
+ 'Deep fuchsia',
293
+ 'Deep jungle green',
294
+ 'Deep lemon',
295
+ 'Deep lilac',
296
+ 'Deep magenta',
297
+ 'Deep mauve',
298
+ 'Deep moss green',
299
+ 'Deep peach',
300
+ 'Deep pink',
301
+ 'Deep puce',
302
+ 'Deep ruby',
303
+ 'Deep saffron',
304
+ 'Deep sky blue',
305
+ 'Deep Space Sparkle',
306
+ 'Deep Taupe',
307
+ 'Deep Tuscan red',
308
+ 'Deer',
309
+ 'Denim',
310
+ 'Desert',
311
+ 'Desert sand',
312
+ 'Desire',
313
+ 'Diamond',
314
+ 'Dim gray',
315
+ 'Dirt',
316
+ 'Dodger blue',
317
+ 'Dogwood rose',
318
+ 'Dollar bill',
319
+ 'Donkey brown',
320
+ 'Drab',
321
+ 'Duke blue',
322
+ 'Dust storm',
323
+ 'Dutch white',
324
+
325
+ 'Earth yellow',
326
+ 'Ebony',
327
+ 'Ecru',
328
+ 'Eerie black',
329
+ 'Eggplant',
330
+ 'Eggshell',
331
+ 'Egyptian blue',
332
+ 'Electric blue',
333
+ 'Electric crimson',
334
+ 'Electric cyan',
335
+ 'Electric green',
336
+ 'Electric indigo',
337
+ 'Electric lavender',
338
+ 'Electric lime',
339
+ 'Electric purple',
340
+ 'Electric ultramarine',
341
+ 'Electric violet',
342
+ 'Electric yellow',
343
+ 'Emerald',
344
+ 'Eminence',
345
+ 'English green',
346
+ 'English lavender',
347
+ 'English red',
348
+ 'English violet',
349
+ 'Eton blue',
350
+ 'Eucalyptus',
351
+
352
+ 'Fallow',
353
+ 'Falu red',
354
+ 'Fandango',
355
+ 'Fandango pink',
356
+ 'Fashion fuchsia',
357
+ 'Fawn',
358
+ 'Feldgrau',
359
+ 'Feldspar',
360
+ 'Fern green',
361
+ 'Ferrari Red',
362
+ 'Field drab',
363
+ 'Firebrick',
364
+ 'Fire engine red',
365
+ 'Flame',
366
+ 'Flamingo pink',
367
+ 'Flattery',
368
+ 'Flavescent',
369
+ 'Flax',
370
+ 'Flirt',
371
+ 'Floral white',
372
+ 'Fluorescent orange',
373
+ 'Fluorescent pink',
374
+ 'Fluorescent yellow',
375
+ 'Folly',
376
+ 'Forest green',
377
+ 'French beige',
378
+ 'French bistre',
379
+ 'French blue',
380
+ 'French fuchsia',
381
+ 'French lilac',
382
+ 'French lime',
383
+ 'French mauve',
384
+ 'French pink',
385
+ 'French plum',
386
+ 'French puce',
387
+ 'French raspberry',
388
+ 'French rose',
389
+ 'French sky blue',
390
+ 'French violet',
391
+ 'French wine',
392
+ 'Fresh Air',
393
+ 'Fuchsia',
394
+ 'Fuchsia',
395
+ 'Fuchsia pink',
396
+ 'Fuchsia purple',
397
+ 'Fuchsia rose',
398
+ 'Fulvous',
399
+ 'Fuzzy Wuzzy',
400
+
401
+ 'Gainsboro',
402
+ 'Gamboge',
403
+ 'Generic viridian',
404
+ 'Ghost white',
405
+ 'Giants orange',
406
+ 'Ginger',
407
+ 'Glaucous',
408
+ 'Glitter',
409
+ 'GO green',
410
+ 'Gold',
411
+ 'Gold Fusion',
412
+ 'Golden brown',
413
+ 'Golden poppy',
414
+ 'Golden yellow',
415
+ 'Goldenrod',
416
+ 'Granny Smith Apple',
417
+ 'Grape',
418
+ 'Gray',
419
+ 'Gray-asparagus',
420
+ 'Gray-blue',
421
+ 'Green',
422
+ 'Green-yellow',
423
+ 'Grizzly',
424
+ 'Grullo',
425
+ 'Guppie green',
426
+ 'Halaya ube',
427
+ 'Han blue',
428
+ 'Han purple',
429
+ 'Hansa yellow',
430
+ 'Harlequin',
431
+ 'Harvard crimson',
432
+ 'Harvest gold',
433
+ 'Heart Gold',
434
+ 'Heliotrope',
435
+ 'Heliotrope gray',
436
+ 'Hollywood cerise',
437
+ 'Honeydew',
438
+ 'Honolulu blue',
439
+ "Hooker's green",
440
+ 'Hot magenta',
441
+ 'Hot pink',
442
+ 'Hunter green',
443
+
444
+ 'Iceberg',
445
+ 'Icterine',
446
+ 'Illuminating Emerald',
447
+ 'Imperial',
448
+ 'Imperial blue',
449
+ 'Imperial purple',
450
+ 'Imperial red',
451
+ 'Inchworm',
452
+ 'Independence',
453
+ 'India green',
454
+ 'Indian red',
455
+ 'Indian yellow',
456
+ 'Indigo',
457
+ 'Indigo dye',
458
+ 'International Klein Blue',
459
+ 'International orange',
460
+ 'Iris',
461
+ 'Irresistible',
462
+ 'Isabelline',
463
+ 'Islamic green',
464
+ 'Italian sky blue',
465
+ 'Ivory',
466
+ 'Jade',
467
+ 'Japanese carmine',
468
+ 'Japanese indigo',
469
+ 'Japanese violet',
470
+ 'Jasmine',
471
+ 'Jasper',
472
+ 'Jazzberry jam',
473
+ 'Jelly Bean',
474
+ 'Jet',
475
+ 'Jonquil',
476
+ 'Jordy blue',
477
+ 'June bud',
478
+ 'Jungle green',
479
+ 'Kelly green',
480
+ 'Kenyan copper',
481
+ 'Keppel',
482
+ 'Khaki',
483
+ 'Kobe',
484
+ 'Kobi',
485
+ 'Kombu green',
486
+ 'KU Crimson',
487
+
488
+ 'La Salle Green',
489
+ 'Languid lavender',
490
+ 'Lapis lazuli',
491
+ 'Laser Lemon',
492
+ 'Laurel green',
493
+ 'Lava',
494
+ 'Lavender',
495
+ 'Lavender blue',
496
+ 'Lavender blush',
497
+ 'Lavender gray',
498
+ 'Lavender indigo',
499
+ 'Lavender magenta',
500
+ 'Lavender mist',
501
+ 'Lavender pink',
502
+ 'Lavender purple',
503
+ 'Lavender rose',
504
+ 'Lawn green',
505
+ 'Lemon',
506
+ 'Lemon chiffon',
507
+ 'Lemon curry',
508
+ 'Lemon glacier',
509
+ 'Lemon lime',
510
+ 'Lemon meringue',
511
+ 'Lemon yellow',
512
+ 'Licorice',
513
+ 'Liberty',
514
+ 'Light apricot',
515
+ 'Light blue',
516
+ 'Light brown',
517
+ 'Light carmine pink',
518
+ 'Light coral',
519
+ 'Light cornflower blue',
520
+ 'Light crimson',
521
+ 'Light cyan',
522
+ 'Light deep pink',
523
+ 'Light French beige',
524
+ 'Light fuchsia pink',
525
+ 'Light goldenrod yellow',
526
+ 'Light gray',
527
+ 'Light green',
528
+ 'Light hot pink',
529
+ 'Light khaki',
530
+ 'Light medium orchid',
531
+ 'Light moss green',
532
+ 'Light orchid',
533
+ 'Light pastel purple',
534
+ 'Light pink',
535
+ 'Light red ochre',
536
+ 'Light salmon',
537
+ 'Light salmon pink',
538
+ 'Light sea green',
539
+ 'Light sky blue',
540
+ 'Light slate gray',
541
+ 'Light steel blue',
542
+ 'Light taupe',
543
+ 'Light Thulian pink',
544
+ 'Light yellow',
545
+ 'Lilac',
546
+ 'Lime',
547
+ 'Lime green',
548
+ 'Limerick',
549
+ 'Lincoln green',
550
+ 'Linen',
551
+ 'Lion',
552
+ 'Liseran Purple',
553
+ 'Little boy blue',
554
+ 'Liver',
555
+ 'Liver',
556
+ 'Liver chestnut',
557
+ 'Livid',
558
+ 'Lumber',
559
+ 'Lust',
560
+
561
+ 'Magenta',
562
+ 'Magenta',
563
+ 'Magenta haze',
564
+ 'Magic mint',
565
+ 'Magnolia',
566
+ 'Mahogany',
567
+ 'Maize',
568
+ 'Majorelle Blue',
569
+ 'Malachite',
570
+ 'Manatee',
571
+ 'Mango Tango',
572
+ 'Mantis',
573
+ 'Mardi Gras',
574
+ 'Maroon',
575
+ 'Mauve',
576
+ 'Mauve taupe',
577
+ 'Mauvelous',
578
+ 'May green',
579
+ 'Maya blue',
580
+ 'Meat brown',
581
+ 'Medium aquamarine',
582
+ 'Medium blue',
583
+ 'Medium candy apple red',
584
+ 'Medium carmine',
585
+ 'Medium champagne',
586
+ 'Medium electric blue',
587
+ 'Medium jungle green',
588
+ 'Medium lavender magenta',
589
+ 'Medium orchid',
590
+ 'Medium Persian blue',
591
+ 'Medium purple',
592
+ 'Medium red-violet',
593
+ 'Medium ruby',
594
+ 'Medium sea green',
595
+ 'Medium sky blue',
596
+ 'Medium slate blue',
597
+ 'Medium spring bud',
598
+ 'Medium spring green',
599
+ 'Medium taupe',
600
+ 'Medium turquoise',
601
+ 'Medium Tuscan red',
602
+ 'Medium vermilion',
603
+ 'Medium violet-red',
604
+ 'Mellow apricot',
605
+ 'Mellow yellow',
606
+ 'Melon',
607
+ 'Metallic Seaweed',
608
+ 'Metallic Sunburst',
609
+ 'Mexican pink',
610
+ 'Midnight blue',
611
+ 'Milky blue',
612
+ 'Midnight green',
613
+ 'Mikado yellow',
614
+ 'Mindaro',
615
+ 'Mint',
616
+ 'Mint cream',
617
+ 'Mint green',
618
+ 'Misty rose',
619
+ 'Moccasin',
620
+ 'Mode beige',
621
+ 'Moonstone blue',
622
+ 'Mordant red 19',
623
+ 'Moss green',
624
+ 'Mountain Meadow',
625
+ 'Mountbatten pink',
626
+ 'MSU Green',
627
+ 'Mughal green',
628
+ 'Mulberry',
629
+ 'Mustard',
630
+ 'Myrtle green',
631
+
632
+ 'Nadeshiko pink',
633
+ 'Napier green',
634
+ 'Naples yellow',
635
+ 'Navajo white',
636
+ 'Navy',
637
+ 'Navy purple',
638
+ 'Neon Carrot',
639
+ 'Neon fuchsia',
640
+ 'Neon green',
641
+ 'New Car',
642
+ 'New York pink',
643
+ 'Non-photo blue',
644
+ 'North Texas Green',
645
+ 'Nyanza',
646
+ 'Ocean Boat Blue',
647
+ 'Ochre',
648
+ 'Office green',
649
+ 'Old burgundy',
650
+ 'Old gold',
651
+ 'Old heliotrope',
652
+ 'Old lace',
653
+ 'Old lavender',
654
+ 'Old mauve',
655
+ 'Old moss green',
656
+ 'Old rose',
657
+ 'Old silver',
658
+ 'Olive',
659
+ 'Olive Drab',
660
+ 'Olivine',
661
+ 'Onyx',
662
+ 'Opera mauve',
663
+ 'Orange',
664
+ 'Orange peel',
665
+ 'Orange-red',
666
+ 'Orchid',
667
+ 'Orchid pink',
668
+ 'Orioles orange',
669
+ 'Otter brown',
670
+ 'Outer Space',
671
+ 'Outrageous Orange',
672
+ 'Oxford Blue',
673
+ 'OU Crimson Red',
674
+
675
+ 'Pakistan green',
676
+ 'Palatinate blue',
677
+ 'Palatinate purple',
678
+ 'Pale aqua',
679
+ 'Pale blue',
680
+ 'Pale brown',
681
+ 'Pale carmine',
682
+ 'Pale cerulean',
683
+ 'Pale chestnut',
684
+ 'Pale copper',
685
+ 'Pale cornflower blue',
686
+ 'Pale gold',
687
+ 'Pale goldenrod',
688
+ 'Pale green',
689
+ 'Pale lavender',
690
+ 'Pale magenta',
691
+ 'Pale pink',
692
+ 'Pale plum',
693
+ 'Pale red-violet',
694
+ 'Pale robin egg blue',
695
+ 'Pale silver',
696
+ 'Pale spring bud',
697
+ 'Pale taupe',
698
+ 'Pale turquoise',
699
+ 'Pale violet-red',
700
+ 'Pansy purple',
701
+ 'Paolo Veronese green',
702
+ 'Papaya whip',
703
+ 'Paradise pink',
704
+ 'Paris Green',
705
+ 'Pastel blue',
706
+ 'Pastel brown',
707
+ 'Pastel gray',
708
+ 'Pastel green',
709
+ 'Pastel magenta',
710
+ 'Pastel orange',
711
+ 'Pastel pink',
712
+ 'Pastel purple',
713
+ 'Pastel red',
714
+ 'Pastel violet',
715
+ 'Pastel yellow',
716
+ 'Patriarch',
717
+ "Payne's grey",
718
+ 'Peach',
719
+ 'Peach',
720
+ 'Peach-orange',
721
+ 'Peach puff',
722
+ 'Peach-yellow',
723
+ 'Pear',
724
+ 'Pearl',
725
+ 'Pearl Aqua',
726
+ 'Pearly purple',
727
+ 'Peridot',
728
+ 'Periwinkle',
729
+ 'Persian blue',
730
+ 'Persian green',
731
+ 'Persian indigo',
732
+ 'Persian orange',
733
+ 'Persian pink',
734
+ 'Persian plum',
735
+ 'Persian red',
736
+ 'Persian rose',
737
+ 'Persimmon',
738
+ 'Peru',
739
+ 'Phlox',
740
+ 'Phthalo blue',
741
+ 'Phthalo green',
742
+ 'Picton blue',
743
+ 'Pictorial carmine',
744
+ 'Piggy pink',
745
+ 'Pine green',
746
+ 'Pineapple',
747
+ 'Pink',
748
+ 'Pink lace',
749
+ 'Pink lavender',
750
+ 'Pink-orange',
751
+ 'Pink pearl',
752
+ 'Pink Sherbet',
753
+ 'Pistachio',
754
+ 'Platinum',
755
+ 'Plum',
756
+ 'Pomp and Power',
757
+ 'Popstar',
758
+ 'Portland Orange',
759
+ 'Powder blue',
760
+ 'Princeton orange',
761
+ 'Prune',
762
+ 'Prussian blue',
763
+ 'Psychedelic purple',
764
+ 'Puce',
765
+ 'Puce red',
766
+ 'Pullman Brown',
767
+ 'Pumpkin',
768
+ 'Purple',
769
+ 'Purple Heart',
770
+ 'Purple mountain majesty',
771
+ 'Purple navy',
772
+ 'Purple pizzazz',
773
+ 'Purple taupe',
774
+ 'Purpureus',
775
+
776
+ 'Quartz',
777
+ 'Queen blue',
778
+ 'Queen pink',
779
+ 'Quinacridone magenta',
780
+ 'Rackley',
781
+ 'Radical Red',
782
+ 'Rajah',
783
+ 'Raspberry',
784
+ 'Raspberry glace',
785
+ 'Raspberry pink',
786
+ 'Raspberry rose',
787
+ 'Raw umber',
788
+ 'Razzle dazzle rose',
789
+ 'Razzmatazz',
790
+ 'Razzmic Berry',
791
+ 'Rebecca Purple',
792
+ 'Red',
793
+ 'Red',
794
+ 'Red-brown',
795
+ 'Red devil',
796
+ 'Red-orange',
797
+ 'Red-purple',
798
+ 'Red-violet',
799
+ 'Redwood',
800
+ 'Regalia',
801
+ 'Resolution blue',
802
+ 'Rhythm',
803
+ 'Rich black',
804
+ 'Rich brilliant lavender',
805
+ 'Rich carmine',
806
+ 'Rich electric blue',
807
+ 'Rich lavender',
808
+ 'Rich lilac',
809
+ 'Rich maroon',
810
+ 'Rifle green',
811
+ 'Roast coffee',
812
+ 'Robin egg blue',
813
+ 'Rocket metallic',
814
+ 'Roman silver',
815
+ 'Rose',
816
+ 'Rose bonbon',
817
+ 'Rose ebony',
818
+ 'Rose gold',
819
+ 'Rose madder',
820
+ 'Rose pink',
821
+ 'Rose quartz',
822
+ 'Rose red',
823
+ 'Rose taupe',
824
+ 'Rose vale',
825
+ 'Rosewood',
826
+ 'Rosso corsa',
827
+ 'Rosy brown',
828
+ 'Royal azure',
829
+ 'Royal blue',
830
+ 'Royal blue',
831
+ 'Royal fuchsia',
832
+ 'Royal purple',
833
+ 'Royal yellow',
834
+ 'Ruber',
835
+ 'Rubine red',
836
+ 'Ruby',
837
+ 'Ruby red',
838
+ 'Ruddy',
839
+ 'Ruddy brown',
840
+ 'Ruddy pink',
841
+ 'Rufous',
842
+ 'Russet',
843
+ 'Russian green',
844
+ 'Russian violet',
845
+ 'Rust',
846
+ 'Rusty red',
847
+
848
+ 'Sacramento State green',
849
+ 'Saddle brown',
850
+ 'Safety orange',
851
+ 'Safety yellow',
852
+ 'Saffron',
853
+ 'Sage',
854
+ "St. Patrick's blue",
855
+ 'Salmon',
856
+ 'Salmon pink',
857
+ 'Sand',
858
+ 'Sand dune',
859
+ 'Sandstorm',
860
+ 'Sandy brown',
861
+ 'Sandy taupe',
862
+ 'Sangria',
863
+ 'Sap green',
864
+ 'Sapphire',
865
+ 'Sapphire blue',
866
+ 'Satin sheen gold',
867
+ 'Scarlet',
868
+ 'Scarlet',
869
+ 'Schauss pink',
870
+ 'School bus yellow',
871
+ "Screamin' Green",
872
+ 'Sea blue',
873
+ 'Sea green',
874
+ 'Seal brown',
875
+ 'Seashell',
876
+ 'Selective yellow',
877
+ 'Sepia',
878
+ 'Shadow',
879
+ 'Shadow blue',
880
+ 'Shampoo',
881
+ 'Shamrock green',
882
+ 'Sheen Green',
883
+ 'Shimmering Blush',
884
+ 'Shocking pink',
885
+ 'Sienna',
886
+ 'Silver',
887
+ 'Silver chalice',
888
+ 'Silver Lake blue',
889
+ 'Silver pink',
890
+ 'Silver sand',
891
+ 'Sinopia',
892
+ 'Skobeloff',
893
+ 'Sky blue',
894
+ 'Sky magenta',
895
+ 'Slate blue',
896
+ 'Slate gray',
897
+ 'Smalt',
898
+ 'Smitten',
899
+ 'Smoke',
900
+ 'Smoky black',
901
+ 'Smoky Topaz',
902
+ 'Snow',
903
+ 'Soap',
904
+ 'Solid pink',
905
+ 'Sonic silver',
906
+ 'Spartan Crimson',
907
+ 'Space cadet',
908
+ 'Spanish bistre',
909
+ 'Spanish blue',
910
+ 'Spanish carmine',
911
+ 'Spanish crimson',
912
+ 'Spanish gray',
913
+ 'Spanish green',
914
+ 'Spanish orange',
915
+ 'Spanish pink',
916
+ 'Spanish red',
917
+ 'Spanish sky blue',
918
+ 'Spanish violet',
919
+ 'Spanish viridian',
920
+ 'Spiro Disco Ball',
921
+ 'Spring bud',
922
+ 'Spring green',
923
+ 'Star command blue',
924
+ 'Steel blue',
925
+ 'Steel pink',
926
+ 'Stil de grain yellow',
927
+ 'Stizza',
928
+ 'Stormcloud',
929
+ 'Straw',
930
+ 'Strawberry',
931
+ 'Sunglow',
932
+ 'Sunray',
933
+ 'Sunset',
934
+ 'Sunset orange',
935
+ 'Super pink',
936
+
937
+ 'Tan',
938
+ 'Tangelo',
939
+ 'Tangerine',
940
+ 'Tangerine yellow',
941
+ 'Tango pink',
942
+ 'Taupe',
943
+ 'Taupe gray',
944
+ 'Tea green',
945
+ 'Tea rose',
946
+ 'Tea rose',
947
+ 'Teal',
948
+ 'Teal blue',
949
+ 'Teal deer',
950
+ 'Teal green',
951
+ 'Telemagenta',
952
+ 'Tenne',
953
+ 'Terra cotta',
954
+ 'Thistle',
955
+ 'Thulian pink',
956
+ 'Tickle Me Pink',
957
+ 'Tiffany Blue',
958
+ "Tiger's eye",
959
+ 'Timberwolf',
960
+ 'Titanium yellow',
961
+ 'Tomato',
962
+ 'Toolbox',
963
+ 'Topaz',
964
+ 'Tractor red',
965
+ 'Trolley Grey',
966
+ 'Tropical rain forest',
967
+ 'True Blue',
968
+ 'Tufts Blue',
969
+ 'Tulip',
970
+ 'Tumbleweed',
971
+ 'Turkish rose',
972
+ 'Turquoise',
973
+ 'Turquoise blue',
974
+ 'Turquoise green',
975
+ 'Tuscan',
976
+ 'Tuscan brown',
977
+ 'Tuscan red',
978
+ 'Tuscan tan',
979
+ 'Tuscany',
980
+ 'Twilight lavender',
981
+ 'Tyrian purple',
982
+
983
+ 'UA blue',
984
+ 'UA red',
985
+ 'Ube',
986
+ 'UCLA Blue',
987
+ 'UCLA Gold',
988
+ 'UFO Green',
989
+ 'Ultramarine',
990
+ 'Ultramarine blue',
991
+ 'Ultra pink',
992
+ 'Ultra red',
993
+ 'Umber',
994
+ 'Unbleached silk',
995
+ 'United Nations blue',
996
+ 'University of California Gold',
997
+ 'Unmellow yellow',
998
+ 'UP Forest green',
999
+ 'UP Maroon',
1000
+ 'Upsdell red',
1001
+ 'Urobilin',
1002
+ 'USAFA blue',
1003
+ 'USC Cardinal',
1004
+ 'USC Gold',
1005
+ 'University of Tennessee Orange',
1006
+ 'Utah Crimson',
1007
+ 'Vanilla',
1008
+ 'Vanilla ice',
1009
+ 'Vegas gold',
1010
+ 'Venetian red',
1011
+ 'Verdigris',
1012
+ 'Vermilion',
1013
+ 'Vermilion',
1014
+ 'Veronica',
1015
+ 'Violet',
1016
+ 'Violet-blue',
1017
+ 'Violet-red',
1018
+ 'Viridian',
1019
+ 'Viridian green',
1020
+ 'Vista blue',
1021
+ 'Vivid auburn',
1022
+ 'Vivid burgundy',
1023
+ 'Vivid cerise',
1024
+ 'Vivid orchid',
1025
+ 'Vivid sky blue',
1026
+ 'Vivid tangerine',
1027
+ 'Vivid violet',
1028
+
1029
+ 'Warm black',
1030
+ 'Waterspout',
1031
+ 'Wenge',
1032
+ 'Wheat',
1033
+ 'White',
1034
+ 'White smoke',
1035
+ 'Wild blue yonder',
1036
+ 'Wild orchid',
1037
+ 'Wild Strawberry',
1038
+ 'Wild watermelon',
1039
+ 'Willpower orange',
1040
+ 'Windsor tan',
1041
+ 'Wine',
1042
+ 'Wine dregs',
1043
+ 'Wisteria',
1044
+ 'Wood brown',
1045
+ 'Xanadu',
1046
+ 'Yale Blue',
1047
+ 'Yankees blue',
1048
+ 'Yellow',
1049
+ 'Yellow-green',
1050
+ 'Yellow Orange',
1051
+ 'Yellow rose',
1052
+ 'Zaffre',
1053
+ 'Zinnwaldite brown',
1054
+ 'Zomp'
1055
+ ].freeze
1056
+
1057
+ COLOR_SEARCH = FuzzBall::Searcher.new(COLOR_NAMES)
1058
+ end