auth0 4.17.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/.yardoc/checksums +22 -0
  4. data/.yardoc/complete +0 -0
  5. data/.yardoc/object_types +0 -0
  6. data/.yardoc/objects/root.dat +0 -0
  7. data/.yardoc/proxy_types +0 -0
  8. data/CHANGELOG.md +33 -0
  9. data/Gemfile +0 -1
  10. data/Gemfile.lock +19 -21
  11. data/README.md +1 -7
  12. data/Rakefile +0 -22
  13. data/auth0.gemspec +0 -1
  14. data/examples/ruby-api/.gitignore +0 -6
  15. data/lib/auth0/api/authentication_endpoints.rb +6 -220
  16. data/lib/auth0/api/v2/users.rb +7 -5
  17. data/lib/auth0/exception.rb +2 -7
  18. data/lib/auth0/mixins.rb +0 -1
  19. data/lib/auth0/mixins/access_token_struct.rb +2 -2
  20. data/lib/auth0/mixins/api_token_struct.rb +2 -2
  21. data/lib/auth0/mixins/initializer.rb +1 -7
  22. data/lib/auth0/mixins/permission_struct.rb +2 -2
  23. data/lib/auth0/mixins/validation.rb +1 -1
  24. data/lib/auth0/version.rb +1 -1
  25. data/spec/integration/lib/auth0/api/api_authentication_spec.rb +1 -1
  26. data/spec/integration/lib/auth0/api/v2/api_roles_spec.rb +1 -1
  27. data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +1 -1
  28. data/spec/lib/auth0/api/v2/roles_spec.rb +4 -4
  29. data/spec/lib/auth0/api/v2/users_spec.rb +19 -9
  30. data/spec/support/credentials.rb +0 -19
  31. metadata +7 -31
  32. data/deploy_documentation.sh +0 -29
  33. data/doc_config/templates/default/fulldoc/html/css/full_list.css +0 -79
  34. data/doc_config/templates/default/fulldoc/html/css/style.css +0 -546
  35. data/doc_config/templates/default/layout/html/breadcrumb.erb +0 -11
  36. data/doc_config/templates/default/layout/html/footer.erb +0 -115
  37. data/doc_config/templates/default/layout/html/headers.erb +0 -17
  38. data/doc_config/templates/default/layout/html/layout.erb +0 -27
  39. data/lib/auth0/api/v1.rb +0 -19
  40. data/lib/auth0/api/v1/clients.rb +0 -58
  41. data/lib/auth0/api/v1/connections.rb +0 -68
  42. data/lib/auth0/api/v1/logs.rb +0 -43
  43. data/lib/auth0/api/v1/rules.rb +0 -57
  44. data/lib/auth0/api/v1/users.rb +0 -227
  45. data/spec/lib/auth0/api/authentication_endpoints_spec.rb +0 -703
@@ -43,13 +43,15 @@ module Auth0
43
43
  # The attribute connection is always mandatory but depending on the type of connection you are using there
44
44
  # could be others too. For instance, Auth0 DB Connections require email and password.
45
45
  # @see https://auth0.com/docs/api/v2#!/Users/post_users
46
- # @param name [string] The user name.
47
- # @param options [hash]
48
- # * :connection [string] The connection the user belongs to.
46
+ # @param connection [string] The connection the user belongs to.
47
+ # @param options [hash] See https://auth0.com/docs/api/management/v2#!/Users/post_users for available options
49
48
  # @return [json] Returns the created user.
50
- def create_user(name, options = {})
49
+ def create_user(connection, options = {})
50
+ if !connection.is_a?(String) || connection.empty?
51
+ raise Auth0::MissingParameter, 'Must supply a valid connection'
52
+ end
51
53
  request_params = Hash[options.map { |(k, v)| [k.to_sym, v] }]
52
- request_params[:name] = name
54
+ request_params[:connection] = connection
53
55
  post(users_path, request_params)
54
56
  end
55
57
 
@@ -44,17 +44,12 @@ module Auth0
44
44
  class AccessDenied < Auth0::HTTPError; end
45
45
  # Invalid parameter passed, e.g. empty where ID is required
46
46
  class InvalidParameter < Auth0::Exception; end
47
- # Invalid Auth0 credentials either client_id/secret for API v1
48
- # or JWT for API v2/
47
+ # Invalid JWT
49
48
  class InvalidCredentials < Auth0::Exception; end
50
49
  # Invalid Auth0 API namespace
51
50
  class InvalidApiNamespace < Auth0::Exception; end
52
51
  # Auth0 API rate-limiting encountered
53
- # TODO: When making API-breaking changes, make this a subclass
54
- # of Auth0::HTTPError directly rather than Auth0::Unsupported.
55
- # It's currently under Unsupported to avoid breaking compatibility
56
- # with prior gem versions that treated 429 errors as unknown errors.
57
- class RateLimitEncountered < Auth0::Unsupported
52
+ class RateLimitEncountered < Auth0::HTTPError
58
53
  def reset
59
54
  Time.at(headers['X-RateLimit-Reset']).utc
60
55
  end
@@ -11,7 +11,6 @@ require 'auth0/mixins/permission_struct'
11
11
  require 'auth0/mixins/validation'
12
12
 
13
13
  require 'auth0/api/authentication_endpoints'
14
- require 'auth0/api/v1'
15
14
  require 'auth0/api/v2'
16
15
 
17
16
  module Auth0
@@ -1,4 +1,4 @@
1
- AccessToken = Struct.new(
1
+ Auth0::AccessToken = Struct.new(
2
2
  :access_token,
3
3
  :expires_in,
4
4
  :refresh_token,
@@ -17,4 +17,4 @@ AccessToken = Struct.new(
17
17
  def token
18
18
  access_token
19
19
  end
20
- end
20
+ end
@@ -1,4 +1,4 @@
1
- ApiToken = Struct.new :access_token, :scope, :expires_in do
1
+ Auth0::ApiToken = Struct.new :access_token, :scope, :expires_in do
2
2
 
3
3
  def token
4
4
  access_token
@@ -7,4 +7,4 @@ ApiToken = Struct.new :access_token, :scope, :expires_in do
7
7
  def scopes
8
8
  scope.split
9
9
  end
10
- end
10
+ end
@@ -40,7 +40,7 @@ module Auth0
40
40
  private
41
41
 
42
42
  def initialize_api(options)
43
- api_v2?(options) ? initialize_v2(options) : initialize_v1
43
+ initialize_v2(options)
44
44
  raise InvalidCredentials, 'Must supply a valid API token' if @token.nil?
45
45
  if options.fetch(:authorization, nil) == 'Basic'
46
46
  authorization_header_basic(options)
@@ -61,12 +61,6 @@ module Auth0
61
61
  @token = api_token.token if @token.nil? && @client_id && @client_secret
62
62
  end
63
63
 
64
- def initialize_v1
65
- extend Auth0::Api::V1
66
- raise InvalidCredentials, 'Invalid API v1 client_id and client_secret' if @client_id.nil? || @client_secret.nil?
67
- @token = obtain_access_token
68
- end
69
-
70
64
  def api_v2?(options)
71
65
  version = options[:api_version] || 2
72
66
  protocol = options[:protocols].to_s
@@ -1,3 +1,3 @@
1
- Permission = Struct.new :permission_name, :resource_server_identifier do
1
+ Auth0::Permission = Struct.new :permission_name, :resource_server_identifier do
2
2
 
3
- end
3
+ end
@@ -23,7 +23,7 @@ module Auth0
23
23
  raise Auth0::InvalidParameter, 'Must supply an array of Permissions' unless permissions.kind_of?(Array)
24
24
  raise Auth0::MissingParameter, 'Must supply an array of Permissions' if permissions.empty?
25
25
  raise Auth0::InvalidParameter, 'All array elements must be Permissions' unless permissions.all? do |permission|
26
- permission.kind_of? Permission
26
+ permission.kind_of? ::Auth0::Permission
27
27
  end
28
28
  permissions.map { |permission| permission.to_h }
29
29
  end
@@ -1,4 +1,4 @@
1
1
  # current version of gem
2
2
  module Auth0
3
- VERSION = '4.17.1'.freeze
3
+ VERSION = '5.0.0'.freeze
4
4
  end
@@ -60,7 +60,7 @@ describe Auth0::Api::AuthenticationEndpoints do
60
60
  end
61
61
 
62
62
  it 'should return the userinfo' do
63
- tokens = @client.login(test_user_email, test_user_pwd, nil, nil)
63
+ tokens = @client.login_with_resource_owner(test_user_email, test_user_pwd)
64
64
  expect(@client.userinfo(tokens['access_token'])).to(
65
65
  include( 'email' => test_user_email )
66
66
  )
@@ -14,7 +14,7 @@ describe Auth0::Api::V2::Roles do
14
14
  @test_role_name = "#{entity_suffix}-test-role"
15
15
 
16
16
  @test_permission_name = "#{entity_suffix}-test-permission"
17
- @test_permission = Permission.new(@test_permission_name, @test_api_name)
17
+ @test_permission = ::Auth0::Permission.new(@test_permission_name , @test_api_name)
18
18
 
19
19
  VCR.use_cassette('Auth0_Api_V2_Roles/create_test_user') do
20
20
  @test_user ||= client.create_user(
@@ -14,7 +14,7 @@ describe Auth0::Api::V2::Users do
14
14
  @test_api_scope = 'test:scope'
15
15
 
16
16
  @test_permission_name = "#{entity_suffix}-test-permission-for-users"
17
- @test_permission = Permission.new("#{entity_suffix}-test-permission-for-users", @test_api_name)
17
+ @test_permission = ::Auth0::Permission.new("#{entity_suffix}-test-permission-for-users", @test_api_name)
18
18
 
19
19
  VCR.use_cassette('Auth0_Api_V2_Users/create_test_user') do
20
20
  @test_user ||= client.create_user(
@@ -293,8 +293,8 @@ describe Auth0::Api::V2::Roles do
293
293
  @instance.add_role_permissions(
294
294
  'ROLE_ID',
295
295
  [
296
- Permission.new('permission-name-1', 'server-id-1'),
297
- Permission.new('permission-name-2', 'server-id-2')
296
+ Auth0::Permission.new('permission-name-1', 'server-id-1'),
297
+ Auth0::Permission.new('permission-name-2', 'server-id-2')
298
298
  ]
299
299
  )
300
300
  end.not_to raise_error
@@ -352,8 +352,8 @@ describe Auth0::Api::V2::Roles do
352
352
  @instance.remove_role_permissions(
353
353
  'ROLE_ID',
354
354
  [
355
- Permission.new('permission-name-3', 'server-id-3'),
356
- Permission.new('permission-name-4', 'server-id-4')
355
+ Auth0::Permission.new('permission-name-3', 'server-id-3'),
356
+ Auth0::Permission.new('permission-name-4', 'server-id-4')
357
357
  ]
358
358
  )
359
359
  end.not_to raise_error
@@ -86,18 +86,28 @@ describe Auth0::Api::V2::Users do
86
86
  '/api/v2/users',
87
87
  email: 'test@test.com',
88
88
  password: 'password',
89
- connection: 'conn',
90
- name: 'name'
89
+ connection: 'conn'
91
90
  )
92
91
  expect do
93
92
  @instance.create_user(
94
- 'name',
93
+ 'conn',
95
94
  email: 'test@test.com',
96
- password: 'password',
97
- connection: 'conn'
95
+ password: 'password'
98
96
  )
99
97
  end.not_to raise_error
100
98
  end
99
+
100
+ it 'is expected to raise error if connection is not specified' do
101
+ expect(@instance).not_to receive(:delete)
102
+ expect {
103
+ @instance.create_user(
104
+ email: 'test@test.com',
105
+ password: 'password'
106
+ )
107
+ }.to raise_exception(
108
+ Auth0::MissingParameter
109
+ )
110
+ end
101
111
  end
102
112
 
103
113
  context '.delete_users' do
@@ -451,8 +461,8 @@ describe Auth0::Api::V2::Users do
451
461
  @instance.remove_user_permissions(
452
462
  'USER_ID',
453
463
  [
454
- Permission.new('permission-name-1', 'server-id-1'),
455
- Permission.new('permission-name-2', 'server-id-2')
464
+ Auth0::Permission.new('permission-name-1', 'server-id-1'),
465
+ Auth0::Permission.new('permission-name-2', 'server-id-2')
456
466
  ]
457
467
  )
458
468
  end.not_to raise_error
@@ -496,8 +506,8 @@ describe Auth0::Api::V2::Users do
496
506
  @instance.add_user_permissions(
497
507
  'USER_ID',
498
508
  [
499
- Permission.new('permission-name-1', 'server-id-1'),
500
- Permission.new('permission-name-2', 'server-id-2')
509
+ Auth0::Permission.new('permission-name-1', 'server-id-1'),
510
+ Auth0::Permission.new('permission-name-2', 'server-id-2')
501
511
  ]
502
512
  )
503
513
  end.not_to raise_error
@@ -1,24 +1,5 @@
1
1
  module Credentials
2
2
  module_function
3
-
4
- def v1_creds
5
- {
6
- client_id: ENV['CLIENT_ID'],
7
- client_secret: ENV['CLIENT_SECRET'],
8
- domain: ENV['DOMAIN'],
9
- api_version: 1
10
- }
11
- end
12
-
13
- def v1_global_creds
14
- {
15
- client_id: ENV['GLOBAL_CLIENT_ID'],
16
- client_secret: ENV['GLOBAL_CLIENT_SECRET'],
17
- domain: ENV['DOMAIN'],
18
- api_version: 1
19
- }
20
- end
21
-
22
3
  def v2_creds
23
4
  {
24
5
  domain: ENV.fetch( 'DOMAIN', 'DOMAIN' ),
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auth0
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.17.1
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Auth0
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2020-10-21 00:00:00.000000000 Z
14
+ date: 2020-10-23 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rest-client
@@ -229,20 +229,6 @@ dependencies:
229
229
  - - "~>"
230
230
  - !ruby/object:Gem::Version
231
231
  version: '1.4'
232
- - !ruby/object:Gem::Dependency
233
- name: yard
234
- requirement: !ruby/object:Gem::Requirement
235
- requirements:
236
- - - "~>"
237
- - !ruby/object:Gem::Version
238
- version: 0.9.12
239
- type: :development
240
- prerelease: false
241
- version_requirements: !ruby/object:Gem::Requirement
242
- requirements:
243
- - - "~>"
244
- - !ruby/object:Gem::Version
245
- version: 0.9.12
246
232
  - !ruby/object:Gem::Dependency
247
233
  name: gem-release
248
234
  requirement: !ruby/object:Gem::Requirement
@@ -276,6 +262,11 @@ files:
276
262
  - ".rspec"
277
263
  - ".rubocop.yml"
278
264
  - ".rubocop_todo.yml"
265
+ - ".yardoc/checksums"
266
+ - ".yardoc/complete"
267
+ - ".yardoc/object_types"
268
+ - ".yardoc/objects/root.dat"
269
+ - ".yardoc/proxy_types"
279
270
  - CHANGELOG.md
280
271
  - CODE_OF_CONDUCT.md
281
272
  - DEPLOYMENT.md
@@ -289,13 +280,6 @@ files:
289
280
  - Rakefile
290
281
  - auth0.gemspec
291
282
  - codecov.yml
292
- - deploy_documentation.sh
293
- - doc_config/templates/default/fulldoc/html/css/full_list.css
294
- - doc_config/templates/default/fulldoc/html/css/style.css
295
- - doc_config/templates/default/layout/html/breadcrumb.erb
296
- - doc_config/templates/default/layout/html/footer.erb
297
- - doc_config/templates/default/layout/html/headers.erb
298
- - doc_config/templates/default/layout/html/layout.erb
299
283
  - examples/ruby-api/.env.example
300
284
  - examples/ruby-api/.gitignore
301
285
  - examples/ruby-api/Gemfile
@@ -366,12 +350,6 @@ files:
366
350
  - lib/auth0.rb
367
351
  - lib/auth0/algorithm.rb
368
352
  - lib/auth0/api/authentication_endpoints.rb
369
- - lib/auth0/api/v1.rb
370
- - lib/auth0/api/v1/clients.rb
371
- - lib/auth0/api/v1/connections.rb
372
- - lib/auth0/api/v1/logs.rb
373
- - lib/auth0/api/v1/rules.rb
374
- - lib/auth0/api/v1/users.rb
375
353
  - lib/auth0/api/v2.rb
376
354
  - lib/auth0/api/v2/anomaly.rb
377
355
  - lib/auth0/api/v2/blacklists.rb
@@ -594,7 +572,6 @@ files:
594
572
  - spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb
595
573
  - spec/integration/lib/auth0/api/v2/api_users_spec.rb
596
574
  - spec/integration/lib/auth0/auth0_client_spec.rb
597
- - spec/lib/auth0/api/authentication_endpoints_spec.rb
598
575
  - spec/lib/auth0/api/v2/anomaly_spec.rb
599
576
  - spec/lib/auth0/api/v2/blacklists_spec.rb
600
577
  - spec/lib/auth0/api/v2/client_grants_spec.rb
@@ -838,7 +815,6 @@ test_files:
838
815
  - spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb
839
816
  - spec/integration/lib/auth0/api/v2/api_users_spec.rb
840
817
  - spec/integration/lib/auth0/auth0_client_spec.rb
841
- - spec/lib/auth0/api/authentication_endpoints_spec.rb
842
818
  - spec/lib/auth0/api/v2/anomaly_spec.rb
843
819
  - spec/lib/auth0/api/v2/blacklists_spec.rb
844
820
  - spec/lib/auth0/api/v2/client_grants_spec.rb
@@ -1,29 +0,0 @@
1
- #!/bin/bash
2
- # exit with nonzero exit code if anything fails
3
- set -e
4
-
5
- # clear and re-create the out directory
6
- rm -rf doc || exit 0;
7
- mkdir doc;
8
-
9
- # build documentation
10
- bundle exec rake documentation
11
-
12
- # go to the out directory and create a *new* Git repo
13
- cd doc
14
- git init
15
-
16
- # inside this git repo we'll pretend to be a new user
17
- git config user.name "Circle CI"
18
- git config user.email "build-documentation@auth0.com"
19
-
20
- # The first and only commit to this new Git repo contains all the
21
- # files present with the commit message "Deploy to GitHub Pages".
22
- git add .
23
- git commit -m "Deploy to GitHub Pages"
24
-
25
- # Force push from the current repo's master branch to the remote
26
- # repo's gh-pages branch. (All previous history on the gh-pages branch
27
- # will be lost, since we are overwriting it.) We redirect any output to
28
- # /dev/null to hide any sensitive credential data that might otherwise be exposed.
29
- git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:gh-pages > /dev/null 2>&1
@@ -1,79 +0,0 @@
1
- body {
2
- padding: 0 20px;
3
- font-size: 14px;
4
- -webkit-font-smoothing: antialiased;
5
- -moz-font-smoothing: antialiased;
6
- font-family: "avenir-next-web", Avenir, "Helvetica Neue", Hevetica, sans-serif;
7
- color: #4d4d4d;
8
- }
9
-
10
- h1, h2, h3, h4, h5 {
11
- line-height: 1.5;
12
- font-family: "avenir-next-web", Avenir, "Helvetica Neue", Hevetica, sans-serif;
13
- color: #000;
14
- font-weight: 400;
15
- }
16
- h1 {
17
- font-size: 3rem;
18
- }
19
- h2 {
20
- font-size: 2rem;
21
- }
22
- h3 {
23
- font-size: 1.5rem;
24
- }
25
- h4 {
26
- font-size: 1.3rem;
27
- }
28
- h5 {
29
- font-size: 16px;
30
- }
31
-
32
- .clear { clear: both; }
33
- #search { position: absolute; right: 5px; top: 9px; padding-left: 24px; }
34
- #content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; }
35
- #full_list { padding: 0; list-style: none; margin-left: 0; }
36
- #full_list ul { padding: 0; }
37
- #full_list li { padding: 5px; padding-left: 12px; margin: 0; font-size: 1.1em; list-style: none; }
38
- #noresults { padding: 7px 12px; }
39
- #content.insearch #noresults { margin-left: 7px; }
40
- ul.collapsed ul, ul.collapsed li { display: none; }
41
- ul.collapsed.search_uncollapsed { display: block; }
42
- ul.collapsed.search_uncollapsed li { display: list-item; }
43
- li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; }
44
- li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; }
45
- li { color: #888; cursor: pointer; }
46
- li.deprecated { text-decoration: line-through; font-style: italic; }
47
- /*li.r1 { background: #f0f0f0; }
48
- li.r2 { background: #fafafa; }*/
49
- li:hover { background: #ddd; }
50
- li small:before { content: "("; }
51
- li small:after { content: ")"; }
52
- li small.search_info { display: none; }
53
- a:link, a:visited { text-decoration: none; color: #777; }
54
- li.clicked { background: #777; color: #ccc; }
55
- li.clicked a:link, li.clicked a:visited { color: #eee; }
56
- li.clicked a.toggle { opacity: 0.5; background-position: bottom right; }
57
- li.collapsed.clicked a.toggle { background-position: top right; }
58
- #search input { border: 1px solid #bbb; -moz-border-radius: 3px; -webkit-border-radius: 3px; }
59
- #nav { margin-left: 10px; font-size: 0.9em; display: none; color: #aaa; }
60
- #nav a:link, #nav a:visited { color: #358; }
61
- #nav a:hover { background: transparent; color: #5af; }
62
- .frames #nav span:after { content: ' | '; }
63
- .frames #nav span:last-child:after { content: ''; }
64
-
65
- .frames #content h1 { margin-top: 0; }
66
- .frames li { white-space: nowrap; cursor: normal; }
67
- .frames li small { display: block; font-size: 0.8em; }
68
- .frames li small:before { content: ""; }
69
- .frames li small:after { content: ""; }
70
- .frames li small.search_info { display: none; }
71
- .frames #search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; }
72
- .frames #content.insearch #search { background-position: center right; }
73
- .frames #search input { width: 110px; }
74
- .frames #nav { display: block; }
75
-
76
- #full_list.insearch li { display: none; }
77
- #full_list.insearch li.found { display: list-item; padding-left: 10px; }
78
- #full_list.insearch li a.toggle { display: none; }
79
- #full_list.insearch li small.search_info { display: block; }