crass-1.0.2/0000755000004100000410000000000012530245151012653 5ustar www-datawww-datacrass-1.0.2/Rakefile0000644000004100000410000000041612530245151014321 0ustar www-datawww-datarequire 'bundler' require 'rake/testtask' Bundler::GemHelper.install_tasks Rake::TestTask.new task :default => [:test] task :'pull-css-tests' do sh 'git subtree pull -P test/css-parsing-tests https://github.com/SimonSapin/css-parsing-tests.git master --squash' end crass-1.0.2/Gemfile0000644000004100000410000000004612530245151014146 0ustar www-datawww-datasource 'https://rubygems.org' gemspec crass-1.0.2/HISTORY.md0000644000004100000410000000606412530245151014344 0ustar www-datawww-dataCrass Change History ==================== 1.0.2 (2015-04-17) ------------------ * Fixed: An at-rule immediately followed by a `{}` simple block would have the block (and subsequent tokens until a semicolon) incorrectly appended to its prelude. This was super dumb and made me very sad. 1.0.1 (2014-11-16) ------------------ * Fixed: Modifications made to the block of an `:at_rule` node in a parse tree weren't reflected when that node was stringified. This was a regression introduced in 1.0.0. 1.0.0 (2014-11-16) ------------------ * Many parsing and tokenization tweaks to bring us into full compliance with the [14 November 2014 editor's draft][css-syntax-draft] of the CSS syntax spec. The most significant outwardly visible change is that quoted URLs like `url("foo")` are now returned as `:function` tokens and not `:url` tokens due to a change in the tokenization spec. * Teensy tiny speed and memory usage improvements that you almost certainly won't notice. * Fixed: A semicolon following a `@charset` rule would be omitted during serialization. * Fixed: A multibyte char at the beginning of an id token could trigger an encoding error because `StringScanner#peek` is a jerkface. [css-syntax-draft]:http://dev.w3.org/csswg/css-syntax-3/ 0.2.1 (2014-07-22) ------------------ * Fixed: Error when the last property of a rule has no value and no terminating semicolon. [#2][] [#2]:https://github.com/rgrove/crass/issues/2 0.2.0 (2013-10-10) ------------------ * Added a `:children` field to `:property` nodes. It's an array containing all the nodes that make up the property's value. * Fixed: Incorrect value was given for `:property` nodes whose values contained functions. * Fixed: When parsing the value of an at-rule's block as a list of rules, a selector containing a function (such as `#foo:not(.bar)`) would cause that property and the rest of the token stream to be discarded. 0.1.0 (2013-10-04) ------------------ * Tokenization is a little over 50% faster. * Added tons of unit tests. * Added `Crass.parse_properties` and `Crass::Parser.parse_properties`, which can be used to parse the contents of an HTML element's `style` attribute. * Added `Crass::Parser.parse_rules`, which can be used to parse the contents of an `:at_rule` block like `@media` that may contain style rules. * Fixed: `Crass::Parser#consume_at_rule` and `#consume_qualified_rule` didn't properly handle already-parsed `:simple_block` nodes in the input, which occurs when parsing rules in the value of an `:at_rule` block. * Fixed: On `:property` nodes, `:important` is now set to `true` when the property is followed by an "!important" declaration. * Fixed: "!important" is no longer included in the value of a `:property` node. * Fixed: A variety of tokenization bugs uncovered by tests. * Fixed: Added a workaround for a possible spec bug when an `:at_keyword` is encountered while consuming declarations. 0.0.2 (2013-09-30) ------------------ * Fixed: `:at_rule` nodes now have a `:name` key. 0.0.1 (2013-09-27) ------------------ * Initial release. crass-1.0.2/.travis.yml0000644000004100000410000000012412530245151014761 0ustar www-datawww-datalanguage: ruby rvm: - 1.9.2 - 1.9.3 - 2.0.0 - 2.1.6 - 2.2.2 - ruby-head crass-1.0.2/lib/0000755000004100000410000000000012530245151013421 5ustar www-datawww-datacrass-1.0.2/lib/crass/0000755000004100000410000000000012530245151014534 5ustar www-datawww-datacrass-1.0.2/lib/crass/parser.rb0000644000004100000410000004554512530245151016372 0ustar www-datawww-data# encoding: utf-8 require_relative 'token-scanner' require_relative 'tokenizer' module Crass # Parses a CSS string or list of tokens. # # 5. http://dev.w3.org/csswg/css-syntax/#parsing class Parser BLOCK_END_TOKENS = { :'{' => :'}', :'[' => :']', :'(' => :')' } # -- Class Methods --------------------------------------------------------- # Parses CSS properties (such as the contents of an HTML element's `style` # attribute) and returns a parse tree. # # See {Tokenizer#initialize} for _options_. # # 5.3.6. http://dev.w3.org/csswg/css-syntax/#parse-a-list-of-declarations def self.parse_properties(input, options = {}) Parser.new(input, options).parse_properties end # Parses CSS rules (such as the content of a `@media` block) and returns a # parse tree. The only difference from {parse_stylesheet} is that CDO/CDC # nodes (``) aren't ignored. # # See {Tokenizer#initialize} for _options_. # # 5.3.3. http://dev.w3.org/csswg/css-syntax/#parse-a-list-of-rules def self.parse_rules(input, options = {}) parser = Parser.new(input, options) rules = parser.consume_rules rules.map do |rule| if rule[:node] == :qualified_rule parser.create_style_rule(rule) else rule end end end # Parses a CSS stylesheet and returns a parse tree. # # See {Tokenizer#initialize} for _options_. # # 5.3.2. http://dev.w3.org/csswg/css-syntax/#parse-a-stylesheet def self.parse_stylesheet(input, options = {}) parser = Parser.new(input, options) rules = parser.consume_rules(:top_level => true) rules.map do |rule| if rule[:node] == :qualified_rule parser.create_style_rule(rule) else rule end end end # Converts a node or array of nodes into a CSS string based on their # original tokenized input. # # Options: # # * **:exclude_comments** - When `true`, comments will be excluded. # def self.stringify(nodes, options = {}) nodes = [nodes] unless nodes.is_a?(Array) string = '' nodes.each do |node| next if node.nil? case node[:node] when :at_rule string << '@' string << node[:name] string << self.stringify(node[:prelude], options) if node[:block] string << '{' << self.stringify(node[:block], options) << '}' else string << ';' end when :comment string << node[:raw] unless options[:exclude_comments] when :simple_block string << node[:start] string << self.stringify(node[:value], options) string << node[:end] when :style_rule string << self.stringify(node[:selector][:tokens], options) string << '{' << self.stringify(node[:children], options) << '}' else if node.key?(:raw) string << node[:raw] elsif node.key?(:tokens) string << self.stringify(node[:tokens], options) end end end string end # -- Instance Methods ------------------------------------------------------ # {TokenScanner} wrapping the tokens generated from this parser's input. attr_reader :tokens # Initializes a parser based on the given _input_, which may be a CSS string # or an array of tokens. # # See {Tokenizer#initialize} for _options_. def initialize(input, options = {}) unless input.kind_of?(Enumerable) input = Tokenizer.tokenize(input, options) end @tokens = TokenScanner.new(input) end # Consumes an at-rule and returns it. # # 5.4.2. http://dev.w3.org/csswg/css-syntax-3/#consume-at-rule def consume_at_rule(input = @tokens) rule = {} rule[:tokens] = input.collect do rule[:name] = input.consume[:value] rule[:prelude] = [] while token = input.consume node = token[:node] if node == :comment # Non-standard. next elsif node == :semicolon break elsif node === :'{' # Note: The spec says the block should _be_ the consumed simple # block, but Simon Sapin's CSS parsing tests and tinycss2 expect # only the _value_ of the consumed simple block here. I assume I'm # interpreting the spec too literally, so I'm going with the # tinycss2 behavior. rule[:block] = consume_simple_block(input)[:value] break elsif node == :simple_block && token[:start] == '{' # Note: The spec says the block should _be_ the simple block, but # Simon Sapin's CSS parsing tests and tinycss2 expect only the # _value_ of the simple block here. I assume I'm interpreting the # spec too literally, so I'm going with the tinycss2 behavior. rule[:block] = token[:value] break else input.reconsume rule[:prelude] << consume_component_value(input) end end end create_node(:at_rule, rule) end # Consumes a component value and returns it, or `nil` if there are no more # tokens. # # 5.4.6. http://dev.w3.org/csswg/css-syntax-3/#consume-a-component-value def consume_component_value(input = @tokens) return nil unless token = input.consume case token[:node] when :'{', :'[', :'(' consume_simple_block(input) when :function if token.key?(:name) # This is a parsed function, not a function token. This step isn't # mentioned in the spec, but it's necessary to avoid re-parsing # functions that have already been parsed. token else consume_function(input) end else token end end # Consumes a declaration and returns it, or `nil` on parse error. # # 5.4.5. http://dev.w3.org/csswg/css-syntax-3/#consume-a-declaration def consume_declaration(input = @tokens) declaration = {} value = [] declaration[:tokens] = input.collect do declaration[:name] = input.consume[:value] next_token = input.peek while next_token && next_token[:node] == :whitespace input.consume next_token = input.peek end unless next_token && next_token[:node] == :colon # Parse error. # # Note: The spec explicitly says to return nothing here, but Simon # Sapin's CSS parsing tests expect an error node. return create_node(:error, :value => 'invalid') end input.consume until input.peek.nil? value << consume_component_value(input) end end # Look for !important. important_tokens = value.reject {|token| node = token[:node] node == :whitespace || node == :comment || node == :semicolon }.last(2) if important_tokens.size == 2 && important_tokens[0][:node] == :delim && important_tokens[0][:value] == '!' && important_tokens[1][:node] == :ident && important_tokens[1][:value].downcase == 'important' declaration[:important] = true excl_index = value.index(important_tokens[0]) # Technically the spec doesn't require us to trim trailing tokens after # the !important, but Simon Sapin's CSS parsing tests expect it and # tinycss2 does it, so we'll go along with the cool kids. value.slice!(excl_index, value.size - excl_index) else declaration[:important] = false end declaration[:value] = value create_node(:declaration, declaration) end # Consumes a list of declarations and returns them. # # By default, the returned list may include `:comment`, `:semicolon`, and # `:whitespace` nodes, which is non-standard. # # Options: # # * **:strict** - Set to `true` to exclude non-standard `:comment`, # `:semicolon`, and `:whitespace` nodes. # # 5.4.4. http://dev.w3.org/csswg/css-syntax/#consume-a-list-of-declarations def consume_declarations(input = @tokens, options = {}) declarations = [] while token = input.consume case token[:node] # Non-standard: Preserve comments, semicolons, and whitespace. when :comment, :semicolon, :whitespace declarations << token unless options[:strict] when :at_keyword # When parsing a style rule, this is a parse error. Otherwise it's # not. input.reconsume declarations << consume_at_rule(input) when :ident decl_tokens = [token] while next_token = input.peek break if next_token[:node] == :semicolon decl_tokens << consume_component_value(input) end if decl = consume_declaration(TokenScanner.new(decl_tokens)) declarations << decl end else # Parse error (invalid property name, etc.). # # Note: The spec doesn't say we should append anything to the list of # declarations here, but Simon Sapin's CSS parsing tests expect an # error node. declarations << create_node(:error, :value => 'invalid') input.reconsume while next_token = input.peek break if next_token[:node] == :semicolon consume_component_value(input) end end end declarations end # Consumes a function and returns it. # # 5.4.8. http://dev.w3.org/csswg/css-syntax-3/#consume-a-function def consume_function(input = @tokens) function = { :name => input.current[:value], :value => [], :tokens => [input.current] # Non-standard, used for serialization. } function[:tokens].concat(input.collect { while token = input.consume case token[:node] when :')' break # Non-standard. when :comment next else input.reconsume function[:value] << consume_component_value(input) end end }) create_node(:function, function) end # Consumes a qualified rule and returns it, or `nil` if a parse error # occurs. # # 5.4.3. http://dev.w3.org/csswg/css-syntax-3/#consume-a-qualified-rule def consume_qualified_rule(input = @tokens) rule = {:prelude => []} rule[:tokens] = input.collect do while true unless token = input.consume # Parse error. # # Note: The spec explicitly says to return nothing here, but Simon # Sapin's CSS parsing tests expect an error node. return create_node(:error, :value => 'invalid') end if token[:node] == :'{' # Note: The spec says the block should _be_ the consumed simple # block, but Simon Sapin's CSS parsing tests and tinycss2 expect # only the _value_ of the consumed simple block here. I assume I'm # interpreting the spec too literally, so I'm going with the # tinycss2 behavior. rule[:block] = consume_simple_block(input)[:value] break elsif token[:node] == :simple_block && token[:start] == '{' # Note: The spec says the block should _be_ the simple block, but # Simon Sapin's CSS parsing tests and tinycss2 expect only the # _value_ of the simple block here. I assume I'm interpreting the # spec too literally, so I'm going with the tinycss2 behavior. rule[:block] = token[:value] break else input.reconsume rule[:prelude] << consume_component_value(input) end end end create_node(:qualified_rule, rule) end # Consumes a list of rules and returns them. # # 5.4.1. http://dev.w3.org/csswg/css-syntax/#consume-a-list-of-rules def consume_rules(flags = {}) rules = [] while token = @tokens.consume case token[:node] # Non-standard. Spec says to discard comments and whitespace, but we # keep them so we can serialize faithfully. when :comment, :whitespace rules << token when :cdc, :cdo unless flags[:top_level] @tokens.reconsume rule = consume_qualified_rule rules << rule if rule end when :at_keyword @tokens.reconsume rule = consume_at_rule rules << rule if rule else @tokens.reconsume rule = consume_qualified_rule rules << rule if rule end end rules end # Consumes and returns a simple block associated with the current input # token. # # 5.4.7. http://dev.w3.org/csswg/css-syntax/#consume-a-simple-block def consume_simple_block(input = @tokens) start_token = input.current[:node] end_token = BLOCK_END_TOKENS[start_token] block = { :start => start_token.to_s, :end => end_token.to_s, :value => [], :tokens => [input.current] # Non-standard. Used for serialization. } block[:tokens].concat(input.collect do while token = input.consume break if token[:node] == end_token input.reconsume block[:value] << consume_component_value(input) end end) create_node(:simple_block, block) end # Creates and returns a new parse node with the given _properties_. def create_node(type, properties = {}) {:node => type}.merge!(properties) end # Parses the given _input_ tokens into a selector node and returns it. # # Doesn't bother splitting the selector list into individual selectors or # validating them. Feel free to do that yourself! It'll be fun! def create_selector(input) create_node(:selector, :value => parse_value(input), :tokens => input) end # Creates a `:style_rule` node from the given qualified _rule_, and returns # it. def create_style_rule(rule) create_node(:style_rule, :selector => create_selector(rule[:prelude]), :children => parse_properties(rule[:block])) end # Parses a single component value and returns it. # # 5.3.7. http://dev.w3.org/csswg/css-syntax-3/#parse-a-component-value def parse_component_value(input = @tokens) input = TokenScanner.new(input) unless input.is_a?(TokenScanner) while input.peek && input.peek[:node] == :whitespace input.consume end if input.peek.nil? return create_node(:error, :value => 'empty') end value = consume_component_value(input) while input.peek && input.peek[:node] == :whitespace input.consume end if input.peek.nil? value else create_node(:error, :value => 'extra-input') end end # Parses a list of component values and returns an array of parsed tokens. # # 5.3.8. http://dev.w3.org/csswg/css-syntax/#parse-a-list-of-component-values def parse_component_values(input = @tokens) input = TokenScanner.new(input) unless input.is_a?(TokenScanner) tokens = [] while token = consume_component_value(input) tokens << token end tokens end # Parses a single declaration and returns it. # # 5.3.5. http://dev.w3.org/csswg/css-syntax/#parse-a-declaration def parse_declaration(input = @tokens) input = TokenScanner.new(input) unless input.is_a?(TokenScanner) while input.peek && input.peek[:node] == :whitespace input.consume end if input.peek.nil? # Syntax error. return create_node(:error, :value => 'empty') elsif input.peek[:node] != :ident # Syntax error. return create_node(:error, :value => 'invalid') end if decl = consume_declaration(input) return decl end # Syntax error. create_node(:error, :value => 'invalid') end # Parses a list of declarations and returns them. # # See {#consume_declarations} for _options_. # # 5.3.6. http://dev.w3.org/csswg/css-syntax/#parse-a-list-of-declarations def parse_declarations(input = @tokens, options = {}) input = TokenScanner.new(input) unless input.is_a?(TokenScanner) consume_declarations(input, options) end # Parses a list of declarations and returns an array of `:property` nodes # (and any non-declaration nodes that were in the input). This is useful for # parsing the contents of an HTML element's `style` attribute. def parse_properties(input = @tokens) properties = [] parse_declarations(input).each do |decl| unless decl[:node] == :declaration properties << decl next end children = decl[:value].dup children.pop if children.last && children.last[:node] == :semicolon properties << create_node(:property, :name => decl[:name], :value => parse_value(decl[:value]), :children => children, :important => decl[:important], :tokens => decl[:tokens]) end properties end # Parses a single rule and returns it. # # 5.3.4. http://dev.w3.org/csswg/css-syntax-3/#parse-a-rule def parse_rule(input = @tokens) input = TokenScanner.new(input) unless input.is_a?(TokenScanner) while input.peek && input.peek[:node] == :whitespace input.consume end if input.peek.nil? # Syntax error. return create_node(:error, :value => 'empty') elsif input.peek[:node] == :at_keyword rule = consume_at_rule(input) else rule = consume_qualified_rule(input) end while input.peek && input.peek[:node] == :whitespace input.consume end if input.peek.nil? rule else # Syntax error. create_node(:error, :value => 'extra-input') end end # Returns the unescaped value of a selector name or property declaration. def parse_value(nodes) nodes = [nodes] unless nodes.is_a?(Array) string = '' nodes.each do |node| case node[:node] when :comment, :semicolon next when :at_keyword, :ident string << node[:value] when :function if node[:value].is_a?(String) string << node[:value] string << '(' else string << parse_value(node[:tokens]) end else if node.key?(:raw) string << node[:raw] elsif node.key?(:tokens) string << parse_value(node[:tokens]) end end end string.strip end end end crass-1.0.2/lib/crass/tokenizer.rb0000644000004100000410000004056012530245151017100 0ustar www-datawww-data# encoding: utf-8 require_relative 'scanner' module Crass # Tokenizes a CSS string. # # 4. http://dev.w3.org/csswg/css-syntax/#tokenization class Tokenizer RE_COMMENT_CLOSE = /\*\// RE_DIGIT = /[0-9]+/ RE_ESCAPE = /\\[^\n]/ RE_HEX = /[0-9A-Fa-f]{1,6}/ RE_NAME = /[0-9A-Za-z_\u0080-\u{10ffff}-]+/ RE_NAME_START = /[A-Za-z_\u0080-\u{10ffff}]+/ RE_NON_PRINTABLE = /[\u0000-\u0008\u000b\u000e-\u001f\u007f]+/ RE_NUMBER_DECIMAL = /\.[0-9]+/ RE_NUMBER_EXPONENT = /[Ee][+-]?[0-9]+/ RE_NUMBER_SIGN = /[+-]/ RE_NUMBER_STR = /\A (? [+-]?) (? [0-9]*) (?:\. (? [0-9]*) )? (?:[Ee] (? [+-]?) (? [0-9]*) )? \z/x RE_QUOTED_URL_START = /\A[\n\u0009\u0020]?["']/ RE_UNICODE_RANGE_START = /\+(?:[0-9A-Fa-f]|\?)/ RE_UNICODE_RANGE_END = /-[0-9A-Fa-f]/ RE_WHITESPACE = /[\n\u0009\u0020]+/ RE_WHITESPACE_ANCHORED = /\A[\n\u0009\u0020]+\z/ # -- Class Methods --------------------------------------------------------- # Tokenizes the given _input_ as a CSS string and returns an array of # tokens. # # See {#initialize} for _options_. def self.tokenize(input, options = {}) Tokenizer.new(input, options).tokenize end # -- Instance Methods ------------------------------------------------------ # Initializes a new Tokenizer. # # Options: # # * **:preserve_comments** - If `true`, comments will be preserved as # `:comment` tokens. # # * **:preserve_hacks** - If `true`, certain non-standard browser hacks # such as the IE "*" hack will be preserved even though they violate # CSS 3 syntax rules. # def initialize(input, options = {}) @s = Scanner.new(preprocess(input)) @options = options end # Consumes a token and returns the token that was consumed. # # 4.3.1. http://dev.w3.org/csswg/css-syntax/#consume-a-token def consume return nil if @s.eos? @s.mark # Consume comments. if comment_token = consume_comments if @options[:preserve_comments] return comment_token else return consume end end # Consume whitespace. return create_token(:whitespace) if @s.scan(RE_WHITESPACE) char = @s.consume case char.to_sym when :'"' consume_string when :'#' if @s.peek =~ RE_NAME || valid_escape?(@s.peek(2)) create_token(:hash, :type => start_identifier?(@s.peek(3)) ? :id : :unrestricted, :value => consume_name) else create_token(:delim, :value => char) end when :'$' if @s.peek == '=' @s.consume create_token(:suffix_match) else create_token(:delim, :value => char) end when :"'" consume_string when :'(' create_token(:'(') when :')' create_token(:')') when :* if @s.peek == '=' @s.consume create_token(:substring_match) # Non-standard: Preserve the IE * hack. elsif @options[:preserve_hacks] && @s.peek =~ RE_NAME_START @s.reconsume consume_ident else create_token(:delim, :value => char) end when :+ if start_number? @s.reconsume consume_numeric else create_token(:delim, :value => char) end when :',' create_token(:comma) when :- nextTwoChars = @s.peek(2) nextThreeChars = char + nextTwoChars if start_number?(nextThreeChars) @s.reconsume consume_numeric elsif nextTwoChars == '->' @s.consume @s.consume create_token(:cdc) elsif start_identifier?(nextThreeChars) @s.reconsume consume_ident else create_token(:delim, :value => char) end when :'.' if start_number? @s.reconsume consume_numeric else create_token(:delim, :value => char) end when :':' create_token(:colon) when :';' create_token(:semicolon) when :< if @s.peek(3) == '!--' @s.consume @s.consume @s.consume create_token(:cdo) else create_token(:delim, :value => char) end when :'@' if start_identifier?(@s.peek(3)) create_token(:at_keyword, :value => consume_name) else create_token(:delim, :value => char) end when :'[' create_token(:'[') when :'\\' if valid_escape? @s.reconsume consume_ident else # Parse error. create_token(:delim, :error => true, :value => char) end when :']' create_token(:']') when :'^' if @s.peek == '=' @s.consume create_token(:prefix_match) else create_token(:delim, :value => char) end when :'{' create_token(:'{') when :'}' create_token(:'}') when :U, :u if @s.peek(2) =~ RE_UNICODE_RANGE_START @s.consume consume_unicode_range else @s.reconsume consume_ident end when :| case @s.peek when '=' @s.consume create_token(:dash_match) when '|' @s.consume create_token(:column) else create_token(:delim, :value => char) end when :~ if @s.peek == '=' @s.consume create_token(:include_match) else create_token(:delim, :value => char) end else case char when RE_DIGIT @s.reconsume consume_numeric when RE_NAME_START @s.reconsume consume_ident else create_token(:delim, :value => char) end end end # Consumes the remnants of a bad URL and returns the consumed text. # # 4.3.15. http://dev.w3.org/csswg/css-syntax/#consume-the-remnants-of-a-bad-url def consume_bad_url text = '' until @s.eos? if valid_escape? text << consume_escaped elsif valid_escape?(@s.peek(2)) @s.consume text << consume_escaped else char = @s.consume if char == ')' break else text << char end end end text end # Consumes comments and returns them, or `nil` if no comments were consumed. # # 4.3.2. http://dev.w3.org/csswg/css-syntax/#consume-comments def consume_comments if @s.peek(2) == '/*' @s.consume @s.consume if text = @s.scan_until(RE_COMMENT_CLOSE) text.slice!(-2, 2) else # Parse error. text = @s.consume_rest end return create_token(:comment, :value => text) end nil end # Consumes an escaped code point and returns its unescaped value. # # This method assumes that the `\` has already been consumed, and that the # next character in the input has already been verified not to be a newline # or EOF. # # 4.3.8. http://dev.w3.org/csswg/css-syntax/#consume-an-escaped-code-point def consume_escaped return "\ufffd" if @s.eos? if hex_str = @s.scan(RE_HEX) @s.consume if @s.peek =~ RE_WHITESPACE codepoint = hex_str.hex if codepoint == 0 || codepoint.between?(0xD800, 0xDFFF) || codepoint > 0x10FFFF return "\ufffd" else return codepoint.chr(Encoding::UTF_8) end end @s.consume end # Consumes an ident-like token and returns it. # # 4.3.4. http://dev.w3.org/csswg/css-syntax/#consume-an-ident-like-token def consume_ident value = consume_name if @s.peek == '(' @s.consume if value.downcase == 'url' @s.consume while @s.peek(2) =~ RE_WHITESPACE_ANCHORED if @s.peek(2) =~ RE_QUOTED_URL_START create_token(:function, :value => value) else consume_url end else create_token(:function, :value => value) end else create_token(:ident, :value => value) end end # Consumes a name and returns it. # # 4.3.12. http://dev.w3.org/csswg/css-syntax/#consume-a-name def consume_name result = '' until @s.eos? if match = @s.scan(RE_NAME) result << match next end char = @s.consume if valid_escape? result << consume_escaped # Non-standard: IE * hack elsif char == '*' && @options[:preserve_hacks] result << @s.consume else @s.reconsume return result end end result end # Consumes a number and returns a 3-element array containing the number's # original representation, its numeric value, and its type (either # `:integer` or `:number`). # # 4.3.13. http://dev.w3.org/csswg/css-syntax/#consume-a-number def consume_number repr = '' type = :integer repr << @s.consume if @s.peek =~ RE_NUMBER_SIGN repr << (@s.scan(RE_DIGIT) || '') if match = @s.scan(RE_NUMBER_DECIMAL) repr << match type = :number end if match = @s.scan(RE_NUMBER_EXPONENT) repr << match type = :number end [repr, convert_string_to_number(repr), type] end # Consumes a numeric token and returns it. # # 4.3.3. http://dev.w3.org/csswg/css-syntax/#consume-a-numeric-token def consume_numeric number = consume_number if start_identifier?(@s.peek(3)) create_token(:dimension, :repr => number[0], :type => number[2], :unit => consume_name, :value => number[1]) elsif @s.peek == '%' @s.consume create_token(:percentage, :repr => number[0], :type => number[2], :value => number[1]) else create_token(:number, :repr => number[0], :type => number[2], :value => number[1]) end end # Consumes a string token that ends at the given character, and returns the # token. # # 4.3.5. http://dev.w3.org/csswg/css-syntax/#consume-a-string-token def consume_string(ending = nil) ending = @s.current if ending.nil? value = '' until @s.eos? case char = @s.consume when ending break when "\n" # Parse error. @s.reconsume return create_token(:bad_string, :error => true, :value => value) when '\\' case @s.peek when '' # End of the input, so do nothing. next when "\n" @s.consume else value << consume_escaped end else value << char end end create_token(:string, :value => value) end # Consumes a Unicode range token and returns it. Assumes the initial "u+" or # "U+" has already been consumed. # # 4.3.7. http://dev.w3.org/csswg/css-syntax/#consume-a-unicode-range-token def consume_unicode_range value = @s.scan(RE_HEX) || '' while value.length < 6 break unless @s.peek == '?' value << @s.consume end range = {} if value.include?('?') range[:start] = value.gsub('?', '0').hex range[:end] = value.gsub('?', 'F').hex return create_token(:unicode_range, range) end range[:start] = value.hex if @s.peek(2) =~ RE_UNICODE_RANGE_END @s.consume range[:end] = (@s.scan(RE_HEX) || '').hex else range[:end] = range[:start] end create_token(:unicode_range, range) end # Consumes a URL token and returns it. Assumes the original "url(" has # already been consumed. # # 4.3.6. http://dev.w3.org/csswg/css-syntax/#consume-a-url-token def consume_url value = '' @s.scan(RE_WHITESPACE) until @s.eos? case char = @s.consume when ')' break when RE_WHITESPACE @s.scan(RE_WHITESPACE) if @s.eos? || @s.peek == ')' @s.consume break else return create_token(:bad_url, :value => value + consume_bad_url) end when '"', "'", '(', RE_NON_PRINTABLE # Parse error. return create_token(:bad_url, :error => true, :value => value + consume_bad_url) when '\\' if valid_escape? value << consume_escaped else # Parse error. return create_token(:bad_url, :error => true, :value => value + consume_bad_url ) end else value << char end end create_token(:url, :value => value) end # Converts a valid CSS number string into a number and returns the number. # # 4.3.14. http://dev.w3.org/csswg/css-syntax/#convert-a-string-to-a-number def convert_string_to_number(str) matches = RE_NUMBER_STR.match(str) s = matches[:sign] == '-' ? -1 : 1 i = matches[:integer].to_i f = matches[:fractional].to_i d = matches[:fractional] ? matches[:fractional].length : 0 t = matches[:exponent_sign] == '-' ? -1 : 1 e = matches[:exponent].to_i # I know this looks nutty, but it's exactly what's defined in the spec, # and it works. s * (i + f * 10**-d) * 10**(t * e) end # Creates and returns a new token with the given _properties_. def create_token(type, properties = {}) { :node => type, :pos => @s.marker, :raw => @s.marked }.merge!(properties) end # Preprocesses _input_ to prepare it for the tokenizer. # # 3.3. http://dev.w3.org/csswg/css-syntax/#input-preprocessing def preprocess(input) input = input.to_s.encode('UTF-8', :invalid => :replace, :undef => :replace) input.gsub!(/(?:\r\n|[\r\f])/, "\n") input.gsub!("\u0000", "\ufffd") input end # Returns `true` if the given three-character _text_ would start an # identifier. If _text_ is `nil`, the current and next two characters in the # input stream will be checked, but will not be consumed. # # 4.3.10. http://dev.w3.org/csswg/css-syntax/#would-start-an-identifier def start_identifier?(text = nil) text = @s.current + @s.peek(2) if text.nil? case text[0] when '-' nextChar = text[1] !!(nextChar == '-' || nextChar =~ RE_NAME_START || valid_escape?(text[1, 2])) when RE_NAME_START true when '\\' valid_escape?(text[0, 2]) else false end end # Returns `true` if the given three-character _text_ would start a number. # If _text_ is `nil`, the current and next two characters in the input # stream will be checked, but will not be consumed. # # 4.3.11. http://dev.w3.org/csswg/css-syntax/#starts-with-a-number def start_number?(text = nil) text = @s.current + @s.peek(2) if text.nil? case text[0] when '+', '-' !!(text[1] =~ RE_DIGIT || (text[1] == '.' && text[2] =~ RE_DIGIT)) when '.' !!(text[1] =~ RE_DIGIT) when RE_DIGIT true else false end end # Tokenizes the input stream and returns an array of tokens. def tokenize @s.reset tokens = [] while token = consume tokens << token end tokens end # Returns `true` if the given two-character _text_ is the beginning of a # valid escape sequence. If _text_ is `nil`, the current and next character # in the input stream will be checked, but will not be consumed. # # 4.3.9. http://dev.w3.org/csswg/css-syntax/#starts-with-a-valid-escape def valid_escape?(text = nil) text = @s.current + @s.peek if text.nil? !!(text[0] == '\\' && text[1] != "\n") end end end crass-1.0.2/lib/crass/scanner.rb0000644000004100000410000000654512530245151016524 0ustar www-datawww-data# encoding: utf-8 require 'strscan' module Crass # Similar to a StringScanner, but with extra functionality needed to tokenize # CSS while preserving the original text. class Scanner # Current character, or `nil` if the scanner hasn't yet consumed a # character, or is at the end of the string. attr_reader :current # Current marker position. Use {#marked} to get the substring between # {#marker} and {#pos}. attr_accessor :marker # Position of the next character that will be consumed. This is a character # position, not a byte position, so it accounts for multi-byte characters. attr_accessor :pos # String being scanned. attr_reader :string # Creates a Scanner instance for the given _input_ string or IO instance. def initialize(input) @string = input.is_a?(IO) ? input.read : input.to_s @scanner = StringScanner.new(@string) reset end # Consumes the next character and returns it, advancing the pointer, or # an empty string if the end of the string has been reached. def consume if @pos < @len @pos += 1 @current = @scanner.getch else '' end end # Consumes the rest of the string and returns it, advancing the pointer to # the end of the string. Returns an empty string is the end of the string # has already been reached. def consume_rest result = @scanner.rest @current = result[-1] @pos = @len result end # Returns `true` if the end of the string has been reached, `false` # otherwise. def eos? @pos == @len end # Sets the marker to the position of the next character that will be # consumed. def mark @marker = @pos end # Returns the substring between {#marker} and {#pos}, without altering the # pointer. def marked if result = @string[@marker, @pos - @marker] result else '' end end # Returns up to _length_ characters starting at the current position, but # doesn't consume them. The number of characters returned may be less than # _length_ if the end of the string is reached. def peek(length = 1) @string[pos, length] end # Moves the pointer back one character without changing the value of # {#current}. The next call to {#consume} will re-consume the current # character. def reconsume @scanner.unscan @pos -= 1 if @pos > 0 end # Resets the pointer to the beginning of the string. def reset @current = nil @len = @string.size @marker = 0 @pos = 0 end # Tries to match _pattern_ at the current position. If it matches, the # matched substring will be returned and the pointer will be advanced. # Otherwise, `nil` will be returned. def scan(pattern) if match = @scanner.scan(pattern) @pos += match.size @current = match[-1] end match end # Scans the string until the _pattern_ is matched. Returns the substring up # to and including the end of the match, and advances the pointer. If there # is no match, `nil` is returned and the pointer is not advanced. def scan_until(pattern) if match = @scanner.scan_until(pattern) @pos += match.size @current = match[-1] end match end end end crass-1.0.2/lib/crass/version.rb0000644000004100000410000000007012530245151016543 0ustar www-datawww-data# encoding: utf-8 module Crass VERSION = '1.0.2' end crass-1.0.2/lib/crass/token-scanner.rb0000644000004100000410000000214012530245151017625 0ustar www-datawww-data# encoding: utf-8 module Crass # Like {Scanner}, but for tokens! class TokenScanner attr_reader :current, :pos, :tokens def initialize(tokens) @tokens = tokens.to_a reset end # Executes the given block, collects all tokens that are consumed during its # execution, and returns them. def collect start = @pos yield @tokens[start...@pos] || [] end # Consumes the next token and returns it, advancing the pointer. Returns # `nil` if there is no next token. def consume @current = @tokens[@pos] @pos += 1 if @current @current end # Returns the next token without consuming it, or `nil` if there is no next # token. def peek @tokens[@pos] end # Reconsumes the current token, moving the pointer back one position. # # http://www.w3.org/TR/2013/WD-css-syntax-3-20130919/#reconsume-the-current-input-token def reconsume @pos -= 1 if @pos > 0 end # Resets the pointer to the first token in the list. def reset @current = nil @pos = 0 end end end crass-1.0.2/lib/crass.rb0000644000004100000410000000116012530245151015057 0ustar www-datawww-data# encoding: utf-8 require_relative 'crass/parser' # A CSS parser based on the CSS Syntax Module Level 3 spec. module Crass # Parses _input_ as a CSS stylesheet and returns a parse tree. # # See {Tokenizer#initialize} for _options_. def self.parse(input, options = {}) Parser.parse_stylesheet(input, options) end # Parses _input_ as a string of CSS properties (such as the contents of an # HTML element's `style` attribute) and returns a parse tree. # # See {Tokenizer#initialize} for _options_. def self.parse_properties(input, options = {}) Parser.parse_properties(input, options) end end crass-1.0.2/metadata.yml0000644000004100000410000001031212530245151015153 0ustar www-datawww-data--- !ruby/object:Gem::Specification name: crass version: !ruby/object:Gem::Version version: 1.0.2 platform: ruby authors: - Ryan Grove autorequire: bindir: bin cert_chain: [] date: 2015-04-18 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: minitest requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 5.0.8 type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 5.0.8 - !ruby/object:Gem::Dependency name: rake requirement: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 10.1.0 type: :development prerelease: false version_requirements: !ruby/object:Gem::Requirement requirements: - - "~>" - !ruby/object:Gem::Version version: 10.1.0 description: Crass is a pure Ruby CSS parser based on the CSS Syntax Level 3 spec. email: - ryan@wonko.com executables: [] extensions: [] extra_rdoc_files: [] files: - ".gitignore" - ".travis.yml" - ".yardopts" - Gemfile - HISTORY.md - LICENSE - README.md - Rakefile - crass.gemspec - lib/crass.rb - lib/crass/parser.rb - lib/crass/scanner.rb - lib/crass/token-scanner.rb - lib/crass/tokenizer.rb - lib/crass/version.rb - test/css-parsing-tests/An+B.json - test/css-parsing-tests/LICENSE - test/css-parsing-tests/README.rst - test/css-parsing-tests/color3.json - test/css-parsing-tests/color3_hsl.json - test/css-parsing-tests/color3_keywords.json - test/css-parsing-tests/component_value_list.json - test/css-parsing-tests/declaration_list.json - test/css-parsing-tests/make_color3_hsl.py - test/css-parsing-tests/make_color3_keywords.py - test/css-parsing-tests/one_component_value.json - test/css-parsing-tests/one_declaration.json - test/css-parsing-tests/one_rule.json - test/css-parsing-tests/rule_list.json - test/css-parsing-tests/stylesheet.json - test/css-parsing-tests/stylesheet_bytes.json - test/shared/parse_rules.rb - test/support/common.rb - test/support/serialization/animate.css - test/support/serialization/bootstrap-theme.css - test/support/serialization/bootstrap.css - test/support/serialization/html5-boilerplate.css - test/support/serialization/misc.css - test/support/serialization/pure.css - test/test_crass.rb - test/test_css_parsing_tests.rb - test/test_parse_properties.rb - test/test_parse_rules.rb - test/test_parse_stylesheet.rb - test/test_serialization.rb homepage: https://github.com/rgrove/crass/ licenses: - MIT metadata: {} post_install_message: rdoc_options: [] require_paths: - lib required_ruby_version: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: 1.9.2 required_rubygems_version: !ruby/object:Gem::Requirement requirements: - - ">=" - !ruby/object:Gem::Version version: '0' requirements: [] rubyforge_project: rubygems_version: 2.4.5 signing_key: specification_version: 4 summary: CSS parser based on the CSS Syntax Level 3 spec. test_files: - test/css-parsing-tests/An+B.json - test/css-parsing-tests/LICENSE - test/css-parsing-tests/README.rst - test/css-parsing-tests/color3.json - test/css-parsing-tests/color3_hsl.json - test/css-parsing-tests/color3_keywords.json - test/css-parsing-tests/component_value_list.json - test/css-parsing-tests/declaration_list.json - test/css-parsing-tests/make_color3_hsl.py - test/css-parsing-tests/make_color3_keywords.py - test/css-parsing-tests/one_component_value.json - test/css-parsing-tests/one_declaration.json - test/css-parsing-tests/one_rule.json - test/css-parsing-tests/rule_list.json - test/css-parsing-tests/stylesheet.json - test/css-parsing-tests/stylesheet_bytes.json - test/shared/parse_rules.rb - test/support/common.rb - test/support/serialization/animate.css - test/support/serialization/bootstrap-theme.css - test/support/serialization/bootstrap.css - test/support/serialization/html5-boilerplate.css - test/support/serialization/misc.css - test/support/serialization/pure.css - test/test_crass.rb - test/test_css_parsing_tests.rb - test/test_parse_properties.rb - test/test_parse_rules.rb - test/test_parse_stylesheet.rb - test/test_serialization.rb has_rdoc: crass-1.0.2/test/0000755000004100000410000000000012530245151013632 5ustar www-datawww-datacrass-1.0.2/test/test_parse_properties.rb0000644000004100000410000003021012530245151020600 0ustar www-datawww-data# encoding: utf-8 # Includes tests based on Simon Sapin's CSS parsing tests: # https://github.com/SimonSapin/css-parsing-tests/ require_relative 'support/common' describe 'Crass::Parser' do make_my_diffs_pretty! parallelize_me! describe '#parse_properties' do def parse(*args) CP.parse_properties(*args) end it 'should return an empty tree when given an empty string' do assert_equal([], parse("")) end # Note: The next two tests verify augmented behavior that isn't defined in # CSS Syntax Module Level 3. it 'should include semicolon and whitespace tokens' do assert_tokens(";; /**/ ; ;", parse(";; /**/ ; ;")) end it 'should include semicolon, whitespace, and comment tokens when :preserve_comments == true' do tree = parse(";; /**/ ; ;", :preserve_comments => true) assert_tokens(";; /**/ ; ;", tree, 0, :preserve_comments => true) end it 'should parse at-rules even though they may be invalid in the given context' do tree = parse("@import 'foo.css'; a:b; @import 'bar.css'") assert_equal([ {:node=>:at_rule, :name=>"import", :prelude=> [{:node=>:whitespace, :pos=>7, :raw=>" "}, {:node=>:string, :pos=>8, :raw=>"'foo.css'", :value=>"foo.css"}], :tokens=> [{:node=>:at_keyword, :pos=>0, :raw=>"@import", :value=>"import"}, {:node=>:whitespace, :pos=>7, :raw=>" "}, {:node=>:string, :pos=>8, :raw=>"'foo.css'", :value=>"foo.css"}, {:node=>:semicolon, :pos=>17, :raw=>";"}]}, {:node=>:whitespace, :pos=>18, :raw=>" "}, {:node=>:property, :name=>"a", :value=>"b", :children=>[{:node=>:ident, :pos=>21, :raw=>"b", :value=>"b"}], :important=>false, :tokens=> [{:node=>:ident, :pos=>19, :raw=>"a", :value=>"a"}, {:node=>:colon, :pos=>20, :raw=>":"}, {:node=>:ident, :pos=>21, :raw=>"b", :value=>"b"}]}, {:node=>:semicolon, :pos=>22, :raw=>";"}, {:node=>:whitespace, :pos=>23, :raw=>" "}, {:node=>:at_rule, :name=>"import", :prelude=> [{:node=>:whitespace, :pos=>31, :raw=>" "}, {:node=>:string, :pos=>32, :raw=>"'bar.css'", :value=>"bar.css"}], :tokens=> [{:node=>:at_keyword, :pos=>24, :raw=>"@import", :value=>"import"}, {:node=>:whitespace, :pos=>31, :raw=>" "}, {:node=>:string, :pos=>32, :raw=>"'bar.css'", :value=>"bar.css"}]} ], tree) end it 'should parse at-rules with a {} simple block immediately following the prelude' do tree = parse(%[ @page :right { @top-center { content: "Preliminary edition" } @bottom-center { content: counter(page) } } ].strip) tree = parse(tree.first[:block]) assert_equal([ {:node=>:whitespace, :pos=>14, :raw=>"\n "}, {:node=>:at_rule, :name=>"top-center", :prelude=>[{:node=>:whitespace, :pos=>36, :raw=>" "}], :block=> [{:node=>:whitespace, :pos=>38, :raw=>" "}, {:node=>:ident, :pos=>39, :raw=>"content", :value=>"content"}, {:node=>:colon, :pos=>46, :raw=>":"}, {:node=>:whitespace, :pos=>47, :raw=>" "}, {:node=>:string, :pos=>48, :raw=>"\"Preliminary edition\"", :value=>"Preliminary edition"}, {:node=>:whitespace, :pos=>69, :raw=>" "}], :tokens=> [{:node=>:at_keyword, :pos=>25, :raw=>"@top-center", :value=>"top-center"}, {:node=>:whitespace, :pos=>36, :raw=>" "}, {:node=>:simple_block, :start=>"{", :end=>"}", :value=> [{:node=>:whitespace, :pos=>38, :raw=>" "}, {:node=>:ident, :pos=>39, :raw=>"content", :value=>"content"}, {:node=>:colon, :pos=>46, :raw=>":"}, {:node=>:whitespace, :pos=>47, :raw=>" "}, {:node=>:string, :pos=>48, :raw=>"\"Preliminary edition\"", :value=>"Preliminary edition"}, {:node=>:whitespace, :pos=>69, :raw=>" "}], :tokens=> [{:node=>:"{", :pos=>37, :raw=>"{"}, {:node=>:whitespace, :pos=>38, :raw=>" "}, {:node=>:ident, :pos=>39, :raw=>"content", :value=>"content"}, {:node=>:colon, :pos=>46, :raw=>":"}, {:node=>:whitespace, :pos=>47, :raw=>" "}, {:node=>:string, :pos=>48, :raw=>"\"Preliminary edition\"", :value=>"Preliminary edition"}, {:node=>:whitespace, :pos=>69, :raw=>" "}, {:node=>:"}", :pos=>70, :raw=>"}"}]}]}, {:node=>:whitespace, :pos=>71, :raw=>"\n "}, {:node=>:at_rule, :name=>"bottom-center", :prelude=>[{:node=>:whitespace, :pos=>96, :raw=>" "}], :block=> [{:node=>:whitespace, :pos=>98, :raw=>" "}, {:node=>:ident, :pos=>99, :raw=>"content", :value=>"content"}, {:node=>:colon, :pos=>106, :raw=>":"}, {:node=>:whitespace, :pos=>107, :raw=>" "}, {:node=>:function, :name=>"counter", :value=>[{:node=>:ident, :pos=>116, :raw=>"page", :value=>"page"}], :tokens=> [{:node=>:function, :pos=>108, :raw=>"counter(", :value=>"counter"}, {:node=>:ident, :pos=>116, :raw=>"page", :value=>"page"}, {:node=>:")", :pos=>120, :raw=>")"}]}, {:node=>:whitespace, :pos=>121, :raw=>" "}], :tokens=> [{:node=>:at_keyword, :pos=>82, :raw=>"@bottom-center", :value=>"bottom-center"}, {:node=>:whitespace, :pos=>96, :raw=>" "}, {:node=>:simple_block, :start=>"{", :end=>"}", :value=> [{:node=>:whitespace, :pos=>98, :raw=>" "}, {:node=>:ident, :pos=>99, :raw=>"content", :value=>"content"}, {:node=>:colon, :pos=>106, :raw=>":"}, {:node=>:whitespace, :pos=>107, :raw=>" "}, {:node=>:function, :name=>"counter", :value=>[{:node=>:ident, :pos=>116, :raw=>"page", :value=>"page"}], :tokens=> [{:node=>:function, :pos=>108, :raw=>"counter(", :value=>"counter"}, {:node=>:ident, :pos=>116, :raw=>"page", :value=>"page"}, {:node=>:")", :pos=>120, :raw=>")"}]}, {:node=>:whitespace, :pos=>121, :raw=>" "}], :tokens=> [{:node=>:"{", :pos=>97, :raw=>"{"}, {:node=>:whitespace, :pos=>98, :raw=>" "}, {:node=>:ident, :pos=>99, :raw=>"content", :value=>"content"}, {:node=>:colon, :pos=>106, :raw=>":"}, {:node=>:whitespace, :pos=>107, :raw=>" "}, {:node=>:function, :pos=>108, :raw=>"counter(", :value=>"counter"}, {:node=>:ident, :pos=>116, :raw=>"page", :value=>"page"}, {:node=>:")", :pos=>120, :raw=>")"}, {:node=>:whitespace, :pos=>121, :raw=>" "}, {:node=>:"}", :pos=>122, :raw=>"}"}]}]}, {:node=>:whitespace, :pos=>123, :raw=>"\n "} ], tree) end it 'should parse values containing functions' do tree = parse("content: attr(data-foo) \" \";") assert_equal([ {:node=>:property, :name=>"content", :value=>"attr(data-foo) \" \"", :children=> [{:node=>:whitespace, :pos=>8, :raw=>" "}, {:node=>:function, :name=>"attr", :value=>[{:node=>:ident, :pos=>14, :raw=>"data-foo", :value=>"data-foo"}], :tokens=> [{:node=>:function, :pos=>9, :raw=>"attr(", :value=>"attr"}, {:node=>:ident, :pos=>14, :raw=>"data-foo", :value=>"data-foo"}, {:node=>:")", :pos=>22, :raw=>")"}]}, {:node=>:whitespace, :pos=>23, :raw=>" "}, {:node=>:string, :pos=>24, :raw=>"\" \"", :value=>" "}], :important=>false, :tokens=> [{:node=>:ident, :pos=>0, :raw=>"content", :value=>"content"}, {:node=>:colon, :pos=>7, :raw=>":"}, {:node=>:whitespace, :pos=>8, :raw=>" "}, {:node=>:function, :name=>"attr", :value=>[{:node=>:ident, :pos=>14, :raw=>"data-foo", :value=>"data-foo"}], :tokens=> [{:node=>:function, :pos=>9, :raw=>"attr(", :value=>"attr"}, {:node=>:ident, :pos=>14, :raw=>"data-foo", :value=>"data-foo"}, {:node=>:")", :pos=>22, :raw=>")"}]}, {:node=>:whitespace, :pos=>23, :raw=>" "}, {:node=>:string, :pos=>24, :raw=>"\" \"", :value=>" "}]}, {:node=>:semicolon, :pos=>27, :raw=>";"} ], tree) end it 'should parse values containing nested functions' do tree = parse("width: expression(alert(1));") assert_equal([ {:node=>:property, :name=>"width", :value=>"expression(alert(1))", :children=> [{:node=>:whitespace, :pos=>6, :raw=>" "}, {:node=>:function, :name=>"expression", :value=> [{:node=>:function, :name=>"alert", :value=> [{:node=>:number, :pos=>24, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}], :tokens=> [{:node=>:function, :pos=>18, :raw=>"alert(", :value=>"alert"}, {:node=>:number, :pos=>24, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}, {:node=>:")", :pos=>25, :raw=>")"}]}], :tokens=> [{:node=>:function, :pos=>7, :raw=>"expression(", :value=>"expression"}, {:node=>:function, :pos=>18, :raw=>"alert(", :value=>"alert"}, {:node=>:number, :pos=>24, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}, {:node=>:")", :pos=>25, :raw=>")"}, {:node=>:")", :pos=>26, :raw=>")"}]}], :important=>false, :tokens=> [{:node=>:ident, :pos=>0, :raw=>"width", :value=>"width"}, {:node=>:colon, :pos=>5, :raw=>":"}, {:node=>:whitespace, :pos=>6, :raw=>" "}, {:node=>:function, :name=>"expression", :value=> [{:node=>:function, :name=>"alert", :value=> [{:node=>:number, :pos=>24, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}], :tokens=> [{:node=>:function, :pos=>18, :raw=>"alert(", :value=>"alert"}, {:node=>:number, :pos=>24, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}, {:node=>:")", :pos=>25, :raw=>")"}]}], :tokens=> [{:node=>:function, :pos=>7, :raw=>"expression(", :value=>"expression"}, {:node=>:function, :pos=>18, :raw=>"alert(", :value=>"alert"}, {:node=>:number, :pos=>24, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}, {:node=>:")", :pos=>25, :raw=>")"}, {:node=>:")", :pos=>26, :raw=>")"}]}]}, {:node=>:semicolon, :pos=>27, :raw=>";"} ], tree) end it 'should not choke on a missing property value' do tree = parse("font-family:") assert_equal([ {:node=>:property, :name=>"font-family", :value=>"", :children=>[], :important=>false, :tokens=> [{:node=>:ident, :pos=>0, :raw=>"font-family", :value=>"font-family"}, {:node=>:colon, :pos=>11, :raw=>":"}]} ], tree) end end end crass-1.0.2/test/test_crass.rb0000644000004100000410000000154012530245151016331 0ustar www-datawww-data# encoding: utf-8 require_relative 'support/common' describe 'Crass' do make_my_diffs_pretty! parallelize_me! it 'parse_properties() should call Crass::Parser.parse_properties' do assert_equal( CP.parse_properties("a:b; c:d 42!important;\n"), Crass.parse_properties("a:b; c:d 42!important;\n") ) assert_equal( CP.parse_properties(";; /**/ ; ;", :preserve_comments => true), Crass.parse_properties(";; /**/ ; ;", :preserve_comments => true) ) end it 'parse() should call Crass::Parser.parse_stylesheet' do assert_equal( CP.parse_stylesheet(" /**/ .foo {} #bar {}"), Crass.parse(" /**/ .foo {} #bar {}") ) assert_equal( CP.parse_stylesheet(" /**/ .foo {} #bar {}", :preserve_comments => true), Crass.parse(" /**/ .foo {} #bar {}", :preserve_comments => true) ) end end crass-1.0.2/test/test_parse_stylesheet.rb0000644000004100000410000000047112530245151020603 0ustar www-datawww-data# encoding: utf-8 require_relative 'support/common' require_relative 'shared/parse_rules' describe 'Crass::Parser' do make_my_diffs_pretty! parallelize_me! describe '#parse_stylesheet' do def parse(*args) CP.parse_stylesheet(*args) end behaves_like 'parsing a list of rules' end end crass-1.0.2/test/test_parse_rules.rb0000644000004100000410000000045712530245151017550 0ustar www-datawww-data# encoding: utf-8 require_relative 'support/common' require_relative 'shared/parse_rules' describe 'Crass::Parser' do make_my_diffs_pretty! parallelize_me! describe '#parse_rules' do def parse(*args) CP.parse_rules(*args) end behaves_like 'parsing a list of rules' end end crass-1.0.2/test/test_css_parsing_tests.rb0000644000004100000410000000717112530245151020761 0ustar www-datawww-data# encoding: utf-8 # This file loads and runs Simon Sapin's CSS parsing tests, which live under the # test/css-parsing-tests directory. The original test repo can be found at: # # https://github.com/SimonSapin/css-parsing-tests/ require 'json' require_relative 'support/common' def load_css_tests(filename) JSON.parse(File.read(File.join(File.dirname(__FILE__), "/css-parsing-tests/#{filename}"))) end describe 'CSS Parsing Tests' do describe 'component_value_list' do make_my_diffs_pretty! parallelize_me! tests = load_css_tests('component_value_list.json') tests.each_slice(2) do |test| css = test[0] expected = test[1] it "should parse: #{css.gsub("\n", "\\n")}" do parser = Crass::Parser.new(css) assert_equal(expected, translate_tokens(parser.parse_component_values)) end end end describe 'declaration_list' do make_my_diffs_pretty! parallelize_me! tests = load_css_tests('declaration_list.json') tests.each_slice(2) do |test| css = test[0] expected = test[1] it "should parse: #{css.gsub("\n", "\\n")}" do parser = Crass::Parser.new(css) assert_equal(expected, translate_tokens(parser.parse_declarations(parser.tokens, {:strict => true}))) end end end describe 'one_component_value' do make_my_diffs_pretty! parallelize_me! tests = load_css_tests('one_component_value.json') tests.each_slice(2) do |test| css = test[0] expected = test[1] it "should parse: #{css.gsub("\n", "\\n")}" do parser = Crass::Parser.new(css) assert_equal(expected, translate_tokens(parser.parse_component_value)[0]) end end end describe 'one_declaration' do make_my_diffs_pretty! parallelize_me! tests = load_css_tests('one_declaration.json') tests.each_slice(2) do |test| css = test[0] expected = test[1] it "should parse: #{css.gsub("\n", "\\n")}" do parser = Crass::Parser.new(css) assert_equal(expected, translate_tokens(parser.parse_declaration)[0]) end end end describe 'one_rule' do make_my_diffs_pretty! parallelize_me! tests = load_css_tests('one_rule.json') tests.each_slice(2) do |test| css = test[0] expected = test[1] it "should parse: #{css.gsub("\n", "\\n")}" do parser = Crass::Parser.new(css) assert_equal(expected, translate_tokens(parser.parse_rule)[0]) end end end describe 'rule_list' do make_my_diffs_pretty! parallelize_me! tests = load_css_tests('rule_list.json') tests.each_slice(2) do |test| css = test[0] expected = test[1] it "should parse: #{css.gsub("\n", "\\n")}" do parser = Crass::Parser.new(css) rules = parser.consume_rules # Remove non-standard whitespace tokens. rules.reject! do |token| node = token[:node] node == :whitespace end assert_equal(expected, translate_tokens(rules)) end end end describe 'stylesheet' do make_my_diffs_pretty! parallelize_me! tests = load_css_tests('stylesheet.json') tests.each_slice(2) do |test| css = test[0] expected = test[1] it "should parse: #{css.gsub("\n", "\\n")}" do parser = Crass::Parser.new(css) rules = parser.consume_rules(:top_level => true) # Remove non-standard whitespace tokens. rules.reject! do |token| node = token[:node] node == :whitespace end assert_equal(expected, translate_tokens(rules)) end end end end crass-1.0.2/test/shared/0000755000004100000410000000000012530245151015100 5ustar www-datawww-datacrass-1.0.2/test/shared/parse_rules.rb0000644000004100000410000004220512530245151017754 0ustar www-datawww-data# encoding: utf-8 # Includes tests based on Simon Sapin's CSS parsing tests: # https://github.com/SimonSapin/css-parsing-tests/ shared_tests_for 'parsing a list of rules' do it 'should parse an empty stylesheet' do assert_equal([], parse('')) assert_equal([{:node=>:error, :value=>"invalid"}], parse('foo')) assert_equal([{:node=>:error, :value=>"invalid"}], parse('foo 4')) end describe 'should parse an at-rule' do describe 'without a block' do it 'without a prelude' do tree = parse('@foo') assert_equal([ {:node=>:at_rule, :name=>"foo", :prelude=>[], :tokens=>[{:node=>:at_keyword, :pos=>0, :raw=>"@foo", :value=>"foo"}]} ], tree) end it 'with a prelude followed by a comment' do tree = parse("@foo bar; \t/* comment */") assert_equal([ {:node=>:at_rule, :name=>"foo", :prelude=> [{:node=>:whitespace, :pos=>4, :raw=>" "}, {:node=>:ident, :pos=>5, :raw=>"bar", :value=>"bar"}], :tokens=> [{:node=>:at_keyword, :pos=>0, :raw=>"@foo", :value=>"foo"}, {:node=>:whitespace, :pos=>4, :raw=>" "}, {:node=>:ident, :pos=>5, :raw=>"bar", :value=>"bar"}, {:node=>:semicolon, :pos=>8, :raw=>";"}]}, {:node=>:whitespace, :pos=>9, :raw=>" \t"} ], tree) end it 'with a prelude followed by a comment, when :preserve_comments == true' do options = {:preserve_comments => true} tree = parse("@foo bar; \t/* comment */", options) assert_equal([ {:node=>:at_rule, :name=>"foo", :prelude=> [{:node=>:whitespace, :pos=>4, :raw=>" "}, {:node=>:ident, :pos=>5, :raw=>"bar", :value=>"bar"}], :tokens=> [{:node=>:at_keyword, :pos=>0, :raw=>"@foo", :value=>"foo"}, {:node=>:whitespace, :pos=>4, :raw=>" "}, {:node=>:ident, :pos=>5, :raw=>"bar", :value=>"bar"}, {:node=>:semicolon, :pos=>8, :raw=>";"}]}, {:node=>:whitespace, :pos=>9, :raw=>" \t"}, {:node=>:comment, :pos=>11, :raw=>"/* comment */", :value=>" comment "} ], tree) end it 'with a prelude containing a simple block' do tree = parse("@foo [ bar") assert_equal([ {:node=>:at_rule, :name=>"foo", :prelude=> [{:node=>:whitespace, :pos=>4, :raw=>" "}, {:node=>:simple_block, :start=>"[", :end=>"]", :value=> [{:node=>:whitespace, :pos=>6, :raw=>" "}, {:node=>:ident, :pos=>7, :raw=>"bar", :value=>"bar"}], :tokens=> [{:node=>:"[", :pos=>5, :raw=>"["}, {:node=>:whitespace, :pos=>6, :raw=>" "}, {:node=>:ident, :pos=>7, :raw=>"bar", :value=>"bar"}]}], :tokens=> [{:node=>:at_keyword, :pos=>0, :raw=>"@foo", :value=>"foo"}, {:node=>:whitespace, :pos=>4, :raw=>" "}, {:node=>:"[", :pos=>5, :raw=>"["}, {:node=>:whitespace, :pos=>6, :raw=>" "}, {:node=>:ident, :pos=>7, :raw=>"bar", :value=>"bar"}]} ], tree) end end describe 'with a block' do it 'unclosed' do tree = parse("@foo { bar") assert_equal([ {:node=>:at_rule, :name=>"foo", :prelude=>[{:node=>:whitespace, :pos=>4, :raw=>" "}], :block=> [{:node=>:whitespace, :pos=>6, :raw=>" "}, {:node=>:ident, :pos=>7, :raw=>"bar", :value=>"bar"}], :tokens=> [{:node=>:at_keyword, :pos=>0, :raw=>"@foo", :value=>"foo"}, {:node=>:whitespace, :pos=>4, :raw=>" "}, {:node=>:"{", :pos=>5, :raw=>"{"}, {:node=>:whitespace, :pos=>6, :raw=>" "}, {:node=>:ident, :pos=>7, :raw=>"bar", :value=>"bar"}]} ], tree) end it 'unclosed, preceded by a comment' do tree = parse(" /**/ @foo bar{[(4") assert_equal([ {:node=>:whitespace, :pos=>0, :raw=>" "}, {:node=>:whitespace, :pos=>5, :raw=>" "}, {:node=>:at_rule, :name=>"foo", :prelude=> [{:node=>:whitespace, :pos=>10, :raw=>" "}, {:node=>:ident, :pos=>11, :raw=>"bar", :value=>"bar"}], :block=> [{:node=>:simple_block, :start=>"[", :end=>"]", :value=> [{:node=>:simple_block, :start=>"(", :end=>")", :value=> [{:node=>:number, :pos=>17, :raw=>"4", :repr=>"4", :type=>:integer, :value=>4}], :tokens=> [{:node=>:"(", :pos=>16, :raw=>"("}, {:node=>:number, :pos=>17, :raw=>"4", :repr=>"4", :type=>:integer, :value=>4}]}], :tokens=> [{:node=>:"[", :pos=>15, :raw=>"["}, {:node=>:"(", :pos=>16, :raw=>"("}, {:node=>:number, :pos=>17, :raw=>"4", :repr=>"4", :type=>:integer, :value=>4}]}], :tokens=> [{:node=>:at_keyword, :pos=>6, :raw=>"@foo", :value=>"foo"}, {:node=>:whitespace, :pos=>10, :raw=>" "}, {:node=>:ident, :pos=>11, :raw=>"bar", :value=>"bar"}, {:node=>:"{", :pos=>14, :raw=>"{"}, {:node=>:"[", :pos=>15, :raw=>"["}, {:node=>:"(", :pos=>16, :raw=>"("}, {:node=>:number, :pos=>17, :raw=>"4", :repr=>"4", :type=>:integer, :value=>4}]} ], tree) end it 'unclosed, preceded by a comment, when :preserve_comments == true' do options = {:preserve_comments => true} tree = parse(" /**/ @foo bar{[(4", options) assert_equal([ {:node=>:whitespace, :pos=>0, :raw=>" "}, {:node=>:comment, :pos=>1, :raw=>"/**/", :value=>""}, {:node=>:whitespace, :pos=>5, :raw=>" "}, {:node=>:at_rule, :name=>"foo", :prelude=> [{:node=>:whitespace, :pos=>10, :raw=>" "}, {:node=>:ident, :pos=>11, :raw=>"bar", :value=>"bar"}], :block=> [{:node=>:simple_block, :start=>"[", :end=>"]", :value=> [{:node=>:simple_block, :start=>"(", :end=>")", :value=> [{:node=>:number, :pos=>17, :raw=>"4", :repr=>"4", :type=>:integer, :value=>4}], :tokens=> [{:node=>:"(", :pos=>16, :raw=>"("}, {:node=>:number, :pos=>17, :raw=>"4", :repr=>"4", :type=>:integer, :value=>4}]}], :tokens=> [{:node=>:"[", :pos=>15, :raw=>"["}, {:node=>:"(", :pos=>16, :raw=>"("}, {:node=>:number, :pos=>17, :raw=>"4", :repr=>"4", :type=>:integer, :value=>4}]}], :tokens=> [{:node=>:at_keyword, :pos=>6, :raw=>"@foo", :value=>"foo"}, {:node=>:whitespace, :pos=>10, :raw=>" "}, {:node=>:ident, :pos=>11, :raw=>"bar", :value=>"bar"}, {:node=>:"{", :pos=>14, :raw=>"{"}, {:node=>:"[", :pos=>15, :raw=>"["}, {:node=>:"(", :pos=>16, :raw=>"("}, {:node=>:number, :pos=>17, :raw=>"4", :repr=>"4", :type=>:integer, :value=>4}]} ], tree) end end end describe 'should parse a style rule' do it 'with preceding comment, selector, block, comment' do tree = parse(" /**/ div > p { color: #aaa; } /**/ ") assert_equal([ {:node=>:whitespace, :pos=>0, :raw=>" "}, {:node=>:whitespace, :pos=>5, :raw=>" "}, {:node=>:style_rule, :selector=> {:node=>:selector, :value=>"div > p", :tokens=> [{:node=>:ident, :pos=>6, :raw=>"div", :value=>"div"}, {:node=>:whitespace, :pos=>9, :raw=>" "}, {:node=>:delim, :pos=>10, :raw=>">", :value=>">"}, {:node=>:whitespace, :pos=>11, :raw=>" "}, {:node=>:ident, :pos=>12, :raw=>"p", :value=>"p"}, {:node=>:whitespace, :pos=>13, :raw=>" "}]}, :children=> [{:node=>:whitespace, :pos=>15, :raw=>" "}, {:node=>:property, :name=>"color", :value=>"#aaa", :children=> [{:node=>:whitespace, :pos=>22, :raw=>" "}, {:node=>:hash, :pos=>23, :raw=>"#aaa", :type=>:id, :value=>"aaa"}], :important=>false, :tokens=> [{:node=>:ident, :pos=>16, :raw=>"color", :value=>"color"}, {:node=>:colon, :pos=>21, :raw=>":"}, {:node=>:whitespace, :pos=>22, :raw=>" "}, {:node=>:hash, :pos=>23, :raw=>"#aaa", :type=>:id, :value=>"aaa"}]}, {:node=>:semicolon, :pos=>27, :raw=>";"}, {:node=>:whitespace, :pos=>28, :raw=>" "}]}, {:node=>:whitespace, :pos=>31, :raw=>" "}, {:node=>:whitespace, :pos=>36, :raw=>" "} ], tree) end it 'with preceding comment, selector, block, comment, when :preserve_comments == true' do options = {:preserve_comments => true} tree = parse(" /**/ div > p { color: #aaa; } /**/ ", options) assert_equal([ {:node=>:whitespace, :pos=>0, :raw=>" "}, {:node=>:comment, :pos=>1, :raw=>"/**/", :value=>""}, {:node=>:whitespace, :pos=>5, :raw=>" "}, {:node=>:style_rule, :selector=> {:node=>:selector, :value=>"div > p", :tokens=> [{:node=>:ident, :pos=>6, :raw=>"div", :value=>"div"}, {:node=>:whitespace, :pos=>9, :raw=>" "}, {:node=>:delim, :pos=>10, :raw=>">", :value=>">"}, {:node=>:whitespace, :pos=>11, :raw=>" "}, {:node=>:ident, :pos=>12, :raw=>"p", :value=>"p"}, {:node=>:whitespace, :pos=>13, :raw=>" "}]}, :children=> [{:node=>:whitespace, :pos=>15, :raw=>" "}, {:node=>:property, :name=>"color", :value=>"#aaa", :children=> [{:node=>:whitespace, :pos=>22, :raw=>" "}, {:node=>:hash, :pos=>23, :raw=>"#aaa", :type=>:id, :value=>"aaa"}], :important=>false, :tokens=> [{:node=>:ident, :pos=>16, :raw=>"color", :value=>"color"}, {:node=>:colon, :pos=>21, :raw=>":"}, {:node=>:whitespace, :pos=>22, :raw=>" "}, {:node=>:hash, :pos=>23, :raw=>"#aaa", :type=>:id, :value=>"aaa"}]}, {:node=>:semicolon, :pos=>27, :raw=>";"}, {:node=>:whitespace, :pos=>28, :raw=>" "}]}, {:node=>:whitespace, :pos=>31, :raw=>" "}, {:node=>:comment, :pos=>32, :raw=>"/**/", :value=>""}, {:node=>:whitespace, :pos=>36, :raw=>" "} ], tree) end end it 'should parse property values containing functions' do tree = parse("p:before { content: a\\ttr(data-foo) \" \"; }") assert_equal([ {:node=>:style_rule, :selector=> {:node=>:selector, :value=>"p:before", :tokens=> [{:node=>:ident, :pos=>0, :raw=>"p", :value=>"p"}, {:node=>:colon, :pos=>1, :raw=>":"}, {:node=>:ident, :pos=>2, :raw=>"before", :value=>"before"}, {:node=>:whitespace, :pos=>8, :raw=>" "}]}, :children=> [{:node=>:whitespace, :pos=>10, :raw=>" "}, {:node=>:property, :name=>"content", :value=>"attr(data-foo) \" \"", :children=> [{:node=>:whitespace, :pos=>19, :raw=>" "}, {:node=>:function, :name=>"attr", :value=> [{:node=>:ident, :pos=>26, :raw=>"data-foo", :value=>"data-foo"}], :tokens=> [{:node=>:function, :pos=>20, :raw=>"a\\ttr(", :value=>"attr"}, {:node=>:ident, :pos=>26, :raw=>"data-foo", :value=>"data-foo"}, {:node=>:")", :pos=>34, :raw=>")"}]}, {:node=>:whitespace, :pos=>35, :raw=>" "}, {:node=>:string, :pos=>36, :raw=>"\" \"", :value=>" "}], :important=>false, :tokens=> [{:node=>:ident, :pos=>11, :raw=>"content", :value=>"content"}, {:node=>:colon, :pos=>18, :raw=>":"}, {:node=>:whitespace, :pos=>19, :raw=>" "}, {:node=>:function, :name=>"attr", :value=> [{:node=>:ident, :pos=>26, :raw=>"data-foo", :value=>"data-foo"}], :tokens=> [{:node=>:function, :pos=>20, :raw=>"a\\ttr(", :value=>"attr"}, {:node=>:ident, :pos=>26, :raw=>"data-foo", :value=>"data-foo"}, {:node=>:")", :pos=>34, :raw=>")"}]}, {:node=>:whitespace, :pos=>35, :raw=>" "}, {:node=>:string, :pos=>36, :raw=>"\" \"", :value=>" "}]}, {:node=>:semicolon, :pos=>39, :raw=>";"}, {:node=>:whitespace, :pos=>40, :raw=>" "}]} ], tree) end it 'should parse property values containing nested functions' do tree = parse("div { width: e\\78 pression(alert(1)); }") assert_equal([ {:node=>:style_rule, :selector=> {:node=>:selector, :value=>"div", :tokens=> [{:node=>:ident, :pos=>0, :raw=>"div", :value=>"div"}, {:node=>:whitespace, :pos=>3, :raw=>" "}]}, :children=> [{:node=>:whitespace, :pos=>5, :raw=>" "}, {:node=>:property, :name=>"width", :value=>"expression(alert(1))", :children=> [{:node=>:whitespace, :pos=>12, :raw=>" "}, {:node=>:function, :name=>"expression", :value=> [{:node=>:function, :name=>"alert", :value=> [{:node=>:number, :pos=>33, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}], :tokens=> [{:node=>:function, :pos=>27, :raw=>"alert(", :value=>"alert"}, {:node=>:number, :pos=>33, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}, {:node=>:")", :pos=>34, :raw=>")"}]}], :tokens=> [{:node=>:function, :pos=>13, :raw=>"e\\78 pression(", :value=>"expression"}, {:node=>:function, :pos=>27, :raw=>"alert(", :value=>"alert"}, {:node=>:number, :pos=>33, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}, {:node=>:")", :pos=>34, :raw=>")"}, {:node=>:")", :pos=>35, :raw=>")"}]}], :important=>false, :tokens=> [{:node=>:ident, :pos=>6, :raw=>"width", :value=>"width"}, {:node=>:colon, :pos=>11, :raw=>":"}, {:node=>:whitespace, :pos=>12, :raw=>" "}, {:node=>:function, :name=>"expression", :value=> [{:node=>:function, :name=>"alert", :value=> [{:node=>:number, :pos=>33, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}], :tokens=> [{:node=>:function, :pos=>27, :raw=>"alert(", :value=>"alert"}, {:node=>:number, :pos=>33, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}, {:node=>:")", :pos=>34, :raw=>")"}]}], :tokens=> [{:node=>:function, :pos=>13, :raw=>"e\\78 pression(", :value=>"expression"}, {:node=>:function, :pos=>27, :raw=>"alert(", :value=>"alert"}, {:node=>:number, :pos=>33, :raw=>"1", :repr=>"1", :type=>:integer, :value=>1}, {:node=>:")", :pos=>34, :raw=>")"}, {:node=>:")", :pos=>35, :raw=>")"}]}]}, {:node=>:semicolon, :pos=>36, :raw=>";"}, {:node=>:whitespace, :pos=>37, :raw=>" "}]} ], tree) end end crass-1.0.2/test/test_serialization.rb0000644000004100000410000000333312530245151020075 0ustar www-datawww-data# encoding: utf-8 require_relative 'support/common' describe 'Serialization' do make_my_diffs_pretty! parallelize_me! # Parse a bunch of real-world CSS and make sure it's the same when we # serialize it. Dir[File.join(File.dirname(__FILE__), 'support/serialization/*.css')].each do |filepath| it "should parse and serialize #{filepath}" do input = File.read(filepath) tree = Crass.parse(input, :preserve_comments => true, :preserve_hacks => true) assert_equal(input, CP.stringify(tree)) end end # -- Regression tests -------------------------------------------------------- it "should not omit a trailing semicolon when serializing a `@charset` rule" do css = '@charset "utf-8";' tree = Crass.parse(css) assert_equal(css, CP.stringify(tree)) end it "should reflect modifications made to the block of an `:at_rule`" do tree = Crass.parse(%[ @media (screen) { .froggy { color: green; } .piggy { color: pink; } } ].strip) tree[0][:block] = Crass::Parser.parse_rules(".piggy { color: pink; }") assert_equal( "@media (screen) {.piggy { color: pink; }}", Crass::Parser.stringify(tree) ) end it "should serialize a @page rule" do css = %[ @page { margin: 2cm } @page :right { @top-center { content: "Preliminary edition" } @bottom-center { content: counter(page) } } @page { size: 8.5in 11in; margin: 10%; @top-left { content: "Hamlet"; } @top-right { content: "Page " counter(page); } } ].strip tree = Crass.parse(css) assert_equal(css, Crass::Parser.stringify(tree)) end end crass-1.0.2/test/css-parsing-tests/0000755000004100000410000000000012530245151017223 5ustar www-datawww-datacrass-1.0.2/test/css-parsing-tests/make_color3_hsl.py0000644000004100000410000000116012530245151022637 0ustar www-datawww-dataimport colorsys # It turns out Python already does HSL -> RGB! trim = lambda s: s if not s.endswith('.0') else s[:-2] print('[') print(',\n'.join( '"hsl%s(%s, %s%%, %s%%%s)", [%s, %s, %s, %s]' % ( ('a' if a is not None else '', h, trim(str(s/10.)), trim(str(l/10.)), ', %s' % a if a is not None else '') + tuple(trim(str(round(v, 10))) for v in colorsys.hls_to_rgb(h/360., l/1000., s/1000.)) + (a if a is not None else 1,) ) for a in [None, 1, .2, 0] for l in range(0, 1001, 125) for s in range(0, 1001, 125) for h in range(0, 360, 30) )) print(']') crass-1.0.2/test/css-parsing-tests/stylesheet_bytes.json0000644000004100000410000001167712530245151023531 0ustar www-datawww-data[ {"css_bytes": ""}, [[], "utf-8"], {"css_bytes": "@\u00C3\u00A9", "protocol_encoding": null, "environment_encoding": null}, [[["at-rule", "é", [], null]], "utf-8"], {"css_bytes": "@\u00C3\u00A9"}, [[["at-rule", "é", [], null]], "utf-8"], {"css_bytes": "@\u0000\u00E9\u0000", "comment": "Untagged UTF-16, parsed as UTF-8"}, [[["at-rule", "���", [], null]], "utf-8"], {"css_bytes": "\u00FF\u00FE@\u0000\u00E9\u0000", "comment": "UTF-16 with a BOM"}, [[["at-rule", "é", [], null]], "utf-16le"], {"css_bytes": "\u00FE\u00FF\u0000@\u0000\u00E9"}, [[["at-rule", "é", [], null]], "utf-16be"], {"css_bytes": "@\u00E9"}, [[["at-rule", "�", [], null]], "utf-8"], {"css_bytes": "@\u00E9", "protocol_encoding": "ISO-8859-2"}, [[["at-rule", "é", [], null]], "iso-8859-2"], {"css_bytes": "@\u00E9", "protocol_encoding": "ISO-8859-5"}, [[["at-rule", "щ", [], null]], "iso-8859-5"], {"css_bytes": "@\u00C3\u00A9", "protocol_encoding": "ISO-8859-2"}, [[["at-rule", "ĂŠ", [], null]], "iso-8859-2"], {"css_bytes": "\u00EF\u00BB\u00BF @\u00C3\u00A9", "protocol_encoding": "ISO-8859-2", "comment": "BOM takes precedence over protocol"}, [[["at-rule", "é", [], null]], "utf-8"], {"css_bytes": "@charset \"ISO-8859-5\"; @\u00E9"}, [[["at-rule", "charset", [" ", ["string", "ISO-8859-5"]], null], ["at-rule", "щ", [], null]], "iso-8859-5"], {"css_bytes": "@Charset \"ISO-8859-5\"; @\u00E9", "comment": "@charset has to match an exact byte pattern"}, [[["at-rule", "Charset", [" ", ["string", "ISO-8859-5"]], null], ["at-rule", "�", [], null]], "utf-8"], {"css_bytes": "@charset \"ISO-8859-5\"; @\u00E9", "comment": "@charset has to match an exact byte pattern"}, [[["at-rule", "charset", [" ", ["string", "ISO-8859-5"]], null], ["at-rule", "�", [], null]], "utf-8"], {"css_bytes": "@charset 'ISO-8859-5'; @\u00E9", "comment": "@charset has to match an exact byte pattern"}, [[["at-rule", "charset", [" ", ["string", "ISO-8859-5"]], null], ["at-rule", "�", [], null]], "utf-8"], {"css_bytes": "@charset \"ISO-8859-5\" ; @\u00E9", "comment": "@charset has to match an exact byte pattern"}, [[["at-rule", "charset", [" ", ["string", "ISO-8859-5"], " "], null], ["at-rule", "�", [], null]], "utf-8"], {"css_bytes": "@\u0000c\u0000h\u0000a\u0000r\u0000s\u0000e\u0000t\u0000 \u0000\"\u0000U\u0000T\u0000F\u0000-\u00001\u00006\u0000L\u0000E\u0000\"\u0000;\u0000@\u0000\u00e9\u0000", "comment": "@charset has to be ASCII-compatible itself"}, [[["at-rule", "�c�h�a�r�s�e�t�", [" ", ["ident", "�"], ["string", "�U�T�F�-�1�6�L�E�"], ["ident", "�"]], null], ["error", "invalid"]], "utf-8"], {"css_bytes": "@charset \"UTF-16LE\"; @\u00C3\u00A9", "comment": "@charset can only specify ASCII-compatible encodings"}, [[["at-rule", "charset", [" ", ["string", "UTF-16LE"]], null], ["at-rule", "é", [], null]], "utf-8"], {"css_bytes": "\u00EF\u00BB\u00BF @charset \"ISO-8859-5\"; @\u00E9", "comment": "BOM takes precedence over @charset"}, [[["at-rule", "charset", [" ", ["string", "ISO-8859-5"]], null], ["at-rule", "�", [], null]], "utf-8"], {"css_bytes": "\u00EF\u00BB\u00BF @charset \"ISO-8859-5\"; @\u00C3\u00A9", "comment": "BOM takes precedence over @charset"}, [[["at-rule", "charset", [" ", ["string", "ISO-8859-5"]], null], ["at-rule", "é", [], null]], "utf-8"], {"css_bytes": "@charset \"ISO-8859-5\"; @\u00E9", "protocol_encoding": " Iso-8859-2", "comment": "Protocol takes precedence over @charset"}, [[["at-rule", "charset", [" ", ["string", "ISO-8859-5"]], null], ["at-rule", "é", [], null]], "iso-8859-2"], {"css_bytes": "@charset \"ISO-8859-5\"; @\u00E9", "protocol_encoding": "kamoulox", "comment": "Unknow protocol encoding falls back to @charset"}, [[["at-rule", "charset", [" ", ["string", "ISO-8859-5"]], null], ["at-rule", "щ", [], null]], "iso-8859-5"], {"css_bytes": "@\u00E9", "environment_encoding": "ISO-8859-2"}, [[["at-rule", "é", [], null]], "iso-8859-2"], {"css_bytes": "@\u00E9", "environment_encoding": "ISO-8859-5"}, [[["at-rule", "щ", [], null]], "iso-8859-5"], {"css_bytes": "@charset \"ISO-8859-5\"; @\u00E9", "environment_encoding": "ISO-8859-2", "comment": "@character takes precedence over environment"}, [[["at-rule", "charset", [" ", ["string", "ISO-8859-5"]], null], ["at-rule", "щ", [], null]], "iso-8859-5"], {"css_bytes": "@charset \"kamoulox\"; @\u00E9", "environment_encoding": "ISO-8859-2", "comment": "@character with unknown encoding falls back to environment encoding"}, [[["at-rule", "charset", [" ", ["string", "kamoulox"]], null], ["at-rule", "é", [], null]], "iso-8859-2"], {"css_bytes": "@\u00E9", "protocol_encoding": "ISO-8859-2", "environment_encoding": "ISO-8859-5", "comment": "protocol takes precedence over environment"}, [[["at-rule", "é", [], null]], "iso-8859-2"], {"css_bytes": "\u00EF\u00BB\u00BF @\u00C3\u00A9", "environment_encoding": "ISO-8859-5", "comment": "BOM takes precedence over environment"}, [[["at-rule", "é", [], null]], "utf-8"] ] crass-1.0.2/test/css-parsing-tests/component_value_list.json0000644000004100000410000003402212530245151024350 0ustar www-datawww-data[ "", [], "/*/*///** /* **/*//* ", [ "/", "*", "/" ], "red", [ ["ident", "red"] ], " \t\t\r\n\nRed ", [ " ", ["ident", "Red"], " " ], "red/* CDC */-->", [ ["ident", "red"], "-->" ], "red-->/* Not CDC */", [ ["ident", "red--"], ">" ], "\\- red0 -red --red -\\-red\\ blue 0red -0red \u0000red _Red .red rêd r\\êd \u007F\u0080\u0081", [ ["ident", "-"], " ", ["ident", "red0"], " ", ["ident", "-red"], " ", ["ident", "--red"], " ", ["ident", "--red blue"], " ", ["dimension", "0", 0, "integer", "red"], " ", ["dimension", "-0", 0, "integer", "red"], " ", ["ident", "\uFFFDred"], " ", ["ident", "_Red"], " ", ".", ["ident", "red"], " ", ["ident", "rêd"], " ", ["ident", "rêd"], " ", "\u007F", ["ident", "\u0080\u0081"] ], "\\30red \\00030 red \\30\r\nred \\0000000red \\1100000red \\red \\r ed \\.red \\ red \\\nred \\376\\37 6\\000376\\0000376\\", [ ["ident", "0red"], " ", ["ident", "0red"], " ", ["ident", "0red"], " ", ["ident", "\uFFFD0red"], " ", ["ident", "\uFFFD0red"], " ", ["ident", "red"], " ", ["ident", "r"], " ", ["ident", "ed"], " ", ["ident", ".red"], " ", ["ident", " red"], " ", "\\", " ", ["ident", "red"], " ", ["ident", "Ͷ76Ͷ76\uFFFD"] ], "rgba0() -rgba() --rgba() -\\-rgba() 0rgba() -0rgba() _rgba() .rgba() rgbâ() \\30rgba() rgba () @rgba() #rgba()", [ ["function", "rgba0"], " ", ["function", "-rgba"], " ", ["function", "--rgba"], " ", ["function", "--rgba"], " ", ["dimension", "0", 0, "integer", "rgba"], ["()"], " ", ["dimension", "-0", 0, "integer", "rgba"], ["()"], " ", ["function", "_rgba"], " ", ".", ["function", "rgba"], " ", ["function", "rgbâ"], " ", ["function", "0rgba"], " ", ["ident", "rgba"], " ", ["()"], " ", ["at-keyword", "rgba"], ["()"], " ", ["hash", "rgba", "id"], ["()"] ], "@media0 @-Media @--media @-\\-media @0media @-0media @_media @.media @medİa @\\30 media\\", [ ["at-keyword", "media0"], " ", ["at-keyword", "-Media"], " ", ["at-keyword", "--media"], " ", ["at-keyword", "--media"], " ", "@", ["dimension", "0", 0, "integer", "media"], " ", "@", ["dimension", "-0", 0, "integer", "media"], " ", ["at-keyword", "_media"], " ", "@", ".", ["ident", "media"], " ", ["at-keyword", "medİa"], " ", ["at-keyword", "0media\uFFFD"] ], "#red0 #-Red #--red #-\\-red #0red #-0red #_Red #.red #rêd #êrd #\\.red\\", [ ["hash", "red0", "id"], " ", ["hash", "-Red", "id"], " ", ["hash", "--red", "id"], " ", ["hash", "--red", "id"], " ", ["hash", "0red", "unrestricted"], " ", ["hash", "-0red", "unrestricted"], " ", ["hash", "_Red", "id"], " ", "#", ".", ["ident", "red"], " ", ["hash", "rêd", "id"], " ", ["hash", "êrd", "id"], " ", ["hash", ".red\uFFFD", "id"] ], "p[example=\"\\\nfoo(int x) {\\\n this.x = x;\\\n}\\\n\"]", [ ["ident", "p"], ["[]", ["ident", "example"], "=", ["string", "foo(int x) { this.x = x;}"] ] ], "'' 'Lorem \"îpsum\"' 'a\\\nb' 'a\nb 'eof", [ ["string", ""], " ", ["string", "Lorem \"îpsum\""], " ", ["string", "ab"], " ", ["error", "bad-string"], " ", ["ident", "b"], " ", ["string", "eof"] ], "\"\" \"Lorem 'îpsum'\" \"a\\\nb\" \"a\nb \"eof", [ ["string", ""], " ", ["string", "Lorem 'îpsum'"], " ", ["string", "ab"], " ", ["error", "bad-string"], " ", ["ident", "b"], " ", ["string", "eof"] ], "\"Lo\\rem \\130 ps\\u m\" '\\376\\37 6\\000376\\0000376\\", [ ["string", "Lorem İpsu m"], " ", ["string", "Ͷ76Ͷ76"] ], "url( '') url('Lorem \"îpsum\"'\n) url('a\\\nb' ) url('a\nb) url('eof", [ ["function", "url", " ", ["string", ""]], " ", ["function", "url", ["string", "Lorem \"îpsum\""], " "], " ", ["function", "url", ["string", "ab"], " "], " ", ["function", "url", ["error", "bad-string"], " ", ["ident", "b"]], " ", ["function", "url", ["string", "eof"]] ], "url(", [ ["url", ""] ], "url( \t", [ ["url", ""] ], "url(\"\") url(\"Lorem 'îpsum'\"\n) url(\"a\\\nb\" ) url(\"a\nb) url(\"eof", [ ["function", "url", ["string", ""]], " ", ["function", "url", ["string", "Lorem 'îpsum'"], " "], " ", ["function", "url", ["string", "ab"], " "], " ", ["function", "url", ["error", "bad-string"], " ", ["ident", "b"]], " ", ["function", "url", ["string", "eof"]] ], "url(\"Lo\\rem \\130 ps\\u m\") url('\\376\\37 6\\000376\\0000376\\", [ ["function", "url", ["string", "Lorem İpsu m"]], " ", ["function", "url", ["string", "Ͷ76Ͷ76"]] ], "URL(foo) Url(foo) ûrl(foo) url (foo) url\\ (foo) url(\t 'foo' ", [ ["url", "foo"], " ", ["url", "foo"], " ", ["function", "ûrl", ["ident", "foo"]], " ", ["ident", "url"], " ", ["()", ["ident", "foo"]], " ", ["function", "url ", ["ident", "foo"]], " ", ["function", "url", " ", ["string", "foo"], " "] ], "url('a' b) url('c' d)", [ ["function", "url", ["string", "a"], " ", ["ident", "b"]], " ", ["function", "url", ["string", "c"], " ", ["ident", "d"]] ], "url('a\nb) url('c\n", [ ["function", "url", ["error", "bad-string"], " ", ["ident", "b"]], " ", ["function", "url", ["error", "bad-string"], " "] ], "url() url( \t) url(\n Foô\\030\n!\n) url(\na\nb\n) url(a\\ b) url(a(b) url(a\\(b) url(a'b) url(a\\'b) url(a\"b) url(a\\\"b) url(a\nb) url(a\\\nb) url(a\\a b) url(a\\", [ ["url", ""], " ", ["url", ""], " ", ["url", "Foô0!"], " ", ["error", "bad-url"], " ", ["url", "a b"], " ", ["error", "bad-url"], " ", ["url", "a(b"], " ", ["error", "bad-url"], " ", ["url", "a'b"], " ", ["error", "bad-url"], " ", ["url", "a\"b"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["url", "a\nb"], " ", ["url", "a\uFFFD"] ], "url(\u0000!#$%&*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~\u0080\u0081\u009e\u009f\u00a0\u00a1\u00a2", [ ["url", "\uFFFD!#$%&*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~\u0080\u0081\u009e\u009f\u00a0¡¢"] ], "url(\u0001) url(\u0002) url(\u0003) url(\u0004) url(\u0005) url(\u0006) url(\u0007) url(\u0008) url(\u000b) url(\u000e) url(\u000f) url(\u0010) url(\u0011) url(\u0012) url(\u0013) url(\u0014) url(\u0015) url(\u0016) url(\u0017) url(\u0018) url(\u0019) url(\u001a) url(\u001b) url(\u001c) url(\u001d) url(\u001e) url(\u001f) url(\u007f)", [ ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"], " ", ["error", "bad-url"] ], "12 +34 -45 .67 +.89 -.01 2.3 +45.0 -0.67", [ ["number", "12", 12, "integer"], " ", ["number", "+34", 34, "integer"], " ", ["number", "-45", -45, "integer"], " ", ["number", ".67", 0.67, "number"], " ", ["number", "+.89", 0.89, "number"], " ", ["number", "-.01", -0.01, "number"], " ", ["number", "2.3", 2.3, "number"], " ", ["number", "+45.0", 45, "number"], " ", ["number", "-0.67", -0.67, "number"] ], "12e2 +34e+1 -45E-0 .68e+3 +.79e-1 -.01E2 2.3E+1 +45.0e6 -0.67e0", [ ["number", "12e2", 1200, "number"], " ", ["number", "+34e+1", 340, "number"], " ", ["number", "-45E-0", -45, "number"], " ", ["number", ".68e+3", 680, "number"], " ", ["number", "+.79e-1", 0.079, "number"], " ", ["number", "-.01E2", -1, "number"], " ", ["number", "2.3E+1", 23, "number"], " ", ["number", "+45.0e6", 45000000, "number"], " ", ["number", "-0.67e0", -0.67, "number"] ], "3. /* Decimal point must have following digits */", [ ["number", "3", 3, "integer"], ".", " " ], "3\\65-2 /* Scientific notation E can not be escaped */", [ ["dimension", "3", 3, "integer", "e-2"], " " ], "3e-2.1 /* Integer exponents only */", [ ["number", "3e-2", 0.03, "number"], ["number", ".1", 0.1, "number"], " " ], "12% +34% -45% .67% +.89% -.01% 2.3% +45.0% -0.67%", [ ["percentage", "12", 12, "integer"], " ", ["percentage", "+34", 34, "integer"], " ", ["percentage", "-45", -45, "integer"], " ", ["percentage", ".67", 0.67, "number"], " ", ["percentage", "+.89", 0.89, "number"], " ", ["percentage", "-.01", -0.01, "number"], " ", ["percentage", "2.3", 2.3, "number"], " ", ["percentage", "+45.0", 45, "number"], " ", ["percentage", "-0.67", -0.67, "number"] ], "12e2% +34e+1% -45E-0% .68e+3% +.79e-1% -.01E2% 2.3E+1% +45.0e6% -0.67e0%", [ ["percentage", "12e2", 1200, "number"], " ", ["percentage", "+34e+1", 340, "number"], " ", ["percentage", "-45E-0", -45, "number"], " ", ["percentage", ".68e+3", 680, "number"], " ", ["percentage", "+.79e-1", 0.079, "number"], " ", ["percentage", "-.01E2", -1, "number"], " ", ["percentage", "2.3E+1", 23, "number"], " ", ["percentage", "+45.0e6", 45000000, "number"], " ", ["percentage", "-0.67e0", -0.67, "number"] ], "12\\% /* Percent sign can not be escaped */", [ ["dimension", "12", 12, "integer", "%"], " " ], "12px +34px -45px .67px +.89px -.01px 2.3px +45.0px -0.67px", [ ["dimension", "12", 12, "integer", "px"], " ", ["dimension", "+34", 34, "integer", "px"], " ", ["dimension", "-45", -45, "integer", "px"], " ", ["dimension", ".67", 0.67, "number", "px"], " ", ["dimension", "+.89", 0.89, "number", "px"], " ", ["dimension", "-.01", -0.01, "number", "px"], " ", ["dimension", "2.3", 2.3, "number", "px"], " ", ["dimension", "+45.0", 45, "number", "px"], " ", ["dimension", "-0.67", -0.67, "number", "px"] ], "12e2px +34e+1px -45E-0px .68e+3px +.79e-1px -.01E2px 2.3E+1px +45.0e6px -0.67e0px", [ ["dimension", "12e2", 1200, "number", "px"], " ", ["dimension", "+34e+1", 340, "number", "px"], " ", ["dimension", "-45E-0", -45, "number", "px"], " ", ["dimension", ".68e+3", 680, "number", "px"], " ", ["dimension", "+.79e-1", 0.079, "number", "px"], " ", ["dimension", "-.01E2", -1, "number", "px"], " ", ["dimension", "2.3E+1", 23, "number", "px"], " ", ["dimension", "+45.0e6", 45000000, "number", "px"], " ", ["dimension", "-0.67e0", -0.67, "number", "px"] ], "12red0 12.0-red 12--red 12-\\-red 120red 12-0red 12\u0000red 12_Red 12.red 12rêd", [ ["dimension", "12", 12, "integer", "red0"], " ", ["dimension", "12.0", 12, "number", "-red"], " ", ["dimension", "12", 12, "integer", "--red"], " ", ["dimension", "12", 12, "integer", "--red"], " ", ["dimension", "120", 120, "integer", "red"], " ", ["number", "12", 12, "integer"], ["dimension", "-0", 0, "integer", "red"], " ", ["dimension", "12", 12, "integer", "\uFFFDred"], " ", ["dimension", "12", 12, "integer", "_Red"], " ", ["number", "12", 12, "integer"], ".", ["ident", "red"], " ", ["dimension", "12", 12, "integer", "rêd"] ], "u+1 U+10 U+100 U+1000 U+10000 U+100000 U+1000000", [ ["unicode-range", 1, 1], " ", ["unicode-range", 16, 16], " ", ["unicode-range", 256, 256], " ", ["unicode-range", 4096, 4096], " ", ["unicode-range", 65536, 65536], " ", ["unicode-range", 1048576, 1048576], " ", ["unicode-range", 1048576, 1048576], ["number", "0", 0, "integer"] ], "u+? u+1? U+10? U+100? U+1000? U+10000? U+100000?", [ ["unicode-range", 0, 15], " ", ["unicode-range", 16, 31], " ", ["unicode-range", 256, 271], " ", ["unicode-range", 4096, 4111], " ", ["unicode-range", 65536, 65551], " ", ["unicode-range", 1048576, 1048591], " ", ["unicode-range", 1048576, 1048576], "?" ], "u+?? U+1?? U+10?? U+100?? U+1000?? U+10000??", [ ["unicode-range", 0, 255], " ", ["unicode-range", 256, 511], " ", ["unicode-range", 4096, 4351], " ", ["unicode-range", 65536, 65791], " ", ["unicode-range", 1048576, 1048831], " ", ["unicode-range", 1048576, 1048591], "?" ], "u+??? U+1??? U+10??? U+100??? U+1000???", [ ["unicode-range", 0, 4095], " ", ["unicode-range", 4096, 8191], " ", ["unicode-range", 65536, 69631], " ", ["unicode-range", 1048576, 1052671], " ", ["unicode-range", 1048576, 1048831], "?" ], "u+???? U+1???? U+10???? U+100????", [ ["unicode-range", 0, 65535], " ", ["unicode-range", 65536, 131071], " ", ["unicode-range", 1048576, 1114111], " ", ["unicode-range", 1048576, 1052671], "?" ], "u+????? U+1????? U+10?????", [ ["unicode-range", 0, 1048575], " ", ["unicode-range", 1048576, 2097151], " ", ["unicode-range", 1048576, 1114111], "?" ], "u+?????? U+1??????", [ ["unicode-range", 0, 16777215], " ", ["unicode-range", 1048576, 2097151], "?" ], "u+1-2 U+100000-2 U+1000000-2 U+10-200000", [ ["unicode-range", 1, 2], " ", ["unicode-range", 1048576, 2], " ", ["unicode-range", 1048576, 1048576], ["number", "0", 0, "integer"], ["number", "-2", -2, "integer"], " ", ["unicode-range", 16, 2097152] ], "ù+12 Ü+12 u +12 U+ 12 U+12 - 20 U+1?2 U+1?-50", [ ["ident", "ù"], ["number", "+12", 12, "integer"], " ", ["ident", "Ü"], ["number", "+12", 12, "integer"], " ", ["ident", "u"], " ", ["number", "+12", 12, "integer"], " ", ["ident", "U"], "+", " ", ["number", "12", 12, "integer"], " ", ["unicode-range", 18, 18], " ", "-", " ", ["number", "20", 20, "integer"], " ", ["unicode-range", 16, 31], ["number", "2", 2, "integer"], " ", ["unicode-range", 16, 31], ["number", "-50", -50, "integer"] ], "~=|=^=$=*=|| |/**/| ~/**/=", [ "~=", "|=", "^=", "$=", "*=", "||", " {", [["qualified rule", ["", " "], [] ]], "div { color: #aaa; } p{}", [ ["qualified rule", [["ident", "div"], " "], [" ", ["ident", "color"], ":", " ", ["hash", "aaa", "id"], ";", " "] ], ["qualified rule", [["ident", "p"]], []] ], "div {} -->", [ ["qualified rule", [["ident", "div"], " "], []], ["error", "invalid"] ], "{}a", [["qualified rule", [], []], ["error", "invalid"]], "{}@a", [["qualified rule", [], []], ["at-rule", "a", [], null]] ] crass-1.0.2/test/css-parsing-tests/make_color3_keywords.py0000644000004100000410000001535112530245151023727 0ustar www-datawww-dataall_keywords = [ ('transparent', (0, 0, 0, 0)), ('black', (0, 0, 0, 1)), ('silver', (192, 192, 192, 1)), ('gray', (128, 128, 128, 1)), ('white', (255, 255, 255, 1)), ('maroon', (128, 0, 0, 1)), ('red', (255, 0, 0, 1)), ('purple', (128, 0, 128, 1)), ('fuchsia', (255, 0, 255, 1)), ('green', (0, 128, 0, 1)), ('lime', (0, 255, 0, 1)), ('olive', (128, 128, 0, 1)), ('yellow', (255, 255, 0, 1)), ('navy', (0, 0, 128, 1)), ('blue', (0, 0, 255, 1)), ('teal', (0, 128, 128, 1)), ('aqua', (0, 255, 255, 1)), ('aliceblue', (240, 248, 255, 1)), ('antiquewhite', (250, 235, 215, 1)), ('aqua', (0, 255, 255, 1)), ('aquamarine', (127, 255, 212, 1)), ('azure', (240, 255, 255, 1)), ('beige', (245, 245, 220, 1)), ('bisque', (255, 228, 196, 1)), ('black', (0, 0, 0, 1)), ('blanchedalmond', (255, 235, 205, 1)), ('blue', (0, 0, 255, 1)), ('blueviolet', (138, 43, 226, 1)), ('brown', (165, 42, 42, 1)), ('burlywood', (222, 184, 135, 1)), ('cadetblue', (95, 158, 160, 1)), ('chartreuse', (127, 255, 0, 1)), ('chocolate', (210, 105, 30, 1)), ('coral', (255, 127, 80, 1)), ('cornflowerblue', (100, 149, 237, 1)), ('cornsilk', (255, 248, 220, 1)), ('crimson', (220, 20, 60, 1)), ('cyan', (0, 255, 255, 1)), ('darkblue', (0, 0, 139, 1)), ('darkcyan', (0, 139, 139, 1)), ('darkgoldenrod', (184, 134, 11, 1)), ('darkgray', (169, 169, 169, 1)), ('darkgreen', (0, 100, 0, 1)), ('darkgrey', (169, 169, 169, 1)), ('darkkhaki', (189, 183, 107, 1)), ('darkmagenta', (139, 0, 139, 1)), ('darkolivegreen', (85, 107, 47, 1)), ('darkorange', (255, 140, 0, 1)), ('darkorchid', (153, 50, 204, 1)), ('darkred', (139, 0, 0, 1)), ('darksalmon', (233, 150, 122, 1)), ('darkseagreen', (143, 188, 143, 1)), ('darkslateblue', (72, 61, 139, 1)), ('darkslategray', (47, 79, 79, 1)), ('darkslategrey', (47, 79, 79, 1)), ('darkturquoise', (0, 206, 209, 1)), ('darkviolet', (148, 0, 211, 1)), ('deeppink', (255, 20, 147, 1)), ('deepskyblue', (0, 191, 255, 1)), ('dimgray', (105, 105, 105, 1)), ('dimgrey', (105, 105, 105, 1)), ('dodgerblue', (30, 144, 255, 1)), ('firebrick', (178, 34, 34, 1)), ('floralwhite', (255, 250, 240, 1)), ('forestgreen', (34, 139, 34, 1)), ('fuchsia', (255, 0, 255, 1)), ('gainsboro', (220, 220, 220, 1)), ('ghostwhite', (248, 248, 255, 1)), ('gold', (255, 215, 0, 1)), ('goldenrod', (218, 165, 32, 1)), ('gray', (128, 128, 128, 1)), ('green', (0, 128, 0, 1)), ('greenyellow', (173, 255, 47, 1)), ('grey', (128, 128, 128, 1)), ('honeydew', (240, 255, 240, 1)), ('hotpink', (255, 105, 180, 1)), ('indianred', (205, 92, 92, 1)), ('indigo', (75, 0, 130, 1)), ('ivory', (255, 255, 240, 1)), ('khaki', (240, 230, 140, 1)), ('lavender', (230, 230, 250, 1)), ('lavenderblush', (255, 240, 245, 1)), ('lawngreen', (124, 252, 0, 1)), ('lemonchiffon', (255, 250, 205, 1)), ('lightblue', (173, 216, 230, 1)), ('lightcoral', (240, 128, 128, 1)), ('lightcyan', (224, 255, 255, 1)), ('lightgoldenrodyellow', (250, 250, 210, 1)), ('lightgray', (211, 211, 211, 1)), ('lightgreen', (144, 238, 144, 1)), ('lightgrey', (211, 211, 211, 1)), ('lightpink', (255, 182, 193, 1)), ('lightsalmon', (255, 160, 122, 1)), ('lightseagreen', (32, 178, 170, 1)), ('lightskyblue', (135, 206, 250, 1)), ('lightslategray', (119, 136, 153, 1)), ('lightslategrey', (119, 136, 153, 1)), ('lightsteelblue', (176, 196, 222, 1)), ('lightyellow', (255, 255, 224, 1)), ('lime', (0, 255, 0, 1)), ('limegreen', (50, 205, 50, 1)), ('linen', (250, 240, 230, 1)), ('magenta', (255, 0, 255, 1)), ('maroon', (128, 0, 0, 1)), ('mediumaquamarine', (102, 205, 170, 1)), ('mediumblue', (0, 0, 205, 1)), ('mediumorchid', (186, 85, 211, 1)), ('mediumpurple', (147, 112, 219, 1)), ('mediumseagreen', (60, 179, 113, 1)), ('mediumslateblue', (123, 104, 238, 1)), ('mediumspringgreen', (0, 250, 154, 1)), ('mediumturquoise', (72, 209, 204, 1)), ('mediumvioletred', (199, 21, 133, 1)), ('midnightblue', (25, 25, 112, 1)), ('mintcream', (245, 255, 250, 1)), ('mistyrose', (255, 228, 225, 1)), ('moccasin', (255, 228, 181, 1)), ('navajowhite', (255, 222, 173, 1)), ('navy', (0, 0, 128, 1)), ('oldlace', (253, 245, 230, 1)), ('olive', (128, 128, 0, 1)), ('olivedrab', (107, 142, 35, 1)), ('orange', (255, 165, 0, 1)), ('orangered', (255, 69, 0, 1)), ('orchid', (218, 112, 214, 1)), ('palegoldenrod', (238, 232, 170, 1)), ('palegreen', (152, 251, 152, 1)), ('paleturquoise', (175, 238, 238, 1)), ('palevioletred', (219, 112, 147, 1)), ('papayawhip', (255, 239, 213, 1)), ('peachpuff', (255, 218, 185, 1)), ('peru', (205, 133, 63, 1)), ('pink', (255, 192, 203, 1)), ('plum', (221, 160, 221, 1)), ('powderblue', (176, 224, 230, 1)), ('purple', (128, 0, 128, 1)), ('red', (255, 0, 0, 1)), ('rosybrown', (188, 143, 143, 1)), ('royalblue', (65, 105, 225, 1)), ('saddlebrown', (139, 69, 19, 1)), ('salmon', (250, 128, 114, 1)), ('sandybrown', (244, 164, 96, 1)), ('seagreen', (46, 139, 87, 1)), ('seashell', (255, 245, 238, 1)), ('sienna', (160, 82, 45, 1)), ('silver', (192, 192, 192, 1)), ('skyblue', (135, 206, 235, 1)), ('slateblue', (106, 90, 205, 1)), ('slategray', (112, 128, 144, 1)), ('slategrey', (112, 128, 144, 1)), ('snow', (255, 250, 250, 1)), ('springgreen', (0, 255, 127, 1)), ('steelblue', (70, 130, 180, 1)), ('tan', (210, 180, 140, 1)), ('teal', (0, 128, 128, 1)), ('thistle', (216, 191, 216, 1)), ('tomato', (255, 99, 71, 1)), ('turquoise', (64, 224, 208, 1)), ('violet', (238, 130, 238, 1)), ('wheat', (245, 222, 179, 1)), ('white', (255, 255, 255, 1)), ('whitesmoke', (245, 245, 245, 1)), ('yellow', (255, 255, 0, 1)), ('yellowgreen', (154, 205, 50, 1)), ] def replace(s, i, r): i %= len(s) return s[:i] + r(s[i]) + s[i + 1:] print('[') print(',\n'.join( '"%s", %s' % (css, list(rgba) if valid else 'null') for i, (keyword, rgba) in enumerate(all_keywords) for css, valid, run in [ (keyword, True, True), (replace(keyword, i, str.upper), True, True), (replace(keyword, i, lambda c: r'\\' + c), True, keyword[i % len(keyword)] not in 'abcdef'), (replace(keyword, i, lambda c: r'\\%X ' % ord(c)), True, True), (replace(keyword, i, lambda c: ''), False, True), # Kelving sign: u'K'.lower() == u'k', but should not match in CSS (keyword.replace('k', u'K'), False, 'k' in keyword) ] if run )) print(']') crass-1.0.2/test/css-parsing-tests/one_rule.json0000644000004100000410000000200612530245151021724 0ustar www-datawww-data[ "", ["error", "empty"], "foo", ["error", "invalid"], "foo 4", ["error", "invalid"], "@foo", ["at-rule", "foo", [], null], "@foo bar; \t/* comment */", ["at-rule", "foo", [" ", ["ident", "bar"]], null], " /**/ @foo bar{[(4", ["at-rule", "foo", [" ", ["ident", "bar"]], [["[]", ["()", ["number", "4", 4, "integer"]]]] ], "@foo { bar", ["at-rule", "foo", [" "], [" ", ["ident", "bar"]]], "@foo [ bar", ["at-rule", "foo", [" ", ["[]", " ", ["ident", "bar"]]], null], " /**/ div > p { color: #aaa; } /**/ ", ["qualified rule", [["ident", "div"], " ", ">", " ", ["ident", "p"], " "], [" ", ["ident", "color"], ":", " ", ["hash", "aaa", "id"], ";", " "] ], " /**/ { color: #aaa ", ["qualified rule", [], [" ", ["ident", "color"], ":", " ", ["hash", "aaa", "id"], " "] ], " /* CDO/CDC are not special */ {", ["qualified rule", ["", " "], [] ], "div { color: #aaa; } p{}", ["error", "extra-input"], "div {} -->", ["error", "extra-input"], "{}a", ["error", "extra-input"] ] crass-1.0.2/test/css-parsing-tests/one_declaration.json0000644000004100000410000000302612530245151023245 0ustar www-datawww-data[ "", ["error", "empty"], " /**/\n", ["error", "empty"], " ;", ["error", "invalid"], "foo", ["error", "invalid"], "@foo:", ["error", "invalid"], "#foo:", ["error", "invalid"], ".foo:", ["error", "invalid"], "foo*:", ["error", "invalid"], "foo.. 9000", ["error", "invalid"], "foo:", ["declaration", "foo", [], false], "foo :", ["declaration", "foo", [], false], "\n/**/ foo: ", ["declaration", "foo", [" "], false], "foo:;", ["declaration", "foo", [";"], false], " /**/ foo /**/ :", ["declaration", "foo", [], false], "foo:;bar:;", ["declaration", "foo", [";", ["ident", "bar"], ":", ";"], false], "foo: 9000 !Important", ["declaration", "foo", [ " ", ["number", "9000", 9000, "integer"], " " ], true], "foo: 9000 ! /**/\t IMPORTant /**/\f", ["declaration", "foo", [ " ", ["number", "9000", 9000, "integer"], " " ], true], "foo: 9000 /* Dotted capital I */!İmportant", ["declaration", "foo", [ " ", ["number", "9000", 9000, "integer"], " ", "!", ["ident", "İmportant"] ], false], "foo: 9000 !important!", ["declaration", "foo", [ " ", ["number", "9000", 9000, "integer"], " ", "!", ["ident", "important"], "!" ], false], "foo: 9000 important", ["declaration", "foo", [ " ", ["number", "9000", 9000, "integer"], " ", ["ident", "important"] ], false], "foo:important", ["declaration", "foo", [ ["ident", "important"] ], false], "foo: 9000 @bar{ !important", ["declaration", "foo", [ " ", ["number", "9000", 9000, "integer"], " ", ["at-keyword", "bar"], ["{}", " ", "!", ["ident", "important"] ] ], false] ] crass-1.0.2/test/css-parsing-tests/one_component_value.json0000644000004100000410000000122112530245151024151 0ustar www-datawww-data[ "", ["error", "empty"], " ", ["error", "empty"], "/**/", ["error", "empty"], " /**/\t/* a */\n\n", ["error", "empty"], ".", ".", "a", ["ident", "a"], "/**/ 4px", ["dimension", "4", 4, "integer", "px"], "rgba(100%, 0%, 50%, .5)", ["function", "rgba", ["percentage", "100", 100, "integer"], ",", " ", ["percentage", "0", 0, "integer"], ",", " ", ["percentage", "50", 50, "integer"], ",", " ", ["number", ".5", 0.5, "number"] ], " /**/ { foo: bar; @baz [)", ["{}", " ", ["ident", "foo"], ":", " ", ["ident", "bar"], ";", " ", ["at-keyword", "baz"], " ", ["[]", ["error", ")"] ] ], ".foo", ["error", "extra-input"] ] crass-1.0.2/test/css-parsing-tests/An+B.json0000644000004100000410000000435312530245151020636 0ustar www-datawww-data[ "", null, " \n", null, "odd", [2, 1], "even", [2, 0], "ödd", null, "éven", null, " /**/\t OdD /**/\n", [2, 1], " /**/\t EveN /**/\n", [2, 0], "3", [0, 3], "+2 ", [0, 2], " -14 ", [0, -14], "+ 2 ", null, "- 14 ", null, "3.1", null, "3N", [3, 0], "+2N ", [2, 0], " -14n ", [-14, 0], "+ 2N ", null, "- 14N ", null, "3.1N", null, "3 n", null, " N", [1, 0], " +n", [1, 0], " -n", [-1, 0], "+ n", null, "- n", null, "3N+1", [3, 1], "+2n+1 ", [2, 1], " -14n+1 ", [-14, 1], "+ 2N+1 ", null, "- 14n+1 ", null, "3.1n+1", null, "3 n+1", null, " n+1", [1, 1], " +N+1", [1, 1], " -n+1", [-1, 1], "+ N+1", null, "- N+1", null, "3n-1", [3, -1], "+2N-1 ", [2, -1], " -14n-1 ", [-14, -1], "+ 2N-1 ", null, "- 14N-1 ", null, "3.1n-1", null, "3 n-1", null, "3n-1foo", null, " n-1", [1, -1], " +n-1", [1, -1], " -n-1", [-1, -1], "+ n-1", null, "- n-1", null, " +n-1foo", null, " -n-1foo", null, "3N +1", [3, 1], "+2N +1 ", [2, 1], " -14n +1 ", [-14, 1], "+ 2N +1 ", null, "- 14n +1 ", null, "3.1N +1", null, "3 n +1", null, "3n foo", null, "3n + foo", null, " n +1", [1, 1], " +N +1", [1, 1], " -n +1", [-1, 1], "+ n +1", null, "- N +1", null, "3N -1", [3, -1], "+2n -1 ", [2, -1], " -14n -1 ", [-14, -1], "+ 2n -1 ", null, "- 14N -1 ", null, "3.1N -1", null, "3 N -1", null, " N -1", [1, -1], " +N -1", [1, -1], " -n -1", [-1, -1], "+ n -1", null, "- n -1", null, "3n+ 1", [3, 1], "+2n+ 1 ", [2, 1], " -14n+ 1 ", [-14, 1], "+ 2n+ 1 ", null, "- 14N+ 1 ", null, "3.1n+ 1", null, "3 N+ 1", null, " N+ 1", [1, 1], " +N+ 1", [1, 1], " -N+ 1", [-1, 1], "+ n+ 1", null, "- N+ 1", null, "3n- 1", [3, -1], "+2N- 1 ", [2, -1], " -14N- 1 ", [-14, -1], "+ 2N- 1 ", null, "- 14n- 1 ", null, "3.1n- 1", null, "3 n- 1", null, " N- 1", [1, -1], " +N- 1", [1, -1], " -n- 1", [-1, -1], "+ n- 1", null, "- N- 1", null, "3N + 1", [3, 1], "+2N + 1 ", [2, 1], " -14n + 1 ", [-14, 1], "+ 2n + 1 ", null, "- 14N + 1 ", null, "3.1n + 1", null, "3 N + 1", null, " n + 1", [1, 1], " +n + 1", [1, 1], " -N + 1", [-1, 1], "+ N + 1", null, "- N + 1", null, "3N - 1", [3, -1], "+2n - 1 ", [2, -1], " -14n - 1 ", [-14, -1], "+ 2N - 1 ", null, "- 14N - 1 ", null, "3.1N - 1", null, "3 n - 1", null, " N - 1", [1, -1], " +n - 1", [1, -1], " -n - 1", [-1, -1], "+ N - 1", null, "- N - 1", null ] crass-1.0.2/test/css-parsing-tests/color3.json0000644000004100000410000000751212530245151021324 0ustar www-datawww-data[ "", null, " /* hey */\n", null, "4", null, "top", null, "/**/transparent", [0, 0, 0, 0], "transparent", [0, 0, 0, 0], " transparent\n", [0, 0, 0, 0], "TransParent", [0, 0, 0, 0], "currentColor", "currentColor", "CURRENTcolor", "currentColor", "current-Color", null, "black", [0, 0, 0, 1], "white", [1, 1, 1, 1], "fuchsia", [1, 0, 1, 1], "cyan", [0, 1, 1, 1], "CyAn", [0, 1, 1, 1], "#", null, "#f", null, "#ff", null, "#fff", [1, 1, 1, 1], "#ffg", null, "#ffff", null, "#fffff", null, "#ffffff", [1, 1, 1, 1], "#fffffg", null, "#fffffff", null, "#ffffffff", null, "#fffffffff", null, "#FFCc99", [1, 0.8, 0.6, 1], "#369", [0.2, 0.4, 0.6, 1], "rgb(00, 51, 102)", [0, 0.2, 0.4, 1], "r\\gb(00, 51, 102)", [0, 0.2, 0.4, 1], "r\\67 b(00, 51, 102)", [0, 0.2, 0.4, 1], "RGB(153, 204, 255)", [0.6, 0.8, 1, 1], "rgB(0, 0, 0)", [0, 0, 0, 1], "rgB(0, 51, 255)", [0, 0.2, 1, 1], "rgb(0,51,255)", [0, 0.2, 1, 1], "rgb(0\t, 51 ,255)", [0, 0.2, 1, 1], "rgb(/* R */0, /* G */51, /* B */255)", [0, 0.2, 1, 1], "rgb(-51, 306, 0)", [-0.2, 1.2, 0, 1], "rgb(42%, 3%, 50%)", [0.42, 0.03, 0.5, 1], "RGB(100%, 100%, 100%)", [1, 1, 1, 1], "rgB(0%, 0%, 0%)", [0, 0, 0, 1], "rgB(10%, 20%, 30%)", [0.1, 0.2, 0.3, 1], "rgb(10%,20%,30%)", [0.1, 0.2, 0.3, 1], "rgb(10%\t, 20% ,30%)", [0.1, 0.2, 0.3, 1], "rgb(/* R */ 10%, /* G */ 20%, /* B */ 30%)", [0.1, 0.2, 0.3, 1], "rgb(-12%, 110%, 1400%)", [-0.12, 1.1, 14, 1], "rgb(10%, 50%, 0)", null, "rgb(255, 50%, 0%)", null, "rgb(0, 0 0)", null, "rgb(0, 0, 0deg)", null, "rgb(0, 0, light)", null, "rgb()", null, "rgb(0)", null, "rgb(0, 0)", null, "rgb(0, 0, 0, 0)", null, "rgb(0%)", null, "rgb(0%, 0%)", null, "rgb(0%, 0%, 0%, 0%)", null, "rgb(0%, 0%, 0%, 0)", null, "rgba(0, 0, 0, 0)", [0, 0, 0, 0], "rgba(204, 0, 102, 0.3)", [0.8, 0, 0.4, 0.3], "RGBA(255, 255, 255, 0)", [1, 1, 1, 0], "rgBA(0, 51, 255, 1)", [0, 0.2, 1, 1], "rgba(0, 51, 255, 1.1)", [0, 0.2, 1, 1], "rgba(0, 51, 255, 37)", [0, 0.2, 1, 1], "rgba(0, 51, 255, 0.42)", [0, 0.2, 1, 0.42], "rgba(0, 51, 255, 0)", [0, 0.2, 1, 0], "rgba(0, 51, 255, -0.1)", [0, 0.2, 1, 0], "rgba(0, 51, 255, -139)", [0, 0.2, 1, 0], "rgba(42%, 3%, 50%, 0.3)", [0.42, 0.03, 0.5, 0.3], "RGBA(100%, 100%, 100%, 0)", [1, 1, 1, 0], "rgBA(0%, 20%, 100%, 1)", [0, 0.2, 1, 1], "rgba(0%, 20%, 100%, 1.1)", [0, 0.2, 1, 1], "rgba(0%, 20%, 100%, 37)", [0, 0.2, 1, 1], "rgba(0%, 20%, 100%, 0.42)", [0, 0.2, 1, 0.42], "rgba(0%, 20%, 100%, 0)", [0, 0.2, 1, 0], "rgba(0%, 20%, 100%, -0.1)", [0, 0.2, 1, 0], "rgba(0%, 20%, 100%, -139)", [0, 0.2, 1, 0], "rgba(255, 255, 255, 0%)", null, "rgba(10%, 50%, 0, 1)", null, "rgba(255, 50%, 0%, 1)", null, "rgba(0, 0, 0 0)", null, "rgba(0, 0, 0, 0deg)", null, "rgba(0, 0, 0, light)", null, "rgba()", null, "rgba(0)", null, "rgba(0, 0, 0)", null, "rgba(0, 0, 0, 0, 0)", null, "rgba(0%)", null, "rgba(0%, 0%)", null, "rgba(0%, 0%, 0%)", null, "rgba(0%, 0%, 0%, 0%)", null, "rgba(0%, 0%, 0%, 0%, 0%)", null, "HSL(0, 0%, 0%)", [0, 0, 0, 1], "hsL(0, 100%, 50%)", [1, 0, 0, 1], "hsl(60, 100%, 37.5%)", [0.75, 0.75, 0, 1], "hsl(780, 100%, 37.5%)", [0.75, 0.75, 0, 1], "hsl(-300, 100%, 37.5%)", [0.75, 0.75, 0, 1], "hsl(300, 50%, 50%)", [0.75, 0.25, 0.75, 1], "hsl(10, 50%, 0)", null, "hsl(50%, 50%, 0%)", null, "hsl(0, 0% 0%)", null, "hsl(30deg, 100%, 100%)", null, "hsl(0, 0%, light)", null, "hsl()", null, "hsl(0)", null, "hsl(0, 0%)", null, "hsl(0, 0%, 0%, 0%)", null, "HSLA(-300, 100%, 37.5%, 1)", [0.75, 0.75, 0, 1], "hsLA(-300, 100%, 37.5%, 12)", [0.75, 0.75, 0, 1], "hsla(-300, 100%, 37.5%, 0.2)", [0.75, 0.75, 0, 0.2], "hsla(-300, 100%, 37.5%, 0)", [0.75, 0.75, 0, 0], "hsla(-300, 100%, 37.5%, -3)", [0.75, 0.75, 0, 0], "hsla(10, 50%, 0, 1)", null, "hsla(50%, 50%, 0%, 1)", null, "hsla(0, 0% 0%, 1)", null, "hsla(30deg, 100%, 100%, 1)", null, "hsla(0, 0%, light, 1)", null, "hsla()", null, "hsla(0)", null, "hsla(0, 0%)", null, "hsla(0, 0%, 0%, 50%)", null, "hsla(0, 0%, 0%, 1, 0%)", null, "cmyk(0, 0, 0, 0)", null ] crass-1.0.2/test/css-parsing-tests/color3_hsl.json0000644000004100000410000061676712530245151022214 0ustar www-datawww-data[ "hsl(0, 0%, 0%)", [0, 0, 0, 1], "hsl(30, 0%, 0%)", [0, 0, 0, 1], "hsl(60, 0%, 0%)", [0, 0, 0, 1], "hsl(90, 0%, 0%)", [0, 0, 0, 1], "hsl(120, 0%, 0%)", [0, 0, 0, 1], "hsl(150, 0%, 0%)", [0, 0, 0, 1], "hsl(180, 0%, 0%)", [0, 0, 0, 1], "hsl(210, 0%, 0%)", [0, 0, 0, 1], "hsl(240, 0%, 0%)", [0, 0, 0, 1], "hsl(270, 0%, 0%)", [0, 0, 0, 1], "hsl(300, 0%, 0%)", [0, 0, 0, 1], "hsl(330, 0%, 0%)", [0, 0, 0, 1], "hsl(0, 12.5%, 0%)", [0, 0, 0, 1], "hsl(30, 12.5%, 0%)", [0, 0, 0, 1], "hsl(60, 12.5%, 0%)", [0, 0, 0, 1], "hsl(90, 12.5%, 0%)", [0, 0, 0, 1], "hsl(120, 12.5%, 0%)", [0, 0, 0, 1], "hsl(150, 12.5%, 0%)", [0, 0, 0, 1], "hsl(180, 12.5%, 0%)", [0, 0, 0, 1], "hsl(210, 12.5%, 0%)", [0, 0, 0, 1], "hsl(240, 12.5%, 0%)", [0, 0, 0, 1], "hsl(270, 12.5%, 0%)", [0, 0, 0, 1], "hsl(300, 12.5%, 0%)", [0, 0, 0, 1], "hsl(330, 12.5%, 0%)", [0, 0, 0, 1], "hsl(0, 25%, 0%)", [0, 0, 0, 1], "hsl(30, 25%, 0%)", [0, 0, 0, 1], "hsl(60, 25%, 0%)", [0, 0, 0, 1], "hsl(90, 25%, 0%)", [0, 0, 0, 1], "hsl(120, 25%, 0%)", [0, 0, 0, 1], "hsl(150, 25%, 0%)", [0, 0, 0, 1], "hsl(180, 25%, 0%)", [0, 0, 0, 1], "hsl(210, 25%, 0%)", [0, 0, 0, 1], "hsl(240, 25%, 0%)", [0, 0, 0, 1], "hsl(270, 25%, 0%)", [0, 0, 0, 1], "hsl(300, 25%, 0%)", [0, 0, 0, 1], "hsl(330, 25%, 0%)", [0, 0, 0, 1], "hsl(0, 37.5%, 0%)", [0, 0, 0, 1], "hsl(30, 37.5%, 0%)", [0, 0, 0, 1], "hsl(60, 37.5%, 0%)", [0, 0, 0, 1], "hsl(90, 37.5%, 0%)", [0, 0, 0, 1], "hsl(120, 37.5%, 0%)", [0, 0, 0, 1], "hsl(150, 37.5%, 0%)", [0, 0, 0, 1], "hsl(180, 37.5%, 0%)", [0, 0, 0, 1], "hsl(210, 37.5%, 0%)", [0, 0, 0, 1], "hsl(240, 37.5%, 0%)", [0, 0, 0, 1], "hsl(270, 37.5%, 0%)", [0, 0, 0, 1], "hsl(300, 37.5%, 0%)", [0, 0, 0, 1], "hsl(330, 37.5%, 0%)", [0, 0, 0, 1], "hsl(0, 50%, 0%)", [0, 0, 0, 1], "hsl(30, 50%, 0%)", [0, 0, 0, 1], "hsl(60, 50%, 0%)", [0, 0, 0, 1], "hsl(90, 50%, 0%)", [0, 0, 0, 1], "hsl(120, 50%, 0%)", [0, 0, 0, 1], "hsl(150, 50%, 0%)", [0, 0, 0, 1], "hsl(180, 50%, 0%)", [0, 0, 0, 1], "hsl(210, 50%, 0%)", [0, 0, 0, 1], "hsl(240, 50%, 0%)", [0, 0, 0, 1], "hsl(270, 50%, 0%)", [0, 0, 0, 1], "hsl(300, 50%, 0%)", [0, 0, 0, 1], "hsl(330, 50%, 0%)", [0, 0, 0, 1], "hsl(0, 62.5%, 0%)", [0, 0, 0, 1], "hsl(30, 62.5%, 0%)", [0, 0, 0, 1], "hsl(60, 62.5%, 0%)", [0, 0, 0, 1], "hsl(90, 62.5%, 0%)", [0, 0, 0, 1], "hsl(120, 62.5%, 0%)", [0, 0, 0, 1], "hsl(150, 62.5%, 0%)", [0, 0, 0, 1], "hsl(180, 62.5%, 0%)", [0, 0, 0, 1], "hsl(210, 62.5%, 0%)", [0, 0, 0, 1], "hsl(240, 62.5%, 0%)", [0, 0, 0, 1], "hsl(270, 62.5%, 0%)", [0, 0, 0, 1], "hsl(300, 62.5%, 0%)", [0, 0, 0, 1], "hsl(330, 62.5%, 0%)", [0, 0, 0, 1], "hsl(0, 75%, 0%)", [0, 0, 0, 1], "hsl(30, 75%, 0%)", [0, 0, 0, 1], "hsl(60, 75%, 0%)", [0, 0, 0, 1], "hsl(90, 75%, 0%)", [0, 0, 0, 1], "hsl(120, 75%, 0%)", [0, 0, 0, 1], "hsl(150, 75%, 0%)", [0, 0, 0, 1], "hsl(180, 75%, 0%)", [0, 0, 0, 1], "hsl(210, 75%, 0%)", [0, 0, 0, 1], "hsl(240, 75%, 0%)", [0, 0, 0, 1], "hsl(270, 75%, 0%)", [0, 0, 0, 1], "hsl(300, 75%, 0%)", [0, 0, 0, 1], "hsl(330, 75%, 0%)", [0, 0, 0, 1], "hsl(0, 87.5%, 0%)", [0, 0, 0, 1], "hsl(30, 87.5%, 0%)", [0, 0, 0, 1], "hsl(60, 87.5%, 0%)", [0, 0, 0, 1], "hsl(90, 87.5%, 0%)", [0, 0, 0, 1], "hsl(120, 87.5%, 0%)", [0, 0, 0, 1], "hsl(150, 87.5%, 0%)", [0, 0, 0, 1], "hsl(180, 87.5%, 0%)", [0, 0, 0, 1], "hsl(210, 87.5%, 0%)", [0, 0, 0, 1], "hsl(240, 87.5%, 0%)", [0, 0, 0, 1], "hsl(270, 87.5%, 0%)", [0, 0, 0, 1], "hsl(300, 87.5%, 0%)", [0, 0, 0, 1], "hsl(330, 87.5%, 0%)", [0, 0, 0, 1], "hsl(0, 100%, 0%)", [0, 0, 0, 1], "hsl(30, 100%, 0%)", [0, 0, 0, 1], "hsl(60, 100%, 0%)", [0, 0, 0, 1], "hsl(90, 100%, 0%)", [0, 0, 0, 1], "hsl(120, 100%, 0%)", [0, 0, 0, 1], "hsl(150, 100%, 0%)", [0, 0, 0, 1], "hsl(180, 100%, 0%)", [0, 0, 0, 1], "hsl(210, 100%, 0%)", [0, 0, 0, 1], "hsl(240, 100%, 0%)", [0, 0, 0, 1], "hsl(270, 100%, 0%)", [0, 0, 0, 1], "hsl(300, 100%, 0%)", [0, 0, 0, 1], "hsl(330, 100%, 0%)", [0, 0, 0, 1], "hsl(0, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(30, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(60, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(90, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(120, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(150, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(180, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(210, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(240, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(270, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(300, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(330, 0%, 12.5%)", [0.125, 0.125, 0.125, 1], "hsl(0, 12.5%, 12.5%)", [0.140625, 0.109375, 0.109375, 1], "hsl(30, 12.5%, 12.5%)", [0.140625, 0.125, 0.109375, 1], "hsl(60, 12.5%, 12.5%)", [0.140625, 0.140625, 0.109375, 1], "hsl(90, 12.5%, 12.5%)", [0.125, 0.140625, 0.109375, 1], "hsl(120, 12.5%, 12.5%)", [0.109375, 0.140625, 0.109375, 1], "hsl(150, 12.5%, 12.5%)", [0.109375, 0.140625, 0.125, 1], "hsl(180, 12.5%, 12.5%)", [0.109375, 0.140625, 0.140625, 1], "hsl(210, 12.5%, 12.5%)", [0.109375, 0.125, 0.140625, 1], "hsl(240, 12.5%, 12.5%)", [0.109375, 0.109375, 0.140625, 1], "hsl(270, 12.5%, 12.5%)", [0.125, 0.109375, 0.140625, 1], "hsl(300, 12.5%, 12.5%)", [0.140625, 0.109375, 0.140625, 1], "hsl(330, 12.5%, 12.5%)", [0.140625, 0.109375, 0.125, 1], "hsl(0, 25%, 12.5%)", [0.15625, 0.09375, 0.09375, 1], "hsl(30, 25%, 12.5%)", [0.15625, 0.125, 0.09375, 1], "hsl(60, 25%, 12.5%)", [0.15625, 0.15625, 0.09375, 1], "hsl(90, 25%, 12.5%)", [0.125, 0.15625, 0.09375, 1], "hsl(120, 25%, 12.5%)", [0.09375, 0.15625, 0.09375, 1], "hsl(150, 25%, 12.5%)", [0.09375, 0.15625, 0.125, 1], "hsl(180, 25%, 12.5%)", [0.09375, 0.15625, 0.15625, 1], "hsl(210, 25%, 12.5%)", [0.09375, 0.125, 0.15625, 1], "hsl(240, 25%, 12.5%)", [0.09375, 0.09375, 0.15625, 1], "hsl(270, 25%, 12.5%)", [0.125, 0.09375, 0.15625, 1], "hsl(300, 25%, 12.5%)", [0.15625, 0.09375, 0.15625, 1], "hsl(330, 25%, 12.5%)", [0.15625, 0.09375, 0.125, 1], "hsl(0, 37.5%, 12.5%)", [0.171875, 0.078125, 0.078125, 1], "hsl(30, 37.5%, 12.5%)", [0.171875, 0.125, 0.078125, 1], "hsl(60, 37.5%, 12.5%)", [0.171875, 0.171875, 0.078125, 1], "hsl(90, 37.5%, 12.5%)", [0.125, 0.171875, 0.078125, 1], "hsl(120, 37.5%, 12.5%)", [0.078125, 0.171875, 0.078125, 1], "hsl(150, 37.5%, 12.5%)", [0.078125, 0.171875, 0.125, 1], "hsl(180, 37.5%, 12.5%)", [0.078125, 0.171875, 0.171875, 1], "hsl(210, 37.5%, 12.5%)", [0.078125, 0.125, 0.171875, 1], "hsl(240, 37.5%, 12.5%)", [0.078125, 0.078125, 0.171875, 1], "hsl(270, 37.5%, 12.5%)", [0.125, 0.078125, 0.171875, 1], "hsl(300, 37.5%, 12.5%)", [0.171875, 0.078125, 0.171875, 1], "hsl(330, 37.5%, 12.5%)", [0.171875, 0.078125, 0.125, 1], "hsl(0, 50%, 12.5%)", [0.1875, 0.0625, 0.0625, 1], "hsl(30, 50%, 12.5%)", [0.1875, 0.125, 0.0625, 1], "hsl(60, 50%, 12.5%)", [0.1875, 0.1875, 0.0625, 1], "hsl(90, 50%, 12.5%)", [0.125, 0.1875, 0.0625, 1], "hsl(120, 50%, 12.5%)", [0.0625, 0.1875, 0.0625, 1], "hsl(150, 50%, 12.5%)", [0.0625, 0.1875, 0.125, 1], "hsl(180, 50%, 12.5%)", [0.0625, 0.1875, 0.1875, 1], "hsl(210, 50%, 12.5%)", [0.0625, 0.125, 0.1875, 1], "hsl(240, 50%, 12.5%)", [0.0625, 0.0625, 0.1875, 1], "hsl(270, 50%, 12.5%)", [0.125, 0.0625, 0.1875, 1], "hsl(300, 50%, 12.5%)", [0.1875, 0.0625, 0.1875, 1], "hsl(330, 50%, 12.5%)", [0.1875, 0.0625, 0.125, 1], "hsl(0, 62.5%, 12.5%)", [0.203125, 0.046875, 0.046875, 1], "hsl(30, 62.5%, 12.5%)", [0.203125, 0.125, 0.046875, 1], "hsl(60, 62.5%, 12.5%)", [0.203125, 0.203125, 0.046875, 1], "hsl(90, 62.5%, 12.5%)", [0.125, 0.203125, 0.046875, 1], "hsl(120, 62.5%, 12.5%)", [0.046875, 0.203125, 0.046875, 1], "hsl(150, 62.5%, 12.5%)", [0.046875, 0.203125, 0.125, 1], "hsl(180, 62.5%, 12.5%)", [0.046875, 0.203125, 0.203125, 1], "hsl(210, 62.5%, 12.5%)", [0.046875, 0.125, 0.203125, 1], "hsl(240, 62.5%, 12.5%)", [0.046875, 0.046875, 0.203125, 1], "hsl(270, 62.5%, 12.5%)", [0.125, 0.046875, 0.203125, 1], "hsl(300, 62.5%, 12.5%)", [0.203125, 0.046875, 0.203125, 1], "hsl(330, 62.5%, 12.5%)", [0.203125, 0.046875, 0.125, 1], "hsl(0, 75%, 12.5%)", [0.21875, 0.03125, 0.03125, 1], "hsl(30, 75%, 12.5%)", [0.21875, 0.125, 0.03125, 1], "hsl(60, 75%, 12.5%)", [0.21875, 0.21875, 0.03125, 1], "hsl(90, 75%, 12.5%)", [0.125, 0.21875, 0.03125, 1], "hsl(120, 75%, 12.5%)", [0.03125, 0.21875, 0.03125, 1], "hsl(150, 75%, 12.5%)", [0.03125, 0.21875, 0.125, 1], "hsl(180, 75%, 12.5%)", [0.03125, 0.21875, 0.21875, 1], "hsl(210, 75%, 12.5%)", [0.03125, 0.125, 0.21875, 1], "hsl(240, 75%, 12.5%)", [0.03125, 0.03125, 0.21875, 1], "hsl(270, 75%, 12.5%)", [0.125, 0.03125, 0.21875, 1], "hsl(300, 75%, 12.5%)", [0.21875, 0.03125, 0.21875, 1], "hsl(330, 75%, 12.5%)", [0.21875, 0.03125, 0.125, 1], "hsl(0, 87.5%, 12.5%)", [0.234375, 0.015625, 0.015625, 1], "hsl(30, 87.5%, 12.5%)", [0.234375, 0.125, 0.015625, 1], "hsl(60, 87.5%, 12.5%)", [0.234375, 0.234375, 0.015625, 1], "hsl(90, 87.5%, 12.5%)", [0.125, 0.234375, 0.015625, 1], "hsl(120, 87.5%, 12.5%)", [0.015625, 0.234375, 0.015625, 1], "hsl(150, 87.5%, 12.5%)", [0.015625, 0.234375, 0.125, 1], "hsl(180, 87.5%, 12.5%)", [0.015625, 0.234375, 0.234375, 1], "hsl(210, 87.5%, 12.5%)", [0.015625, 0.125, 0.234375, 1], "hsl(240, 87.5%, 12.5%)", [0.015625, 0.015625, 0.234375, 1], "hsl(270, 87.5%, 12.5%)", [0.125, 0.015625, 0.234375, 1], "hsl(300, 87.5%, 12.5%)", [0.234375, 0.015625, 0.234375, 1], "hsl(330, 87.5%, 12.5%)", [0.234375, 0.015625, 0.125, 1], "hsl(0, 100%, 12.5%)", [0.25, 0, 0, 1], "hsl(30, 100%, 12.5%)", [0.25, 0.125, 0, 1], "hsl(60, 100%, 12.5%)", [0.25, 0.25, 0, 1], "hsl(90, 100%, 12.5%)", [0.125, 0.25, 0, 1], "hsl(120, 100%, 12.5%)", [0, 0.25, 0, 1], "hsl(150, 100%, 12.5%)", [0, 0.25, 0.125, 1], "hsl(180, 100%, 12.5%)", [0, 0.25, 0.25, 1], "hsl(210, 100%, 12.5%)", [0, 0.125, 0.25, 1], "hsl(240, 100%, 12.5%)", [0, 0, 0.25, 1], "hsl(270, 100%, 12.5%)", [0.125, 0, 0.25, 1], "hsl(300, 100%, 12.5%)", [0.25, 0, 0.25, 1], "hsl(330, 100%, 12.5%)", [0.25, 0, 0.125, 1], "hsl(0, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(30, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(60, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(90, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(120, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(150, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(180, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(210, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(240, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(270, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(300, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(330, 0%, 25%)", [0.25, 0.25, 0.25, 1], "hsl(0, 12.5%, 25%)", [0.28125, 0.21875, 0.21875, 1], "hsl(30, 12.5%, 25%)", [0.28125, 0.25, 0.21875, 1], "hsl(60, 12.5%, 25%)", [0.28125, 0.28125, 0.21875, 1], "hsl(90, 12.5%, 25%)", [0.25, 0.28125, 0.21875, 1], "hsl(120, 12.5%, 25%)", [0.21875, 0.28125, 0.21875, 1], "hsl(150, 12.5%, 25%)", [0.21875, 0.28125, 0.25, 1], "hsl(180, 12.5%, 25%)", [0.21875, 0.28125, 0.28125, 1], "hsl(210, 12.5%, 25%)", [0.21875, 0.25, 0.28125, 1], "hsl(240, 12.5%, 25%)", [0.21875, 0.21875, 0.28125, 1], "hsl(270, 12.5%, 25%)", [0.25, 0.21875, 0.28125, 1], "hsl(300, 12.5%, 25%)", [0.28125, 0.21875, 0.28125, 1], "hsl(330, 12.5%, 25%)", [0.28125, 0.21875, 0.25, 1], "hsl(0, 25%, 25%)", [0.3125, 0.1875, 0.1875, 1], "hsl(30, 25%, 25%)", [0.3125, 0.25, 0.1875, 1], "hsl(60, 25%, 25%)", [0.3125, 0.3125, 0.1875, 1], "hsl(90, 25%, 25%)", [0.25, 0.3125, 0.1875, 1], "hsl(120, 25%, 25%)", [0.1875, 0.3125, 0.1875, 1], "hsl(150, 25%, 25%)", [0.1875, 0.3125, 0.25, 1], "hsl(180, 25%, 25%)", [0.1875, 0.3125, 0.3125, 1], "hsl(210, 25%, 25%)", [0.1875, 0.25, 0.3125, 1], "hsl(240, 25%, 25%)", [0.1875, 0.1875, 0.3125, 1], "hsl(270, 25%, 25%)", [0.25, 0.1875, 0.3125, 1], "hsl(300, 25%, 25%)", [0.3125, 0.1875, 0.3125, 1], "hsl(330, 25%, 25%)", [0.3125, 0.1875, 0.25, 1], "hsl(0, 37.5%, 25%)", [0.34375, 0.15625, 0.15625, 1], "hsl(30, 37.5%, 25%)", [0.34375, 0.25, 0.15625, 1], "hsl(60, 37.5%, 25%)", [0.34375, 0.34375, 0.15625, 1], "hsl(90, 37.5%, 25%)", [0.25, 0.34375, 0.15625, 1], "hsl(120, 37.5%, 25%)", [0.15625, 0.34375, 0.15625, 1], "hsl(150, 37.5%, 25%)", [0.15625, 0.34375, 0.25, 1], "hsl(180, 37.5%, 25%)", [0.15625, 0.34375, 0.34375, 1], "hsl(210, 37.5%, 25%)", [0.15625, 0.25, 0.34375, 1], "hsl(240, 37.5%, 25%)", [0.15625, 0.15625, 0.34375, 1], "hsl(270, 37.5%, 25%)", [0.25, 0.15625, 0.34375, 1], "hsl(300, 37.5%, 25%)", [0.34375, 0.15625, 0.34375, 1], "hsl(330, 37.5%, 25%)", [0.34375, 0.15625, 0.25, 1], "hsl(0, 50%, 25%)", [0.375, 0.125, 0.125, 1], "hsl(30, 50%, 25%)", [0.375, 0.25, 0.125, 1], "hsl(60, 50%, 25%)", [0.375, 0.375, 0.125, 1], "hsl(90, 50%, 25%)", [0.25, 0.375, 0.125, 1], "hsl(120, 50%, 25%)", [0.125, 0.375, 0.125, 1], "hsl(150, 50%, 25%)", [0.125, 0.375, 0.25, 1], "hsl(180, 50%, 25%)", [0.125, 0.375, 0.375, 1], "hsl(210, 50%, 25%)", [0.125, 0.25, 0.375, 1], "hsl(240, 50%, 25%)", [0.125, 0.125, 0.375, 1], "hsl(270, 50%, 25%)", [0.25, 0.125, 0.375, 1], "hsl(300, 50%, 25%)", [0.375, 0.125, 0.375, 1], "hsl(330, 50%, 25%)", [0.375, 0.125, 0.25, 1], "hsl(0, 62.5%, 25%)", [0.40625, 0.09375, 0.09375, 1], "hsl(30, 62.5%, 25%)", [0.40625, 0.25, 0.09375, 1], "hsl(60, 62.5%, 25%)", [0.40625, 0.40625, 0.09375, 1], "hsl(90, 62.5%, 25%)", [0.25, 0.40625, 0.09375, 1], "hsl(120, 62.5%, 25%)", [0.09375, 0.40625, 0.09375, 1], "hsl(150, 62.5%, 25%)", [0.09375, 0.40625, 0.25, 1], "hsl(180, 62.5%, 25%)", [0.09375, 0.40625, 0.40625, 1], "hsl(210, 62.5%, 25%)", [0.09375, 0.25, 0.40625, 1], "hsl(240, 62.5%, 25%)", [0.09375, 0.09375, 0.40625, 1], "hsl(270, 62.5%, 25%)", [0.25, 0.09375, 0.40625, 1], "hsl(300, 62.5%, 25%)", [0.40625, 0.09375, 0.40625, 1], "hsl(330, 62.5%, 25%)", [0.40625, 0.09375, 0.25, 1], "hsl(0, 75%, 25%)", [0.4375, 0.0625, 0.0625, 1], "hsl(30, 75%, 25%)", [0.4375, 0.25, 0.0625, 1], "hsl(60, 75%, 25%)", [0.4375, 0.4375, 0.0625, 1], "hsl(90, 75%, 25%)", [0.25, 0.4375, 0.0625, 1], "hsl(120, 75%, 25%)", [0.0625, 0.4375, 0.0625, 1], "hsl(150, 75%, 25%)", [0.0625, 0.4375, 0.25, 1], "hsl(180, 75%, 25%)", [0.0625, 0.4375, 0.4375, 1], "hsl(210, 75%, 25%)", [0.0625, 0.25, 0.4375, 1], "hsl(240, 75%, 25%)", [0.0625, 0.0625, 0.4375, 1], "hsl(270, 75%, 25%)", [0.25, 0.0625, 0.4375, 1], "hsl(300, 75%, 25%)", [0.4375, 0.0625, 0.4375, 1], "hsl(330, 75%, 25%)", [0.4375, 0.0625, 0.25, 1], "hsl(0, 87.5%, 25%)", [0.46875, 0.03125, 0.03125, 1], "hsl(30, 87.5%, 25%)", [0.46875, 0.25, 0.03125, 1], "hsl(60, 87.5%, 25%)", [0.46875, 0.46875, 0.03125, 1], "hsl(90, 87.5%, 25%)", [0.25, 0.46875, 0.03125, 1], "hsl(120, 87.5%, 25%)", [0.03125, 0.46875, 0.03125, 1], "hsl(150, 87.5%, 25%)", [0.03125, 0.46875, 0.25, 1], "hsl(180, 87.5%, 25%)", [0.03125, 0.46875, 0.46875, 1], "hsl(210, 87.5%, 25%)", [0.03125, 0.25, 0.46875, 1], "hsl(240, 87.5%, 25%)", [0.03125, 0.03125, 0.46875, 1], "hsl(270, 87.5%, 25%)", [0.25, 0.03125, 0.46875, 1], "hsl(300, 87.5%, 25%)", [0.46875, 0.03125, 0.46875, 1], "hsl(330, 87.5%, 25%)", [0.46875, 0.03125, 0.25, 1], "hsl(0, 100%, 25%)", [0.5, 0, 0, 1], "hsl(30, 100%, 25%)", [0.5, 0.25, 0, 1], "hsl(60, 100%, 25%)", [0.5, 0.5, 0, 1], "hsl(90, 100%, 25%)", [0.25, 0.5, 0, 1], "hsl(120, 100%, 25%)", [0, 0.5, 0, 1], "hsl(150, 100%, 25%)", [0, 0.5, 0.25, 1], "hsl(180, 100%, 25%)", [0, 0.5, 0.5, 1], "hsl(210, 100%, 25%)", [0, 0.25, 0.5, 1], "hsl(240, 100%, 25%)", [0, 0, 0.5, 1], "hsl(270, 100%, 25%)", [0.25, 0, 0.5, 1], "hsl(300, 100%, 25%)", [0.5, 0, 0.5, 1], "hsl(330, 100%, 25%)", [0.5, 0, 0.25, 1], "hsl(0, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(30, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(60, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(90, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(120, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(150, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(180, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(210, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(240, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(270, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(300, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(330, 0%, 37.5%)", [0.375, 0.375, 0.375, 1], "hsl(0, 12.5%, 37.5%)", [0.421875, 0.328125, 0.328125, 1], "hsl(30, 12.5%, 37.5%)", [0.421875, 0.375, 0.328125, 1], "hsl(60, 12.5%, 37.5%)", [0.421875, 0.421875, 0.328125, 1], "hsl(90, 12.5%, 37.5%)", [0.375, 0.421875, 0.328125, 1], "hsl(120, 12.5%, 37.5%)", [0.328125, 0.421875, 0.328125, 1], "hsl(150, 12.5%, 37.5%)", [0.328125, 0.421875, 0.375, 1], "hsl(180, 12.5%, 37.5%)", [0.328125, 0.421875, 0.421875, 1], "hsl(210, 12.5%, 37.5%)", [0.328125, 0.375, 0.421875, 1], "hsl(240, 12.5%, 37.5%)", [0.328125, 0.328125, 0.421875, 1], "hsl(270, 12.5%, 37.5%)", [0.375, 0.328125, 0.421875, 1], "hsl(300, 12.5%, 37.5%)", [0.421875, 0.328125, 0.421875, 1], "hsl(330, 12.5%, 37.5%)", [0.421875, 0.328125, 0.375, 1], "hsl(0, 25%, 37.5%)", [0.46875, 0.28125, 0.28125, 1], "hsl(30, 25%, 37.5%)", [0.46875, 0.375, 0.28125, 1], "hsl(60, 25%, 37.5%)", [0.46875, 0.46875, 0.28125, 1], "hsl(90, 25%, 37.5%)", [0.375, 0.46875, 0.28125, 1], "hsl(120, 25%, 37.5%)", [0.28125, 0.46875, 0.28125, 1], "hsl(150, 25%, 37.5%)", [0.28125, 0.46875, 0.375, 1], "hsl(180, 25%, 37.5%)", [0.28125, 0.46875, 0.46875, 1], "hsl(210, 25%, 37.5%)", [0.28125, 0.375, 0.46875, 1], "hsl(240, 25%, 37.5%)", [0.28125, 0.28125, 0.46875, 1], "hsl(270, 25%, 37.5%)", [0.375, 0.28125, 0.46875, 1], "hsl(300, 25%, 37.5%)", [0.46875, 0.28125, 0.46875, 1], "hsl(330, 25%, 37.5%)", [0.46875, 0.28125, 0.375, 1], "hsl(0, 37.5%, 37.5%)", [0.515625, 0.234375, 0.234375, 1], "hsl(30, 37.5%, 37.5%)", [0.515625, 0.375, 0.234375, 1], "hsl(60, 37.5%, 37.5%)", [0.515625, 0.515625, 0.234375, 1], "hsl(90, 37.5%, 37.5%)", [0.375, 0.515625, 0.234375, 1], "hsl(120, 37.5%, 37.5%)", [0.234375, 0.515625, 0.234375, 1], "hsl(150, 37.5%, 37.5%)", [0.234375, 0.515625, 0.375, 1], "hsl(180, 37.5%, 37.5%)", [0.234375, 0.515625, 0.515625, 1], "hsl(210, 37.5%, 37.5%)", [0.234375, 0.375, 0.515625, 1], "hsl(240, 37.5%, 37.5%)", [0.234375, 0.234375, 0.515625, 1], "hsl(270, 37.5%, 37.5%)", [0.375, 0.234375, 0.515625, 1], "hsl(300, 37.5%, 37.5%)", [0.515625, 0.234375, 0.515625, 1], "hsl(330, 37.5%, 37.5%)", [0.515625, 0.234375, 0.375, 1], "hsl(0, 50%, 37.5%)", [0.5625, 0.1875, 0.1875, 1], "hsl(30, 50%, 37.5%)", [0.5625, 0.375, 0.1875, 1], "hsl(60, 50%, 37.5%)", [0.5625, 0.5625, 0.1875, 1], "hsl(90, 50%, 37.5%)", [0.375, 0.5625, 0.1875, 1], "hsl(120, 50%, 37.5%)", [0.1875, 0.5625, 0.1875, 1], "hsl(150, 50%, 37.5%)", [0.1875, 0.5625, 0.375, 1], "hsl(180, 50%, 37.5%)", [0.1875, 0.5625, 0.5625, 1], "hsl(210, 50%, 37.5%)", [0.1875, 0.375, 0.5625, 1], "hsl(240, 50%, 37.5%)", [0.1875, 0.1875, 0.5625, 1], "hsl(270, 50%, 37.5%)", [0.375, 0.1875, 0.5625, 1], "hsl(300, 50%, 37.5%)", [0.5625, 0.1875, 0.5625, 1], "hsl(330, 50%, 37.5%)", [0.5625, 0.1875, 0.375, 1], "hsl(0, 62.5%, 37.5%)", [0.609375, 0.140625, 0.140625, 1], "hsl(30, 62.5%, 37.5%)", [0.609375, 0.375, 0.140625, 1], "hsl(60, 62.5%, 37.5%)", [0.609375, 0.609375, 0.140625, 1], "hsl(90, 62.5%, 37.5%)", [0.375, 0.609375, 0.140625, 1], "hsl(120, 62.5%, 37.5%)", [0.140625, 0.609375, 0.140625, 1], "hsl(150, 62.5%, 37.5%)", [0.140625, 0.609375, 0.375, 1], "hsl(180, 62.5%, 37.5%)", [0.140625, 0.609375, 0.609375, 1], "hsl(210, 62.5%, 37.5%)", [0.140625, 0.375, 0.609375, 1], "hsl(240, 62.5%, 37.5%)", [0.140625, 0.140625, 0.609375, 1], "hsl(270, 62.5%, 37.5%)", [0.375, 0.140625, 0.609375, 1], "hsl(300, 62.5%, 37.5%)", [0.609375, 0.140625, 0.609375, 1], "hsl(330, 62.5%, 37.5%)", [0.609375, 0.140625, 0.375, 1], "hsl(0, 75%, 37.5%)", [0.65625, 0.09375, 0.09375, 1], "hsl(30, 75%, 37.5%)", [0.65625, 0.375, 0.09375, 1], "hsl(60, 75%, 37.5%)", [0.65625, 0.65625, 0.09375, 1], "hsl(90, 75%, 37.5%)", [0.375, 0.65625, 0.09375, 1], "hsl(120, 75%, 37.5%)", [0.09375, 0.65625, 0.09375, 1], "hsl(150, 75%, 37.5%)", [0.09375, 0.65625, 0.375, 1], "hsl(180, 75%, 37.5%)", [0.09375, 0.65625, 0.65625, 1], "hsl(210, 75%, 37.5%)", [0.09375, 0.375, 0.65625, 1], "hsl(240, 75%, 37.5%)", [0.09375, 0.09375, 0.65625, 1], "hsl(270, 75%, 37.5%)", [0.375, 0.09375, 0.65625, 1], "hsl(300, 75%, 37.5%)", [0.65625, 0.09375, 0.65625, 1], "hsl(330, 75%, 37.5%)", [0.65625, 0.09375, 0.375, 1], "hsl(0, 87.5%, 37.5%)", [0.703125, 0.046875, 0.046875, 1], "hsl(30, 87.5%, 37.5%)", [0.703125, 0.375, 0.046875, 1], "hsl(60, 87.5%, 37.5%)", [0.703125, 0.703125, 0.046875, 1], "hsl(90, 87.5%, 37.5%)", [0.375, 0.703125, 0.046875, 1], "hsl(120, 87.5%, 37.5%)", [0.046875, 0.703125, 0.046875, 1], "hsl(150, 87.5%, 37.5%)", [0.046875, 0.703125, 0.375, 1], "hsl(180, 87.5%, 37.5%)", [0.046875, 0.703125, 0.703125, 1], "hsl(210, 87.5%, 37.5%)", [0.046875, 0.375, 0.703125, 1], "hsl(240, 87.5%, 37.5%)", [0.046875, 0.046875, 0.703125, 1], "hsl(270, 87.5%, 37.5%)", [0.375, 0.046875, 0.703125, 1], "hsl(300, 87.5%, 37.5%)", [0.703125, 0.046875, 0.703125, 1], "hsl(330, 87.5%, 37.5%)", [0.703125, 0.046875, 0.375, 1], "hsl(0, 100%, 37.5%)", [0.75, 0, 0, 1], "hsl(30, 100%, 37.5%)", [0.75, 0.375, 0, 1], "hsl(60, 100%, 37.5%)", [0.75, 0.75, 0, 1], "hsl(90, 100%, 37.5%)", [0.375, 0.75, 0, 1], "hsl(120, 100%, 37.5%)", [0, 0.75, 0, 1], "hsl(150, 100%, 37.5%)", [0, 0.75, 0.375, 1], "hsl(180, 100%, 37.5%)", [0, 0.75, 0.75, 1], "hsl(210, 100%, 37.5%)", [0, 0.375, 0.75, 1], "hsl(240, 100%, 37.5%)", [0, 0, 0.75, 1], "hsl(270, 100%, 37.5%)", [0.375, 0, 0.75, 1], "hsl(300, 100%, 37.5%)", [0.75, 0, 0.75, 1], "hsl(330, 100%, 37.5%)", [0.75, 0, 0.375, 1], "hsl(0, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(30, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(60, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(90, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(120, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(150, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(180, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(210, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(240, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(270, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(300, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(330, 0%, 50%)", [0.5, 0.5, 0.5, 1], "hsl(0, 12.5%, 50%)", [0.5625, 0.4375, 0.4375, 1], "hsl(30, 12.5%, 50%)", [0.5625, 0.5, 0.4375, 1], "hsl(60, 12.5%, 50%)", [0.5625, 0.5625, 0.4375, 1], "hsl(90, 12.5%, 50%)", [0.5, 0.5625, 0.4375, 1], "hsl(120, 12.5%, 50%)", [0.4375, 0.5625, 0.4375, 1], "hsl(150, 12.5%, 50%)", [0.4375, 0.5625, 0.5, 1], "hsl(180, 12.5%, 50%)", [0.4375, 0.5625, 0.5625, 1], "hsl(210, 12.5%, 50%)", [0.4375, 0.5, 0.5625, 1], "hsl(240, 12.5%, 50%)", [0.4375, 0.4375, 0.5625, 1], "hsl(270, 12.5%, 50%)", [0.5, 0.4375, 0.5625, 1], "hsl(300, 12.5%, 50%)", [0.5625, 0.4375, 0.5625, 1], "hsl(330, 12.5%, 50%)", [0.5625, 0.4375, 0.5, 1], "hsl(0, 25%, 50%)", [0.625, 0.375, 0.375, 1], "hsl(30, 25%, 50%)", [0.625, 0.5, 0.375, 1], "hsl(60, 25%, 50%)", [0.625, 0.625, 0.375, 1], "hsl(90, 25%, 50%)", [0.5, 0.625, 0.375, 1], "hsl(120, 25%, 50%)", [0.375, 0.625, 0.375, 1], "hsl(150, 25%, 50%)", [0.375, 0.625, 0.5, 1], "hsl(180, 25%, 50%)", [0.375, 0.625, 0.625, 1], "hsl(210, 25%, 50%)", [0.375, 0.5, 0.625, 1], "hsl(240, 25%, 50%)", [0.375, 0.375, 0.625, 1], "hsl(270, 25%, 50%)", [0.5, 0.375, 0.625, 1], "hsl(300, 25%, 50%)", [0.625, 0.375, 0.625, 1], "hsl(330, 25%, 50%)", [0.625, 0.375, 0.5, 1], "hsl(0, 37.5%, 50%)", [0.6875, 0.3125, 0.3125, 1], "hsl(30, 37.5%, 50%)", [0.6875, 0.5, 0.3125, 1], "hsl(60, 37.5%, 50%)", [0.6875, 0.6875, 0.3125, 1], "hsl(90, 37.5%, 50%)", [0.5, 0.6875, 0.3125, 1], "hsl(120, 37.5%, 50%)", [0.3125, 0.6875, 0.3125, 1], "hsl(150, 37.5%, 50%)", [0.3125, 0.6875, 0.5, 1], "hsl(180, 37.5%, 50%)", [0.3125, 0.6875, 0.6875, 1], "hsl(210, 37.5%, 50%)", [0.3125, 0.5, 0.6875, 1], "hsl(240, 37.5%, 50%)", [0.3125, 0.3125, 0.6875, 1], "hsl(270, 37.5%, 50%)", [0.5, 0.3125, 0.6875, 1], "hsl(300, 37.5%, 50%)", [0.6875, 0.3125, 0.6875, 1], "hsl(330, 37.5%, 50%)", [0.6875, 0.3125, 0.5, 1], "hsl(0, 50%, 50%)", [0.75, 0.25, 0.25, 1], "hsl(30, 50%, 50%)", [0.75, 0.5, 0.25, 1], "hsl(60, 50%, 50%)", [0.75, 0.75, 0.25, 1], "hsl(90, 50%, 50%)", [0.5, 0.75, 0.25, 1], "hsl(120, 50%, 50%)", [0.25, 0.75, 0.25, 1], "hsl(150, 50%, 50%)", [0.25, 0.75, 0.5, 1], "hsl(180, 50%, 50%)", [0.25, 0.75, 0.75, 1], "hsl(210, 50%, 50%)", [0.25, 0.5, 0.75, 1], "hsl(240, 50%, 50%)", [0.25, 0.25, 0.75, 1], "hsl(270, 50%, 50%)", [0.5, 0.25, 0.75, 1], "hsl(300, 50%, 50%)", [0.75, 0.25, 0.75, 1], "hsl(330, 50%, 50%)", [0.75, 0.25, 0.5, 1], "hsl(0, 62.5%, 50%)", [0.8125, 0.1875, 0.1875, 1], "hsl(30, 62.5%, 50%)", [0.8125, 0.5, 0.1875, 1], "hsl(60, 62.5%, 50%)", [0.8125, 0.8125, 0.1875, 1], "hsl(90, 62.5%, 50%)", [0.5, 0.8125, 0.1875, 1], "hsl(120, 62.5%, 50%)", [0.1875, 0.8125, 0.1875, 1], "hsl(150, 62.5%, 50%)", [0.1875, 0.8125, 0.5, 1], "hsl(180, 62.5%, 50%)", [0.1875, 0.8125, 0.8125, 1], "hsl(210, 62.5%, 50%)", [0.1875, 0.5, 0.8125, 1], "hsl(240, 62.5%, 50%)", [0.1875, 0.1875, 0.8125, 1], "hsl(270, 62.5%, 50%)", [0.5, 0.1875, 0.8125, 1], "hsl(300, 62.5%, 50%)", [0.8125, 0.1875, 0.8125, 1], "hsl(330, 62.5%, 50%)", [0.8125, 0.1875, 0.5, 1], "hsl(0, 75%, 50%)", [0.875, 0.125, 0.125, 1], "hsl(30, 75%, 50%)", [0.875, 0.5, 0.125, 1], "hsl(60, 75%, 50%)", [0.875, 0.875, 0.125, 1], "hsl(90, 75%, 50%)", [0.5, 0.875, 0.125, 1], "hsl(120, 75%, 50%)", [0.125, 0.875, 0.125, 1], "hsl(150, 75%, 50%)", [0.125, 0.875, 0.5, 1], "hsl(180, 75%, 50%)", [0.125, 0.875, 0.875, 1], "hsl(210, 75%, 50%)", [0.125, 0.5, 0.875, 1], "hsl(240, 75%, 50%)", [0.125, 0.125, 0.875, 1], "hsl(270, 75%, 50%)", [0.5, 0.125, 0.875, 1], "hsl(300, 75%, 50%)", [0.875, 0.125, 0.875, 1], "hsl(330, 75%, 50%)", [0.875, 0.125, 0.5, 1], "hsl(0, 87.5%, 50%)", [0.9375, 0.0625, 0.0625, 1], "hsl(30, 87.5%, 50%)", [0.9375, 0.5, 0.0625, 1], "hsl(60, 87.5%, 50%)", [0.9375, 0.9375, 0.0625, 1], "hsl(90, 87.5%, 50%)", [0.5, 0.9375, 0.0625, 1], "hsl(120, 87.5%, 50%)", [0.0625, 0.9375, 0.0625, 1], "hsl(150, 87.5%, 50%)", [0.0625, 0.9375, 0.5, 1], "hsl(180, 87.5%, 50%)", [0.0625, 0.9375, 0.9375, 1], "hsl(210, 87.5%, 50%)", [0.0625, 0.5, 0.9375, 1], "hsl(240, 87.5%, 50%)", [0.0625, 0.0625, 0.9375, 1], "hsl(270, 87.5%, 50%)", [0.5, 0.0625, 0.9375, 1], "hsl(300, 87.5%, 50%)", [0.9375, 0.0625, 0.9375, 1], "hsl(330, 87.5%, 50%)", [0.9375, 0.0625, 0.5, 1], "hsl(0, 100%, 50%)", [1, 0, 0, 1], "hsl(30, 100%, 50%)", [1, 0.5, 0, 1], "hsl(60, 100%, 50%)", [1, 1, 0, 1], "hsl(90, 100%, 50%)", [0.5, 1, 0, 1], "hsl(120, 100%, 50%)", [0, 1, 0, 1], "hsl(150, 100%, 50%)", [0, 1, 0.5, 1], "hsl(180, 100%, 50%)", [0, 1, 1, 1], "hsl(210, 100%, 50%)", [0, 0.5, 1, 1], "hsl(240, 100%, 50%)", [0, 0, 1, 1], "hsl(270, 100%, 50%)", [0.5, 0, 1, 1], "hsl(300, 100%, 50%)", [1, 0, 1, 1], "hsl(330, 100%, 50%)", [1, 0, 0.5, 1], "hsl(0, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(30, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(60, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(90, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(120, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(150, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(180, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(210, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(240, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(270, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(300, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(330, 0%, 62.5%)", [0.625, 0.625, 0.625, 1], "hsl(0, 12.5%, 62.5%)", [0.671875, 0.578125, 0.578125, 1], "hsl(30, 12.5%, 62.5%)", [0.671875, 0.625, 0.578125, 1], "hsl(60, 12.5%, 62.5%)", [0.671875, 0.671875, 0.578125, 1], "hsl(90, 12.5%, 62.5%)", [0.625, 0.671875, 0.578125, 1], "hsl(120, 12.5%, 62.5%)", [0.578125, 0.671875, 0.578125, 1], "hsl(150, 12.5%, 62.5%)", [0.578125, 0.671875, 0.625, 1], "hsl(180, 12.5%, 62.5%)", [0.578125, 0.671875, 0.671875, 1], "hsl(210, 12.5%, 62.5%)", [0.578125, 0.625, 0.671875, 1], "hsl(240, 12.5%, 62.5%)", [0.578125, 0.578125, 0.671875, 1], "hsl(270, 12.5%, 62.5%)", [0.625, 0.578125, 0.671875, 1], "hsl(300, 12.5%, 62.5%)", [0.671875, 0.578125, 0.671875, 1], "hsl(330, 12.5%, 62.5%)", [0.671875, 0.578125, 0.625, 1], "hsl(0, 25%, 62.5%)", [0.71875, 0.53125, 0.53125, 1], "hsl(30, 25%, 62.5%)", [0.71875, 0.625, 0.53125, 1], "hsl(60, 25%, 62.5%)", [0.71875, 0.71875, 0.53125, 1], "hsl(90, 25%, 62.5%)", [0.625, 0.71875, 0.53125, 1], "hsl(120, 25%, 62.5%)", [0.53125, 0.71875, 0.53125, 1], "hsl(150, 25%, 62.5%)", [0.53125, 0.71875, 0.625, 1], "hsl(180, 25%, 62.5%)", [0.53125, 0.71875, 0.71875, 1], "hsl(210, 25%, 62.5%)", [0.53125, 0.625, 0.71875, 1], "hsl(240, 25%, 62.5%)", [0.53125, 0.53125, 0.71875, 1], "hsl(270, 25%, 62.5%)", [0.625, 0.53125, 0.71875, 1], "hsl(300, 25%, 62.5%)", [0.71875, 0.53125, 0.71875, 1], "hsl(330, 25%, 62.5%)", [0.71875, 0.53125, 0.625, 1], "hsl(0, 37.5%, 62.5%)", [0.765625, 0.484375, 0.484375, 1], "hsl(30, 37.5%, 62.5%)", [0.765625, 0.625, 0.484375, 1], "hsl(60, 37.5%, 62.5%)", [0.765625, 0.765625, 0.484375, 1], "hsl(90, 37.5%, 62.5%)", [0.625, 0.765625, 0.484375, 1], "hsl(120, 37.5%, 62.5%)", [0.484375, 0.765625, 0.484375, 1], "hsl(150, 37.5%, 62.5%)", [0.484375, 0.765625, 0.625, 1], "hsl(180, 37.5%, 62.5%)", [0.484375, 0.765625, 0.765625, 1], "hsl(210, 37.5%, 62.5%)", [0.484375, 0.625, 0.765625, 1], "hsl(240, 37.5%, 62.5%)", [0.484375, 0.484375, 0.765625, 1], "hsl(270, 37.5%, 62.5%)", [0.625, 0.484375, 0.765625, 1], "hsl(300, 37.5%, 62.5%)", [0.765625, 0.484375, 0.765625, 1], "hsl(330, 37.5%, 62.5%)", [0.765625, 0.484375, 0.625, 1], "hsl(0, 50%, 62.5%)", [0.8125, 0.4375, 0.4375, 1], "hsl(30, 50%, 62.5%)", [0.8125, 0.625, 0.4375, 1], "hsl(60, 50%, 62.5%)", [0.8125, 0.8125, 0.4375, 1], "hsl(90, 50%, 62.5%)", [0.625, 0.8125, 0.4375, 1], "hsl(120, 50%, 62.5%)", [0.4375, 0.8125, 0.4375, 1], "hsl(150, 50%, 62.5%)", [0.4375, 0.8125, 0.625, 1], "hsl(180, 50%, 62.5%)", [0.4375, 0.8125, 0.8125, 1], "hsl(210, 50%, 62.5%)", [0.4375, 0.625, 0.8125, 1], "hsl(240, 50%, 62.5%)", [0.4375, 0.4375, 0.8125, 1], "hsl(270, 50%, 62.5%)", [0.625, 0.4375, 0.8125, 1], "hsl(300, 50%, 62.5%)", [0.8125, 0.4375, 0.8125, 1], "hsl(330, 50%, 62.5%)", [0.8125, 0.4375, 0.625, 1], "hsl(0, 62.5%, 62.5%)", [0.859375, 0.390625, 0.390625, 1], "hsl(30, 62.5%, 62.5%)", [0.859375, 0.625, 0.390625, 1], "hsl(60, 62.5%, 62.5%)", [0.859375, 0.859375, 0.390625, 1], "hsl(90, 62.5%, 62.5%)", [0.625, 0.859375, 0.390625, 1], "hsl(120, 62.5%, 62.5%)", [0.390625, 0.859375, 0.390625, 1], "hsl(150, 62.5%, 62.5%)", [0.390625, 0.859375, 0.625, 1], "hsl(180, 62.5%, 62.5%)", [0.390625, 0.859375, 0.859375, 1], "hsl(210, 62.5%, 62.5%)", [0.390625, 0.625, 0.859375, 1], "hsl(240, 62.5%, 62.5%)", [0.390625, 0.390625, 0.859375, 1], "hsl(270, 62.5%, 62.5%)", [0.625, 0.390625, 0.859375, 1], "hsl(300, 62.5%, 62.5%)", [0.859375, 0.390625, 0.859375, 1], "hsl(330, 62.5%, 62.5%)", [0.859375, 0.390625, 0.625, 1], "hsl(0, 75%, 62.5%)", [0.90625, 0.34375, 0.34375, 1], "hsl(30, 75%, 62.5%)", [0.90625, 0.625, 0.34375, 1], "hsl(60, 75%, 62.5%)", [0.90625, 0.90625, 0.34375, 1], "hsl(90, 75%, 62.5%)", [0.625, 0.90625, 0.34375, 1], "hsl(120, 75%, 62.5%)", [0.34375, 0.90625, 0.34375, 1], "hsl(150, 75%, 62.5%)", [0.34375, 0.90625, 0.625, 1], "hsl(180, 75%, 62.5%)", [0.34375, 0.90625, 0.90625, 1], "hsl(210, 75%, 62.5%)", [0.34375, 0.625, 0.90625, 1], "hsl(240, 75%, 62.5%)", [0.34375, 0.34375, 0.90625, 1], "hsl(270, 75%, 62.5%)", [0.625, 0.34375, 0.90625, 1], "hsl(300, 75%, 62.5%)", [0.90625, 0.34375, 0.90625, 1], "hsl(330, 75%, 62.5%)", [0.90625, 0.34375, 0.625, 1], "hsl(0, 87.5%, 62.5%)", [0.953125, 0.296875, 0.296875, 1], "hsl(30, 87.5%, 62.5%)", [0.953125, 0.625, 0.296875, 1], "hsl(60, 87.5%, 62.5%)", [0.953125, 0.953125, 0.296875, 1], "hsl(90, 87.5%, 62.5%)", [0.625, 0.953125, 0.296875, 1], "hsl(120, 87.5%, 62.5%)", [0.296875, 0.953125, 0.296875, 1], "hsl(150, 87.5%, 62.5%)", [0.296875, 0.953125, 0.625, 1], "hsl(180, 87.5%, 62.5%)", [0.296875, 0.953125, 0.953125, 1], "hsl(210, 87.5%, 62.5%)", [0.296875, 0.625, 0.953125, 1], "hsl(240, 87.5%, 62.5%)", [0.296875, 0.296875, 0.953125, 1], "hsl(270, 87.5%, 62.5%)", [0.625, 0.296875, 0.953125, 1], "hsl(300, 87.5%, 62.5%)", [0.953125, 0.296875, 0.953125, 1], "hsl(330, 87.5%, 62.5%)", [0.953125, 0.296875, 0.625, 1], "hsl(0, 100%, 62.5%)", [1, 0.25, 0.25, 1], "hsl(30, 100%, 62.5%)", [1, 0.625, 0.25, 1], "hsl(60, 100%, 62.5%)", [1, 1, 0.25, 1], "hsl(90, 100%, 62.5%)", [0.625, 1, 0.25, 1], "hsl(120, 100%, 62.5%)", [0.25, 1, 0.25, 1], "hsl(150, 100%, 62.5%)", [0.25, 1, 0.625, 1], "hsl(180, 100%, 62.5%)", [0.25, 1, 1, 1], "hsl(210, 100%, 62.5%)", [0.25, 0.625, 1, 1], "hsl(240, 100%, 62.5%)", [0.25, 0.25, 1, 1], "hsl(270, 100%, 62.5%)", [0.625, 0.25, 1, 1], "hsl(300, 100%, 62.5%)", [1, 0.25, 1, 1], "hsl(330, 100%, 62.5%)", [1, 0.25, 0.625, 1], "hsl(0, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(30, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(60, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(90, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(120, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(150, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(180, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(210, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(240, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(270, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(300, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(330, 0%, 75%)", [0.75, 0.75, 0.75, 1], "hsl(0, 12.5%, 75%)", [0.78125, 0.71875, 0.71875, 1], "hsl(30, 12.5%, 75%)", [0.78125, 0.75, 0.71875, 1], "hsl(60, 12.5%, 75%)", [0.78125, 0.78125, 0.71875, 1], "hsl(90, 12.5%, 75%)", [0.75, 0.78125, 0.71875, 1], "hsl(120, 12.5%, 75%)", [0.71875, 0.78125, 0.71875, 1], "hsl(150, 12.5%, 75%)", [0.71875, 0.78125, 0.75, 1], "hsl(180, 12.5%, 75%)", [0.71875, 0.78125, 0.78125, 1], "hsl(210, 12.5%, 75%)", [0.71875, 0.75, 0.78125, 1], "hsl(240, 12.5%, 75%)", [0.71875, 0.71875, 0.78125, 1], "hsl(270, 12.5%, 75%)", [0.75, 0.71875, 0.78125, 1], "hsl(300, 12.5%, 75%)", [0.78125, 0.71875, 0.78125, 1], "hsl(330, 12.5%, 75%)", [0.78125, 0.71875, 0.75, 1], "hsl(0, 25%, 75%)", [0.8125, 0.6875, 0.6875, 1], "hsl(30, 25%, 75%)", [0.8125, 0.75, 0.6875, 1], "hsl(60, 25%, 75%)", [0.8125, 0.8125, 0.6875, 1], "hsl(90, 25%, 75%)", [0.75, 0.8125, 0.6875, 1], "hsl(120, 25%, 75%)", [0.6875, 0.8125, 0.6875, 1], "hsl(150, 25%, 75%)", [0.6875, 0.8125, 0.75, 1], "hsl(180, 25%, 75%)", [0.6875, 0.8125, 0.8125, 1], "hsl(210, 25%, 75%)", [0.6875, 0.75, 0.8125, 1], "hsl(240, 25%, 75%)", [0.6875, 0.6875, 0.8125, 1], "hsl(270, 25%, 75%)", [0.75, 0.6875, 0.8125, 1], "hsl(300, 25%, 75%)", [0.8125, 0.6875, 0.8125, 1], "hsl(330, 25%, 75%)", [0.8125, 0.6875, 0.75, 1], "hsl(0, 37.5%, 75%)", [0.84375, 0.65625, 0.65625, 1], "hsl(30, 37.5%, 75%)", [0.84375, 0.75, 0.65625, 1], "hsl(60, 37.5%, 75%)", [0.84375, 0.84375, 0.65625, 1], "hsl(90, 37.5%, 75%)", [0.75, 0.84375, 0.65625, 1], "hsl(120, 37.5%, 75%)", [0.65625, 0.84375, 0.65625, 1], "hsl(150, 37.5%, 75%)", [0.65625, 0.84375, 0.75, 1], "hsl(180, 37.5%, 75%)", [0.65625, 0.84375, 0.84375, 1], "hsl(210, 37.5%, 75%)", [0.65625, 0.75, 0.84375, 1], "hsl(240, 37.5%, 75%)", [0.65625, 0.65625, 0.84375, 1], "hsl(270, 37.5%, 75%)", [0.75, 0.65625, 0.84375, 1], "hsl(300, 37.5%, 75%)", [0.84375, 0.65625, 0.84375, 1], "hsl(330, 37.5%, 75%)", [0.84375, 0.65625, 0.75, 1], "hsl(0, 50%, 75%)", [0.875, 0.625, 0.625, 1], "hsl(30, 50%, 75%)", [0.875, 0.75, 0.625, 1], "hsl(60, 50%, 75%)", [0.875, 0.875, 0.625, 1], "hsl(90, 50%, 75%)", [0.75, 0.875, 0.625, 1], "hsl(120, 50%, 75%)", [0.625, 0.875, 0.625, 1], "hsl(150, 50%, 75%)", [0.625, 0.875, 0.75, 1], "hsl(180, 50%, 75%)", [0.625, 0.875, 0.875, 1], "hsl(210, 50%, 75%)", [0.625, 0.75, 0.875, 1], "hsl(240, 50%, 75%)", [0.625, 0.625, 0.875, 1], "hsl(270, 50%, 75%)", [0.75, 0.625, 0.875, 1], "hsl(300, 50%, 75%)", [0.875, 0.625, 0.875, 1], "hsl(330, 50%, 75%)", [0.875, 0.625, 0.75, 1], "hsl(0, 62.5%, 75%)", [0.90625, 0.59375, 0.59375, 1], "hsl(30, 62.5%, 75%)", [0.90625, 0.75, 0.59375, 1], "hsl(60, 62.5%, 75%)", [0.90625, 0.90625, 0.59375, 1], "hsl(90, 62.5%, 75%)", [0.75, 0.90625, 0.59375, 1], "hsl(120, 62.5%, 75%)", [0.59375, 0.90625, 0.59375, 1], "hsl(150, 62.5%, 75%)", [0.59375, 0.90625, 0.75, 1], "hsl(180, 62.5%, 75%)", [0.59375, 0.90625, 0.90625, 1], "hsl(210, 62.5%, 75%)", [0.59375, 0.75, 0.90625, 1], "hsl(240, 62.5%, 75%)", [0.59375, 0.59375, 0.90625, 1], "hsl(270, 62.5%, 75%)", [0.75, 0.59375, 0.90625, 1], "hsl(300, 62.5%, 75%)", [0.90625, 0.59375, 0.90625, 1], "hsl(330, 62.5%, 75%)", [0.90625, 0.59375, 0.75, 1], "hsl(0, 75%, 75%)", [0.9375, 0.5625, 0.5625, 1], "hsl(30, 75%, 75%)", [0.9375, 0.75, 0.5625, 1], "hsl(60, 75%, 75%)", [0.9375, 0.9375, 0.5625, 1], "hsl(90, 75%, 75%)", [0.75, 0.9375, 0.5625, 1], "hsl(120, 75%, 75%)", [0.5625, 0.9375, 0.5625, 1], "hsl(150, 75%, 75%)", [0.5625, 0.9375, 0.75, 1], "hsl(180, 75%, 75%)", [0.5625, 0.9375, 0.9375, 1], "hsl(210, 75%, 75%)", [0.5625, 0.75, 0.9375, 1], "hsl(240, 75%, 75%)", [0.5625, 0.5625, 0.9375, 1], "hsl(270, 75%, 75%)", [0.75, 0.5625, 0.9375, 1], "hsl(300, 75%, 75%)", [0.9375, 0.5625, 0.9375, 1], "hsl(330, 75%, 75%)", [0.9375, 0.5625, 0.75, 1], "hsl(0, 87.5%, 75%)", [0.96875, 0.53125, 0.53125, 1], "hsl(30, 87.5%, 75%)", [0.96875, 0.75, 0.53125, 1], "hsl(60, 87.5%, 75%)", [0.96875, 0.96875, 0.53125, 1], "hsl(90, 87.5%, 75%)", [0.75, 0.96875, 0.53125, 1], "hsl(120, 87.5%, 75%)", [0.53125, 0.96875, 0.53125, 1], "hsl(150, 87.5%, 75%)", [0.53125, 0.96875, 0.75, 1], "hsl(180, 87.5%, 75%)", [0.53125, 0.96875, 0.96875, 1], "hsl(210, 87.5%, 75%)", [0.53125, 0.75, 0.96875, 1], "hsl(240, 87.5%, 75%)", [0.53125, 0.53125, 0.96875, 1], "hsl(270, 87.5%, 75%)", [0.75, 0.53125, 0.96875, 1], "hsl(300, 87.5%, 75%)", [0.96875, 0.53125, 0.96875, 1], "hsl(330, 87.5%, 75%)", [0.96875, 0.53125, 0.75, 1], "hsl(0, 100%, 75%)", [1, 0.5, 0.5, 1], "hsl(30, 100%, 75%)", [1, 0.75, 0.5, 1], "hsl(60, 100%, 75%)", [1, 1, 0.5, 1], "hsl(90, 100%, 75%)", [0.75, 1, 0.5, 1], "hsl(120, 100%, 75%)", [0.5, 1, 0.5, 1], "hsl(150, 100%, 75%)", [0.5, 1, 0.75, 1], "hsl(180, 100%, 75%)", [0.5, 1, 1, 1], "hsl(210, 100%, 75%)", [0.5, 0.75, 1, 1], "hsl(240, 100%, 75%)", [0.5, 0.5, 1, 1], "hsl(270, 100%, 75%)", [0.75, 0.5, 1, 1], "hsl(300, 100%, 75%)", [1, 0.5, 1, 1], "hsl(330, 100%, 75%)", [1, 0.5, 0.75, 1], "hsl(0, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(30, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(60, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(90, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(120, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(150, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(180, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(210, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(240, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(270, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(300, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(330, 0%, 87.5%)", [0.875, 0.875, 0.875, 1], "hsl(0, 12.5%, 87.5%)", [0.890625, 0.859375, 0.859375, 1], "hsl(30, 12.5%, 87.5%)", [0.890625, 0.875, 0.859375, 1], "hsl(60, 12.5%, 87.5%)", [0.890625, 0.890625, 0.859375, 1], "hsl(90, 12.5%, 87.5%)", [0.875, 0.890625, 0.859375, 1], "hsl(120, 12.5%, 87.5%)", [0.859375, 0.890625, 0.859375, 1], "hsl(150, 12.5%, 87.5%)", [0.859375, 0.890625, 0.875, 1], "hsl(180, 12.5%, 87.5%)", [0.859375, 0.890625, 0.890625, 1], "hsl(210, 12.5%, 87.5%)", [0.859375, 0.875, 0.890625, 1], "hsl(240, 12.5%, 87.5%)", [0.859375, 0.859375, 0.890625, 1], "hsl(270, 12.5%, 87.5%)", [0.875, 0.859375, 0.890625, 1], "hsl(300, 12.5%, 87.5%)", [0.890625, 0.859375, 0.890625, 1], "hsl(330, 12.5%, 87.5%)", [0.890625, 0.859375, 0.875, 1], "hsl(0, 25%, 87.5%)", [0.90625, 0.84375, 0.84375, 1], "hsl(30, 25%, 87.5%)", [0.90625, 0.875, 0.84375, 1], "hsl(60, 25%, 87.5%)", [0.90625, 0.90625, 0.84375, 1], "hsl(90, 25%, 87.5%)", [0.875, 0.90625, 0.84375, 1], "hsl(120, 25%, 87.5%)", [0.84375, 0.90625, 0.84375, 1], "hsl(150, 25%, 87.5%)", [0.84375, 0.90625, 0.875, 1], "hsl(180, 25%, 87.5%)", [0.84375, 0.90625, 0.90625, 1], "hsl(210, 25%, 87.5%)", [0.84375, 0.875, 0.90625, 1], "hsl(240, 25%, 87.5%)", [0.84375, 0.84375, 0.90625, 1], "hsl(270, 25%, 87.5%)", [0.875, 0.84375, 0.90625, 1], "hsl(300, 25%, 87.5%)", [0.90625, 0.84375, 0.90625, 1], "hsl(330, 25%, 87.5%)", [0.90625, 0.84375, 0.875, 1], "hsl(0, 37.5%, 87.5%)", [0.921875, 0.828125, 0.828125, 1], "hsl(30, 37.5%, 87.5%)", [0.921875, 0.875, 0.828125, 1], "hsl(60, 37.5%, 87.5%)", [0.921875, 0.921875, 0.828125, 1], "hsl(90, 37.5%, 87.5%)", [0.875, 0.921875, 0.828125, 1], "hsl(120, 37.5%, 87.5%)", [0.828125, 0.921875, 0.828125, 1], "hsl(150, 37.5%, 87.5%)", [0.828125, 0.921875, 0.875, 1], "hsl(180, 37.5%, 87.5%)", [0.828125, 0.921875, 0.921875, 1], "hsl(210, 37.5%, 87.5%)", [0.828125, 0.875, 0.921875, 1], "hsl(240, 37.5%, 87.5%)", [0.828125, 0.828125, 0.921875, 1], "hsl(270, 37.5%, 87.5%)", [0.875, 0.828125, 0.921875, 1], "hsl(300, 37.5%, 87.5%)", [0.921875, 0.828125, 0.921875, 1], "hsl(330, 37.5%, 87.5%)", [0.921875, 0.828125, 0.875, 1], "hsl(0, 50%, 87.5%)", [0.9375, 0.8125, 0.8125, 1], "hsl(30, 50%, 87.5%)", [0.9375, 0.875, 0.8125, 1], "hsl(60, 50%, 87.5%)", [0.9375, 0.9375, 0.8125, 1], "hsl(90, 50%, 87.5%)", [0.875, 0.9375, 0.8125, 1], "hsl(120, 50%, 87.5%)", [0.8125, 0.9375, 0.8125, 1], "hsl(150, 50%, 87.5%)", [0.8125, 0.9375, 0.875, 1], "hsl(180, 50%, 87.5%)", [0.8125, 0.9375, 0.9375, 1], "hsl(210, 50%, 87.5%)", [0.8125, 0.875, 0.9375, 1], "hsl(240, 50%, 87.5%)", [0.8125, 0.8125, 0.9375, 1], "hsl(270, 50%, 87.5%)", [0.875, 0.8125, 0.9375, 1], "hsl(300, 50%, 87.5%)", [0.9375, 0.8125, 0.9375, 1], "hsl(330, 50%, 87.5%)", [0.9375, 0.8125, 0.875, 1], "hsl(0, 62.5%, 87.5%)", [0.953125, 0.796875, 0.796875, 1], "hsl(30, 62.5%, 87.5%)", [0.953125, 0.875, 0.796875, 1], "hsl(60, 62.5%, 87.5%)", [0.953125, 0.953125, 0.796875, 1], "hsl(90, 62.5%, 87.5%)", [0.875, 0.953125, 0.796875, 1], "hsl(120, 62.5%, 87.5%)", [0.796875, 0.953125, 0.796875, 1], "hsl(150, 62.5%, 87.5%)", [0.796875, 0.953125, 0.875, 1], "hsl(180, 62.5%, 87.5%)", [0.796875, 0.953125, 0.953125, 1], "hsl(210, 62.5%, 87.5%)", [0.796875, 0.875, 0.953125, 1], "hsl(240, 62.5%, 87.5%)", [0.796875, 0.796875, 0.953125, 1], "hsl(270, 62.5%, 87.5%)", [0.875, 0.796875, 0.953125, 1], "hsl(300, 62.5%, 87.5%)", [0.953125, 0.796875, 0.953125, 1], "hsl(330, 62.5%, 87.5%)", [0.953125, 0.796875, 0.875, 1], "hsl(0, 75%, 87.5%)", [0.96875, 0.78125, 0.78125, 1], "hsl(30, 75%, 87.5%)", [0.96875, 0.875, 0.78125, 1], "hsl(60, 75%, 87.5%)", [0.96875, 0.96875, 0.78125, 1], "hsl(90, 75%, 87.5%)", [0.875, 0.96875, 0.78125, 1], "hsl(120, 75%, 87.5%)", [0.78125, 0.96875, 0.78125, 1], "hsl(150, 75%, 87.5%)", [0.78125, 0.96875, 0.875, 1], "hsl(180, 75%, 87.5%)", [0.78125, 0.96875, 0.96875, 1], "hsl(210, 75%, 87.5%)", [0.78125, 0.875, 0.96875, 1], "hsl(240, 75%, 87.5%)", [0.78125, 0.78125, 0.96875, 1], "hsl(270, 75%, 87.5%)", [0.875, 0.78125, 0.96875, 1], "hsl(300, 75%, 87.5%)", [0.96875, 0.78125, 0.96875, 1], "hsl(330, 75%, 87.5%)", [0.96875, 0.78125, 0.875, 1], "hsl(0, 87.5%, 87.5%)", [0.984375, 0.765625, 0.765625, 1], "hsl(30, 87.5%, 87.5%)", [0.984375, 0.875, 0.765625, 1], "hsl(60, 87.5%, 87.5%)", [0.984375, 0.984375, 0.765625, 1], "hsl(90, 87.5%, 87.5%)", [0.875, 0.984375, 0.765625, 1], "hsl(120, 87.5%, 87.5%)", [0.765625, 0.984375, 0.765625, 1], "hsl(150, 87.5%, 87.5%)", [0.765625, 0.984375, 0.875, 1], "hsl(180, 87.5%, 87.5%)", [0.765625, 0.984375, 0.984375, 1], "hsl(210, 87.5%, 87.5%)", [0.765625, 0.875, 0.984375, 1], "hsl(240, 87.5%, 87.5%)", [0.765625, 0.765625, 0.984375, 1], "hsl(270, 87.5%, 87.5%)", [0.875, 0.765625, 0.984375, 1], "hsl(300, 87.5%, 87.5%)", [0.984375, 0.765625, 0.984375, 1], "hsl(330, 87.5%, 87.5%)", [0.984375, 0.765625, 0.875, 1], "hsl(0, 100%, 87.5%)", [1, 0.75, 0.75, 1], "hsl(30, 100%, 87.5%)", [1, 0.875, 0.75, 1], "hsl(60, 100%, 87.5%)", [1, 1, 0.75, 1], "hsl(90, 100%, 87.5%)", [0.875, 1, 0.75, 1], "hsl(120, 100%, 87.5%)", [0.75, 1, 0.75, 1], "hsl(150, 100%, 87.5%)", [0.75, 1, 0.875, 1], "hsl(180, 100%, 87.5%)", [0.75, 1, 1, 1], "hsl(210, 100%, 87.5%)", [0.75, 0.875, 1, 1], "hsl(240, 100%, 87.5%)", [0.75, 0.75, 1, 1], "hsl(270, 100%, 87.5%)", [0.875, 0.75, 1, 1], "hsl(300, 100%, 87.5%)", [1, 0.75, 1, 1], "hsl(330, 100%, 87.5%)", [1, 0.75, 0.875, 1], "hsl(0, 0%, 100%)", [1, 1, 1, 1], "hsl(30, 0%, 100%)", [1, 1, 1, 1], "hsl(60, 0%, 100%)", [1, 1, 1, 1], "hsl(90, 0%, 100%)", [1, 1, 1, 1], "hsl(120, 0%, 100%)", [1, 1, 1, 1], "hsl(150, 0%, 100%)", [1, 1, 1, 1], "hsl(180, 0%, 100%)", [1, 1, 1, 1], "hsl(210, 0%, 100%)", [1, 1, 1, 1], "hsl(240, 0%, 100%)", [1, 1, 1, 1], "hsl(270, 0%, 100%)", [1, 1, 1, 1], "hsl(300, 0%, 100%)", [1, 1, 1, 1], "hsl(330, 0%, 100%)", [1, 1, 1, 1], "hsl(0, 12.5%, 100%)", [1, 1, 1, 1], "hsl(30, 12.5%, 100%)", [1, 1, 1, 1], "hsl(60, 12.5%, 100%)", [1, 1, 1, 1], "hsl(90, 12.5%, 100%)", [1, 1, 1, 1], "hsl(120, 12.5%, 100%)", [1, 1, 1, 1], "hsl(150, 12.5%, 100%)", [1, 1, 1, 1], "hsl(180, 12.5%, 100%)", [1, 1, 1, 1], "hsl(210, 12.5%, 100%)", [1, 1, 1, 1], "hsl(240, 12.5%, 100%)", [1, 1, 1, 1], "hsl(270, 12.5%, 100%)", [1, 1, 1, 1], "hsl(300, 12.5%, 100%)", [1, 1, 1, 1], "hsl(330, 12.5%, 100%)", [1, 1, 1, 1], "hsl(0, 25%, 100%)", [1, 1, 1, 1], "hsl(30, 25%, 100%)", [1, 1, 1, 1], "hsl(60, 25%, 100%)", [1, 1, 1, 1], "hsl(90, 25%, 100%)", [1, 1, 1, 1], "hsl(120, 25%, 100%)", [1, 1, 1, 1], "hsl(150, 25%, 100%)", [1, 1, 1, 1], "hsl(180, 25%, 100%)", [1, 1, 1, 1], "hsl(210, 25%, 100%)", [1, 1, 1, 1], "hsl(240, 25%, 100%)", [1, 1, 1, 1], "hsl(270, 25%, 100%)", [1, 1, 1, 1], "hsl(300, 25%, 100%)", [1, 1, 1, 1], "hsl(330, 25%, 100%)", [1, 1, 1, 1], "hsl(0, 37.5%, 100%)", [1, 1, 1, 1], "hsl(30, 37.5%, 100%)", [1, 1, 1, 1], "hsl(60, 37.5%, 100%)", [1, 1, 1, 1], "hsl(90, 37.5%, 100%)", [1, 1, 1, 1], "hsl(120, 37.5%, 100%)", [1, 1, 1, 1], "hsl(150, 37.5%, 100%)", [1, 1, 1, 1], "hsl(180, 37.5%, 100%)", [1, 1, 1, 1], "hsl(210, 37.5%, 100%)", [1, 1, 1, 1], "hsl(240, 37.5%, 100%)", [1, 1, 1, 1], "hsl(270, 37.5%, 100%)", [1, 1, 1, 1], "hsl(300, 37.5%, 100%)", [1, 1, 1, 1], "hsl(330, 37.5%, 100%)", [1, 1, 1, 1], "hsl(0, 50%, 100%)", [1, 1, 1, 1], "hsl(30, 50%, 100%)", [1, 1, 1, 1], "hsl(60, 50%, 100%)", [1, 1, 1, 1], "hsl(90, 50%, 100%)", [1, 1, 1, 1], "hsl(120, 50%, 100%)", [1, 1, 1, 1], "hsl(150, 50%, 100%)", [1, 1, 1, 1], "hsl(180, 50%, 100%)", [1, 1, 1, 1], "hsl(210, 50%, 100%)", [1, 1, 1, 1], "hsl(240, 50%, 100%)", [1, 1, 1, 1], "hsl(270, 50%, 100%)", [1, 1, 1, 1], "hsl(300, 50%, 100%)", [1, 1, 1, 1], "hsl(330, 50%, 100%)", [1, 1, 1, 1], "hsl(0, 62.5%, 100%)", [1, 1, 1, 1], "hsl(30, 62.5%, 100%)", [1, 1, 1, 1], "hsl(60, 62.5%, 100%)", [1, 1, 1, 1], "hsl(90, 62.5%, 100%)", [1, 1, 1, 1], "hsl(120, 62.5%, 100%)", [1, 1, 1, 1], "hsl(150, 62.5%, 100%)", [1, 1, 1, 1], "hsl(180, 62.5%, 100%)", [1, 1, 1, 1], "hsl(210, 62.5%, 100%)", [1, 1, 1, 1], "hsl(240, 62.5%, 100%)", [1, 1, 1, 1], "hsl(270, 62.5%, 100%)", [1, 1, 1, 1], "hsl(300, 62.5%, 100%)", [1, 1, 1, 1], "hsl(330, 62.5%, 100%)", [1, 1, 1, 1], "hsl(0, 75%, 100%)", [1, 1, 1, 1], "hsl(30, 75%, 100%)", [1, 1, 1, 1], "hsl(60, 75%, 100%)", [1, 1, 1, 1], "hsl(90, 75%, 100%)", [1, 1, 1, 1], "hsl(120, 75%, 100%)", [1, 1, 1, 1], "hsl(150, 75%, 100%)", [1, 1, 1, 1], "hsl(180, 75%, 100%)", [1, 1, 1, 1], "hsl(210, 75%, 100%)", [1, 1, 1, 1], "hsl(240, 75%, 100%)", [1, 1, 1, 1], "hsl(270, 75%, 100%)", [1, 1, 1, 1], "hsl(300, 75%, 100%)", [1, 1, 1, 1], "hsl(330, 75%, 100%)", [1, 1, 1, 1], "hsl(0, 87.5%, 100%)", [1, 1, 1, 1], "hsl(30, 87.5%, 100%)", [1, 1, 1, 1], "hsl(60, 87.5%, 100%)", [1, 1, 1, 1], "hsl(90, 87.5%, 100%)", [1, 1, 1, 1], "hsl(120, 87.5%, 100%)", [1, 1, 1, 1], "hsl(150, 87.5%, 100%)", [1, 1, 1, 1], "hsl(180, 87.5%, 100%)", [1, 1, 1, 1], "hsl(210, 87.5%, 100%)", [1, 1, 1, 1], "hsl(240, 87.5%, 100%)", [1, 1, 1, 1], "hsl(270, 87.5%, 100%)", [1, 1, 1, 1], "hsl(300, 87.5%, 100%)", [1, 1, 1, 1], "hsl(330, 87.5%, 100%)", [1, 1, 1, 1], "hsl(0, 100%, 100%)", [1, 1, 1, 1], "hsl(30, 100%, 100%)", [1, 1, 1, 1], "hsl(60, 100%, 100%)", [1, 1, 1, 1], "hsl(90, 100%, 100%)", [1, 1, 1, 1], "hsl(120, 100%, 100%)", [1, 1, 1, 1], "hsl(150, 100%, 100%)", [1, 1, 1, 1], "hsl(180, 100%, 100%)", [1, 1, 1, 1], "hsl(210, 100%, 100%)", [1, 1, 1, 1], "hsl(240, 100%, 100%)", [1, 1, 1, 1], "hsl(270, 100%, 100%)", [1, 1, 1, 1], "hsl(300, 100%, 100%)", [1, 1, 1, 1], "hsl(330, 100%, 100%)", [1, 1, 1, 1], "hsla(0, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(30, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(60, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(90, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(120, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(150, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(180, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(210, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(240, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(270, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(300, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(330, 0%, 0%, 1)", [0, 0, 0, 1], "hsla(0, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(30, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(60, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(90, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(120, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(150, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(180, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(210, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(240, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(270, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(300, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(330, 12.5%, 0%, 1)", [0, 0, 0, 1], "hsla(0, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(30, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(60, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(90, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(120, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(150, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(180, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(210, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(240, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(270, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(300, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(330, 25%, 0%, 1)", [0, 0, 0, 1], "hsla(0, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(30, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(60, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(90, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(120, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(150, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(180, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(210, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(240, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(270, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(300, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(330, 37.5%, 0%, 1)", [0, 0, 0, 1], "hsla(0, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(30, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(60, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(90, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(120, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(150, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(180, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(210, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(240, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(270, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(300, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(330, 50%, 0%, 1)", [0, 0, 0, 1], "hsla(0, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(30, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(60, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(90, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(120, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(150, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(180, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(210, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(240, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(270, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(300, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(330, 62.5%, 0%, 1)", [0, 0, 0, 1], "hsla(0, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(30, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(60, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(90, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(120, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(150, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(180, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(210, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(240, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(270, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(300, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(330, 75%, 0%, 1)", [0, 0, 0, 1], "hsla(0, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(30, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(60, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(90, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(120, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(150, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(180, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(210, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(240, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(270, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(300, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(330, 87.5%, 0%, 1)", [0, 0, 0, 1], "hsla(0, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(30, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(60, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(90, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(120, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(150, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(180, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(210, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(240, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(270, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(300, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(330, 100%, 0%, 1)", [0, 0, 0, 1], "hsla(0, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(30, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(60, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(90, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(120, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(150, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(180, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(210, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(240, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(270, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(300, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(330, 0%, 12.5%, 1)", [0.125, 0.125, 0.125, 1], "hsla(0, 12.5%, 12.5%, 1)", [0.140625, 0.109375, 0.109375, 1], "hsla(30, 12.5%, 12.5%, 1)", [0.140625, 0.125, 0.109375, 1], "hsla(60, 12.5%, 12.5%, 1)", [0.140625, 0.140625, 0.109375, 1], "hsla(90, 12.5%, 12.5%, 1)", [0.125, 0.140625, 0.109375, 1], "hsla(120, 12.5%, 12.5%, 1)", [0.109375, 0.140625, 0.109375, 1], "hsla(150, 12.5%, 12.5%, 1)", [0.109375, 0.140625, 0.125, 1], "hsla(180, 12.5%, 12.5%, 1)", [0.109375, 0.140625, 0.140625, 1], "hsla(210, 12.5%, 12.5%, 1)", [0.109375, 0.125, 0.140625, 1], "hsla(240, 12.5%, 12.5%, 1)", [0.109375, 0.109375, 0.140625, 1], "hsla(270, 12.5%, 12.5%, 1)", [0.125, 0.109375, 0.140625, 1], "hsla(300, 12.5%, 12.5%, 1)", [0.140625, 0.109375, 0.140625, 1], "hsla(330, 12.5%, 12.5%, 1)", [0.140625, 0.109375, 0.125, 1], "hsla(0, 25%, 12.5%, 1)", [0.15625, 0.09375, 0.09375, 1], "hsla(30, 25%, 12.5%, 1)", [0.15625, 0.125, 0.09375, 1], "hsla(60, 25%, 12.5%, 1)", [0.15625, 0.15625, 0.09375, 1], "hsla(90, 25%, 12.5%, 1)", [0.125, 0.15625, 0.09375, 1], "hsla(120, 25%, 12.5%, 1)", [0.09375, 0.15625, 0.09375, 1], "hsla(150, 25%, 12.5%, 1)", [0.09375, 0.15625, 0.125, 1], "hsla(180, 25%, 12.5%, 1)", [0.09375, 0.15625, 0.15625, 1], "hsla(210, 25%, 12.5%, 1)", [0.09375, 0.125, 0.15625, 1], "hsla(240, 25%, 12.5%, 1)", [0.09375, 0.09375, 0.15625, 1], "hsla(270, 25%, 12.5%, 1)", [0.125, 0.09375, 0.15625, 1], "hsla(300, 25%, 12.5%, 1)", [0.15625, 0.09375, 0.15625, 1], "hsla(330, 25%, 12.5%, 1)", [0.15625, 0.09375, 0.125, 1], "hsla(0, 37.5%, 12.5%, 1)", [0.171875, 0.078125, 0.078125, 1], "hsla(30, 37.5%, 12.5%, 1)", [0.171875, 0.125, 0.078125, 1], "hsla(60, 37.5%, 12.5%, 1)", [0.171875, 0.171875, 0.078125, 1], "hsla(90, 37.5%, 12.5%, 1)", [0.125, 0.171875, 0.078125, 1], "hsla(120, 37.5%, 12.5%, 1)", [0.078125, 0.171875, 0.078125, 1], "hsla(150, 37.5%, 12.5%, 1)", [0.078125, 0.171875, 0.125, 1], "hsla(180, 37.5%, 12.5%, 1)", [0.078125, 0.171875, 0.171875, 1], "hsla(210, 37.5%, 12.5%, 1)", [0.078125, 0.125, 0.171875, 1], "hsla(240, 37.5%, 12.5%, 1)", [0.078125, 0.078125, 0.171875, 1], "hsla(270, 37.5%, 12.5%, 1)", [0.125, 0.078125, 0.171875, 1], "hsla(300, 37.5%, 12.5%, 1)", [0.171875, 0.078125, 0.171875, 1], "hsla(330, 37.5%, 12.5%, 1)", [0.171875, 0.078125, 0.125, 1], "hsla(0, 50%, 12.5%, 1)", [0.1875, 0.0625, 0.0625, 1], "hsla(30, 50%, 12.5%, 1)", [0.1875, 0.125, 0.0625, 1], "hsla(60, 50%, 12.5%, 1)", [0.1875, 0.1875, 0.0625, 1], "hsla(90, 50%, 12.5%, 1)", [0.125, 0.1875, 0.0625, 1], "hsla(120, 50%, 12.5%, 1)", [0.0625, 0.1875, 0.0625, 1], "hsla(150, 50%, 12.5%, 1)", [0.0625, 0.1875, 0.125, 1], "hsla(180, 50%, 12.5%, 1)", [0.0625, 0.1875, 0.1875, 1], "hsla(210, 50%, 12.5%, 1)", [0.0625, 0.125, 0.1875, 1], "hsla(240, 50%, 12.5%, 1)", [0.0625, 0.0625, 0.1875, 1], "hsla(270, 50%, 12.5%, 1)", [0.125, 0.0625, 0.1875, 1], "hsla(300, 50%, 12.5%, 1)", [0.1875, 0.0625, 0.1875, 1], "hsla(330, 50%, 12.5%, 1)", [0.1875, 0.0625, 0.125, 1], "hsla(0, 62.5%, 12.5%, 1)", [0.203125, 0.046875, 0.046875, 1], "hsla(30, 62.5%, 12.5%, 1)", [0.203125, 0.125, 0.046875, 1], "hsla(60, 62.5%, 12.5%, 1)", [0.203125, 0.203125, 0.046875, 1], "hsla(90, 62.5%, 12.5%, 1)", [0.125, 0.203125, 0.046875, 1], "hsla(120, 62.5%, 12.5%, 1)", [0.046875, 0.203125, 0.046875, 1], "hsla(150, 62.5%, 12.5%, 1)", [0.046875, 0.203125, 0.125, 1], "hsla(180, 62.5%, 12.5%, 1)", [0.046875, 0.203125, 0.203125, 1], "hsla(210, 62.5%, 12.5%, 1)", [0.046875, 0.125, 0.203125, 1], "hsla(240, 62.5%, 12.5%, 1)", [0.046875, 0.046875, 0.203125, 1], "hsla(270, 62.5%, 12.5%, 1)", [0.125, 0.046875, 0.203125, 1], "hsla(300, 62.5%, 12.5%, 1)", [0.203125, 0.046875, 0.203125, 1], "hsla(330, 62.5%, 12.5%, 1)", [0.203125, 0.046875, 0.125, 1], "hsla(0, 75%, 12.5%, 1)", [0.21875, 0.03125, 0.03125, 1], "hsla(30, 75%, 12.5%, 1)", [0.21875, 0.125, 0.03125, 1], "hsla(60, 75%, 12.5%, 1)", [0.21875, 0.21875, 0.03125, 1], "hsla(90, 75%, 12.5%, 1)", [0.125, 0.21875, 0.03125, 1], "hsla(120, 75%, 12.5%, 1)", [0.03125, 0.21875, 0.03125, 1], "hsla(150, 75%, 12.5%, 1)", [0.03125, 0.21875, 0.125, 1], "hsla(180, 75%, 12.5%, 1)", [0.03125, 0.21875, 0.21875, 1], "hsla(210, 75%, 12.5%, 1)", [0.03125, 0.125, 0.21875, 1], "hsla(240, 75%, 12.5%, 1)", [0.03125, 0.03125, 0.21875, 1], "hsla(270, 75%, 12.5%, 1)", [0.125, 0.03125, 0.21875, 1], "hsla(300, 75%, 12.5%, 1)", [0.21875, 0.03125, 0.21875, 1], "hsla(330, 75%, 12.5%, 1)", [0.21875, 0.03125, 0.125, 1], "hsla(0, 87.5%, 12.5%, 1)", [0.234375, 0.015625, 0.015625, 1], "hsla(30, 87.5%, 12.5%, 1)", [0.234375, 0.125, 0.015625, 1], "hsla(60, 87.5%, 12.5%, 1)", [0.234375, 0.234375, 0.015625, 1], "hsla(90, 87.5%, 12.5%, 1)", [0.125, 0.234375, 0.015625, 1], "hsla(120, 87.5%, 12.5%, 1)", [0.015625, 0.234375, 0.015625, 1], "hsla(150, 87.5%, 12.5%, 1)", [0.015625, 0.234375, 0.125, 1], "hsla(180, 87.5%, 12.5%, 1)", [0.015625, 0.234375, 0.234375, 1], "hsla(210, 87.5%, 12.5%, 1)", [0.015625, 0.125, 0.234375, 1], "hsla(240, 87.5%, 12.5%, 1)", [0.015625, 0.015625, 0.234375, 1], "hsla(270, 87.5%, 12.5%, 1)", [0.125, 0.015625, 0.234375, 1], "hsla(300, 87.5%, 12.5%, 1)", [0.234375, 0.015625, 0.234375, 1], "hsla(330, 87.5%, 12.5%, 1)", [0.234375, 0.015625, 0.125, 1], "hsla(0, 100%, 12.5%, 1)", [0.25, 0, 0, 1], "hsla(30, 100%, 12.5%, 1)", [0.25, 0.125, 0, 1], "hsla(60, 100%, 12.5%, 1)", [0.25, 0.25, 0, 1], "hsla(90, 100%, 12.5%, 1)", [0.125, 0.25, 0, 1], "hsla(120, 100%, 12.5%, 1)", [0, 0.25, 0, 1], "hsla(150, 100%, 12.5%, 1)", [0, 0.25, 0.125, 1], "hsla(180, 100%, 12.5%, 1)", [0, 0.25, 0.25, 1], "hsla(210, 100%, 12.5%, 1)", [0, 0.125, 0.25, 1], "hsla(240, 100%, 12.5%, 1)", [0, 0, 0.25, 1], "hsla(270, 100%, 12.5%, 1)", [0.125, 0, 0.25, 1], "hsla(300, 100%, 12.5%, 1)", [0.25, 0, 0.25, 1], "hsla(330, 100%, 12.5%, 1)", [0.25, 0, 0.125, 1], "hsla(0, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(30, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(60, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(90, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(120, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(150, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(180, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(210, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(240, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(270, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(300, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(330, 0%, 25%, 1)", [0.25, 0.25, 0.25, 1], "hsla(0, 12.5%, 25%, 1)", [0.28125, 0.21875, 0.21875, 1], "hsla(30, 12.5%, 25%, 1)", [0.28125, 0.25, 0.21875, 1], "hsla(60, 12.5%, 25%, 1)", [0.28125, 0.28125, 0.21875, 1], "hsla(90, 12.5%, 25%, 1)", [0.25, 0.28125, 0.21875, 1], "hsla(120, 12.5%, 25%, 1)", [0.21875, 0.28125, 0.21875, 1], "hsla(150, 12.5%, 25%, 1)", [0.21875, 0.28125, 0.25, 1], "hsla(180, 12.5%, 25%, 1)", [0.21875, 0.28125, 0.28125, 1], "hsla(210, 12.5%, 25%, 1)", [0.21875, 0.25, 0.28125, 1], "hsla(240, 12.5%, 25%, 1)", [0.21875, 0.21875, 0.28125, 1], "hsla(270, 12.5%, 25%, 1)", [0.25, 0.21875, 0.28125, 1], "hsla(300, 12.5%, 25%, 1)", [0.28125, 0.21875, 0.28125, 1], "hsla(330, 12.5%, 25%, 1)", [0.28125, 0.21875, 0.25, 1], "hsla(0, 25%, 25%, 1)", [0.3125, 0.1875, 0.1875, 1], "hsla(30, 25%, 25%, 1)", [0.3125, 0.25, 0.1875, 1], "hsla(60, 25%, 25%, 1)", [0.3125, 0.3125, 0.1875, 1], "hsla(90, 25%, 25%, 1)", [0.25, 0.3125, 0.1875, 1], "hsla(120, 25%, 25%, 1)", [0.1875, 0.3125, 0.1875, 1], "hsla(150, 25%, 25%, 1)", [0.1875, 0.3125, 0.25, 1], "hsla(180, 25%, 25%, 1)", [0.1875, 0.3125, 0.3125, 1], "hsla(210, 25%, 25%, 1)", [0.1875, 0.25, 0.3125, 1], "hsla(240, 25%, 25%, 1)", [0.1875, 0.1875, 0.3125, 1], "hsla(270, 25%, 25%, 1)", [0.25, 0.1875, 0.3125, 1], "hsla(300, 25%, 25%, 1)", [0.3125, 0.1875, 0.3125, 1], "hsla(330, 25%, 25%, 1)", [0.3125, 0.1875, 0.25, 1], "hsla(0, 37.5%, 25%, 1)", [0.34375, 0.15625, 0.15625, 1], "hsla(30, 37.5%, 25%, 1)", [0.34375, 0.25, 0.15625, 1], "hsla(60, 37.5%, 25%, 1)", [0.34375, 0.34375, 0.15625, 1], "hsla(90, 37.5%, 25%, 1)", [0.25, 0.34375, 0.15625, 1], "hsla(120, 37.5%, 25%, 1)", [0.15625, 0.34375, 0.15625, 1], "hsla(150, 37.5%, 25%, 1)", [0.15625, 0.34375, 0.25, 1], "hsla(180, 37.5%, 25%, 1)", [0.15625, 0.34375, 0.34375, 1], "hsla(210, 37.5%, 25%, 1)", [0.15625, 0.25, 0.34375, 1], "hsla(240, 37.5%, 25%, 1)", [0.15625, 0.15625, 0.34375, 1], "hsla(270, 37.5%, 25%, 1)", [0.25, 0.15625, 0.34375, 1], "hsla(300, 37.5%, 25%, 1)", [0.34375, 0.15625, 0.34375, 1], "hsla(330, 37.5%, 25%, 1)", [0.34375, 0.15625, 0.25, 1], "hsla(0, 50%, 25%, 1)", [0.375, 0.125, 0.125, 1], "hsla(30, 50%, 25%, 1)", [0.375, 0.25, 0.125, 1], "hsla(60, 50%, 25%, 1)", [0.375, 0.375, 0.125, 1], "hsla(90, 50%, 25%, 1)", [0.25, 0.375, 0.125, 1], "hsla(120, 50%, 25%, 1)", [0.125, 0.375, 0.125, 1], "hsla(150, 50%, 25%, 1)", [0.125, 0.375, 0.25, 1], "hsla(180, 50%, 25%, 1)", [0.125, 0.375, 0.375, 1], "hsla(210, 50%, 25%, 1)", [0.125, 0.25, 0.375, 1], "hsla(240, 50%, 25%, 1)", [0.125, 0.125, 0.375, 1], "hsla(270, 50%, 25%, 1)", [0.25, 0.125, 0.375, 1], "hsla(300, 50%, 25%, 1)", [0.375, 0.125, 0.375, 1], "hsla(330, 50%, 25%, 1)", [0.375, 0.125, 0.25, 1], "hsla(0, 62.5%, 25%, 1)", [0.40625, 0.09375, 0.09375, 1], "hsla(30, 62.5%, 25%, 1)", [0.40625, 0.25, 0.09375, 1], "hsla(60, 62.5%, 25%, 1)", [0.40625, 0.40625, 0.09375, 1], "hsla(90, 62.5%, 25%, 1)", [0.25, 0.40625, 0.09375, 1], "hsla(120, 62.5%, 25%, 1)", [0.09375, 0.40625, 0.09375, 1], "hsla(150, 62.5%, 25%, 1)", [0.09375, 0.40625, 0.25, 1], "hsla(180, 62.5%, 25%, 1)", [0.09375, 0.40625, 0.40625, 1], "hsla(210, 62.5%, 25%, 1)", [0.09375, 0.25, 0.40625, 1], "hsla(240, 62.5%, 25%, 1)", [0.09375, 0.09375, 0.40625, 1], "hsla(270, 62.5%, 25%, 1)", [0.25, 0.09375, 0.40625, 1], "hsla(300, 62.5%, 25%, 1)", [0.40625, 0.09375, 0.40625, 1], "hsla(330, 62.5%, 25%, 1)", [0.40625, 0.09375, 0.25, 1], "hsla(0, 75%, 25%, 1)", [0.4375, 0.0625, 0.0625, 1], "hsla(30, 75%, 25%, 1)", [0.4375, 0.25, 0.0625, 1], "hsla(60, 75%, 25%, 1)", [0.4375, 0.4375, 0.0625, 1], "hsla(90, 75%, 25%, 1)", [0.25, 0.4375, 0.0625, 1], "hsla(120, 75%, 25%, 1)", [0.0625, 0.4375, 0.0625, 1], "hsla(150, 75%, 25%, 1)", [0.0625, 0.4375, 0.25, 1], "hsla(180, 75%, 25%, 1)", [0.0625, 0.4375, 0.4375, 1], "hsla(210, 75%, 25%, 1)", [0.0625, 0.25, 0.4375, 1], "hsla(240, 75%, 25%, 1)", [0.0625, 0.0625, 0.4375, 1], "hsla(270, 75%, 25%, 1)", [0.25, 0.0625, 0.4375, 1], "hsla(300, 75%, 25%, 1)", [0.4375, 0.0625, 0.4375, 1], "hsla(330, 75%, 25%, 1)", [0.4375, 0.0625, 0.25, 1], "hsla(0, 87.5%, 25%, 1)", [0.46875, 0.03125, 0.03125, 1], "hsla(30, 87.5%, 25%, 1)", [0.46875, 0.25, 0.03125, 1], "hsla(60, 87.5%, 25%, 1)", [0.46875, 0.46875, 0.03125, 1], "hsla(90, 87.5%, 25%, 1)", [0.25, 0.46875, 0.03125, 1], "hsla(120, 87.5%, 25%, 1)", [0.03125, 0.46875, 0.03125, 1], "hsla(150, 87.5%, 25%, 1)", [0.03125, 0.46875, 0.25, 1], "hsla(180, 87.5%, 25%, 1)", [0.03125, 0.46875, 0.46875, 1], "hsla(210, 87.5%, 25%, 1)", [0.03125, 0.25, 0.46875, 1], "hsla(240, 87.5%, 25%, 1)", [0.03125, 0.03125, 0.46875, 1], "hsla(270, 87.5%, 25%, 1)", [0.25, 0.03125, 0.46875, 1], "hsla(300, 87.5%, 25%, 1)", [0.46875, 0.03125, 0.46875, 1], "hsla(330, 87.5%, 25%, 1)", [0.46875, 0.03125, 0.25, 1], "hsla(0, 100%, 25%, 1)", [0.5, 0, 0, 1], "hsla(30, 100%, 25%, 1)", [0.5, 0.25, 0, 1], "hsla(60, 100%, 25%, 1)", [0.5, 0.5, 0, 1], "hsla(90, 100%, 25%, 1)", [0.25, 0.5, 0, 1], "hsla(120, 100%, 25%, 1)", [0, 0.5, 0, 1], "hsla(150, 100%, 25%, 1)", [0, 0.5, 0.25, 1], "hsla(180, 100%, 25%, 1)", [0, 0.5, 0.5, 1], "hsla(210, 100%, 25%, 1)", [0, 0.25, 0.5, 1], "hsla(240, 100%, 25%, 1)", [0, 0, 0.5, 1], "hsla(270, 100%, 25%, 1)", [0.25, 0, 0.5, 1], "hsla(300, 100%, 25%, 1)", [0.5, 0, 0.5, 1], "hsla(330, 100%, 25%, 1)", [0.5, 0, 0.25, 1], "hsla(0, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(30, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(60, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(90, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(120, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(150, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(180, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(210, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(240, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(270, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(300, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(330, 0%, 37.5%, 1)", [0.375, 0.375, 0.375, 1], "hsla(0, 12.5%, 37.5%, 1)", [0.421875, 0.328125, 0.328125, 1], "hsla(30, 12.5%, 37.5%, 1)", [0.421875, 0.375, 0.328125, 1], "hsla(60, 12.5%, 37.5%, 1)", [0.421875, 0.421875, 0.328125, 1], "hsla(90, 12.5%, 37.5%, 1)", [0.375, 0.421875, 0.328125, 1], "hsla(120, 12.5%, 37.5%, 1)", [0.328125, 0.421875, 0.328125, 1], "hsla(150, 12.5%, 37.5%, 1)", [0.328125, 0.421875, 0.375, 1], "hsla(180, 12.5%, 37.5%, 1)", [0.328125, 0.421875, 0.421875, 1], "hsla(210, 12.5%, 37.5%, 1)", [0.328125, 0.375, 0.421875, 1], "hsla(240, 12.5%, 37.5%, 1)", [0.328125, 0.328125, 0.421875, 1], "hsla(270, 12.5%, 37.5%, 1)", [0.375, 0.328125, 0.421875, 1], "hsla(300, 12.5%, 37.5%, 1)", [0.421875, 0.328125, 0.421875, 1], "hsla(330, 12.5%, 37.5%, 1)", [0.421875, 0.328125, 0.375, 1], "hsla(0, 25%, 37.5%, 1)", [0.46875, 0.28125, 0.28125, 1], "hsla(30, 25%, 37.5%, 1)", [0.46875, 0.375, 0.28125, 1], "hsla(60, 25%, 37.5%, 1)", [0.46875, 0.46875, 0.28125, 1], "hsla(90, 25%, 37.5%, 1)", [0.375, 0.46875, 0.28125, 1], "hsla(120, 25%, 37.5%, 1)", [0.28125, 0.46875, 0.28125, 1], "hsla(150, 25%, 37.5%, 1)", [0.28125, 0.46875, 0.375, 1], "hsla(180, 25%, 37.5%, 1)", [0.28125, 0.46875, 0.46875, 1], "hsla(210, 25%, 37.5%, 1)", [0.28125, 0.375, 0.46875, 1], "hsla(240, 25%, 37.5%, 1)", [0.28125, 0.28125, 0.46875, 1], "hsla(270, 25%, 37.5%, 1)", [0.375, 0.28125, 0.46875, 1], "hsla(300, 25%, 37.5%, 1)", [0.46875, 0.28125, 0.46875, 1], "hsla(330, 25%, 37.5%, 1)", [0.46875, 0.28125, 0.375, 1], "hsla(0, 37.5%, 37.5%, 1)", [0.515625, 0.234375, 0.234375, 1], "hsla(30, 37.5%, 37.5%, 1)", [0.515625, 0.375, 0.234375, 1], "hsla(60, 37.5%, 37.5%, 1)", [0.515625, 0.515625, 0.234375, 1], "hsla(90, 37.5%, 37.5%, 1)", [0.375, 0.515625, 0.234375, 1], "hsla(120, 37.5%, 37.5%, 1)", [0.234375, 0.515625, 0.234375, 1], "hsla(150, 37.5%, 37.5%, 1)", [0.234375, 0.515625, 0.375, 1], "hsla(180, 37.5%, 37.5%, 1)", [0.234375, 0.515625, 0.515625, 1], "hsla(210, 37.5%, 37.5%, 1)", [0.234375, 0.375, 0.515625, 1], "hsla(240, 37.5%, 37.5%, 1)", [0.234375, 0.234375, 0.515625, 1], "hsla(270, 37.5%, 37.5%, 1)", [0.375, 0.234375, 0.515625, 1], "hsla(300, 37.5%, 37.5%, 1)", [0.515625, 0.234375, 0.515625, 1], "hsla(330, 37.5%, 37.5%, 1)", [0.515625, 0.234375, 0.375, 1], "hsla(0, 50%, 37.5%, 1)", [0.5625, 0.1875, 0.1875, 1], "hsla(30, 50%, 37.5%, 1)", [0.5625, 0.375, 0.1875, 1], "hsla(60, 50%, 37.5%, 1)", [0.5625, 0.5625, 0.1875, 1], "hsla(90, 50%, 37.5%, 1)", [0.375, 0.5625, 0.1875, 1], "hsla(120, 50%, 37.5%, 1)", [0.1875, 0.5625, 0.1875, 1], "hsla(150, 50%, 37.5%, 1)", [0.1875, 0.5625, 0.375, 1], "hsla(180, 50%, 37.5%, 1)", [0.1875, 0.5625, 0.5625, 1], "hsla(210, 50%, 37.5%, 1)", [0.1875, 0.375, 0.5625, 1], "hsla(240, 50%, 37.5%, 1)", [0.1875, 0.1875, 0.5625, 1], "hsla(270, 50%, 37.5%, 1)", [0.375, 0.1875, 0.5625, 1], "hsla(300, 50%, 37.5%, 1)", [0.5625, 0.1875, 0.5625, 1], "hsla(330, 50%, 37.5%, 1)", [0.5625, 0.1875, 0.375, 1], "hsla(0, 62.5%, 37.5%, 1)", [0.609375, 0.140625, 0.140625, 1], "hsla(30, 62.5%, 37.5%, 1)", [0.609375, 0.375, 0.140625, 1], "hsla(60, 62.5%, 37.5%, 1)", [0.609375, 0.609375, 0.140625, 1], "hsla(90, 62.5%, 37.5%, 1)", [0.375, 0.609375, 0.140625, 1], "hsla(120, 62.5%, 37.5%, 1)", [0.140625, 0.609375, 0.140625, 1], "hsla(150, 62.5%, 37.5%, 1)", [0.140625, 0.609375, 0.375, 1], "hsla(180, 62.5%, 37.5%, 1)", [0.140625, 0.609375, 0.609375, 1], "hsla(210, 62.5%, 37.5%, 1)", [0.140625, 0.375, 0.609375, 1], "hsla(240, 62.5%, 37.5%, 1)", [0.140625, 0.140625, 0.609375, 1], "hsla(270, 62.5%, 37.5%, 1)", [0.375, 0.140625, 0.609375, 1], "hsla(300, 62.5%, 37.5%, 1)", [0.609375, 0.140625, 0.609375, 1], "hsla(330, 62.5%, 37.5%, 1)", [0.609375, 0.140625, 0.375, 1], "hsla(0, 75%, 37.5%, 1)", [0.65625, 0.09375, 0.09375, 1], "hsla(30, 75%, 37.5%, 1)", [0.65625, 0.375, 0.09375, 1], "hsla(60, 75%, 37.5%, 1)", [0.65625, 0.65625, 0.09375, 1], "hsla(90, 75%, 37.5%, 1)", [0.375, 0.65625, 0.09375, 1], "hsla(120, 75%, 37.5%, 1)", [0.09375, 0.65625, 0.09375, 1], "hsla(150, 75%, 37.5%, 1)", [0.09375, 0.65625, 0.375, 1], "hsla(180, 75%, 37.5%, 1)", [0.09375, 0.65625, 0.65625, 1], "hsla(210, 75%, 37.5%, 1)", [0.09375, 0.375, 0.65625, 1], "hsla(240, 75%, 37.5%, 1)", [0.09375, 0.09375, 0.65625, 1], "hsla(270, 75%, 37.5%, 1)", [0.375, 0.09375, 0.65625, 1], "hsla(300, 75%, 37.5%, 1)", [0.65625, 0.09375, 0.65625, 1], "hsla(330, 75%, 37.5%, 1)", [0.65625, 0.09375, 0.375, 1], "hsla(0, 87.5%, 37.5%, 1)", [0.703125, 0.046875, 0.046875, 1], "hsla(30, 87.5%, 37.5%, 1)", [0.703125, 0.375, 0.046875, 1], "hsla(60, 87.5%, 37.5%, 1)", [0.703125, 0.703125, 0.046875, 1], "hsla(90, 87.5%, 37.5%, 1)", [0.375, 0.703125, 0.046875, 1], "hsla(120, 87.5%, 37.5%, 1)", [0.046875, 0.703125, 0.046875, 1], "hsla(150, 87.5%, 37.5%, 1)", [0.046875, 0.703125, 0.375, 1], "hsla(180, 87.5%, 37.5%, 1)", [0.046875, 0.703125, 0.703125, 1], "hsla(210, 87.5%, 37.5%, 1)", [0.046875, 0.375, 0.703125, 1], "hsla(240, 87.5%, 37.5%, 1)", [0.046875, 0.046875, 0.703125, 1], "hsla(270, 87.5%, 37.5%, 1)", [0.375, 0.046875, 0.703125, 1], "hsla(300, 87.5%, 37.5%, 1)", [0.703125, 0.046875, 0.703125, 1], "hsla(330, 87.5%, 37.5%, 1)", [0.703125, 0.046875, 0.375, 1], "hsla(0, 100%, 37.5%, 1)", [0.75, 0, 0, 1], "hsla(30, 100%, 37.5%, 1)", [0.75, 0.375, 0, 1], "hsla(60, 100%, 37.5%, 1)", [0.75, 0.75, 0, 1], "hsla(90, 100%, 37.5%, 1)", [0.375, 0.75, 0, 1], "hsla(120, 100%, 37.5%, 1)", [0, 0.75, 0, 1], "hsla(150, 100%, 37.5%, 1)", [0, 0.75, 0.375, 1], "hsla(180, 100%, 37.5%, 1)", [0, 0.75, 0.75, 1], "hsla(210, 100%, 37.5%, 1)", [0, 0.375, 0.75, 1], "hsla(240, 100%, 37.5%, 1)", [0, 0, 0.75, 1], "hsla(270, 100%, 37.5%, 1)", [0.375, 0, 0.75, 1], "hsla(300, 100%, 37.5%, 1)", [0.75, 0, 0.75, 1], "hsla(330, 100%, 37.5%, 1)", [0.75, 0, 0.375, 1], "hsla(0, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(30, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(60, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(90, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(120, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(150, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(180, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(210, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(240, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(270, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(300, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(330, 0%, 50%, 1)", [0.5, 0.5, 0.5, 1], "hsla(0, 12.5%, 50%, 1)", [0.5625, 0.4375, 0.4375, 1], "hsla(30, 12.5%, 50%, 1)", [0.5625, 0.5, 0.4375, 1], "hsla(60, 12.5%, 50%, 1)", [0.5625, 0.5625, 0.4375, 1], "hsla(90, 12.5%, 50%, 1)", [0.5, 0.5625, 0.4375, 1], "hsla(120, 12.5%, 50%, 1)", [0.4375, 0.5625, 0.4375, 1], "hsla(150, 12.5%, 50%, 1)", [0.4375, 0.5625, 0.5, 1], "hsla(180, 12.5%, 50%, 1)", [0.4375, 0.5625, 0.5625, 1], "hsla(210, 12.5%, 50%, 1)", [0.4375, 0.5, 0.5625, 1], "hsla(240, 12.5%, 50%, 1)", [0.4375, 0.4375, 0.5625, 1], "hsla(270, 12.5%, 50%, 1)", [0.5, 0.4375, 0.5625, 1], "hsla(300, 12.5%, 50%, 1)", [0.5625, 0.4375, 0.5625, 1], "hsla(330, 12.5%, 50%, 1)", [0.5625, 0.4375, 0.5, 1], "hsla(0, 25%, 50%, 1)", [0.625, 0.375, 0.375, 1], "hsla(30, 25%, 50%, 1)", [0.625, 0.5, 0.375, 1], "hsla(60, 25%, 50%, 1)", [0.625, 0.625, 0.375, 1], "hsla(90, 25%, 50%, 1)", [0.5, 0.625, 0.375, 1], "hsla(120, 25%, 50%, 1)", [0.375, 0.625, 0.375, 1], "hsla(150, 25%, 50%, 1)", [0.375, 0.625, 0.5, 1], "hsla(180, 25%, 50%, 1)", [0.375, 0.625, 0.625, 1], "hsla(210, 25%, 50%, 1)", [0.375, 0.5, 0.625, 1], "hsla(240, 25%, 50%, 1)", [0.375, 0.375, 0.625, 1], "hsla(270, 25%, 50%, 1)", [0.5, 0.375, 0.625, 1], "hsla(300, 25%, 50%, 1)", [0.625, 0.375, 0.625, 1], "hsla(330, 25%, 50%, 1)", [0.625, 0.375, 0.5, 1], "hsla(0, 37.5%, 50%, 1)", [0.6875, 0.3125, 0.3125, 1], "hsla(30, 37.5%, 50%, 1)", [0.6875, 0.5, 0.3125, 1], "hsla(60, 37.5%, 50%, 1)", [0.6875, 0.6875, 0.3125, 1], "hsla(90, 37.5%, 50%, 1)", [0.5, 0.6875, 0.3125, 1], "hsla(120, 37.5%, 50%, 1)", [0.3125, 0.6875, 0.3125, 1], "hsla(150, 37.5%, 50%, 1)", [0.3125, 0.6875, 0.5, 1], "hsla(180, 37.5%, 50%, 1)", [0.3125, 0.6875, 0.6875, 1], "hsla(210, 37.5%, 50%, 1)", [0.3125, 0.5, 0.6875, 1], "hsla(240, 37.5%, 50%, 1)", [0.3125, 0.3125, 0.6875, 1], "hsla(270, 37.5%, 50%, 1)", [0.5, 0.3125, 0.6875, 1], "hsla(300, 37.5%, 50%, 1)", [0.6875, 0.3125, 0.6875, 1], "hsla(330, 37.5%, 50%, 1)", [0.6875, 0.3125, 0.5, 1], "hsla(0, 50%, 50%, 1)", [0.75, 0.25, 0.25, 1], "hsla(30, 50%, 50%, 1)", [0.75, 0.5, 0.25, 1], "hsla(60, 50%, 50%, 1)", [0.75, 0.75, 0.25, 1], "hsla(90, 50%, 50%, 1)", [0.5, 0.75, 0.25, 1], "hsla(120, 50%, 50%, 1)", [0.25, 0.75, 0.25, 1], "hsla(150, 50%, 50%, 1)", [0.25, 0.75, 0.5, 1], "hsla(180, 50%, 50%, 1)", [0.25, 0.75, 0.75, 1], "hsla(210, 50%, 50%, 1)", [0.25, 0.5, 0.75, 1], "hsla(240, 50%, 50%, 1)", [0.25, 0.25, 0.75, 1], "hsla(270, 50%, 50%, 1)", [0.5, 0.25, 0.75, 1], "hsla(300, 50%, 50%, 1)", [0.75, 0.25, 0.75, 1], "hsla(330, 50%, 50%, 1)", [0.75, 0.25, 0.5, 1], "hsla(0, 62.5%, 50%, 1)", [0.8125, 0.1875, 0.1875, 1], "hsla(30, 62.5%, 50%, 1)", [0.8125, 0.5, 0.1875, 1], "hsla(60, 62.5%, 50%, 1)", [0.8125, 0.8125, 0.1875, 1], "hsla(90, 62.5%, 50%, 1)", [0.5, 0.8125, 0.1875, 1], "hsla(120, 62.5%, 50%, 1)", [0.1875, 0.8125, 0.1875, 1], "hsla(150, 62.5%, 50%, 1)", [0.1875, 0.8125, 0.5, 1], "hsla(180, 62.5%, 50%, 1)", [0.1875, 0.8125, 0.8125, 1], "hsla(210, 62.5%, 50%, 1)", [0.1875, 0.5, 0.8125, 1], "hsla(240, 62.5%, 50%, 1)", [0.1875, 0.1875, 0.8125, 1], "hsla(270, 62.5%, 50%, 1)", [0.5, 0.1875, 0.8125, 1], "hsla(300, 62.5%, 50%, 1)", [0.8125, 0.1875, 0.8125, 1], "hsla(330, 62.5%, 50%, 1)", [0.8125, 0.1875, 0.5, 1], "hsla(0, 75%, 50%, 1)", [0.875, 0.125, 0.125, 1], "hsla(30, 75%, 50%, 1)", [0.875, 0.5, 0.125, 1], "hsla(60, 75%, 50%, 1)", [0.875, 0.875, 0.125, 1], "hsla(90, 75%, 50%, 1)", [0.5, 0.875, 0.125, 1], "hsla(120, 75%, 50%, 1)", [0.125, 0.875, 0.125, 1], "hsla(150, 75%, 50%, 1)", [0.125, 0.875, 0.5, 1], "hsla(180, 75%, 50%, 1)", [0.125, 0.875, 0.875, 1], "hsla(210, 75%, 50%, 1)", [0.125, 0.5, 0.875, 1], "hsla(240, 75%, 50%, 1)", [0.125, 0.125, 0.875, 1], "hsla(270, 75%, 50%, 1)", [0.5, 0.125, 0.875, 1], "hsla(300, 75%, 50%, 1)", [0.875, 0.125, 0.875, 1], "hsla(330, 75%, 50%, 1)", [0.875, 0.125, 0.5, 1], "hsla(0, 87.5%, 50%, 1)", [0.9375, 0.0625, 0.0625, 1], "hsla(30, 87.5%, 50%, 1)", [0.9375, 0.5, 0.0625, 1], "hsla(60, 87.5%, 50%, 1)", [0.9375, 0.9375, 0.0625, 1], "hsla(90, 87.5%, 50%, 1)", [0.5, 0.9375, 0.0625, 1], "hsla(120, 87.5%, 50%, 1)", [0.0625, 0.9375, 0.0625, 1], "hsla(150, 87.5%, 50%, 1)", [0.0625, 0.9375, 0.5, 1], "hsla(180, 87.5%, 50%, 1)", [0.0625, 0.9375, 0.9375, 1], "hsla(210, 87.5%, 50%, 1)", [0.0625, 0.5, 0.9375, 1], "hsla(240, 87.5%, 50%, 1)", [0.0625, 0.0625, 0.9375, 1], "hsla(270, 87.5%, 50%, 1)", [0.5, 0.0625, 0.9375, 1], "hsla(300, 87.5%, 50%, 1)", [0.9375, 0.0625, 0.9375, 1], "hsla(330, 87.5%, 50%, 1)", [0.9375, 0.0625, 0.5, 1], "hsla(0, 100%, 50%, 1)", [1, 0, 0, 1], "hsla(30, 100%, 50%, 1)", [1, 0.5, 0, 1], "hsla(60, 100%, 50%, 1)", [1, 1, 0, 1], "hsla(90, 100%, 50%, 1)", [0.5, 1, 0, 1], "hsla(120, 100%, 50%, 1)", [0, 1, 0, 1], "hsla(150, 100%, 50%, 1)", [0, 1, 0.5, 1], "hsla(180, 100%, 50%, 1)", [0, 1, 1, 1], "hsla(210, 100%, 50%, 1)", [0, 0.5, 1, 1], "hsla(240, 100%, 50%, 1)", [0, 0, 1, 1], "hsla(270, 100%, 50%, 1)", [0.5, 0, 1, 1], "hsla(300, 100%, 50%, 1)", [1, 0, 1, 1], "hsla(330, 100%, 50%, 1)", [1, 0, 0.5, 1], "hsla(0, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(30, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(60, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(90, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(120, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(150, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(180, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(210, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(240, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(270, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(300, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(330, 0%, 62.5%, 1)", [0.625, 0.625, 0.625, 1], "hsla(0, 12.5%, 62.5%, 1)", [0.671875, 0.578125, 0.578125, 1], "hsla(30, 12.5%, 62.5%, 1)", [0.671875, 0.625, 0.578125, 1], "hsla(60, 12.5%, 62.5%, 1)", [0.671875, 0.671875, 0.578125, 1], "hsla(90, 12.5%, 62.5%, 1)", [0.625, 0.671875, 0.578125, 1], "hsla(120, 12.5%, 62.5%, 1)", [0.578125, 0.671875, 0.578125, 1], "hsla(150, 12.5%, 62.5%, 1)", [0.578125, 0.671875, 0.625, 1], "hsla(180, 12.5%, 62.5%, 1)", [0.578125, 0.671875, 0.671875, 1], "hsla(210, 12.5%, 62.5%, 1)", [0.578125, 0.625, 0.671875, 1], "hsla(240, 12.5%, 62.5%, 1)", [0.578125, 0.578125, 0.671875, 1], "hsla(270, 12.5%, 62.5%, 1)", [0.625, 0.578125, 0.671875, 1], "hsla(300, 12.5%, 62.5%, 1)", [0.671875, 0.578125, 0.671875, 1], "hsla(330, 12.5%, 62.5%, 1)", [0.671875, 0.578125, 0.625, 1], "hsla(0, 25%, 62.5%, 1)", [0.71875, 0.53125, 0.53125, 1], "hsla(30, 25%, 62.5%, 1)", [0.71875, 0.625, 0.53125, 1], "hsla(60, 25%, 62.5%, 1)", [0.71875, 0.71875, 0.53125, 1], "hsla(90, 25%, 62.5%, 1)", [0.625, 0.71875, 0.53125, 1], "hsla(120, 25%, 62.5%, 1)", [0.53125, 0.71875, 0.53125, 1], "hsla(150, 25%, 62.5%, 1)", [0.53125, 0.71875, 0.625, 1], "hsla(180, 25%, 62.5%, 1)", [0.53125, 0.71875, 0.71875, 1], "hsla(210, 25%, 62.5%, 1)", [0.53125, 0.625, 0.71875, 1], "hsla(240, 25%, 62.5%, 1)", [0.53125, 0.53125, 0.71875, 1], "hsla(270, 25%, 62.5%, 1)", [0.625, 0.53125, 0.71875, 1], "hsla(300, 25%, 62.5%, 1)", [0.71875, 0.53125, 0.71875, 1], "hsla(330, 25%, 62.5%, 1)", [0.71875, 0.53125, 0.625, 1], "hsla(0, 37.5%, 62.5%, 1)", [0.765625, 0.484375, 0.484375, 1], "hsla(30, 37.5%, 62.5%, 1)", [0.765625, 0.625, 0.484375, 1], "hsla(60, 37.5%, 62.5%, 1)", [0.765625, 0.765625, 0.484375, 1], "hsla(90, 37.5%, 62.5%, 1)", [0.625, 0.765625, 0.484375, 1], "hsla(120, 37.5%, 62.5%, 1)", [0.484375, 0.765625, 0.484375, 1], "hsla(150, 37.5%, 62.5%, 1)", [0.484375, 0.765625, 0.625, 1], "hsla(180, 37.5%, 62.5%, 1)", [0.484375, 0.765625, 0.765625, 1], "hsla(210, 37.5%, 62.5%, 1)", [0.484375, 0.625, 0.765625, 1], "hsla(240, 37.5%, 62.5%, 1)", [0.484375, 0.484375, 0.765625, 1], "hsla(270, 37.5%, 62.5%, 1)", [0.625, 0.484375, 0.765625, 1], "hsla(300, 37.5%, 62.5%, 1)", [0.765625, 0.484375, 0.765625, 1], "hsla(330, 37.5%, 62.5%, 1)", [0.765625, 0.484375, 0.625, 1], "hsla(0, 50%, 62.5%, 1)", [0.8125, 0.4375, 0.4375, 1], "hsla(30, 50%, 62.5%, 1)", [0.8125, 0.625, 0.4375, 1], "hsla(60, 50%, 62.5%, 1)", [0.8125, 0.8125, 0.4375, 1], "hsla(90, 50%, 62.5%, 1)", [0.625, 0.8125, 0.4375, 1], "hsla(120, 50%, 62.5%, 1)", [0.4375, 0.8125, 0.4375, 1], "hsla(150, 50%, 62.5%, 1)", [0.4375, 0.8125, 0.625, 1], "hsla(180, 50%, 62.5%, 1)", [0.4375, 0.8125, 0.8125, 1], "hsla(210, 50%, 62.5%, 1)", [0.4375, 0.625, 0.8125, 1], "hsla(240, 50%, 62.5%, 1)", [0.4375, 0.4375, 0.8125, 1], "hsla(270, 50%, 62.5%, 1)", [0.625, 0.4375, 0.8125, 1], "hsla(300, 50%, 62.5%, 1)", [0.8125, 0.4375, 0.8125, 1], "hsla(330, 50%, 62.5%, 1)", [0.8125, 0.4375, 0.625, 1], "hsla(0, 62.5%, 62.5%, 1)", [0.859375, 0.390625, 0.390625, 1], "hsla(30, 62.5%, 62.5%, 1)", [0.859375, 0.625, 0.390625, 1], "hsla(60, 62.5%, 62.5%, 1)", [0.859375, 0.859375, 0.390625, 1], "hsla(90, 62.5%, 62.5%, 1)", [0.625, 0.859375, 0.390625, 1], "hsla(120, 62.5%, 62.5%, 1)", [0.390625, 0.859375, 0.390625, 1], "hsla(150, 62.5%, 62.5%, 1)", [0.390625, 0.859375, 0.625, 1], "hsla(180, 62.5%, 62.5%, 1)", [0.390625, 0.859375, 0.859375, 1], "hsla(210, 62.5%, 62.5%, 1)", [0.390625, 0.625, 0.859375, 1], "hsla(240, 62.5%, 62.5%, 1)", [0.390625, 0.390625, 0.859375, 1], "hsla(270, 62.5%, 62.5%, 1)", [0.625, 0.390625, 0.859375, 1], "hsla(300, 62.5%, 62.5%, 1)", [0.859375, 0.390625, 0.859375, 1], "hsla(330, 62.5%, 62.5%, 1)", [0.859375, 0.390625, 0.625, 1], "hsla(0, 75%, 62.5%, 1)", [0.90625, 0.34375, 0.34375, 1], "hsla(30, 75%, 62.5%, 1)", [0.90625, 0.625, 0.34375, 1], "hsla(60, 75%, 62.5%, 1)", [0.90625, 0.90625, 0.34375, 1], "hsla(90, 75%, 62.5%, 1)", [0.625, 0.90625, 0.34375, 1], "hsla(120, 75%, 62.5%, 1)", [0.34375, 0.90625, 0.34375, 1], "hsla(150, 75%, 62.5%, 1)", [0.34375, 0.90625, 0.625, 1], "hsla(180, 75%, 62.5%, 1)", [0.34375, 0.90625, 0.90625, 1], "hsla(210, 75%, 62.5%, 1)", [0.34375, 0.625, 0.90625, 1], "hsla(240, 75%, 62.5%, 1)", [0.34375, 0.34375, 0.90625, 1], "hsla(270, 75%, 62.5%, 1)", [0.625, 0.34375, 0.90625, 1], "hsla(300, 75%, 62.5%, 1)", [0.90625, 0.34375, 0.90625, 1], "hsla(330, 75%, 62.5%, 1)", [0.90625, 0.34375, 0.625, 1], "hsla(0, 87.5%, 62.5%, 1)", [0.953125, 0.296875, 0.296875, 1], "hsla(30, 87.5%, 62.5%, 1)", [0.953125, 0.625, 0.296875, 1], "hsla(60, 87.5%, 62.5%, 1)", [0.953125, 0.953125, 0.296875, 1], "hsla(90, 87.5%, 62.5%, 1)", [0.625, 0.953125, 0.296875, 1], "hsla(120, 87.5%, 62.5%, 1)", [0.296875, 0.953125, 0.296875, 1], "hsla(150, 87.5%, 62.5%, 1)", [0.296875, 0.953125, 0.625, 1], "hsla(180, 87.5%, 62.5%, 1)", [0.296875, 0.953125, 0.953125, 1], "hsla(210, 87.5%, 62.5%, 1)", [0.296875, 0.625, 0.953125, 1], "hsla(240, 87.5%, 62.5%, 1)", [0.296875, 0.296875, 0.953125, 1], "hsla(270, 87.5%, 62.5%, 1)", [0.625, 0.296875, 0.953125, 1], "hsla(300, 87.5%, 62.5%, 1)", [0.953125, 0.296875, 0.953125, 1], "hsla(330, 87.5%, 62.5%, 1)", [0.953125, 0.296875, 0.625, 1], "hsla(0, 100%, 62.5%, 1)", [1, 0.25, 0.25, 1], "hsla(30, 100%, 62.5%, 1)", [1, 0.625, 0.25, 1], "hsla(60, 100%, 62.5%, 1)", [1, 1, 0.25, 1], "hsla(90, 100%, 62.5%, 1)", [0.625, 1, 0.25, 1], "hsla(120, 100%, 62.5%, 1)", [0.25, 1, 0.25, 1], "hsla(150, 100%, 62.5%, 1)", [0.25, 1, 0.625, 1], "hsla(180, 100%, 62.5%, 1)", [0.25, 1, 1, 1], "hsla(210, 100%, 62.5%, 1)", [0.25, 0.625, 1, 1], "hsla(240, 100%, 62.5%, 1)", [0.25, 0.25, 1, 1], "hsla(270, 100%, 62.5%, 1)", [0.625, 0.25, 1, 1], "hsla(300, 100%, 62.5%, 1)", [1, 0.25, 1, 1], "hsla(330, 100%, 62.5%, 1)", [1, 0.25, 0.625, 1], "hsla(0, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(30, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(60, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(90, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(120, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(150, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(180, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(210, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(240, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(270, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(300, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(330, 0%, 75%, 1)", [0.75, 0.75, 0.75, 1], "hsla(0, 12.5%, 75%, 1)", [0.78125, 0.71875, 0.71875, 1], "hsla(30, 12.5%, 75%, 1)", [0.78125, 0.75, 0.71875, 1], "hsla(60, 12.5%, 75%, 1)", [0.78125, 0.78125, 0.71875, 1], "hsla(90, 12.5%, 75%, 1)", [0.75, 0.78125, 0.71875, 1], "hsla(120, 12.5%, 75%, 1)", [0.71875, 0.78125, 0.71875, 1], "hsla(150, 12.5%, 75%, 1)", [0.71875, 0.78125, 0.75, 1], "hsla(180, 12.5%, 75%, 1)", [0.71875, 0.78125, 0.78125, 1], "hsla(210, 12.5%, 75%, 1)", [0.71875, 0.75, 0.78125, 1], "hsla(240, 12.5%, 75%, 1)", [0.71875, 0.71875, 0.78125, 1], "hsla(270, 12.5%, 75%, 1)", [0.75, 0.71875, 0.78125, 1], "hsla(300, 12.5%, 75%, 1)", [0.78125, 0.71875, 0.78125, 1], "hsla(330, 12.5%, 75%, 1)", [0.78125, 0.71875, 0.75, 1], "hsla(0, 25%, 75%, 1)", [0.8125, 0.6875, 0.6875, 1], "hsla(30, 25%, 75%, 1)", [0.8125, 0.75, 0.6875, 1], "hsla(60, 25%, 75%, 1)", [0.8125, 0.8125, 0.6875, 1], "hsla(90, 25%, 75%, 1)", [0.75, 0.8125, 0.6875, 1], "hsla(120, 25%, 75%, 1)", [0.6875, 0.8125, 0.6875, 1], "hsla(150, 25%, 75%, 1)", [0.6875, 0.8125, 0.75, 1], "hsla(180, 25%, 75%, 1)", [0.6875, 0.8125, 0.8125, 1], "hsla(210, 25%, 75%, 1)", [0.6875, 0.75, 0.8125, 1], "hsla(240, 25%, 75%, 1)", [0.6875, 0.6875, 0.8125, 1], "hsla(270, 25%, 75%, 1)", [0.75, 0.6875, 0.8125, 1], "hsla(300, 25%, 75%, 1)", [0.8125, 0.6875, 0.8125, 1], "hsla(330, 25%, 75%, 1)", [0.8125, 0.6875, 0.75, 1], "hsla(0, 37.5%, 75%, 1)", [0.84375, 0.65625, 0.65625, 1], "hsla(30, 37.5%, 75%, 1)", [0.84375, 0.75, 0.65625, 1], "hsla(60, 37.5%, 75%, 1)", [0.84375, 0.84375, 0.65625, 1], "hsla(90, 37.5%, 75%, 1)", [0.75, 0.84375, 0.65625, 1], "hsla(120, 37.5%, 75%, 1)", [0.65625, 0.84375, 0.65625, 1], "hsla(150, 37.5%, 75%, 1)", [0.65625, 0.84375, 0.75, 1], "hsla(180, 37.5%, 75%, 1)", [0.65625, 0.84375, 0.84375, 1], "hsla(210, 37.5%, 75%, 1)", [0.65625, 0.75, 0.84375, 1], "hsla(240, 37.5%, 75%, 1)", [0.65625, 0.65625, 0.84375, 1], "hsla(270, 37.5%, 75%, 1)", [0.75, 0.65625, 0.84375, 1], "hsla(300, 37.5%, 75%, 1)", [0.84375, 0.65625, 0.84375, 1], "hsla(330, 37.5%, 75%, 1)", [0.84375, 0.65625, 0.75, 1], "hsla(0, 50%, 75%, 1)", [0.875, 0.625, 0.625, 1], "hsla(30, 50%, 75%, 1)", [0.875, 0.75, 0.625, 1], "hsla(60, 50%, 75%, 1)", [0.875, 0.875, 0.625, 1], "hsla(90, 50%, 75%, 1)", [0.75, 0.875, 0.625, 1], "hsla(120, 50%, 75%, 1)", [0.625, 0.875, 0.625, 1], "hsla(150, 50%, 75%, 1)", [0.625, 0.875, 0.75, 1], "hsla(180, 50%, 75%, 1)", [0.625, 0.875, 0.875, 1], "hsla(210, 50%, 75%, 1)", [0.625, 0.75, 0.875, 1], "hsla(240, 50%, 75%, 1)", [0.625, 0.625, 0.875, 1], "hsla(270, 50%, 75%, 1)", [0.75, 0.625, 0.875, 1], "hsla(300, 50%, 75%, 1)", [0.875, 0.625, 0.875, 1], "hsla(330, 50%, 75%, 1)", [0.875, 0.625, 0.75, 1], "hsla(0, 62.5%, 75%, 1)", [0.90625, 0.59375, 0.59375, 1], "hsla(30, 62.5%, 75%, 1)", [0.90625, 0.75, 0.59375, 1], "hsla(60, 62.5%, 75%, 1)", [0.90625, 0.90625, 0.59375, 1], "hsla(90, 62.5%, 75%, 1)", [0.75, 0.90625, 0.59375, 1], "hsla(120, 62.5%, 75%, 1)", [0.59375, 0.90625, 0.59375, 1], "hsla(150, 62.5%, 75%, 1)", [0.59375, 0.90625, 0.75, 1], "hsla(180, 62.5%, 75%, 1)", [0.59375, 0.90625, 0.90625, 1], "hsla(210, 62.5%, 75%, 1)", [0.59375, 0.75, 0.90625, 1], "hsla(240, 62.5%, 75%, 1)", [0.59375, 0.59375, 0.90625, 1], "hsla(270, 62.5%, 75%, 1)", [0.75, 0.59375, 0.90625, 1], "hsla(300, 62.5%, 75%, 1)", [0.90625, 0.59375, 0.90625, 1], "hsla(330, 62.5%, 75%, 1)", [0.90625, 0.59375, 0.75, 1], "hsla(0, 75%, 75%, 1)", [0.9375, 0.5625, 0.5625, 1], "hsla(30, 75%, 75%, 1)", [0.9375, 0.75, 0.5625, 1], "hsla(60, 75%, 75%, 1)", [0.9375, 0.9375, 0.5625, 1], "hsla(90, 75%, 75%, 1)", [0.75, 0.9375, 0.5625, 1], "hsla(120, 75%, 75%, 1)", [0.5625, 0.9375, 0.5625, 1], "hsla(150, 75%, 75%, 1)", [0.5625, 0.9375, 0.75, 1], "hsla(180, 75%, 75%, 1)", [0.5625, 0.9375, 0.9375, 1], "hsla(210, 75%, 75%, 1)", [0.5625, 0.75, 0.9375, 1], "hsla(240, 75%, 75%, 1)", [0.5625, 0.5625, 0.9375, 1], "hsla(270, 75%, 75%, 1)", [0.75, 0.5625, 0.9375, 1], "hsla(300, 75%, 75%, 1)", [0.9375, 0.5625, 0.9375, 1], "hsla(330, 75%, 75%, 1)", [0.9375, 0.5625, 0.75, 1], "hsla(0, 87.5%, 75%, 1)", [0.96875, 0.53125, 0.53125, 1], "hsla(30, 87.5%, 75%, 1)", [0.96875, 0.75, 0.53125, 1], "hsla(60, 87.5%, 75%, 1)", [0.96875, 0.96875, 0.53125, 1], "hsla(90, 87.5%, 75%, 1)", [0.75, 0.96875, 0.53125, 1], "hsla(120, 87.5%, 75%, 1)", [0.53125, 0.96875, 0.53125, 1], "hsla(150, 87.5%, 75%, 1)", [0.53125, 0.96875, 0.75, 1], "hsla(180, 87.5%, 75%, 1)", [0.53125, 0.96875, 0.96875, 1], "hsla(210, 87.5%, 75%, 1)", [0.53125, 0.75, 0.96875, 1], "hsla(240, 87.5%, 75%, 1)", [0.53125, 0.53125, 0.96875, 1], "hsla(270, 87.5%, 75%, 1)", [0.75, 0.53125, 0.96875, 1], "hsla(300, 87.5%, 75%, 1)", [0.96875, 0.53125, 0.96875, 1], "hsla(330, 87.5%, 75%, 1)", [0.96875, 0.53125, 0.75, 1], "hsla(0, 100%, 75%, 1)", [1, 0.5, 0.5, 1], "hsla(30, 100%, 75%, 1)", [1, 0.75, 0.5, 1], "hsla(60, 100%, 75%, 1)", [1, 1, 0.5, 1], "hsla(90, 100%, 75%, 1)", [0.75, 1, 0.5, 1], "hsla(120, 100%, 75%, 1)", [0.5, 1, 0.5, 1], "hsla(150, 100%, 75%, 1)", [0.5, 1, 0.75, 1], "hsla(180, 100%, 75%, 1)", [0.5, 1, 1, 1], "hsla(210, 100%, 75%, 1)", [0.5, 0.75, 1, 1], "hsla(240, 100%, 75%, 1)", [0.5, 0.5, 1, 1], "hsla(270, 100%, 75%, 1)", [0.75, 0.5, 1, 1], "hsla(300, 100%, 75%, 1)", [1, 0.5, 1, 1], "hsla(330, 100%, 75%, 1)", [1, 0.5, 0.75, 1], "hsla(0, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(30, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(60, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(90, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(120, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(150, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(180, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(210, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(240, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(270, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(300, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(330, 0%, 87.5%, 1)", [0.875, 0.875, 0.875, 1], "hsla(0, 12.5%, 87.5%, 1)", [0.890625, 0.859375, 0.859375, 1], "hsla(30, 12.5%, 87.5%, 1)", [0.890625, 0.875, 0.859375, 1], "hsla(60, 12.5%, 87.5%, 1)", [0.890625, 0.890625, 0.859375, 1], "hsla(90, 12.5%, 87.5%, 1)", [0.875, 0.890625, 0.859375, 1], "hsla(120, 12.5%, 87.5%, 1)", [0.859375, 0.890625, 0.859375, 1], "hsla(150, 12.5%, 87.5%, 1)", [0.859375, 0.890625, 0.875, 1], "hsla(180, 12.5%, 87.5%, 1)", [0.859375, 0.890625, 0.890625, 1], "hsla(210, 12.5%, 87.5%, 1)", [0.859375, 0.875, 0.890625, 1], "hsla(240, 12.5%, 87.5%, 1)", [0.859375, 0.859375, 0.890625, 1], "hsla(270, 12.5%, 87.5%, 1)", [0.875, 0.859375, 0.890625, 1], "hsla(300, 12.5%, 87.5%, 1)", [0.890625, 0.859375, 0.890625, 1], "hsla(330, 12.5%, 87.5%, 1)", [0.890625, 0.859375, 0.875, 1], "hsla(0, 25%, 87.5%, 1)", [0.90625, 0.84375, 0.84375, 1], "hsla(30, 25%, 87.5%, 1)", [0.90625, 0.875, 0.84375, 1], "hsla(60, 25%, 87.5%, 1)", [0.90625, 0.90625, 0.84375, 1], "hsla(90, 25%, 87.5%, 1)", [0.875, 0.90625, 0.84375, 1], "hsla(120, 25%, 87.5%, 1)", [0.84375, 0.90625, 0.84375, 1], "hsla(150, 25%, 87.5%, 1)", [0.84375, 0.90625, 0.875, 1], "hsla(180, 25%, 87.5%, 1)", [0.84375, 0.90625, 0.90625, 1], "hsla(210, 25%, 87.5%, 1)", [0.84375, 0.875, 0.90625, 1], "hsla(240, 25%, 87.5%, 1)", [0.84375, 0.84375, 0.90625, 1], "hsla(270, 25%, 87.5%, 1)", [0.875, 0.84375, 0.90625, 1], "hsla(300, 25%, 87.5%, 1)", [0.90625, 0.84375, 0.90625, 1], "hsla(330, 25%, 87.5%, 1)", [0.90625, 0.84375, 0.875, 1], "hsla(0, 37.5%, 87.5%, 1)", [0.921875, 0.828125, 0.828125, 1], "hsla(30, 37.5%, 87.5%, 1)", [0.921875, 0.875, 0.828125, 1], "hsla(60, 37.5%, 87.5%, 1)", [0.921875, 0.921875, 0.828125, 1], "hsla(90, 37.5%, 87.5%, 1)", [0.875, 0.921875, 0.828125, 1], "hsla(120, 37.5%, 87.5%, 1)", [0.828125, 0.921875, 0.828125, 1], "hsla(150, 37.5%, 87.5%, 1)", [0.828125, 0.921875, 0.875, 1], "hsla(180, 37.5%, 87.5%, 1)", [0.828125, 0.921875, 0.921875, 1], "hsla(210, 37.5%, 87.5%, 1)", [0.828125, 0.875, 0.921875, 1], "hsla(240, 37.5%, 87.5%, 1)", [0.828125, 0.828125, 0.921875, 1], "hsla(270, 37.5%, 87.5%, 1)", [0.875, 0.828125, 0.921875, 1], "hsla(300, 37.5%, 87.5%, 1)", [0.921875, 0.828125, 0.921875, 1], "hsla(330, 37.5%, 87.5%, 1)", [0.921875, 0.828125, 0.875, 1], "hsla(0, 50%, 87.5%, 1)", [0.9375, 0.8125, 0.8125, 1], "hsla(30, 50%, 87.5%, 1)", [0.9375, 0.875, 0.8125, 1], "hsla(60, 50%, 87.5%, 1)", [0.9375, 0.9375, 0.8125, 1], "hsla(90, 50%, 87.5%, 1)", [0.875, 0.9375, 0.8125, 1], "hsla(120, 50%, 87.5%, 1)", [0.8125, 0.9375, 0.8125, 1], "hsla(150, 50%, 87.5%, 1)", [0.8125, 0.9375, 0.875, 1], "hsla(180, 50%, 87.5%, 1)", [0.8125, 0.9375, 0.9375, 1], "hsla(210, 50%, 87.5%, 1)", [0.8125, 0.875, 0.9375, 1], "hsla(240, 50%, 87.5%, 1)", [0.8125, 0.8125, 0.9375, 1], "hsla(270, 50%, 87.5%, 1)", [0.875, 0.8125, 0.9375, 1], "hsla(300, 50%, 87.5%, 1)", [0.9375, 0.8125, 0.9375, 1], "hsla(330, 50%, 87.5%, 1)", [0.9375, 0.8125, 0.875, 1], "hsla(0, 62.5%, 87.5%, 1)", [0.953125, 0.796875, 0.796875, 1], "hsla(30, 62.5%, 87.5%, 1)", [0.953125, 0.875, 0.796875, 1], "hsla(60, 62.5%, 87.5%, 1)", [0.953125, 0.953125, 0.796875, 1], "hsla(90, 62.5%, 87.5%, 1)", [0.875, 0.953125, 0.796875, 1], "hsla(120, 62.5%, 87.5%, 1)", [0.796875, 0.953125, 0.796875, 1], "hsla(150, 62.5%, 87.5%, 1)", [0.796875, 0.953125, 0.875, 1], "hsla(180, 62.5%, 87.5%, 1)", [0.796875, 0.953125, 0.953125, 1], "hsla(210, 62.5%, 87.5%, 1)", [0.796875, 0.875, 0.953125, 1], "hsla(240, 62.5%, 87.5%, 1)", [0.796875, 0.796875, 0.953125, 1], "hsla(270, 62.5%, 87.5%, 1)", [0.875, 0.796875, 0.953125, 1], "hsla(300, 62.5%, 87.5%, 1)", [0.953125, 0.796875, 0.953125, 1], "hsla(330, 62.5%, 87.5%, 1)", [0.953125, 0.796875, 0.875, 1], "hsla(0, 75%, 87.5%, 1)", [0.96875, 0.78125, 0.78125, 1], "hsla(30, 75%, 87.5%, 1)", [0.96875, 0.875, 0.78125, 1], "hsla(60, 75%, 87.5%, 1)", [0.96875, 0.96875, 0.78125, 1], "hsla(90, 75%, 87.5%, 1)", [0.875, 0.96875, 0.78125, 1], "hsla(120, 75%, 87.5%, 1)", [0.78125, 0.96875, 0.78125, 1], "hsla(150, 75%, 87.5%, 1)", [0.78125, 0.96875, 0.875, 1], "hsla(180, 75%, 87.5%, 1)", [0.78125, 0.96875, 0.96875, 1], "hsla(210, 75%, 87.5%, 1)", [0.78125, 0.875, 0.96875, 1], "hsla(240, 75%, 87.5%, 1)", [0.78125, 0.78125, 0.96875, 1], "hsla(270, 75%, 87.5%, 1)", [0.875, 0.78125, 0.96875, 1], "hsla(300, 75%, 87.5%, 1)", [0.96875, 0.78125, 0.96875, 1], "hsla(330, 75%, 87.5%, 1)", [0.96875, 0.78125, 0.875, 1], "hsla(0, 87.5%, 87.5%, 1)", [0.984375, 0.765625, 0.765625, 1], "hsla(30, 87.5%, 87.5%, 1)", [0.984375, 0.875, 0.765625, 1], "hsla(60, 87.5%, 87.5%, 1)", [0.984375, 0.984375, 0.765625, 1], "hsla(90, 87.5%, 87.5%, 1)", [0.875, 0.984375, 0.765625, 1], "hsla(120, 87.5%, 87.5%, 1)", [0.765625, 0.984375, 0.765625, 1], "hsla(150, 87.5%, 87.5%, 1)", [0.765625, 0.984375, 0.875, 1], "hsla(180, 87.5%, 87.5%, 1)", [0.765625, 0.984375, 0.984375, 1], "hsla(210, 87.5%, 87.5%, 1)", [0.765625, 0.875, 0.984375, 1], "hsla(240, 87.5%, 87.5%, 1)", [0.765625, 0.765625, 0.984375, 1], "hsla(270, 87.5%, 87.5%, 1)", [0.875, 0.765625, 0.984375, 1], "hsla(300, 87.5%, 87.5%, 1)", [0.984375, 0.765625, 0.984375, 1], "hsla(330, 87.5%, 87.5%, 1)", [0.984375, 0.765625, 0.875, 1], "hsla(0, 100%, 87.5%, 1)", [1, 0.75, 0.75, 1], "hsla(30, 100%, 87.5%, 1)", [1, 0.875, 0.75, 1], "hsla(60, 100%, 87.5%, 1)", [1, 1, 0.75, 1], "hsla(90, 100%, 87.5%, 1)", [0.875, 1, 0.75, 1], "hsla(120, 100%, 87.5%, 1)", [0.75, 1, 0.75, 1], "hsla(150, 100%, 87.5%, 1)", [0.75, 1, 0.875, 1], "hsla(180, 100%, 87.5%, 1)", [0.75, 1, 1, 1], "hsla(210, 100%, 87.5%, 1)", [0.75, 0.875, 1, 1], "hsla(240, 100%, 87.5%, 1)", [0.75, 0.75, 1, 1], "hsla(270, 100%, 87.5%, 1)", [0.875, 0.75, 1, 1], "hsla(300, 100%, 87.5%, 1)", [1, 0.75, 1, 1], "hsla(330, 100%, 87.5%, 1)", [1, 0.75, 0.875, 1], "hsla(0, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(30, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(60, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(90, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(120, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(150, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(180, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(210, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(240, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(270, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(300, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(330, 0%, 100%, 1)", [1, 1, 1, 1], "hsla(0, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(30, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(60, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(90, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(120, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(150, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(180, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(210, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(240, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(270, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(300, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(330, 12.5%, 100%, 1)", [1, 1, 1, 1], "hsla(0, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(30, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(60, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(90, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(120, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(150, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(180, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(210, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(240, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(270, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(300, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(330, 25%, 100%, 1)", [1, 1, 1, 1], "hsla(0, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(30, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(60, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(90, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(120, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(150, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(180, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(210, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(240, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(270, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(300, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(330, 37.5%, 100%, 1)", [1, 1, 1, 1], "hsla(0, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(30, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(60, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(90, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(120, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(150, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(180, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(210, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(240, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(270, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(300, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(330, 50%, 100%, 1)", [1, 1, 1, 1], "hsla(0, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(30, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(60, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(90, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(120, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(150, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(180, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(210, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(240, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(270, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(300, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(330, 62.5%, 100%, 1)", [1, 1, 1, 1], "hsla(0, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(30, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(60, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(90, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(120, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(150, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(180, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(210, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(240, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(270, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(300, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(330, 75%, 100%, 1)", [1, 1, 1, 1], "hsla(0, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(30, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(60, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(90, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(120, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(150, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(180, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(210, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(240, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(270, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(300, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(330, 87.5%, 100%, 1)", [1, 1, 1, 1], "hsla(0, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(30, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(60, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(90, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(120, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(150, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(180, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(210, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(240, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(270, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(300, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(330, 100%, 100%, 1)", [1, 1, 1, 1], "hsla(0, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(30, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(60, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(90, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(120, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(150, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(180, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(210, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(240, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(270, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(300, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(330, 0%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(0, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(30, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(60, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(90, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(120, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(150, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(180, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(210, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(240, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(270, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(300, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(330, 12.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(0, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(30, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(60, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(90, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(120, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(150, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(180, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(210, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(240, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(270, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(300, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(330, 25%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(0, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(30, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(60, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(90, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(120, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(150, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(180, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(210, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(240, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(270, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(300, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(330, 37.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(0, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(30, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(60, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(90, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(120, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(150, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(180, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(210, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(240, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(270, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(300, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(330, 50%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(0, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(30, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(60, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(90, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(120, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(150, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(180, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(210, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(240, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(270, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(300, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(330, 62.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(0, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(30, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(60, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(90, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(120, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(150, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(180, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(210, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(240, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(270, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(300, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(330, 75%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(0, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(30, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(60, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(90, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(120, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(150, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(180, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(210, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(240, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(270, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(300, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(330, 87.5%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(0, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(30, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(60, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(90, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(120, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(150, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(180, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(210, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(240, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(270, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(300, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(330, 100%, 0%, 0.2)", [0, 0, 0, 0.2], "hsla(0, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(30, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(60, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(90, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(120, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(150, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(180, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(210, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(240, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(270, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(300, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(330, 0%, 12.5%, 0.2)", [0.125, 0.125, 0.125, 0.2], "hsla(0, 12.5%, 12.5%, 0.2)", [0.140625, 0.109375, 0.109375, 0.2], "hsla(30, 12.5%, 12.5%, 0.2)", [0.140625, 0.125, 0.109375, 0.2], "hsla(60, 12.5%, 12.5%, 0.2)", [0.140625, 0.140625, 0.109375, 0.2], "hsla(90, 12.5%, 12.5%, 0.2)", [0.125, 0.140625, 0.109375, 0.2], "hsla(120, 12.5%, 12.5%, 0.2)", [0.109375, 0.140625, 0.109375, 0.2], "hsla(150, 12.5%, 12.5%, 0.2)", [0.109375, 0.140625, 0.125, 0.2], "hsla(180, 12.5%, 12.5%, 0.2)", [0.109375, 0.140625, 0.140625, 0.2], "hsla(210, 12.5%, 12.5%, 0.2)", [0.109375, 0.125, 0.140625, 0.2], "hsla(240, 12.5%, 12.5%, 0.2)", [0.109375, 0.109375, 0.140625, 0.2], "hsla(270, 12.5%, 12.5%, 0.2)", [0.125, 0.109375, 0.140625, 0.2], "hsla(300, 12.5%, 12.5%, 0.2)", [0.140625, 0.109375, 0.140625, 0.2], "hsla(330, 12.5%, 12.5%, 0.2)", [0.140625, 0.109375, 0.125, 0.2], "hsla(0, 25%, 12.5%, 0.2)", [0.15625, 0.09375, 0.09375, 0.2], "hsla(30, 25%, 12.5%, 0.2)", [0.15625, 0.125, 0.09375, 0.2], "hsla(60, 25%, 12.5%, 0.2)", [0.15625, 0.15625, 0.09375, 0.2], "hsla(90, 25%, 12.5%, 0.2)", [0.125, 0.15625, 0.09375, 0.2], "hsla(120, 25%, 12.5%, 0.2)", [0.09375, 0.15625, 0.09375, 0.2], "hsla(150, 25%, 12.5%, 0.2)", [0.09375, 0.15625, 0.125, 0.2], "hsla(180, 25%, 12.5%, 0.2)", [0.09375, 0.15625, 0.15625, 0.2], "hsla(210, 25%, 12.5%, 0.2)", [0.09375, 0.125, 0.15625, 0.2], "hsla(240, 25%, 12.5%, 0.2)", [0.09375, 0.09375, 0.15625, 0.2], "hsla(270, 25%, 12.5%, 0.2)", [0.125, 0.09375, 0.15625, 0.2], "hsla(300, 25%, 12.5%, 0.2)", [0.15625, 0.09375, 0.15625, 0.2], "hsla(330, 25%, 12.5%, 0.2)", [0.15625, 0.09375, 0.125, 0.2], "hsla(0, 37.5%, 12.5%, 0.2)", [0.171875, 0.078125, 0.078125, 0.2], "hsla(30, 37.5%, 12.5%, 0.2)", [0.171875, 0.125, 0.078125, 0.2], "hsla(60, 37.5%, 12.5%, 0.2)", [0.171875, 0.171875, 0.078125, 0.2], "hsla(90, 37.5%, 12.5%, 0.2)", [0.125, 0.171875, 0.078125, 0.2], "hsla(120, 37.5%, 12.5%, 0.2)", [0.078125, 0.171875, 0.078125, 0.2], "hsla(150, 37.5%, 12.5%, 0.2)", [0.078125, 0.171875, 0.125, 0.2], "hsla(180, 37.5%, 12.5%, 0.2)", [0.078125, 0.171875, 0.171875, 0.2], "hsla(210, 37.5%, 12.5%, 0.2)", [0.078125, 0.125, 0.171875, 0.2], "hsla(240, 37.5%, 12.5%, 0.2)", [0.078125, 0.078125, 0.171875, 0.2], "hsla(270, 37.5%, 12.5%, 0.2)", [0.125, 0.078125, 0.171875, 0.2], "hsla(300, 37.5%, 12.5%, 0.2)", [0.171875, 0.078125, 0.171875, 0.2], "hsla(330, 37.5%, 12.5%, 0.2)", [0.171875, 0.078125, 0.125, 0.2], "hsla(0, 50%, 12.5%, 0.2)", [0.1875, 0.0625, 0.0625, 0.2], "hsla(30, 50%, 12.5%, 0.2)", [0.1875, 0.125, 0.0625, 0.2], "hsla(60, 50%, 12.5%, 0.2)", [0.1875, 0.1875, 0.0625, 0.2], "hsla(90, 50%, 12.5%, 0.2)", [0.125, 0.1875, 0.0625, 0.2], "hsla(120, 50%, 12.5%, 0.2)", [0.0625, 0.1875, 0.0625, 0.2], "hsla(150, 50%, 12.5%, 0.2)", [0.0625, 0.1875, 0.125, 0.2], "hsla(180, 50%, 12.5%, 0.2)", [0.0625, 0.1875, 0.1875, 0.2], "hsla(210, 50%, 12.5%, 0.2)", [0.0625, 0.125, 0.1875, 0.2], "hsla(240, 50%, 12.5%, 0.2)", [0.0625, 0.0625, 0.1875, 0.2], "hsla(270, 50%, 12.5%, 0.2)", [0.125, 0.0625, 0.1875, 0.2], "hsla(300, 50%, 12.5%, 0.2)", [0.1875, 0.0625, 0.1875, 0.2], "hsla(330, 50%, 12.5%, 0.2)", [0.1875, 0.0625, 0.125, 0.2], "hsla(0, 62.5%, 12.5%, 0.2)", [0.203125, 0.046875, 0.046875, 0.2], "hsla(30, 62.5%, 12.5%, 0.2)", [0.203125, 0.125, 0.046875, 0.2], "hsla(60, 62.5%, 12.5%, 0.2)", [0.203125, 0.203125, 0.046875, 0.2], "hsla(90, 62.5%, 12.5%, 0.2)", [0.125, 0.203125, 0.046875, 0.2], "hsla(120, 62.5%, 12.5%, 0.2)", [0.046875, 0.203125, 0.046875, 0.2], "hsla(150, 62.5%, 12.5%, 0.2)", [0.046875, 0.203125, 0.125, 0.2], "hsla(180, 62.5%, 12.5%, 0.2)", [0.046875, 0.203125, 0.203125, 0.2], "hsla(210, 62.5%, 12.5%, 0.2)", [0.046875, 0.125, 0.203125, 0.2], "hsla(240, 62.5%, 12.5%, 0.2)", [0.046875, 0.046875, 0.203125, 0.2], "hsla(270, 62.5%, 12.5%, 0.2)", [0.125, 0.046875, 0.203125, 0.2], "hsla(300, 62.5%, 12.5%, 0.2)", [0.203125, 0.046875, 0.203125, 0.2], "hsla(330, 62.5%, 12.5%, 0.2)", [0.203125, 0.046875, 0.125, 0.2], "hsla(0, 75%, 12.5%, 0.2)", [0.21875, 0.03125, 0.03125, 0.2], "hsla(30, 75%, 12.5%, 0.2)", [0.21875, 0.125, 0.03125, 0.2], "hsla(60, 75%, 12.5%, 0.2)", [0.21875, 0.21875, 0.03125, 0.2], "hsla(90, 75%, 12.5%, 0.2)", [0.125, 0.21875, 0.03125, 0.2], "hsla(120, 75%, 12.5%, 0.2)", [0.03125, 0.21875, 0.03125, 0.2], "hsla(150, 75%, 12.5%, 0.2)", [0.03125, 0.21875, 0.125, 0.2], "hsla(180, 75%, 12.5%, 0.2)", [0.03125, 0.21875, 0.21875, 0.2], "hsla(210, 75%, 12.5%, 0.2)", [0.03125, 0.125, 0.21875, 0.2], "hsla(240, 75%, 12.5%, 0.2)", [0.03125, 0.03125, 0.21875, 0.2], "hsla(270, 75%, 12.5%, 0.2)", [0.125, 0.03125, 0.21875, 0.2], "hsla(300, 75%, 12.5%, 0.2)", [0.21875, 0.03125, 0.21875, 0.2], "hsla(330, 75%, 12.5%, 0.2)", [0.21875, 0.03125, 0.125, 0.2], "hsla(0, 87.5%, 12.5%, 0.2)", [0.234375, 0.015625, 0.015625, 0.2], "hsla(30, 87.5%, 12.5%, 0.2)", [0.234375, 0.125, 0.015625, 0.2], "hsla(60, 87.5%, 12.5%, 0.2)", [0.234375, 0.234375, 0.015625, 0.2], "hsla(90, 87.5%, 12.5%, 0.2)", [0.125, 0.234375, 0.015625, 0.2], "hsla(120, 87.5%, 12.5%, 0.2)", [0.015625, 0.234375, 0.015625, 0.2], "hsla(150, 87.5%, 12.5%, 0.2)", [0.015625, 0.234375, 0.125, 0.2], "hsla(180, 87.5%, 12.5%, 0.2)", [0.015625, 0.234375, 0.234375, 0.2], "hsla(210, 87.5%, 12.5%, 0.2)", [0.015625, 0.125, 0.234375, 0.2], "hsla(240, 87.5%, 12.5%, 0.2)", [0.015625, 0.015625, 0.234375, 0.2], "hsla(270, 87.5%, 12.5%, 0.2)", [0.125, 0.015625, 0.234375, 0.2], "hsla(300, 87.5%, 12.5%, 0.2)", [0.234375, 0.015625, 0.234375, 0.2], "hsla(330, 87.5%, 12.5%, 0.2)", [0.234375, 0.015625, 0.125, 0.2], "hsla(0, 100%, 12.5%, 0.2)", [0.25, 0, 0, 0.2], "hsla(30, 100%, 12.5%, 0.2)", [0.25, 0.125, 0, 0.2], "hsla(60, 100%, 12.5%, 0.2)", [0.25, 0.25, 0, 0.2], "hsla(90, 100%, 12.5%, 0.2)", [0.125, 0.25, 0, 0.2], "hsla(120, 100%, 12.5%, 0.2)", [0, 0.25, 0, 0.2], "hsla(150, 100%, 12.5%, 0.2)", [0, 0.25, 0.125, 0.2], "hsla(180, 100%, 12.5%, 0.2)", [0, 0.25, 0.25, 0.2], "hsla(210, 100%, 12.5%, 0.2)", [0, 0.125, 0.25, 0.2], "hsla(240, 100%, 12.5%, 0.2)", [0, 0, 0.25, 0.2], "hsla(270, 100%, 12.5%, 0.2)", [0.125, 0, 0.25, 0.2], "hsla(300, 100%, 12.5%, 0.2)", [0.25, 0, 0.25, 0.2], "hsla(330, 100%, 12.5%, 0.2)", [0.25, 0, 0.125, 0.2], "hsla(0, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(30, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(60, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(90, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(120, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(150, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(180, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(210, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(240, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(270, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(300, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(330, 0%, 25%, 0.2)", [0.25, 0.25, 0.25, 0.2], "hsla(0, 12.5%, 25%, 0.2)", [0.28125, 0.21875, 0.21875, 0.2], "hsla(30, 12.5%, 25%, 0.2)", [0.28125, 0.25, 0.21875, 0.2], "hsla(60, 12.5%, 25%, 0.2)", [0.28125, 0.28125, 0.21875, 0.2], "hsla(90, 12.5%, 25%, 0.2)", [0.25, 0.28125, 0.21875, 0.2], "hsla(120, 12.5%, 25%, 0.2)", [0.21875, 0.28125, 0.21875, 0.2], "hsla(150, 12.5%, 25%, 0.2)", [0.21875, 0.28125, 0.25, 0.2], "hsla(180, 12.5%, 25%, 0.2)", [0.21875, 0.28125, 0.28125, 0.2], "hsla(210, 12.5%, 25%, 0.2)", [0.21875, 0.25, 0.28125, 0.2], "hsla(240, 12.5%, 25%, 0.2)", [0.21875, 0.21875, 0.28125, 0.2], "hsla(270, 12.5%, 25%, 0.2)", [0.25, 0.21875, 0.28125, 0.2], "hsla(300, 12.5%, 25%, 0.2)", [0.28125, 0.21875, 0.28125, 0.2], "hsla(330, 12.5%, 25%, 0.2)", [0.28125, 0.21875, 0.25, 0.2], "hsla(0, 25%, 25%, 0.2)", [0.3125, 0.1875, 0.1875, 0.2], "hsla(30, 25%, 25%, 0.2)", [0.3125, 0.25, 0.1875, 0.2], "hsla(60, 25%, 25%, 0.2)", [0.3125, 0.3125, 0.1875, 0.2], "hsla(90, 25%, 25%, 0.2)", [0.25, 0.3125, 0.1875, 0.2], "hsla(120, 25%, 25%, 0.2)", [0.1875, 0.3125, 0.1875, 0.2], "hsla(150, 25%, 25%, 0.2)", [0.1875, 0.3125, 0.25, 0.2], "hsla(180, 25%, 25%, 0.2)", [0.1875, 0.3125, 0.3125, 0.2], "hsla(210, 25%, 25%, 0.2)", [0.1875, 0.25, 0.3125, 0.2], "hsla(240, 25%, 25%, 0.2)", [0.1875, 0.1875, 0.3125, 0.2], "hsla(270, 25%, 25%, 0.2)", [0.25, 0.1875, 0.3125, 0.2], "hsla(300, 25%, 25%, 0.2)", [0.3125, 0.1875, 0.3125, 0.2], "hsla(330, 25%, 25%, 0.2)", [0.3125, 0.1875, 0.25, 0.2], "hsla(0, 37.5%, 25%, 0.2)", [0.34375, 0.15625, 0.15625, 0.2], "hsla(30, 37.5%, 25%, 0.2)", [0.34375, 0.25, 0.15625, 0.2], "hsla(60, 37.5%, 25%, 0.2)", [0.34375, 0.34375, 0.15625, 0.2], "hsla(90, 37.5%, 25%, 0.2)", [0.25, 0.34375, 0.15625, 0.2], "hsla(120, 37.5%, 25%, 0.2)", [0.15625, 0.34375, 0.15625, 0.2], "hsla(150, 37.5%, 25%, 0.2)", [0.15625, 0.34375, 0.25, 0.2], "hsla(180, 37.5%, 25%, 0.2)", [0.15625, 0.34375, 0.34375, 0.2], "hsla(210, 37.5%, 25%, 0.2)", [0.15625, 0.25, 0.34375, 0.2], "hsla(240, 37.5%, 25%, 0.2)", [0.15625, 0.15625, 0.34375, 0.2], "hsla(270, 37.5%, 25%, 0.2)", [0.25, 0.15625, 0.34375, 0.2], "hsla(300, 37.5%, 25%, 0.2)", [0.34375, 0.15625, 0.34375, 0.2], "hsla(330, 37.5%, 25%, 0.2)", [0.34375, 0.15625, 0.25, 0.2], "hsla(0, 50%, 25%, 0.2)", [0.375, 0.125, 0.125, 0.2], "hsla(30, 50%, 25%, 0.2)", [0.375, 0.25, 0.125, 0.2], "hsla(60, 50%, 25%, 0.2)", [0.375, 0.375, 0.125, 0.2], "hsla(90, 50%, 25%, 0.2)", [0.25, 0.375, 0.125, 0.2], "hsla(120, 50%, 25%, 0.2)", [0.125, 0.375, 0.125, 0.2], "hsla(150, 50%, 25%, 0.2)", [0.125, 0.375, 0.25, 0.2], "hsla(180, 50%, 25%, 0.2)", [0.125, 0.375, 0.375, 0.2], "hsla(210, 50%, 25%, 0.2)", [0.125, 0.25, 0.375, 0.2], "hsla(240, 50%, 25%, 0.2)", [0.125, 0.125, 0.375, 0.2], "hsla(270, 50%, 25%, 0.2)", [0.25, 0.125, 0.375, 0.2], "hsla(300, 50%, 25%, 0.2)", [0.375, 0.125, 0.375, 0.2], "hsla(330, 50%, 25%, 0.2)", [0.375, 0.125, 0.25, 0.2], "hsla(0, 62.5%, 25%, 0.2)", [0.40625, 0.09375, 0.09375, 0.2], "hsla(30, 62.5%, 25%, 0.2)", [0.40625, 0.25, 0.09375, 0.2], "hsla(60, 62.5%, 25%, 0.2)", [0.40625, 0.40625, 0.09375, 0.2], "hsla(90, 62.5%, 25%, 0.2)", [0.25, 0.40625, 0.09375, 0.2], "hsla(120, 62.5%, 25%, 0.2)", [0.09375, 0.40625, 0.09375, 0.2], "hsla(150, 62.5%, 25%, 0.2)", [0.09375, 0.40625, 0.25, 0.2], "hsla(180, 62.5%, 25%, 0.2)", [0.09375, 0.40625, 0.40625, 0.2], "hsla(210, 62.5%, 25%, 0.2)", [0.09375, 0.25, 0.40625, 0.2], "hsla(240, 62.5%, 25%, 0.2)", [0.09375, 0.09375, 0.40625, 0.2], "hsla(270, 62.5%, 25%, 0.2)", [0.25, 0.09375, 0.40625, 0.2], "hsla(300, 62.5%, 25%, 0.2)", [0.40625, 0.09375, 0.40625, 0.2], "hsla(330, 62.5%, 25%, 0.2)", [0.40625, 0.09375, 0.25, 0.2], "hsla(0, 75%, 25%, 0.2)", [0.4375, 0.0625, 0.0625, 0.2], "hsla(30, 75%, 25%, 0.2)", [0.4375, 0.25, 0.0625, 0.2], "hsla(60, 75%, 25%, 0.2)", [0.4375, 0.4375, 0.0625, 0.2], "hsla(90, 75%, 25%, 0.2)", [0.25, 0.4375, 0.0625, 0.2], "hsla(120, 75%, 25%, 0.2)", [0.0625, 0.4375, 0.0625, 0.2], "hsla(150, 75%, 25%, 0.2)", [0.0625, 0.4375, 0.25, 0.2], "hsla(180, 75%, 25%, 0.2)", [0.0625, 0.4375, 0.4375, 0.2], "hsla(210, 75%, 25%, 0.2)", [0.0625, 0.25, 0.4375, 0.2], "hsla(240, 75%, 25%, 0.2)", [0.0625, 0.0625, 0.4375, 0.2], "hsla(270, 75%, 25%, 0.2)", [0.25, 0.0625, 0.4375, 0.2], "hsla(300, 75%, 25%, 0.2)", [0.4375, 0.0625, 0.4375, 0.2], "hsla(330, 75%, 25%, 0.2)", [0.4375, 0.0625, 0.25, 0.2], "hsla(0, 87.5%, 25%, 0.2)", [0.46875, 0.03125, 0.03125, 0.2], "hsla(30, 87.5%, 25%, 0.2)", [0.46875, 0.25, 0.03125, 0.2], "hsla(60, 87.5%, 25%, 0.2)", [0.46875, 0.46875, 0.03125, 0.2], "hsla(90, 87.5%, 25%, 0.2)", [0.25, 0.46875, 0.03125, 0.2], "hsla(120, 87.5%, 25%, 0.2)", [0.03125, 0.46875, 0.03125, 0.2], "hsla(150, 87.5%, 25%, 0.2)", [0.03125, 0.46875, 0.25, 0.2], "hsla(180, 87.5%, 25%, 0.2)", [0.03125, 0.46875, 0.46875, 0.2], "hsla(210, 87.5%, 25%, 0.2)", [0.03125, 0.25, 0.46875, 0.2], "hsla(240, 87.5%, 25%, 0.2)", [0.03125, 0.03125, 0.46875, 0.2], "hsla(270, 87.5%, 25%, 0.2)", [0.25, 0.03125, 0.46875, 0.2], "hsla(300, 87.5%, 25%, 0.2)", [0.46875, 0.03125, 0.46875, 0.2], "hsla(330, 87.5%, 25%, 0.2)", [0.46875, 0.03125, 0.25, 0.2], "hsla(0, 100%, 25%, 0.2)", [0.5, 0, 0, 0.2], "hsla(30, 100%, 25%, 0.2)", [0.5, 0.25, 0, 0.2], "hsla(60, 100%, 25%, 0.2)", [0.5, 0.5, 0, 0.2], "hsla(90, 100%, 25%, 0.2)", [0.25, 0.5, 0, 0.2], "hsla(120, 100%, 25%, 0.2)", [0, 0.5, 0, 0.2], "hsla(150, 100%, 25%, 0.2)", [0, 0.5, 0.25, 0.2], "hsla(180, 100%, 25%, 0.2)", [0, 0.5, 0.5, 0.2], "hsla(210, 100%, 25%, 0.2)", [0, 0.25, 0.5, 0.2], "hsla(240, 100%, 25%, 0.2)", [0, 0, 0.5, 0.2], "hsla(270, 100%, 25%, 0.2)", [0.25, 0, 0.5, 0.2], "hsla(300, 100%, 25%, 0.2)", [0.5, 0, 0.5, 0.2], "hsla(330, 100%, 25%, 0.2)", [0.5, 0, 0.25, 0.2], "hsla(0, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(30, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(60, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(90, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(120, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(150, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(180, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(210, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(240, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(270, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(300, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(330, 0%, 37.5%, 0.2)", [0.375, 0.375, 0.375, 0.2], "hsla(0, 12.5%, 37.5%, 0.2)", [0.421875, 0.328125, 0.328125, 0.2], "hsla(30, 12.5%, 37.5%, 0.2)", [0.421875, 0.375, 0.328125, 0.2], "hsla(60, 12.5%, 37.5%, 0.2)", [0.421875, 0.421875, 0.328125, 0.2], "hsla(90, 12.5%, 37.5%, 0.2)", [0.375, 0.421875, 0.328125, 0.2], "hsla(120, 12.5%, 37.5%, 0.2)", [0.328125, 0.421875, 0.328125, 0.2], "hsla(150, 12.5%, 37.5%, 0.2)", [0.328125, 0.421875, 0.375, 0.2], "hsla(180, 12.5%, 37.5%, 0.2)", [0.328125, 0.421875, 0.421875, 0.2], "hsla(210, 12.5%, 37.5%, 0.2)", [0.328125, 0.375, 0.421875, 0.2], "hsla(240, 12.5%, 37.5%, 0.2)", [0.328125, 0.328125, 0.421875, 0.2], "hsla(270, 12.5%, 37.5%, 0.2)", [0.375, 0.328125, 0.421875, 0.2], "hsla(300, 12.5%, 37.5%, 0.2)", [0.421875, 0.328125, 0.421875, 0.2], "hsla(330, 12.5%, 37.5%, 0.2)", [0.421875, 0.328125, 0.375, 0.2], "hsla(0, 25%, 37.5%, 0.2)", [0.46875, 0.28125, 0.28125, 0.2], "hsla(30, 25%, 37.5%, 0.2)", [0.46875, 0.375, 0.28125, 0.2], "hsla(60, 25%, 37.5%, 0.2)", [0.46875, 0.46875, 0.28125, 0.2], "hsla(90, 25%, 37.5%, 0.2)", [0.375, 0.46875, 0.28125, 0.2], "hsla(120, 25%, 37.5%, 0.2)", [0.28125, 0.46875, 0.28125, 0.2], "hsla(150, 25%, 37.5%, 0.2)", [0.28125, 0.46875, 0.375, 0.2], "hsla(180, 25%, 37.5%, 0.2)", [0.28125, 0.46875, 0.46875, 0.2], "hsla(210, 25%, 37.5%, 0.2)", [0.28125, 0.375, 0.46875, 0.2], "hsla(240, 25%, 37.5%, 0.2)", [0.28125, 0.28125, 0.46875, 0.2], "hsla(270, 25%, 37.5%, 0.2)", [0.375, 0.28125, 0.46875, 0.2], "hsla(300, 25%, 37.5%, 0.2)", [0.46875, 0.28125, 0.46875, 0.2], "hsla(330, 25%, 37.5%, 0.2)", [0.46875, 0.28125, 0.375, 0.2], "hsla(0, 37.5%, 37.5%, 0.2)", [0.515625, 0.234375, 0.234375, 0.2], "hsla(30, 37.5%, 37.5%, 0.2)", [0.515625, 0.375, 0.234375, 0.2], "hsla(60, 37.5%, 37.5%, 0.2)", [0.515625, 0.515625, 0.234375, 0.2], "hsla(90, 37.5%, 37.5%, 0.2)", [0.375, 0.515625, 0.234375, 0.2], "hsla(120, 37.5%, 37.5%, 0.2)", [0.234375, 0.515625, 0.234375, 0.2], "hsla(150, 37.5%, 37.5%, 0.2)", [0.234375, 0.515625, 0.375, 0.2], "hsla(180, 37.5%, 37.5%, 0.2)", [0.234375, 0.515625, 0.515625, 0.2], "hsla(210, 37.5%, 37.5%, 0.2)", [0.234375, 0.375, 0.515625, 0.2], "hsla(240, 37.5%, 37.5%, 0.2)", [0.234375, 0.234375, 0.515625, 0.2], "hsla(270, 37.5%, 37.5%, 0.2)", [0.375, 0.234375, 0.515625, 0.2], "hsla(300, 37.5%, 37.5%, 0.2)", [0.515625, 0.234375, 0.515625, 0.2], "hsla(330, 37.5%, 37.5%, 0.2)", [0.515625, 0.234375, 0.375, 0.2], "hsla(0, 50%, 37.5%, 0.2)", [0.5625, 0.1875, 0.1875, 0.2], "hsla(30, 50%, 37.5%, 0.2)", [0.5625, 0.375, 0.1875, 0.2], "hsla(60, 50%, 37.5%, 0.2)", [0.5625, 0.5625, 0.1875, 0.2], "hsla(90, 50%, 37.5%, 0.2)", [0.375, 0.5625, 0.1875, 0.2], "hsla(120, 50%, 37.5%, 0.2)", [0.1875, 0.5625, 0.1875, 0.2], "hsla(150, 50%, 37.5%, 0.2)", [0.1875, 0.5625, 0.375, 0.2], "hsla(180, 50%, 37.5%, 0.2)", [0.1875, 0.5625, 0.5625, 0.2], "hsla(210, 50%, 37.5%, 0.2)", [0.1875, 0.375, 0.5625, 0.2], "hsla(240, 50%, 37.5%, 0.2)", [0.1875, 0.1875, 0.5625, 0.2], "hsla(270, 50%, 37.5%, 0.2)", [0.375, 0.1875, 0.5625, 0.2], "hsla(300, 50%, 37.5%, 0.2)", [0.5625, 0.1875, 0.5625, 0.2], "hsla(330, 50%, 37.5%, 0.2)", [0.5625, 0.1875, 0.375, 0.2], "hsla(0, 62.5%, 37.5%, 0.2)", [0.609375, 0.140625, 0.140625, 0.2], "hsla(30, 62.5%, 37.5%, 0.2)", [0.609375, 0.375, 0.140625, 0.2], "hsla(60, 62.5%, 37.5%, 0.2)", [0.609375, 0.609375, 0.140625, 0.2], "hsla(90, 62.5%, 37.5%, 0.2)", [0.375, 0.609375, 0.140625, 0.2], "hsla(120, 62.5%, 37.5%, 0.2)", [0.140625, 0.609375, 0.140625, 0.2], "hsla(150, 62.5%, 37.5%, 0.2)", [0.140625, 0.609375, 0.375, 0.2], "hsla(180, 62.5%, 37.5%, 0.2)", [0.140625, 0.609375, 0.609375, 0.2], "hsla(210, 62.5%, 37.5%, 0.2)", [0.140625, 0.375, 0.609375, 0.2], "hsla(240, 62.5%, 37.5%, 0.2)", [0.140625, 0.140625, 0.609375, 0.2], "hsla(270, 62.5%, 37.5%, 0.2)", [0.375, 0.140625, 0.609375, 0.2], "hsla(300, 62.5%, 37.5%, 0.2)", [0.609375, 0.140625, 0.609375, 0.2], "hsla(330, 62.5%, 37.5%, 0.2)", [0.609375, 0.140625, 0.375, 0.2], "hsla(0, 75%, 37.5%, 0.2)", [0.65625, 0.09375, 0.09375, 0.2], "hsla(30, 75%, 37.5%, 0.2)", [0.65625, 0.375, 0.09375, 0.2], "hsla(60, 75%, 37.5%, 0.2)", [0.65625, 0.65625, 0.09375, 0.2], "hsla(90, 75%, 37.5%, 0.2)", [0.375, 0.65625, 0.09375, 0.2], "hsla(120, 75%, 37.5%, 0.2)", [0.09375, 0.65625, 0.09375, 0.2], "hsla(150, 75%, 37.5%, 0.2)", [0.09375, 0.65625, 0.375, 0.2], "hsla(180, 75%, 37.5%, 0.2)", [0.09375, 0.65625, 0.65625, 0.2], "hsla(210, 75%, 37.5%, 0.2)", [0.09375, 0.375, 0.65625, 0.2], "hsla(240, 75%, 37.5%, 0.2)", [0.09375, 0.09375, 0.65625, 0.2], "hsla(270, 75%, 37.5%, 0.2)", [0.375, 0.09375, 0.65625, 0.2], "hsla(300, 75%, 37.5%, 0.2)", [0.65625, 0.09375, 0.65625, 0.2], "hsla(330, 75%, 37.5%, 0.2)", [0.65625, 0.09375, 0.375, 0.2], "hsla(0, 87.5%, 37.5%, 0.2)", [0.703125, 0.046875, 0.046875, 0.2], "hsla(30, 87.5%, 37.5%, 0.2)", [0.703125, 0.375, 0.046875, 0.2], "hsla(60, 87.5%, 37.5%, 0.2)", [0.703125, 0.703125, 0.046875, 0.2], "hsla(90, 87.5%, 37.5%, 0.2)", [0.375, 0.703125, 0.046875, 0.2], "hsla(120, 87.5%, 37.5%, 0.2)", [0.046875, 0.703125, 0.046875, 0.2], "hsla(150, 87.5%, 37.5%, 0.2)", [0.046875, 0.703125, 0.375, 0.2], "hsla(180, 87.5%, 37.5%, 0.2)", [0.046875, 0.703125, 0.703125, 0.2], "hsla(210, 87.5%, 37.5%, 0.2)", [0.046875, 0.375, 0.703125, 0.2], "hsla(240, 87.5%, 37.5%, 0.2)", [0.046875, 0.046875, 0.703125, 0.2], "hsla(270, 87.5%, 37.5%, 0.2)", [0.375, 0.046875, 0.703125, 0.2], "hsla(300, 87.5%, 37.5%, 0.2)", [0.703125, 0.046875, 0.703125, 0.2], "hsla(330, 87.5%, 37.5%, 0.2)", [0.703125, 0.046875, 0.375, 0.2], "hsla(0, 100%, 37.5%, 0.2)", [0.75, 0, 0, 0.2], "hsla(30, 100%, 37.5%, 0.2)", [0.75, 0.375, 0, 0.2], "hsla(60, 100%, 37.5%, 0.2)", [0.75, 0.75, 0, 0.2], "hsla(90, 100%, 37.5%, 0.2)", [0.375, 0.75, 0, 0.2], "hsla(120, 100%, 37.5%, 0.2)", [0, 0.75, 0, 0.2], "hsla(150, 100%, 37.5%, 0.2)", [0, 0.75, 0.375, 0.2], "hsla(180, 100%, 37.5%, 0.2)", [0, 0.75, 0.75, 0.2], "hsla(210, 100%, 37.5%, 0.2)", [0, 0.375, 0.75, 0.2], "hsla(240, 100%, 37.5%, 0.2)", [0, 0, 0.75, 0.2], "hsla(270, 100%, 37.5%, 0.2)", [0.375, 0, 0.75, 0.2], "hsla(300, 100%, 37.5%, 0.2)", [0.75, 0, 0.75, 0.2], "hsla(330, 100%, 37.5%, 0.2)", [0.75, 0, 0.375, 0.2], "hsla(0, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(30, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(60, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(90, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(120, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(150, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(180, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(210, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(240, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(270, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(300, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(330, 0%, 50%, 0.2)", [0.5, 0.5, 0.5, 0.2], "hsla(0, 12.5%, 50%, 0.2)", [0.5625, 0.4375, 0.4375, 0.2], "hsla(30, 12.5%, 50%, 0.2)", [0.5625, 0.5, 0.4375, 0.2], "hsla(60, 12.5%, 50%, 0.2)", [0.5625, 0.5625, 0.4375, 0.2], "hsla(90, 12.5%, 50%, 0.2)", [0.5, 0.5625, 0.4375, 0.2], "hsla(120, 12.5%, 50%, 0.2)", [0.4375, 0.5625, 0.4375, 0.2], "hsla(150, 12.5%, 50%, 0.2)", [0.4375, 0.5625, 0.5, 0.2], "hsla(180, 12.5%, 50%, 0.2)", [0.4375, 0.5625, 0.5625, 0.2], "hsla(210, 12.5%, 50%, 0.2)", [0.4375, 0.5, 0.5625, 0.2], "hsla(240, 12.5%, 50%, 0.2)", [0.4375, 0.4375, 0.5625, 0.2], "hsla(270, 12.5%, 50%, 0.2)", [0.5, 0.4375, 0.5625, 0.2], "hsla(300, 12.5%, 50%, 0.2)", [0.5625, 0.4375, 0.5625, 0.2], "hsla(330, 12.5%, 50%, 0.2)", [0.5625, 0.4375, 0.5, 0.2], "hsla(0, 25%, 50%, 0.2)", [0.625, 0.375, 0.375, 0.2], "hsla(30, 25%, 50%, 0.2)", [0.625, 0.5, 0.375, 0.2], "hsla(60, 25%, 50%, 0.2)", [0.625, 0.625, 0.375, 0.2], "hsla(90, 25%, 50%, 0.2)", [0.5, 0.625, 0.375, 0.2], "hsla(120, 25%, 50%, 0.2)", [0.375, 0.625, 0.375, 0.2], "hsla(150, 25%, 50%, 0.2)", [0.375, 0.625, 0.5, 0.2], "hsla(180, 25%, 50%, 0.2)", [0.375, 0.625, 0.625, 0.2], "hsla(210, 25%, 50%, 0.2)", [0.375, 0.5, 0.625, 0.2], "hsla(240, 25%, 50%, 0.2)", [0.375, 0.375, 0.625, 0.2], "hsla(270, 25%, 50%, 0.2)", [0.5, 0.375, 0.625, 0.2], "hsla(300, 25%, 50%, 0.2)", [0.625, 0.375, 0.625, 0.2], "hsla(330, 25%, 50%, 0.2)", [0.625, 0.375, 0.5, 0.2], "hsla(0, 37.5%, 50%, 0.2)", [0.6875, 0.3125, 0.3125, 0.2], "hsla(30, 37.5%, 50%, 0.2)", [0.6875, 0.5, 0.3125, 0.2], "hsla(60, 37.5%, 50%, 0.2)", [0.6875, 0.6875, 0.3125, 0.2], "hsla(90, 37.5%, 50%, 0.2)", [0.5, 0.6875, 0.3125, 0.2], "hsla(120, 37.5%, 50%, 0.2)", [0.3125, 0.6875, 0.3125, 0.2], "hsla(150, 37.5%, 50%, 0.2)", [0.3125, 0.6875, 0.5, 0.2], "hsla(180, 37.5%, 50%, 0.2)", [0.3125, 0.6875, 0.6875, 0.2], "hsla(210, 37.5%, 50%, 0.2)", [0.3125, 0.5, 0.6875, 0.2], "hsla(240, 37.5%, 50%, 0.2)", [0.3125, 0.3125, 0.6875, 0.2], "hsla(270, 37.5%, 50%, 0.2)", [0.5, 0.3125, 0.6875, 0.2], "hsla(300, 37.5%, 50%, 0.2)", [0.6875, 0.3125, 0.6875, 0.2], "hsla(330, 37.5%, 50%, 0.2)", [0.6875, 0.3125, 0.5, 0.2], "hsla(0, 50%, 50%, 0.2)", [0.75, 0.25, 0.25, 0.2], "hsla(30, 50%, 50%, 0.2)", [0.75, 0.5, 0.25, 0.2], "hsla(60, 50%, 50%, 0.2)", [0.75, 0.75, 0.25, 0.2], "hsla(90, 50%, 50%, 0.2)", [0.5, 0.75, 0.25, 0.2], "hsla(120, 50%, 50%, 0.2)", [0.25, 0.75, 0.25, 0.2], "hsla(150, 50%, 50%, 0.2)", [0.25, 0.75, 0.5, 0.2], "hsla(180, 50%, 50%, 0.2)", [0.25, 0.75, 0.75, 0.2], "hsla(210, 50%, 50%, 0.2)", [0.25, 0.5, 0.75, 0.2], "hsla(240, 50%, 50%, 0.2)", [0.25, 0.25, 0.75, 0.2], "hsla(270, 50%, 50%, 0.2)", [0.5, 0.25, 0.75, 0.2], "hsla(300, 50%, 50%, 0.2)", [0.75, 0.25, 0.75, 0.2], "hsla(330, 50%, 50%, 0.2)", [0.75, 0.25, 0.5, 0.2], "hsla(0, 62.5%, 50%, 0.2)", [0.8125, 0.1875, 0.1875, 0.2], "hsla(30, 62.5%, 50%, 0.2)", [0.8125, 0.5, 0.1875, 0.2], "hsla(60, 62.5%, 50%, 0.2)", [0.8125, 0.8125, 0.1875, 0.2], "hsla(90, 62.5%, 50%, 0.2)", [0.5, 0.8125, 0.1875, 0.2], "hsla(120, 62.5%, 50%, 0.2)", [0.1875, 0.8125, 0.1875, 0.2], "hsla(150, 62.5%, 50%, 0.2)", [0.1875, 0.8125, 0.5, 0.2], "hsla(180, 62.5%, 50%, 0.2)", [0.1875, 0.8125, 0.8125, 0.2], "hsla(210, 62.5%, 50%, 0.2)", [0.1875, 0.5, 0.8125, 0.2], "hsla(240, 62.5%, 50%, 0.2)", [0.1875, 0.1875, 0.8125, 0.2], "hsla(270, 62.5%, 50%, 0.2)", [0.5, 0.1875, 0.8125, 0.2], "hsla(300, 62.5%, 50%, 0.2)", [0.8125, 0.1875, 0.8125, 0.2], "hsla(330, 62.5%, 50%, 0.2)", [0.8125, 0.1875, 0.5, 0.2], "hsla(0, 75%, 50%, 0.2)", [0.875, 0.125, 0.125, 0.2], "hsla(30, 75%, 50%, 0.2)", [0.875, 0.5, 0.125, 0.2], "hsla(60, 75%, 50%, 0.2)", [0.875, 0.875, 0.125, 0.2], "hsla(90, 75%, 50%, 0.2)", [0.5, 0.875, 0.125, 0.2], "hsla(120, 75%, 50%, 0.2)", [0.125, 0.875, 0.125, 0.2], "hsla(150, 75%, 50%, 0.2)", [0.125, 0.875, 0.5, 0.2], "hsla(180, 75%, 50%, 0.2)", [0.125, 0.875, 0.875, 0.2], "hsla(210, 75%, 50%, 0.2)", [0.125, 0.5, 0.875, 0.2], "hsla(240, 75%, 50%, 0.2)", [0.125, 0.125, 0.875, 0.2], "hsla(270, 75%, 50%, 0.2)", [0.5, 0.125, 0.875, 0.2], "hsla(300, 75%, 50%, 0.2)", [0.875, 0.125, 0.875, 0.2], "hsla(330, 75%, 50%, 0.2)", [0.875, 0.125, 0.5, 0.2], "hsla(0, 87.5%, 50%, 0.2)", [0.9375, 0.0625, 0.0625, 0.2], "hsla(30, 87.5%, 50%, 0.2)", [0.9375, 0.5, 0.0625, 0.2], "hsla(60, 87.5%, 50%, 0.2)", [0.9375, 0.9375, 0.0625, 0.2], "hsla(90, 87.5%, 50%, 0.2)", [0.5, 0.9375, 0.0625, 0.2], "hsla(120, 87.5%, 50%, 0.2)", [0.0625, 0.9375, 0.0625, 0.2], "hsla(150, 87.5%, 50%, 0.2)", [0.0625, 0.9375, 0.5, 0.2], "hsla(180, 87.5%, 50%, 0.2)", [0.0625, 0.9375, 0.9375, 0.2], "hsla(210, 87.5%, 50%, 0.2)", [0.0625, 0.5, 0.9375, 0.2], "hsla(240, 87.5%, 50%, 0.2)", [0.0625, 0.0625, 0.9375, 0.2], "hsla(270, 87.5%, 50%, 0.2)", [0.5, 0.0625, 0.9375, 0.2], "hsla(300, 87.5%, 50%, 0.2)", [0.9375, 0.0625, 0.9375, 0.2], "hsla(330, 87.5%, 50%, 0.2)", [0.9375, 0.0625, 0.5, 0.2], "hsla(0, 100%, 50%, 0.2)", [1, 0, 0, 0.2], "hsla(30, 100%, 50%, 0.2)", [1, 0.5, 0, 0.2], "hsla(60, 100%, 50%, 0.2)", [1, 1, 0, 0.2], "hsla(90, 100%, 50%, 0.2)", [0.5, 1, 0, 0.2], "hsla(120, 100%, 50%, 0.2)", [0, 1, 0, 0.2], "hsla(150, 100%, 50%, 0.2)", [0, 1, 0.5, 0.2], "hsla(180, 100%, 50%, 0.2)", [0, 1, 1, 0.2], "hsla(210, 100%, 50%, 0.2)", [0, 0.5, 1, 0.2], "hsla(240, 100%, 50%, 0.2)", [0, 0, 1, 0.2], "hsla(270, 100%, 50%, 0.2)", [0.5, 0, 1, 0.2], "hsla(300, 100%, 50%, 0.2)", [1, 0, 1, 0.2], "hsla(330, 100%, 50%, 0.2)", [1, 0, 0.5, 0.2], "hsla(0, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(30, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(60, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(90, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(120, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(150, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(180, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(210, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(240, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(270, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(300, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(330, 0%, 62.5%, 0.2)", [0.625, 0.625, 0.625, 0.2], "hsla(0, 12.5%, 62.5%, 0.2)", [0.671875, 0.578125, 0.578125, 0.2], "hsla(30, 12.5%, 62.5%, 0.2)", [0.671875, 0.625, 0.578125, 0.2], "hsla(60, 12.5%, 62.5%, 0.2)", [0.671875, 0.671875, 0.578125, 0.2], "hsla(90, 12.5%, 62.5%, 0.2)", [0.625, 0.671875, 0.578125, 0.2], "hsla(120, 12.5%, 62.5%, 0.2)", [0.578125, 0.671875, 0.578125, 0.2], "hsla(150, 12.5%, 62.5%, 0.2)", [0.578125, 0.671875, 0.625, 0.2], "hsla(180, 12.5%, 62.5%, 0.2)", [0.578125, 0.671875, 0.671875, 0.2], "hsla(210, 12.5%, 62.5%, 0.2)", [0.578125, 0.625, 0.671875, 0.2], "hsla(240, 12.5%, 62.5%, 0.2)", [0.578125, 0.578125, 0.671875, 0.2], "hsla(270, 12.5%, 62.5%, 0.2)", [0.625, 0.578125, 0.671875, 0.2], "hsla(300, 12.5%, 62.5%, 0.2)", [0.671875, 0.578125, 0.671875, 0.2], "hsla(330, 12.5%, 62.5%, 0.2)", [0.671875, 0.578125, 0.625, 0.2], "hsla(0, 25%, 62.5%, 0.2)", [0.71875, 0.53125, 0.53125, 0.2], "hsla(30, 25%, 62.5%, 0.2)", [0.71875, 0.625, 0.53125, 0.2], "hsla(60, 25%, 62.5%, 0.2)", [0.71875, 0.71875, 0.53125, 0.2], "hsla(90, 25%, 62.5%, 0.2)", [0.625, 0.71875, 0.53125, 0.2], "hsla(120, 25%, 62.5%, 0.2)", [0.53125, 0.71875, 0.53125, 0.2], "hsla(150, 25%, 62.5%, 0.2)", [0.53125, 0.71875, 0.625, 0.2], "hsla(180, 25%, 62.5%, 0.2)", [0.53125, 0.71875, 0.71875, 0.2], "hsla(210, 25%, 62.5%, 0.2)", [0.53125, 0.625, 0.71875, 0.2], "hsla(240, 25%, 62.5%, 0.2)", [0.53125, 0.53125, 0.71875, 0.2], "hsla(270, 25%, 62.5%, 0.2)", [0.625, 0.53125, 0.71875, 0.2], "hsla(300, 25%, 62.5%, 0.2)", [0.71875, 0.53125, 0.71875, 0.2], "hsla(330, 25%, 62.5%, 0.2)", [0.71875, 0.53125, 0.625, 0.2], "hsla(0, 37.5%, 62.5%, 0.2)", [0.765625, 0.484375, 0.484375, 0.2], "hsla(30, 37.5%, 62.5%, 0.2)", [0.765625, 0.625, 0.484375, 0.2], "hsla(60, 37.5%, 62.5%, 0.2)", [0.765625, 0.765625, 0.484375, 0.2], "hsla(90, 37.5%, 62.5%, 0.2)", [0.625, 0.765625, 0.484375, 0.2], "hsla(120, 37.5%, 62.5%, 0.2)", [0.484375, 0.765625, 0.484375, 0.2], "hsla(150, 37.5%, 62.5%, 0.2)", [0.484375, 0.765625, 0.625, 0.2], "hsla(180, 37.5%, 62.5%, 0.2)", [0.484375, 0.765625, 0.765625, 0.2], "hsla(210, 37.5%, 62.5%, 0.2)", [0.484375, 0.625, 0.765625, 0.2], "hsla(240, 37.5%, 62.5%, 0.2)", [0.484375, 0.484375, 0.765625, 0.2], "hsla(270, 37.5%, 62.5%, 0.2)", [0.625, 0.484375, 0.765625, 0.2], "hsla(300, 37.5%, 62.5%, 0.2)", [0.765625, 0.484375, 0.765625, 0.2], "hsla(330, 37.5%, 62.5%, 0.2)", [0.765625, 0.484375, 0.625, 0.2], "hsla(0, 50%, 62.5%, 0.2)", [0.8125, 0.4375, 0.4375, 0.2], "hsla(30, 50%, 62.5%, 0.2)", [0.8125, 0.625, 0.4375, 0.2], "hsla(60, 50%, 62.5%, 0.2)", [0.8125, 0.8125, 0.4375, 0.2], "hsla(90, 50%, 62.5%, 0.2)", [0.625, 0.8125, 0.4375, 0.2], "hsla(120, 50%, 62.5%, 0.2)", [0.4375, 0.8125, 0.4375, 0.2], "hsla(150, 50%, 62.5%, 0.2)", [0.4375, 0.8125, 0.625, 0.2], "hsla(180, 50%, 62.5%, 0.2)", [0.4375, 0.8125, 0.8125, 0.2], "hsla(210, 50%, 62.5%, 0.2)", [0.4375, 0.625, 0.8125, 0.2], "hsla(240, 50%, 62.5%, 0.2)", [0.4375, 0.4375, 0.8125, 0.2], "hsla(270, 50%, 62.5%, 0.2)", [0.625, 0.4375, 0.8125, 0.2], "hsla(300, 50%, 62.5%, 0.2)", [0.8125, 0.4375, 0.8125, 0.2], "hsla(330, 50%, 62.5%, 0.2)", [0.8125, 0.4375, 0.625, 0.2], "hsla(0, 62.5%, 62.5%, 0.2)", [0.859375, 0.390625, 0.390625, 0.2], "hsla(30, 62.5%, 62.5%, 0.2)", [0.859375, 0.625, 0.390625, 0.2], "hsla(60, 62.5%, 62.5%, 0.2)", [0.859375, 0.859375, 0.390625, 0.2], "hsla(90, 62.5%, 62.5%, 0.2)", [0.625, 0.859375, 0.390625, 0.2], "hsla(120, 62.5%, 62.5%, 0.2)", [0.390625, 0.859375, 0.390625, 0.2], "hsla(150, 62.5%, 62.5%, 0.2)", [0.390625, 0.859375, 0.625, 0.2], "hsla(180, 62.5%, 62.5%, 0.2)", [0.390625, 0.859375, 0.859375, 0.2], "hsla(210, 62.5%, 62.5%, 0.2)", [0.390625, 0.625, 0.859375, 0.2], "hsla(240, 62.5%, 62.5%, 0.2)", [0.390625, 0.390625, 0.859375, 0.2], "hsla(270, 62.5%, 62.5%, 0.2)", [0.625, 0.390625, 0.859375, 0.2], "hsla(300, 62.5%, 62.5%, 0.2)", [0.859375, 0.390625, 0.859375, 0.2], "hsla(330, 62.5%, 62.5%, 0.2)", [0.859375, 0.390625, 0.625, 0.2], "hsla(0, 75%, 62.5%, 0.2)", [0.90625, 0.34375, 0.34375, 0.2], "hsla(30, 75%, 62.5%, 0.2)", [0.90625, 0.625, 0.34375, 0.2], "hsla(60, 75%, 62.5%, 0.2)", [0.90625, 0.90625, 0.34375, 0.2], "hsla(90, 75%, 62.5%, 0.2)", [0.625, 0.90625, 0.34375, 0.2], "hsla(120, 75%, 62.5%, 0.2)", [0.34375, 0.90625, 0.34375, 0.2], "hsla(150, 75%, 62.5%, 0.2)", [0.34375, 0.90625, 0.625, 0.2], "hsla(180, 75%, 62.5%, 0.2)", [0.34375, 0.90625, 0.90625, 0.2], "hsla(210, 75%, 62.5%, 0.2)", [0.34375, 0.625, 0.90625, 0.2], "hsla(240, 75%, 62.5%, 0.2)", [0.34375, 0.34375, 0.90625, 0.2], "hsla(270, 75%, 62.5%, 0.2)", [0.625, 0.34375, 0.90625, 0.2], "hsla(300, 75%, 62.5%, 0.2)", [0.90625, 0.34375, 0.90625, 0.2], "hsla(330, 75%, 62.5%, 0.2)", [0.90625, 0.34375, 0.625, 0.2], "hsla(0, 87.5%, 62.5%, 0.2)", [0.953125, 0.296875, 0.296875, 0.2], "hsla(30, 87.5%, 62.5%, 0.2)", [0.953125, 0.625, 0.296875, 0.2], "hsla(60, 87.5%, 62.5%, 0.2)", [0.953125, 0.953125, 0.296875, 0.2], "hsla(90, 87.5%, 62.5%, 0.2)", [0.625, 0.953125, 0.296875, 0.2], "hsla(120, 87.5%, 62.5%, 0.2)", [0.296875, 0.953125, 0.296875, 0.2], "hsla(150, 87.5%, 62.5%, 0.2)", [0.296875, 0.953125, 0.625, 0.2], "hsla(180, 87.5%, 62.5%, 0.2)", [0.296875, 0.953125, 0.953125, 0.2], "hsla(210, 87.5%, 62.5%, 0.2)", [0.296875, 0.625, 0.953125, 0.2], "hsla(240, 87.5%, 62.5%, 0.2)", [0.296875, 0.296875, 0.953125, 0.2], "hsla(270, 87.5%, 62.5%, 0.2)", [0.625, 0.296875, 0.953125, 0.2], "hsla(300, 87.5%, 62.5%, 0.2)", [0.953125, 0.296875, 0.953125, 0.2], "hsla(330, 87.5%, 62.5%, 0.2)", [0.953125, 0.296875, 0.625, 0.2], "hsla(0, 100%, 62.5%, 0.2)", [1, 0.25, 0.25, 0.2], "hsla(30, 100%, 62.5%, 0.2)", [1, 0.625, 0.25, 0.2], "hsla(60, 100%, 62.5%, 0.2)", [1, 1, 0.25, 0.2], "hsla(90, 100%, 62.5%, 0.2)", [0.625, 1, 0.25, 0.2], "hsla(120, 100%, 62.5%, 0.2)", [0.25, 1, 0.25, 0.2], "hsla(150, 100%, 62.5%, 0.2)", [0.25, 1, 0.625, 0.2], "hsla(180, 100%, 62.5%, 0.2)", [0.25, 1, 1, 0.2], "hsla(210, 100%, 62.5%, 0.2)", [0.25, 0.625, 1, 0.2], "hsla(240, 100%, 62.5%, 0.2)", [0.25, 0.25, 1, 0.2], "hsla(270, 100%, 62.5%, 0.2)", [0.625, 0.25, 1, 0.2], "hsla(300, 100%, 62.5%, 0.2)", [1, 0.25, 1, 0.2], "hsla(330, 100%, 62.5%, 0.2)", [1, 0.25, 0.625, 0.2], "hsla(0, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(30, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(60, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(90, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(120, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(150, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(180, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(210, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(240, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(270, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(300, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(330, 0%, 75%, 0.2)", [0.75, 0.75, 0.75, 0.2], "hsla(0, 12.5%, 75%, 0.2)", [0.78125, 0.71875, 0.71875, 0.2], "hsla(30, 12.5%, 75%, 0.2)", [0.78125, 0.75, 0.71875, 0.2], "hsla(60, 12.5%, 75%, 0.2)", [0.78125, 0.78125, 0.71875, 0.2], "hsla(90, 12.5%, 75%, 0.2)", [0.75, 0.78125, 0.71875, 0.2], "hsla(120, 12.5%, 75%, 0.2)", [0.71875, 0.78125, 0.71875, 0.2], "hsla(150, 12.5%, 75%, 0.2)", [0.71875, 0.78125, 0.75, 0.2], "hsla(180, 12.5%, 75%, 0.2)", [0.71875, 0.78125, 0.78125, 0.2], "hsla(210, 12.5%, 75%, 0.2)", [0.71875, 0.75, 0.78125, 0.2], "hsla(240, 12.5%, 75%, 0.2)", [0.71875, 0.71875, 0.78125, 0.2], "hsla(270, 12.5%, 75%, 0.2)", [0.75, 0.71875, 0.78125, 0.2], "hsla(300, 12.5%, 75%, 0.2)", [0.78125, 0.71875, 0.78125, 0.2], "hsla(330, 12.5%, 75%, 0.2)", [0.78125, 0.71875, 0.75, 0.2], "hsla(0, 25%, 75%, 0.2)", [0.8125, 0.6875, 0.6875, 0.2], "hsla(30, 25%, 75%, 0.2)", [0.8125, 0.75, 0.6875, 0.2], "hsla(60, 25%, 75%, 0.2)", [0.8125, 0.8125, 0.6875, 0.2], "hsla(90, 25%, 75%, 0.2)", [0.75, 0.8125, 0.6875, 0.2], "hsla(120, 25%, 75%, 0.2)", [0.6875, 0.8125, 0.6875, 0.2], "hsla(150, 25%, 75%, 0.2)", [0.6875, 0.8125, 0.75, 0.2], "hsla(180, 25%, 75%, 0.2)", [0.6875, 0.8125, 0.8125, 0.2], "hsla(210, 25%, 75%, 0.2)", [0.6875, 0.75, 0.8125, 0.2], "hsla(240, 25%, 75%, 0.2)", [0.6875, 0.6875, 0.8125, 0.2], "hsla(270, 25%, 75%, 0.2)", [0.75, 0.6875, 0.8125, 0.2], "hsla(300, 25%, 75%, 0.2)", [0.8125, 0.6875, 0.8125, 0.2], "hsla(330, 25%, 75%, 0.2)", [0.8125, 0.6875, 0.75, 0.2], "hsla(0, 37.5%, 75%, 0.2)", [0.84375, 0.65625, 0.65625, 0.2], "hsla(30, 37.5%, 75%, 0.2)", [0.84375, 0.75, 0.65625, 0.2], "hsla(60, 37.5%, 75%, 0.2)", [0.84375, 0.84375, 0.65625, 0.2], "hsla(90, 37.5%, 75%, 0.2)", [0.75, 0.84375, 0.65625, 0.2], "hsla(120, 37.5%, 75%, 0.2)", [0.65625, 0.84375, 0.65625, 0.2], "hsla(150, 37.5%, 75%, 0.2)", [0.65625, 0.84375, 0.75, 0.2], "hsla(180, 37.5%, 75%, 0.2)", [0.65625, 0.84375, 0.84375, 0.2], "hsla(210, 37.5%, 75%, 0.2)", [0.65625, 0.75, 0.84375, 0.2], "hsla(240, 37.5%, 75%, 0.2)", [0.65625, 0.65625, 0.84375, 0.2], "hsla(270, 37.5%, 75%, 0.2)", [0.75, 0.65625, 0.84375, 0.2], "hsla(300, 37.5%, 75%, 0.2)", [0.84375, 0.65625, 0.84375, 0.2], "hsla(330, 37.5%, 75%, 0.2)", [0.84375, 0.65625, 0.75, 0.2], "hsla(0, 50%, 75%, 0.2)", [0.875, 0.625, 0.625, 0.2], "hsla(30, 50%, 75%, 0.2)", [0.875, 0.75, 0.625, 0.2], "hsla(60, 50%, 75%, 0.2)", [0.875, 0.875, 0.625, 0.2], "hsla(90, 50%, 75%, 0.2)", [0.75, 0.875, 0.625, 0.2], "hsla(120, 50%, 75%, 0.2)", [0.625, 0.875, 0.625, 0.2], "hsla(150, 50%, 75%, 0.2)", [0.625, 0.875, 0.75, 0.2], "hsla(180, 50%, 75%, 0.2)", [0.625, 0.875, 0.875, 0.2], "hsla(210, 50%, 75%, 0.2)", [0.625, 0.75, 0.875, 0.2], "hsla(240, 50%, 75%, 0.2)", [0.625, 0.625, 0.875, 0.2], "hsla(270, 50%, 75%, 0.2)", [0.75, 0.625, 0.875, 0.2], "hsla(300, 50%, 75%, 0.2)", [0.875, 0.625, 0.875, 0.2], "hsla(330, 50%, 75%, 0.2)", [0.875, 0.625, 0.75, 0.2], "hsla(0, 62.5%, 75%, 0.2)", [0.90625, 0.59375, 0.59375, 0.2], "hsla(30, 62.5%, 75%, 0.2)", [0.90625, 0.75, 0.59375, 0.2], "hsla(60, 62.5%, 75%, 0.2)", [0.90625, 0.90625, 0.59375, 0.2], "hsla(90, 62.5%, 75%, 0.2)", [0.75, 0.90625, 0.59375, 0.2], "hsla(120, 62.5%, 75%, 0.2)", [0.59375, 0.90625, 0.59375, 0.2], "hsla(150, 62.5%, 75%, 0.2)", [0.59375, 0.90625, 0.75, 0.2], "hsla(180, 62.5%, 75%, 0.2)", [0.59375, 0.90625, 0.90625, 0.2], "hsla(210, 62.5%, 75%, 0.2)", [0.59375, 0.75, 0.90625, 0.2], "hsla(240, 62.5%, 75%, 0.2)", [0.59375, 0.59375, 0.90625, 0.2], "hsla(270, 62.5%, 75%, 0.2)", [0.75, 0.59375, 0.90625, 0.2], "hsla(300, 62.5%, 75%, 0.2)", [0.90625, 0.59375, 0.90625, 0.2], "hsla(330, 62.5%, 75%, 0.2)", [0.90625, 0.59375, 0.75, 0.2], "hsla(0, 75%, 75%, 0.2)", [0.9375, 0.5625, 0.5625, 0.2], "hsla(30, 75%, 75%, 0.2)", [0.9375, 0.75, 0.5625, 0.2], "hsla(60, 75%, 75%, 0.2)", [0.9375, 0.9375, 0.5625, 0.2], "hsla(90, 75%, 75%, 0.2)", [0.75, 0.9375, 0.5625, 0.2], "hsla(120, 75%, 75%, 0.2)", [0.5625, 0.9375, 0.5625, 0.2], "hsla(150, 75%, 75%, 0.2)", [0.5625, 0.9375, 0.75, 0.2], "hsla(180, 75%, 75%, 0.2)", [0.5625, 0.9375, 0.9375, 0.2], "hsla(210, 75%, 75%, 0.2)", [0.5625, 0.75, 0.9375, 0.2], "hsla(240, 75%, 75%, 0.2)", [0.5625, 0.5625, 0.9375, 0.2], "hsla(270, 75%, 75%, 0.2)", [0.75, 0.5625, 0.9375, 0.2], "hsla(300, 75%, 75%, 0.2)", [0.9375, 0.5625, 0.9375, 0.2], "hsla(330, 75%, 75%, 0.2)", [0.9375, 0.5625, 0.75, 0.2], "hsla(0, 87.5%, 75%, 0.2)", [0.96875, 0.53125, 0.53125, 0.2], "hsla(30, 87.5%, 75%, 0.2)", [0.96875, 0.75, 0.53125, 0.2], "hsla(60, 87.5%, 75%, 0.2)", [0.96875, 0.96875, 0.53125, 0.2], "hsla(90, 87.5%, 75%, 0.2)", [0.75, 0.96875, 0.53125, 0.2], "hsla(120, 87.5%, 75%, 0.2)", [0.53125, 0.96875, 0.53125, 0.2], "hsla(150, 87.5%, 75%, 0.2)", [0.53125, 0.96875, 0.75, 0.2], "hsla(180, 87.5%, 75%, 0.2)", [0.53125, 0.96875, 0.96875, 0.2], "hsla(210, 87.5%, 75%, 0.2)", [0.53125, 0.75, 0.96875, 0.2], "hsla(240, 87.5%, 75%, 0.2)", [0.53125, 0.53125, 0.96875, 0.2], "hsla(270, 87.5%, 75%, 0.2)", [0.75, 0.53125, 0.96875, 0.2], "hsla(300, 87.5%, 75%, 0.2)", [0.96875, 0.53125, 0.96875, 0.2], "hsla(330, 87.5%, 75%, 0.2)", [0.96875, 0.53125, 0.75, 0.2], "hsla(0, 100%, 75%, 0.2)", [1, 0.5, 0.5, 0.2], "hsla(30, 100%, 75%, 0.2)", [1, 0.75, 0.5, 0.2], "hsla(60, 100%, 75%, 0.2)", [1, 1, 0.5, 0.2], "hsla(90, 100%, 75%, 0.2)", [0.75, 1, 0.5, 0.2], "hsla(120, 100%, 75%, 0.2)", [0.5, 1, 0.5, 0.2], "hsla(150, 100%, 75%, 0.2)", [0.5, 1, 0.75, 0.2], "hsla(180, 100%, 75%, 0.2)", [0.5, 1, 1, 0.2], "hsla(210, 100%, 75%, 0.2)", [0.5, 0.75, 1, 0.2], "hsla(240, 100%, 75%, 0.2)", [0.5, 0.5, 1, 0.2], "hsla(270, 100%, 75%, 0.2)", [0.75, 0.5, 1, 0.2], "hsla(300, 100%, 75%, 0.2)", [1, 0.5, 1, 0.2], "hsla(330, 100%, 75%, 0.2)", [1, 0.5, 0.75, 0.2], "hsla(0, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(30, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(60, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(90, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(120, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(150, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(180, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(210, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(240, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(270, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(300, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(330, 0%, 87.5%, 0.2)", [0.875, 0.875, 0.875, 0.2], "hsla(0, 12.5%, 87.5%, 0.2)", [0.890625, 0.859375, 0.859375, 0.2], "hsla(30, 12.5%, 87.5%, 0.2)", [0.890625, 0.875, 0.859375, 0.2], "hsla(60, 12.5%, 87.5%, 0.2)", [0.890625, 0.890625, 0.859375, 0.2], "hsla(90, 12.5%, 87.5%, 0.2)", [0.875, 0.890625, 0.859375, 0.2], "hsla(120, 12.5%, 87.5%, 0.2)", [0.859375, 0.890625, 0.859375, 0.2], "hsla(150, 12.5%, 87.5%, 0.2)", [0.859375, 0.890625, 0.875, 0.2], "hsla(180, 12.5%, 87.5%, 0.2)", [0.859375, 0.890625, 0.890625, 0.2], "hsla(210, 12.5%, 87.5%, 0.2)", [0.859375, 0.875, 0.890625, 0.2], "hsla(240, 12.5%, 87.5%, 0.2)", [0.859375, 0.859375, 0.890625, 0.2], "hsla(270, 12.5%, 87.5%, 0.2)", [0.875, 0.859375, 0.890625, 0.2], "hsla(300, 12.5%, 87.5%, 0.2)", [0.890625, 0.859375, 0.890625, 0.2], "hsla(330, 12.5%, 87.5%, 0.2)", [0.890625, 0.859375, 0.875, 0.2], "hsla(0, 25%, 87.5%, 0.2)", [0.90625, 0.84375, 0.84375, 0.2], "hsla(30, 25%, 87.5%, 0.2)", [0.90625, 0.875, 0.84375, 0.2], "hsla(60, 25%, 87.5%, 0.2)", [0.90625, 0.90625, 0.84375, 0.2], "hsla(90, 25%, 87.5%, 0.2)", [0.875, 0.90625, 0.84375, 0.2], "hsla(120, 25%, 87.5%, 0.2)", [0.84375, 0.90625, 0.84375, 0.2], "hsla(150, 25%, 87.5%, 0.2)", [0.84375, 0.90625, 0.875, 0.2], "hsla(180, 25%, 87.5%, 0.2)", [0.84375, 0.90625, 0.90625, 0.2], "hsla(210, 25%, 87.5%, 0.2)", [0.84375, 0.875, 0.90625, 0.2], "hsla(240, 25%, 87.5%, 0.2)", [0.84375, 0.84375, 0.90625, 0.2], "hsla(270, 25%, 87.5%, 0.2)", [0.875, 0.84375, 0.90625, 0.2], "hsla(300, 25%, 87.5%, 0.2)", [0.90625, 0.84375, 0.90625, 0.2], "hsla(330, 25%, 87.5%, 0.2)", [0.90625, 0.84375, 0.875, 0.2], "hsla(0, 37.5%, 87.5%, 0.2)", [0.921875, 0.828125, 0.828125, 0.2], "hsla(30, 37.5%, 87.5%, 0.2)", [0.921875, 0.875, 0.828125, 0.2], "hsla(60, 37.5%, 87.5%, 0.2)", [0.921875, 0.921875, 0.828125, 0.2], "hsla(90, 37.5%, 87.5%, 0.2)", [0.875, 0.921875, 0.828125, 0.2], "hsla(120, 37.5%, 87.5%, 0.2)", [0.828125, 0.921875, 0.828125, 0.2], "hsla(150, 37.5%, 87.5%, 0.2)", [0.828125, 0.921875, 0.875, 0.2], "hsla(180, 37.5%, 87.5%, 0.2)", [0.828125, 0.921875, 0.921875, 0.2], "hsla(210, 37.5%, 87.5%, 0.2)", [0.828125, 0.875, 0.921875, 0.2], "hsla(240, 37.5%, 87.5%, 0.2)", [0.828125, 0.828125, 0.921875, 0.2], "hsla(270, 37.5%, 87.5%, 0.2)", [0.875, 0.828125, 0.921875, 0.2], "hsla(300, 37.5%, 87.5%, 0.2)", [0.921875, 0.828125, 0.921875, 0.2], "hsla(330, 37.5%, 87.5%, 0.2)", [0.921875, 0.828125, 0.875, 0.2], "hsla(0, 50%, 87.5%, 0.2)", [0.9375, 0.8125, 0.8125, 0.2], "hsla(30, 50%, 87.5%, 0.2)", [0.9375, 0.875, 0.8125, 0.2], "hsla(60, 50%, 87.5%, 0.2)", [0.9375, 0.9375, 0.8125, 0.2], "hsla(90, 50%, 87.5%, 0.2)", [0.875, 0.9375, 0.8125, 0.2], "hsla(120, 50%, 87.5%, 0.2)", [0.8125, 0.9375, 0.8125, 0.2], "hsla(150, 50%, 87.5%, 0.2)", [0.8125, 0.9375, 0.875, 0.2], "hsla(180, 50%, 87.5%, 0.2)", [0.8125, 0.9375, 0.9375, 0.2], "hsla(210, 50%, 87.5%, 0.2)", [0.8125, 0.875, 0.9375, 0.2], "hsla(240, 50%, 87.5%, 0.2)", [0.8125, 0.8125, 0.9375, 0.2], "hsla(270, 50%, 87.5%, 0.2)", [0.875, 0.8125, 0.9375, 0.2], "hsla(300, 50%, 87.5%, 0.2)", [0.9375, 0.8125, 0.9375, 0.2], "hsla(330, 50%, 87.5%, 0.2)", [0.9375, 0.8125, 0.875, 0.2], "hsla(0, 62.5%, 87.5%, 0.2)", [0.953125, 0.796875, 0.796875, 0.2], "hsla(30, 62.5%, 87.5%, 0.2)", [0.953125, 0.875, 0.796875, 0.2], "hsla(60, 62.5%, 87.5%, 0.2)", [0.953125, 0.953125, 0.796875, 0.2], "hsla(90, 62.5%, 87.5%, 0.2)", [0.875, 0.953125, 0.796875, 0.2], "hsla(120, 62.5%, 87.5%, 0.2)", [0.796875, 0.953125, 0.796875, 0.2], "hsla(150, 62.5%, 87.5%, 0.2)", [0.796875, 0.953125, 0.875, 0.2], "hsla(180, 62.5%, 87.5%, 0.2)", [0.796875, 0.953125, 0.953125, 0.2], "hsla(210, 62.5%, 87.5%, 0.2)", [0.796875, 0.875, 0.953125, 0.2], "hsla(240, 62.5%, 87.5%, 0.2)", [0.796875, 0.796875, 0.953125, 0.2], "hsla(270, 62.5%, 87.5%, 0.2)", [0.875, 0.796875, 0.953125, 0.2], "hsla(300, 62.5%, 87.5%, 0.2)", [0.953125, 0.796875, 0.953125, 0.2], "hsla(330, 62.5%, 87.5%, 0.2)", [0.953125, 0.796875, 0.875, 0.2], "hsla(0, 75%, 87.5%, 0.2)", [0.96875, 0.78125, 0.78125, 0.2], "hsla(30, 75%, 87.5%, 0.2)", [0.96875, 0.875, 0.78125, 0.2], "hsla(60, 75%, 87.5%, 0.2)", [0.96875, 0.96875, 0.78125, 0.2], "hsla(90, 75%, 87.5%, 0.2)", [0.875, 0.96875, 0.78125, 0.2], "hsla(120, 75%, 87.5%, 0.2)", [0.78125, 0.96875, 0.78125, 0.2], "hsla(150, 75%, 87.5%, 0.2)", [0.78125, 0.96875, 0.875, 0.2], "hsla(180, 75%, 87.5%, 0.2)", [0.78125, 0.96875, 0.96875, 0.2], "hsla(210, 75%, 87.5%, 0.2)", [0.78125, 0.875, 0.96875, 0.2], "hsla(240, 75%, 87.5%, 0.2)", [0.78125, 0.78125, 0.96875, 0.2], "hsla(270, 75%, 87.5%, 0.2)", [0.875, 0.78125, 0.96875, 0.2], "hsla(300, 75%, 87.5%, 0.2)", [0.96875, 0.78125, 0.96875, 0.2], "hsla(330, 75%, 87.5%, 0.2)", [0.96875, 0.78125, 0.875, 0.2], "hsla(0, 87.5%, 87.5%, 0.2)", [0.984375, 0.765625, 0.765625, 0.2], "hsla(30, 87.5%, 87.5%, 0.2)", [0.984375, 0.875, 0.765625, 0.2], "hsla(60, 87.5%, 87.5%, 0.2)", [0.984375, 0.984375, 0.765625, 0.2], "hsla(90, 87.5%, 87.5%, 0.2)", [0.875, 0.984375, 0.765625, 0.2], "hsla(120, 87.5%, 87.5%, 0.2)", [0.765625, 0.984375, 0.765625, 0.2], "hsla(150, 87.5%, 87.5%, 0.2)", [0.765625, 0.984375, 0.875, 0.2], "hsla(180, 87.5%, 87.5%, 0.2)", [0.765625, 0.984375, 0.984375, 0.2], "hsla(210, 87.5%, 87.5%, 0.2)", [0.765625, 0.875, 0.984375, 0.2], "hsla(240, 87.5%, 87.5%, 0.2)", [0.765625, 0.765625, 0.984375, 0.2], "hsla(270, 87.5%, 87.5%, 0.2)", [0.875, 0.765625, 0.984375, 0.2], "hsla(300, 87.5%, 87.5%, 0.2)", [0.984375, 0.765625, 0.984375, 0.2], "hsla(330, 87.5%, 87.5%, 0.2)", [0.984375, 0.765625, 0.875, 0.2], "hsla(0, 100%, 87.5%, 0.2)", [1, 0.75, 0.75, 0.2], "hsla(30, 100%, 87.5%, 0.2)", [1, 0.875, 0.75, 0.2], "hsla(60, 100%, 87.5%, 0.2)", [1, 1, 0.75, 0.2], "hsla(90, 100%, 87.5%, 0.2)", [0.875, 1, 0.75, 0.2], "hsla(120, 100%, 87.5%, 0.2)", [0.75, 1, 0.75, 0.2], "hsla(150, 100%, 87.5%, 0.2)", [0.75, 1, 0.875, 0.2], "hsla(180, 100%, 87.5%, 0.2)", [0.75, 1, 1, 0.2], "hsla(210, 100%, 87.5%, 0.2)", [0.75, 0.875, 1, 0.2], "hsla(240, 100%, 87.5%, 0.2)", [0.75, 0.75, 1, 0.2], "hsla(270, 100%, 87.5%, 0.2)", [0.875, 0.75, 1, 0.2], "hsla(300, 100%, 87.5%, 0.2)", [1, 0.75, 1, 0.2], "hsla(330, 100%, 87.5%, 0.2)", [1, 0.75, 0.875, 0.2], "hsla(0, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(30, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(60, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(90, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(120, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(150, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(180, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(210, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(240, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(270, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(300, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(330, 0%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(0, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(30, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(60, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(90, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(120, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(150, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(180, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(210, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(240, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(270, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(300, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(330, 12.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(0, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(30, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(60, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(90, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(120, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(150, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(180, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(210, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(240, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(270, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(300, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(330, 25%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(0, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(30, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(60, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(90, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(120, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(150, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(180, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(210, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(240, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(270, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(300, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(330, 37.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(0, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(30, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(60, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(90, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(120, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(150, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(180, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(210, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(240, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(270, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(300, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(330, 50%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(0, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(30, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(60, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(90, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(120, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(150, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(180, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(210, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(240, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(270, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(300, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(330, 62.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(0, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(30, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(60, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(90, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(120, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(150, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(180, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(210, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(240, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(270, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(300, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(330, 75%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(0, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(30, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(60, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(90, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(120, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(150, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(180, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(210, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(240, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(270, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(300, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(330, 87.5%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(0, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(30, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(60, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(90, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(120, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(150, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(180, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(210, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(240, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(270, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(300, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(330, 100%, 100%, 0.2)", [1, 1, 1, 0.2], "hsla(0, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(30, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(60, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(90, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(120, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(150, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(180, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(210, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(240, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(270, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(300, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(330, 0%, 0%, 0)", [0, 0, 0, 0], "hsla(0, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(30, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(60, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(90, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(120, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(150, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(180, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(210, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(240, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(270, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(300, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(330, 12.5%, 0%, 0)", [0, 0, 0, 0], "hsla(0, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(30, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(60, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(90, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(120, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(150, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(180, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(210, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(240, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(270, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(300, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(330, 25%, 0%, 0)", [0, 0, 0, 0], "hsla(0, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(30, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(60, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(90, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(120, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(150, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(180, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(210, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(240, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(270, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(300, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(330, 37.5%, 0%, 0)", [0, 0, 0, 0], "hsla(0, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(30, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(60, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(90, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(120, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(150, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(180, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(210, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(240, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(270, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(300, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(330, 50%, 0%, 0)", [0, 0, 0, 0], "hsla(0, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(30, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(60, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(90, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(120, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(150, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(180, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(210, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(240, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(270, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(300, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(330, 62.5%, 0%, 0)", [0, 0, 0, 0], "hsla(0, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(30, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(60, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(90, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(120, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(150, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(180, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(210, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(240, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(270, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(300, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(330, 75%, 0%, 0)", [0, 0, 0, 0], "hsla(0, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(30, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(60, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(90, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(120, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(150, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(180, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(210, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(240, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(270, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(300, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(330, 87.5%, 0%, 0)", [0, 0, 0, 0], "hsla(0, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(30, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(60, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(90, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(120, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(150, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(180, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(210, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(240, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(270, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(300, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(330, 100%, 0%, 0)", [0, 0, 0, 0], "hsla(0, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(30, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(60, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(90, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(120, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(150, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(180, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(210, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(240, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(270, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(300, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(330, 0%, 12.5%, 0)", [0.125, 0.125, 0.125, 0], "hsla(0, 12.5%, 12.5%, 0)", [0.140625, 0.109375, 0.109375, 0], "hsla(30, 12.5%, 12.5%, 0)", [0.140625, 0.125, 0.109375, 0], "hsla(60, 12.5%, 12.5%, 0)", [0.140625, 0.140625, 0.109375, 0], "hsla(90, 12.5%, 12.5%, 0)", [0.125, 0.140625, 0.109375, 0], "hsla(120, 12.5%, 12.5%, 0)", [0.109375, 0.140625, 0.109375, 0], "hsla(150, 12.5%, 12.5%, 0)", [0.109375, 0.140625, 0.125, 0], "hsla(180, 12.5%, 12.5%, 0)", [0.109375, 0.140625, 0.140625, 0], "hsla(210, 12.5%, 12.5%, 0)", [0.109375, 0.125, 0.140625, 0], "hsla(240, 12.5%, 12.5%, 0)", [0.109375, 0.109375, 0.140625, 0], "hsla(270, 12.5%, 12.5%, 0)", [0.125, 0.109375, 0.140625, 0], "hsla(300, 12.5%, 12.5%, 0)", [0.140625, 0.109375, 0.140625, 0], "hsla(330, 12.5%, 12.5%, 0)", [0.140625, 0.109375, 0.125, 0], "hsla(0, 25%, 12.5%, 0)", [0.15625, 0.09375, 0.09375, 0], "hsla(30, 25%, 12.5%, 0)", [0.15625, 0.125, 0.09375, 0], "hsla(60, 25%, 12.5%, 0)", [0.15625, 0.15625, 0.09375, 0], "hsla(90, 25%, 12.5%, 0)", [0.125, 0.15625, 0.09375, 0], "hsla(120, 25%, 12.5%, 0)", [0.09375, 0.15625, 0.09375, 0], "hsla(150, 25%, 12.5%, 0)", [0.09375, 0.15625, 0.125, 0], "hsla(180, 25%, 12.5%, 0)", [0.09375, 0.15625, 0.15625, 0], "hsla(210, 25%, 12.5%, 0)", [0.09375, 0.125, 0.15625, 0], "hsla(240, 25%, 12.5%, 0)", [0.09375, 0.09375, 0.15625, 0], "hsla(270, 25%, 12.5%, 0)", [0.125, 0.09375, 0.15625, 0], "hsla(300, 25%, 12.5%, 0)", [0.15625, 0.09375, 0.15625, 0], "hsla(330, 25%, 12.5%, 0)", [0.15625, 0.09375, 0.125, 0], "hsla(0, 37.5%, 12.5%, 0)", [0.171875, 0.078125, 0.078125, 0], "hsla(30, 37.5%, 12.5%, 0)", [0.171875, 0.125, 0.078125, 0], "hsla(60, 37.5%, 12.5%, 0)", [0.171875, 0.171875, 0.078125, 0], "hsla(90, 37.5%, 12.5%, 0)", [0.125, 0.171875, 0.078125, 0], "hsla(120, 37.5%, 12.5%, 0)", [0.078125, 0.171875, 0.078125, 0], "hsla(150, 37.5%, 12.5%, 0)", [0.078125, 0.171875, 0.125, 0], "hsla(180, 37.5%, 12.5%, 0)", [0.078125, 0.171875, 0.171875, 0], "hsla(210, 37.5%, 12.5%, 0)", [0.078125, 0.125, 0.171875, 0], "hsla(240, 37.5%, 12.5%, 0)", [0.078125, 0.078125, 0.171875, 0], "hsla(270, 37.5%, 12.5%, 0)", [0.125, 0.078125, 0.171875, 0], "hsla(300, 37.5%, 12.5%, 0)", [0.171875, 0.078125, 0.171875, 0], "hsla(330, 37.5%, 12.5%, 0)", [0.171875, 0.078125, 0.125, 0], "hsla(0, 50%, 12.5%, 0)", [0.1875, 0.0625, 0.0625, 0], "hsla(30, 50%, 12.5%, 0)", [0.1875, 0.125, 0.0625, 0], "hsla(60, 50%, 12.5%, 0)", [0.1875, 0.1875, 0.0625, 0], "hsla(90, 50%, 12.5%, 0)", [0.125, 0.1875, 0.0625, 0], "hsla(120, 50%, 12.5%, 0)", [0.0625, 0.1875, 0.0625, 0], "hsla(150, 50%, 12.5%, 0)", [0.0625, 0.1875, 0.125, 0], "hsla(180, 50%, 12.5%, 0)", [0.0625, 0.1875, 0.1875, 0], "hsla(210, 50%, 12.5%, 0)", [0.0625, 0.125, 0.1875, 0], "hsla(240, 50%, 12.5%, 0)", [0.0625, 0.0625, 0.1875, 0], "hsla(270, 50%, 12.5%, 0)", [0.125, 0.0625, 0.1875, 0], "hsla(300, 50%, 12.5%, 0)", [0.1875, 0.0625, 0.1875, 0], "hsla(330, 50%, 12.5%, 0)", [0.1875, 0.0625, 0.125, 0], "hsla(0, 62.5%, 12.5%, 0)", [0.203125, 0.046875, 0.046875, 0], "hsla(30, 62.5%, 12.5%, 0)", [0.203125, 0.125, 0.046875, 0], "hsla(60, 62.5%, 12.5%, 0)", [0.203125, 0.203125, 0.046875, 0], "hsla(90, 62.5%, 12.5%, 0)", [0.125, 0.203125, 0.046875, 0], "hsla(120, 62.5%, 12.5%, 0)", [0.046875, 0.203125, 0.046875, 0], "hsla(150, 62.5%, 12.5%, 0)", [0.046875, 0.203125, 0.125, 0], "hsla(180, 62.5%, 12.5%, 0)", [0.046875, 0.203125, 0.203125, 0], "hsla(210, 62.5%, 12.5%, 0)", [0.046875, 0.125, 0.203125, 0], "hsla(240, 62.5%, 12.5%, 0)", [0.046875, 0.046875, 0.203125, 0], "hsla(270, 62.5%, 12.5%, 0)", [0.125, 0.046875, 0.203125, 0], "hsla(300, 62.5%, 12.5%, 0)", [0.203125, 0.046875, 0.203125, 0], "hsla(330, 62.5%, 12.5%, 0)", [0.203125, 0.046875, 0.125, 0], "hsla(0, 75%, 12.5%, 0)", [0.21875, 0.03125, 0.03125, 0], "hsla(30, 75%, 12.5%, 0)", [0.21875, 0.125, 0.03125, 0], "hsla(60, 75%, 12.5%, 0)", [0.21875, 0.21875, 0.03125, 0], "hsla(90, 75%, 12.5%, 0)", [0.125, 0.21875, 0.03125, 0], "hsla(120, 75%, 12.5%, 0)", [0.03125, 0.21875, 0.03125, 0], "hsla(150, 75%, 12.5%, 0)", [0.03125, 0.21875, 0.125, 0], "hsla(180, 75%, 12.5%, 0)", [0.03125, 0.21875, 0.21875, 0], "hsla(210, 75%, 12.5%, 0)", [0.03125, 0.125, 0.21875, 0], "hsla(240, 75%, 12.5%, 0)", [0.03125, 0.03125, 0.21875, 0], "hsla(270, 75%, 12.5%, 0)", [0.125, 0.03125, 0.21875, 0], "hsla(300, 75%, 12.5%, 0)", [0.21875, 0.03125, 0.21875, 0], "hsla(330, 75%, 12.5%, 0)", [0.21875, 0.03125, 0.125, 0], "hsla(0, 87.5%, 12.5%, 0)", [0.234375, 0.015625, 0.015625, 0], "hsla(30, 87.5%, 12.5%, 0)", [0.234375, 0.125, 0.015625, 0], "hsla(60, 87.5%, 12.5%, 0)", [0.234375, 0.234375, 0.015625, 0], "hsla(90, 87.5%, 12.5%, 0)", [0.125, 0.234375, 0.015625, 0], "hsla(120, 87.5%, 12.5%, 0)", [0.015625, 0.234375, 0.015625, 0], "hsla(150, 87.5%, 12.5%, 0)", [0.015625, 0.234375, 0.125, 0], "hsla(180, 87.5%, 12.5%, 0)", [0.015625, 0.234375, 0.234375, 0], "hsla(210, 87.5%, 12.5%, 0)", [0.015625, 0.125, 0.234375, 0], "hsla(240, 87.5%, 12.5%, 0)", [0.015625, 0.015625, 0.234375, 0], "hsla(270, 87.5%, 12.5%, 0)", [0.125, 0.015625, 0.234375, 0], "hsla(300, 87.5%, 12.5%, 0)", [0.234375, 0.015625, 0.234375, 0], "hsla(330, 87.5%, 12.5%, 0)", [0.234375, 0.015625, 0.125, 0], "hsla(0, 100%, 12.5%, 0)", [0.25, 0, 0, 0], "hsla(30, 100%, 12.5%, 0)", [0.25, 0.125, 0, 0], "hsla(60, 100%, 12.5%, 0)", [0.25, 0.25, 0, 0], "hsla(90, 100%, 12.5%, 0)", [0.125, 0.25, 0, 0], "hsla(120, 100%, 12.5%, 0)", [0, 0.25, 0, 0], "hsla(150, 100%, 12.5%, 0)", [0, 0.25, 0.125, 0], "hsla(180, 100%, 12.5%, 0)", [0, 0.25, 0.25, 0], "hsla(210, 100%, 12.5%, 0)", [0, 0.125, 0.25, 0], "hsla(240, 100%, 12.5%, 0)", [0, 0, 0.25, 0], "hsla(270, 100%, 12.5%, 0)", [0.125, 0, 0.25, 0], "hsla(300, 100%, 12.5%, 0)", [0.25, 0, 0.25, 0], "hsla(330, 100%, 12.5%, 0)", [0.25, 0, 0.125, 0], "hsla(0, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(30, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(60, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(90, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(120, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(150, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(180, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(210, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(240, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(270, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(300, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(330, 0%, 25%, 0)", [0.25, 0.25, 0.25, 0], "hsla(0, 12.5%, 25%, 0)", [0.28125, 0.21875, 0.21875, 0], "hsla(30, 12.5%, 25%, 0)", [0.28125, 0.25, 0.21875, 0], "hsla(60, 12.5%, 25%, 0)", [0.28125, 0.28125, 0.21875, 0], "hsla(90, 12.5%, 25%, 0)", [0.25, 0.28125, 0.21875, 0], "hsla(120, 12.5%, 25%, 0)", [0.21875, 0.28125, 0.21875, 0], "hsla(150, 12.5%, 25%, 0)", [0.21875, 0.28125, 0.25, 0], "hsla(180, 12.5%, 25%, 0)", [0.21875, 0.28125, 0.28125, 0], "hsla(210, 12.5%, 25%, 0)", [0.21875, 0.25, 0.28125, 0], "hsla(240, 12.5%, 25%, 0)", [0.21875, 0.21875, 0.28125, 0], "hsla(270, 12.5%, 25%, 0)", [0.25, 0.21875, 0.28125, 0], "hsla(300, 12.5%, 25%, 0)", [0.28125, 0.21875, 0.28125, 0], "hsla(330, 12.5%, 25%, 0)", [0.28125, 0.21875, 0.25, 0], "hsla(0, 25%, 25%, 0)", [0.3125, 0.1875, 0.1875, 0], "hsla(30, 25%, 25%, 0)", [0.3125, 0.25, 0.1875, 0], "hsla(60, 25%, 25%, 0)", [0.3125, 0.3125, 0.1875, 0], "hsla(90, 25%, 25%, 0)", [0.25, 0.3125, 0.1875, 0], "hsla(120, 25%, 25%, 0)", [0.1875, 0.3125, 0.1875, 0], "hsla(150, 25%, 25%, 0)", [0.1875, 0.3125, 0.25, 0], "hsla(180, 25%, 25%, 0)", [0.1875, 0.3125, 0.3125, 0], "hsla(210, 25%, 25%, 0)", [0.1875, 0.25, 0.3125, 0], "hsla(240, 25%, 25%, 0)", [0.1875, 0.1875, 0.3125, 0], "hsla(270, 25%, 25%, 0)", [0.25, 0.1875, 0.3125, 0], "hsla(300, 25%, 25%, 0)", [0.3125, 0.1875, 0.3125, 0], "hsla(330, 25%, 25%, 0)", [0.3125, 0.1875, 0.25, 0], "hsla(0, 37.5%, 25%, 0)", [0.34375, 0.15625, 0.15625, 0], "hsla(30, 37.5%, 25%, 0)", [0.34375, 0.25, 0.15625, 0], "hsla(60, 37.5%, 25%, 0)", [0.34375, 0.34375, 0.15625, 0], "hsla(90, 37.5%, 25%, 0)", [0.25, 0.34375, 0.15625, 0], "hsla(120, 37.5%, 25%, 0)", [0.15625, 0.34375, 0.15625, 0], "hsla(150, 37.5%, 25%, 0)", [0.15625, 0.34375, 0.25, 0], "hsla(180, 37.5%, 25%, 0)", [0.15625, 0.34375, 0.34375, 0], "hsla(210, 37.5%, 25%, 0)", [0.15625, 0.25, 0.34375, 0], "hsla(240, 37.5%, 25%, 0)", [0.15625, 0.15625, 0.34375, 0], "hsla(270, 37.5%, 25%, 0)", [0.25, 0.15625, 0.34375, 0], "hsla(300, 37.5%, 25%, 0)", [0.34375, 0.15625, 0.34375, 0], "hsla(330, 37.5%, 25%, 0)", [0.34375, 0.15625, 0.25, 0], "hsla(0, 50%, 25%, 0)", [0.375, 0.125, 0.125, 0], "hsla(30, 50%, 25%, 0)", [0.375, 0.25, 0.125, 0], "hsla(60, 50%, 25%, 0)", [0.375, 0.375, 0.125, 0], "hsla(90, 50%, 25%, 0)", [0.25, 0.375, 0.125, 0], "hsla(120, 50%, 25%, 0)", [0.125, 0.375, 0.125, 0], "hsla(150, 50%, 25%, 0)", [0.125, 0.375, 0.25, 0], "hsla(180, 50%, 25%, 0)", [0.125, 0.375, 0.375, 0], "hsla(210, 50%, 25%, 0)", [0.125, 0.25, 0.375, 0], "hsla(240, 50%, 25%, 0)", [0.125, 0.125, 0.375, 0], "hsla(270, 50%, 25%, 0)", [0.25, 0.125, 0.375, 0], "hsla(300, 50%, 25%, 0)", [0.375, 0.125, 0.375, 0], "hsla(330, 50%, 25%, 0)", [0.375, 0.125, 0.25, 0], "hsla(0, 62.5%, 25%, 0)", [0.40625, 0.09375, 0.09375, 0], "hsla(30, 62.5%, 25%, 0)", [0.40625, 0.25, 0.09375, 0], "hsla(60, 62.5%, 25%, 0)", [0.40625, 0.40625, 0.09375, 0], "hsla(90, 62.5%, 25%, 0)", [0.25, 0.40625, 0.09375, 0], "hsla(120, 62.5%, 25%, 0)", [0.09375, 0.40625, 0.09375, 0], "hsla(150, 62.5%, 25%, 0)", [0.09375, 0.40625, 0.25, 0], "hsla(180, 62.5%, 25%, 0)", [0.09375, 0.40625, 0.40625, 0], "hsla(210, 62.5%, 25%, 0)", [0.09375, 0.25, 0.40625, 0], "hsla(240, 62.5%, 25%, 0)", [0.09375, 0.09375, 0.40625, 0], "hsla(270, 62.5%, 25%, 0)", [0.25, 0.09375, 0.40625, 0], "hsla(300, 62.5%, 25%, 0)", [0.40625, 0.09375, 0.40625, 0], "hsla(330, 62.5%, 25%, 0)", [0.40625, 0.09375, 0.25, 0], "hsla(0, 75%, 25%, 0)", [0.4375, 0.0625, 0.0625, 0], "hsla(30, 75%, 25%, 0)", [0.4375, 0.25, 0.0625, 0], "hsla(60, 75%, 25%, 0)", [0.4375, 0.4375, 0.0625, 0], "hsla(90, 75%, 25%, 0)", [0.25, 0.4375, 0.0625, 0], "hsla(120, 75%, 25%, 0)", [0.0625, 0.4375, 0.0625, 0], "hsla(150, 75%, 25%, 0)", [0.0625, 0.4375, 0.25, 0], "hsla(180, 75%, 25%, 0)", [0.0625, 0.4375, 0.4375, 0], "hsla(210, 75%, 25%, 0)", [0.0625, 0.25, 0.4375, 0], "hsla(240, 75%, 25%, 0)", [0.0625, 0.0625, 0.4375, 0], "hsla(270, 75%, 25%, 0)", [0.25, 0.0625, 0.4375, 0], "hsla(300, 75%, 25%, 0)", [0.4375, 0.0625, 0.4375, 0], "hsla(330, 75%, 25%, 0)", [0.4375, 0.0625, 0.25, 0], "hsla(0, 87.5%, 25%, 0)", [0.46875, 0.03125, 0.03125, 0], "hsla(30, 87.5%, 25%, 0)", [0.46875, 0.25, 0.03125, 0], "hsla(60, 87.5%, 25%, 0)", [0.46875, 0.46875, 0.03125, 0], "hsla(90, 87.5%, 25%, 0)", [0.25, 0.46875, 0.03125, 0], "hsla(120, 87.5%, 25%, 0)", [0.03125, 0.46875, 0.03125, 0], "hsla(150, 87.5%, 25%, 0)", [0.03125, 0.46875, 0.25, 0], "hsla(180, 87.5%, 25%, 0)", [0.03125, 0.46875, 0.46875, 0], "hsla(210, 87.5%, 25%, 0)", [0.03125, 0.25, 0.46875, 0], "hsla(240, 87.5%, 25%, 0)", [0.03125, 0.03125, 0.46875, 0], "hsla(270, 87.5%, 25%, 0)", [0.25, 0.03125, 0.46875, 0], "hsla(300, 87.5%, 25%, 0)", [0.46875, 0.03125, 0.46875, 0], "hsla(330, 87.5%, 25%, 0)", [0.46875, 0.03125, 0.25, 0], "hsla(0, 100%, 25%, 0)", [0.5, 0, 0, 0], "hsla(30, 100%, 25%, 0)", [0.5, 0.25, 0, 0], "hsla(60, 100%, 25%, 0)", [0.5, 0.5, 0, 0], "hsla(90, 100%, 25%, 0)", [0.25, 0.5, 0, 0], "hsla(120, 100%, 25%, 0)", [0, 0.5, 0, 0], "hsla(150, 100%, 25%, 0)", [0, 0.5, 0.25, 0], "hsla(180, 100%, 25%, 0)", [0, 0.5, 0.5, 0], "hsla(210, 100%, 25%, 0)", [0, 0.25, 0.5, 0], "hsla(240, 100%, 25%, 0)", [0, 0, 0.5, 0], "hsla(270, 100%, 25%, 0)", [0.25, 0, 0.5, 0], "hsla(300, 100%, 25%, 0)", [0.5, 0, 0.5, 0], "hsla(330, 100%, 25%, 0)", [0.5, 0, 0.25, 0], "hsla(0, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(30, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(60, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(90, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(120, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(150, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(180, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(210, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(240, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(270, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(300, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(330, 0%, 37.5%, 0)", [0.375, 0.375, 0.375, 0], "hsla(0, 12.5%, 37.5%, 0)", [0.421875, 0.328125, 0.328125, 0], "hsla(30, 12.5%, 37.5%, 0)", [0.421875, 0.375, 0.328125, 0], "hsla(60, 12.5%, 37.5%, 0)", [0.421875, 0.421875, 0.328125, 0], "hsla(90, 12.5%, 37.5%, 0)", [0.375, 0.421875, 0.328125, 0], "hsla(120, 12.5%, 37.5%, 0)", [0.328125, 0.421875, 0.328125, 0], "hsla(150, 12.5%, 37.5%, 0)", [0.328125, 0.421875, 0.375, 0], "hsla(180, 12.5%, 37.5%, 0)", [0.328125, 0.421875, 0.421875, 0], "hsla(210, 12.5%, 37.5%, 0)", [0.328125, 0.375, 0.421875, 0], "hsla(240, 12.5%, 37.5%, 0)", [0.328125, 0.328125, 0.421875, 0], "hsla(270, 12.5%, 37.5%, 0)", [0.375, 0.328125, 0.421875, 0], "hsla(300, 12.5%, 37.5%, 0)", [0.421875, 0.328125, 0.421875, 0], "hsla(330, 12.5%, 37.5%, 0)", [0.421875, 0.328125, 0.375, 0], "hsla(0, 25%, 37.5%, 0)", [0.46875, 0.28125, 0.28125, 0], "hsla(30, 25%, 37.5%, 0)", [0.46875, 0.375, 0.28125, 0], "hsla(60, 25%, 37.5%, 0)", [0.46875, 0.46875, 0.28125, 0], "hsla(90, 25%, 37.5%, 0)", [0.375, 0.46875, 0.28125, 0], "hsla(120, 25%, 37.5%, 0)", [0.28125, 0.46875, 0.28125, 0], "hsla(150, 25%, 37.5%, 0)", [0.28125, 0.46875, 0.375, 0], "hsla(180, 25%, 37.5%, 0)", [0.28125, 0.46875, 0.46875, 0], "hsla(210, 25%, 37.5%, 0)", [0.28125, 0.375, 0.46875, 0], "hsla(240, 25%, 37.5%, 0)", [0.28125, 0.28125, 0.46875, 0], "hsla(270, 25%, 37.5%, 0)", [0.375, 0.28125, 0.46875, 0], "hsla(300, 25%, 37.5%, 0)", [0.46875, 0.28125, 0.46875, 0], "hsla(330, 25%, 37.5%, 0)", [0.46875, 0.28125, 0.375, 0], "hsla(0, 37.5%, 37.5%, 0)", [0.515625, 0.234375, 0.234375, 0], "hsla(30, 37.5%, 37.5%, 0)", [0.515625, 0.375, 0.234375, 0], "hsla(60, 37.5%, 37.5%, 0)", [0.515625, 0.515625, 0.234375, 0], "hsla(90, 37.5%, 37.5%, 0)", [0.375, 0.515625, 0.234375, 0], "hsla(120, 37.5%, 37.5%, 0)", [0.234375, 0.515625, 0.234375, 0], "hsla(150, 37.5%, 37.5%, 0)", [0.234375, 0.515625, 0.375, 0], "hsla(180, 37.5%, 37.5%, 0)", [0.234375, 0.515625, 0.515625, 0], "hsla(210, 37.5%, 37.5%, 0)", [0.234375, 0.375, 0.515625, 0], "hsla(240, 37.5%, 37.5%, 0)", [0.234375, 0.234375, 0.515625, 0], "hsla(270, 37.5%, 37.5%, 0)", [0.375, 0.234375, 0.515625, 0], "hsla(300, 37.5%, 37.5%, 0)", [0.515625, 0.234375, 0.515625, 0], "hsla(330, 37.5%, 37.5%, 0)", [0.515625, 0.234375, 0.375, 0], "hsla(0, 50%, 37.5%, 0)", [0.5625, 0.1875, 0.1875, 0], "hsla(30, 50%, 37.5%, 0)", [0.5625, 0.375, 0.1875, 0], "hsla(60, 50%, 37.5%, 0)", [0.5625, 0.5625, 0.1875, 0], "hsla(90, 50%, 37.5%, 0)", [0.375, 0.5625, 0.1875, 0], "hsla(120, 50%, 37.5%, 0)", [0.1875, 0.5625, 0.1875, 0], "hsla(150, 50%, 37.5%, 0)", [0.1875, 0.5625, 0.375, 0], "hsla(180, 50%, 37.5%, 0)", [0.1875, 0.5625, 0.5625, 0], "hsla(210, 50%, 37.5%, 0)", [0.1875, 0.375, 0.5625, 0], "hsla(240, 50%, 37.5%, 0)", [0.1875, 0.1875, 0.5625, 0], "hsla(270, 50%, 37.5%, 0)", [0.375, 0.1875, 0.5625, 0], "hsla(300, 50%, 37.5%, 0)", [0.5625, 0.1875, 0.5625, 0], "hsla(330, 50%, 37.5%, 0)", [0.5625, 0.1875, 0.375, 0], "hsla(0, 62.5%, 37.5%, 0)", [0.609375, 0.140625, 0.140625, 0], "hsla(30, 62.5%, 37.5%, 0)", [0.609375, 0.375, 0.140625, 0], "hsla(60, 62.5%, 37.5%, 0)", [0.609375, 0.609375, 0.140625, 0], "hsla(90, 62.5%, 37.5%, 0)", [0.375, 0.609375, 0.140625, 0], "hsla(120, 62.5%, 37.5%, 0)", [0.140625, 0.609375, 0.140625, 0], "hsla(150, 62.5%, 37.5%, 0)", [0.140625, 0.609375, 0.375, 0], "hsla(180, 62.5%, 37.5%, 0)", [0.140625, 0.609375, 0.609375, 0], "hsla(210, 62.5%, 37.5%, 0)", [0.140625, 0.375, 0.609375, 0], "hsla(240, 62.5%, 37.5%, 0)", [0.140625, 0.140625, 0.609375, 0], "hsla(270, 62.5%, 37.5%, 0)", [0.375, 0.140625, 0.609375, 0], "hsla(300, 62.5%, 37.5%, 0)", [0.609375, 0.140625, 0.609375, 0], "hsla(330, 62.5%, 37.5%, 0)", [0.609375, 0.140625, 0.375, 0], "hsla(0, 75%, 37.5%, 0)", [0.65625, 0.09375, 0.09375, 0], "hsla(30, 75%, 37.5%, 0)", [0.65625, 0.375, 0.09375, 0], "hsla(60, 75%, 37.5%, 0)", [0.65625, 0.65625, 0.09375, 0], "hsla(90, 75%, 37.5%, 0)", [0.375, 0.65625, 0.09375, 0], "hsla(120, 75%, 37.5%, 0)", [0.09375, 0.65625, 0.09375, 0], "hsla(150, 75%, 37.5%, 0)", [0.09375, 0.65625, 0.375, 0], "hsla(180, 75%, 37.5%, 0)", [0.09375, 0.65625, 0.65625, 0], "hsla(210, 75%, 37.5%, 0)", [0.09375, 0.375, 0.65625, 0], "hsla(240, 75%, 37.5%, 0)", [0.09375, 0.09375, 0.65625, 0], "hsla(270, 75%, 37.5%, 0)", [0.375, 0.09375, 0.65625, 0], "hsla(300, 75%, 37.5%, 0)", [0.65625, 0.09375, 0.65625, 0], "hsla(330, 75%, 37.5%, 0)", [0.65625, 0.09375, 0.375, 0], "hsla(0, 87.5%, 37.5%, 0)", [0.703125, 0.046875, 0.046875, 0], "hsla(30, 87.5%, 37.5%, 0)", [0.703125, 0.375, 0.046875, 0], "hsla(60, 87.5%, 37.5%, 0)", [0.703125, 0.703125, 0.046875, 0], "hsla(90, 87.5%, 37.5%, 0)", [0.375, 0.703125, 0.046875, 0], "hsla(120, 87.5%, 37.5%, 0)", [0.046875, 0.703125, 0.046875, 0], "hsla(150, 87.5%, 37.5%, 0)", [0.046875, 0.703125, 0.375, 0], "hsla(180, 87.5%, 37.5%, 0)", [0.046875, 0.703125, 0.703125, 0], "hsla(210, 87.5%, 37.5%, 0)", [0.046875, 0.375, 0.703125, 0], "hsla(240, 87.5%, 37.5%, 0)", [0.046875, 0.046875, 0.703125, 0], "hsla(270, 87.5%, 37.5%, 0)", [0.375, 0.046875, 0.703125, 0], "hsla(300, 87.5%, 37.5%, 0)", [0.703125, 0.046875, 0.703125, 0], "hsla(330, 87.5%, 37.5%, 0)", [0.703125, 0.046875, 0.375, 0], "hsla(0, 100%, 37.5%, 0)", [0.75, 0, 0, 0], "hsla(30, 100%, 37.5%, 0)", [0.75, 0.375, 0, 0], "hsla(60, 100%, 37.5%, 0)", [0.75, 0.75, 0, 0], "hsla(90, 100%, 37.5%, 0)", [0.375, 0.75, 0, 0], "hsla(120, 100%, 37.5%, 0)", [0, 0.75, 0, 0], "hsla(150, 100%, 37.5%, 0)", [0, 0.75, 0.375, 0], "hsla(180, 100%, 37.5%, 0)", [0, 0.75, 0.75, 0], "hsla(210, 100%, 37.5%, 0)", [0, 0.375, 0.75, 0], "hsla(240, 100%, 37.5%, 0)", [0, 0, 0.75, 0], "hsla(270, 100%, 37.5%, 0)", [0.375, 0, 0.75, 0], "hsla(300, 100%, 37.5%, 0)", [0.75, 0, 0.75, 0], "hsla(330, 100%, 37.5%, 0)", [0.75, 0, 0.375, 0], "hsla(0, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(30, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(60, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(90, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(120, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(150, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(180, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(210, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(240, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(270, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(300, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(330, 0%, 50%, 0)", [0.5, 0.5, 0.5, 0], "hsla(0, 12.5%, 50%, 0)", [0.5625, 0.4375, 0.4375, 0], "hsla(30, 12.5%, 50%, 0)", [0.5625, 0.5, 0.4375, 0], "hsla(60, 12.5%, 50%, 0)", [0.5625, 0.5625, 0.4375, 0], "hsla(90, 12.5%, 50%, 0)", [0.5, 0.5625, 0.4375, 0], "hsla(120, 12.5%, 50%, 0)", [0.4375, 0.5625, 0.4375, 0], "hsla(150, 12.5%, 50%, 0)", [0.4375, 0.5625, 0.5, 0], "hsla(180, 12.5%, 50%, 0)", [0.4375, 0.5625, 0.5625, 0], "hsla(210, 12.5%, 50%, 0)", [0.4375, 0.5, 0.5625, 0], "hsla(240, 12.5%, 50%, 0)", [0.4375, 0.4375, 0.5625, 0], "hsla(270, 12.5%, 50%, 0)", [0.5, 0.4375, 0.5625, 0], "hsla(300, 12.5%, 50%, 0)", [0.5625, 0.4375, 0.5625, 0], "hsla(330, 12.5%, 50%, 0)", [0.5625, 0.4375, 0.5, 0], "hsla(0, 25%, 50%, 0)", [0.625, 0.375, 0.375, 0], "hsla(30, 25%, 50%, 0)", [0.625, 0.5, 0.375, 0], "hsla(60, 25%, 50%, 0)", [0.625, 0.625, 0.375, 0], "hsla(90, 25%, 50%, 0)", [0.5, 0.625, 0.375, 0], "hsla(120, 25%, 50%, 0)", [0.375, 0.625, 0.375, 0], "hsla(150, 25%, 50%, 0)", [0.375, 0.625, 0.5, 0], "hsla(180, 25%, 50%, 0)", [0.375, 0.625, 0.625, 0], "hsla(210, 25%, 50%, 0)", [0.375, 0.5, 0.625, 0], "hsla(240, 25%, 50%, 0)", [0.375, 0.375, 0.625, 0], "hsla(270, 25%, 50%, 0)", [0.5, 0.375, 0.625, 0], "hsla(300, 25%, 50%, 0)", [0.625, 0.375, 0.625, 0], "hsla(330, 25%, 50%, 0)", [0.625, 0.375, 0.5, 0], "hsla(0, 37.5%, 50%, 0)", [0.6875, 0.3125, 0.3125, 0], "hsla(30, 37.5%, 50%, 0)", [0.6875, 0.5, 0.3125, 0], "hsla(60, 37.5%, 50%, 0)", [0.6875, 0.6875, 0.3125, 0], "hsla(90, 37.5%, 50%, 0)", [0.5, 0.6875, 0.3125, 0], "hsla(120, 37.5%, 50%, 0)", [0.3125, 0.6875, 0.3125, 0], "hsla(150, 37.5%, 50%, 0)", [0.3125, 0.6875, 0.5, 0], "hsla(180, 37.5%, 50%, 0)", [0.3125, 0.6875, 0.6875, 0], "hsla(210, 37.5%, 50%, 0)", [0.3125, 0.5, 0.6875, 0], "hsla(240, 37.5%, 50%, 0)", [0.3125, 0.3125, 0.6875, 0], "hsla(270, 37.5%, 50%, 0)", [0.5, 0.3125, 0.6875, 0], "hsla(300, 37.5%, 50%, 0)", [0.6875, 0.3125, 0.6875, 0], "hsla(330, 37.5%, 50%, 0)", [0.6875, 0.3125, 0.5, 0], "hsla(0, 50%, 50%, 0)", [0.75, 0.25, 0.25, 0], "hsla(30, 50%, 50%, 0)", [0.75, 0.5, 0.25, 0], "hsla(60, 50%, 50%, 0)", [0.75, 0.75, 0.25, 0], "hsla(90, 50%, 50%, 0)", [0.5, 0.75, 0.25, 0], "hsla(120, 50%, 50%, 0)", [0.25, 0.75, 0.25, 0], "hsla(150, 50%, 50%, 0)", [0.25, 0.75, 0.5, 0], "hsla(180, 50%, 50%, 0)", [0.25, 0.75, 0.75, 0], "hsla(210, 50%, 50%, 0)", [0.25, 0.5, 0.75, 0], "hsla(240, 50%, 50%, 0)", [0.25, 0.25, 0.75, 0], "hsla(270, 50%, 50%, 0)", [0.5, 0.25, 0.75, 0], "hsla(300, 50%, 50%, 0)", [0.75, 0.25, 0.75, 0], "hsla(330, 50%, 50%, 0)", [0.75, 0.25, 0.5, 0], "hsla(0, 62.5%, 50%, 0)", [0.8125, 0.1875, 0.1875, 0], "hsla(30, 62.5%, 50%, 0)", [0.8125, 0.5, 0.1875, 0], "hsla(60, 62.5%, 50%, 0)", [0.8125, 0.8125, 0.1875, 0], "hsla(90, 62.5%, 50%, 0)", [0.5, 0.8125, 0.1875, 0], "hsla(120, 62.5%, 50%, 0)", [0.1875, 0.8125, 0.1875, 0], "hsla(150, 62.5%, 50%, 0)", [0.1875, 0.8125, 0.5, 0], "hsla(180, 62.5%, 50%, 0)", [0.1875, 0.8125, 0.8125, 0], "hsla(210, 62.5%, 50%, 0)", [0.1875, 0.5, 0.8125, 0], "hsla(240, 62.5%, 50%, 0)", [0.1875, 0.1875, 0.8125, 0], "hsla(270, 62.5%, 50%, 0)", [0.5, 0.1875, 0.8125, 0], "hsla(300, 62.5%, 50%, 0)", [0.8125, 0.1875, 0.8125, 0], "hsla(330, 62.5%, 50%, 0)", [0.8125, 0.1875, 0.5, 0], "hsla(0, 75%, 50%, 0)", [0.875, 0.125, 0.125, 0], "hsla(30, 75%, 50%, 0)", [0.875, 0.5, 0.125, 0], "hsla(60, 75%, 50%, 0)", [0.875, 0.875, 0.125, 0], "hsla(90, 75%, 50%, 0)", [0.5, 0.875, 0.125, 0], "hsla(120, 75%, 50%, 0)", [0.125, 0.875, 0.125, 0], "hsla(150, 75%, 50%, 0)", [0.125, 0.875, 0.5, 0], "hsla(180, 75%, 50%, 0)", [0.125, 0.875, 0.875, 0], "hsla(210, 75%, 50%, 0)", [0.125, 0.5, 0.875, 0], "hsla(240, 75%, 50%, 0)", [0.125, 0.125, 0.875, 0], "hsla(270, 75%, 50%, 0)", [0.5, 0.125, 0.875, 0], "hsla(300, 75%, 50%, 0)", [0.875, 0.125, 0.875, 0], "hsla(330, 75%, 50%, 0)", [0.875, 0.125, 0.5, 0], "hsla(0, 87.5%, 50%, 0)", [0.9375, 0.0625, 0.0625, 0], "hsla(30, 87.5%, 50%, 0)", [0.9375, 0.5, 0.0625, 0], "hsla(60, 87.5%, 50%, 0)", [0.9375, 0.9375, 0.0625, 0], "hsla(90, 87.5%, 50%, 0)", [0.5, 0.9375, 0.0625, 0], "hsla(120, 87.5%, 50%, 0)", [0.0625, 0.9375, 0.0625, 0], "hsla(150, 87.5%, 50%, 0)", [0.0625, 0.9375, 0.5, 0], "hsla(180, 87.5%, 50%, 0)", [0.0625, 0.9375, 0.9375, 0], "hsla(210, 87.5%, 50%, 0)", [0.0625, 0.5, 0.9375, 0], "hsla(240, 87.5%, 50%, 0)", [0.0625, 0.0625, 0.9375, 0], "hsla(270, 87.5%, 50%, 0)", [0.5, 0.0625, 0.9375, 0], "hsla(300, 87.5%, 50%, 0)", [0.9375, 0.0625, 0.9375, 0], "hsla(330, 87.5%, 50%, 0)", [0.9375, 0.0625, 0.5, 0], "hsla(0, 100%, 50%, 0)", [1, 0, 0, 0], "hsla(30, 100%, 50%, 0)", [1, 0.5, 0, 0], "hsla(60, 100%, 50%, 0)", [1, 1, 0, 0], "hsla(90, 100%, 50%, 0)", [0.5, 1, 0, 0], "hsla(120, 100%, 50%, 0)", [0, 1, 0, 0], "hsla(150, 100%, 50%, 0)", [0, 1, 0.5, 0], "hsla(180, 100%, 50%, 0)", [0, 1, 1, 0], "hsla(210, 100%, 50%, 0)", [0, 0.5, 1, 0], "hsla(240, 100%, 50%, 0)", [0, 0, 1, 0], "hsla(270, 100%, 50%, 0)", [0.5, 0, 1, 0], "hsla(300, 100%, 50%, 0)", [1, 0, 1, 0], "hsla(330, 100%, 50%, 0)", [1, 0, 0.5, 0], "hsla(0, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(30, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(60, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(90, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(120, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(150, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(180, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(210, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(240, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(270, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(300, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(330, 0%, 62.5%, 0)", [0.625, 0.625, 0.625, 0], "hsla(0, 12.5%, 62.5%, 0)", [0.671875, 0.578125, 0.578125, 0], "hsla(30, 12.5%, 62.5%, 0)", [0.671875, 0.625, 0.578125, 0], "hsla(60, 12.5%, 62.5%, 0)", [0.671875, 0.671875, 0.578125, 0], "hsla(90, 12.5%, 62.5%, 0)", [0.625, 0.671875, 0.578125, 0], "hsla(120, 12.5%, 62.5%, 0)", [0.578125, 0.671875, 0.578125, 0], "hsla(150, 12.5%, 62.5%, 0)", [0.578125, 0.671875, 0.625, 0], "hsla(180, 12.5%, 62.5%, 0)", [0.578125, 0.671875, 0.671875, 0], "hsla(210, 12.5%, 62.5%, 0)", [0.578125, 0.625, 0.671875, 0], "hsla(240, 12.5%, 62.5%, 0)", [0.578125, 0.578125, 0.671875, 0], "hsla(270, 12.5%, 62.5%, 0)", [0.625, 0.578125, 0.671875, 0], "hsla(300, 12.5%, 62.5%, 0)", [0.671875, 0.578125, 0.671875, 0], "hsla(330, 12.5%, 62.5%, 0)", [0.671875, 0.578125, 0.625, 0], "hsla(0, 25%, 62.5%, 0)", [0.71875, 0.53125, 0.53125, 0], "hsla(30, 25%, 62.5%, 0)", [0.71875, 0.625, 0.53125, 0], "hsla(60, 25%, 62.5%, 0)", [0.71875, 0.71875, 0.53125, 0], "hsla(90, 25%, 62.5%, 0)", [0.625, 0.71875, 0.53125, 0], "hsla(120, 25%, 62.5%, 0)", [0.53125, 0.71875, 0.53125, 0], "hsla(150, 25%, 62.5%, 0)", [0.53125, 0.71875, 0.625, 0], "hsla(180, 25%, 62.5%, 0)", [0.53125, 0.71875, 0.71875, 0], "hsla(210, 25%, 62.5%, 0)", [0.53125, 0.625, 0.71875, 0], "hsla(240, 25%, 62.5%, 0)", [0.53125, 0.53125, 0.71875, 0], "hsla(270, 25%, 62.5%, 0)", [0.625, 0.53125, 0.71875, 0], "hsla(300, 25%, 62.5%, 0)", [0.71875, 0.53125, 0.71875, 0], "hsla(330, 25%, 62.5%, 0)", [0.71875, 0.53125, 0.625, 0], "hsla(0, 37.5%, 62.5%, 0)", [0.765625, 0.484375, 0.484375, 0], "hsla(30, 37.5%, 62.5%, 0)", [0.765625, 0.625, 0.484375, 0], "hsla(60, 37.5%, 62.5%, 0)", [0.765625, 0.765625, 0.484375, 0], "hsla(90, 37.5%, 62.5%, 0)", [0.625, 0.765625, 0.484375, 0], "hsla(120, 37.5%, 62.5%, 0)", [0.484375, 0.765625, 0.484375, 0], "hsla(150, 37.5%, 62.5%, 0)", [0.484375, 0.765625, 0.625, 0], "hsla(180, 37.5%, 62.5%, 0)", [0.484375, 0.765625, 0.765625, 0], "hsla(210, 37.5%, 62.5%, 0)", [0.484375, 0.625, 0.765625, 0], "hsla(240, 37.5%, 62.5%, 0)", [0.484375, 0.484375, 0.765625, 0], "hsla(270, 37.5%, 62.5%, 0)", [0.625, 0.484375, 0.765625, 0], "hsla(300, 37.5%, 62.5%, 0)", [0.765625, 0.484375, 0.765625, 0], "hsla(330, 37.5%, 62.5%, 0)", [0.765625, 0.484375, 0.625, 0], "hsla(0, 50%, 62.5%, 0)", [0.8125, 0.4375, 0.4375, 0], "hsla(30, 50%, 62.5%, 0)", [0.8125, 0.625, 0.4375, 0], "hsla(60, 50%, 62.5%, 0)", [0.8125, 0.8125, 0.4375, 0], "hsla(90, 50%, 62.5%, 0)", [0.625, 0.8125, 0.4375, 0], "hsla(120, 50%, 62.5%, 0)", [0.4375, 0.8125, 0.4375, 0], "hsla(150, 50%, 62.5%, 0)", [0.4375, 0.8125, 0.625, 0], "hsla(180, 50%, 62.5%, 0)", [0.4375, 0.8125, 0.8125, 0], "hsla(210, 50%, 62.5%, 0)", [0.4375, 0.625, 0.8125, 0], "hsla(240, 50%, 62.5%, 0)", [0.4375, 0.4375, 0.8125, 0], "hsla(270, 50%, 62.5%, 0)", [0.625, 0.4375, 0.8125, 0], "hsla(300, 50%, 62.5%, 0)", [0.8125, 0.4375, 0.8125, 0], "hsla(330, 50%, 62.5%, 0)", [0.8125, 0.4375, 0.625, 0], "hsla(0, 62.5%, 62.5%, 0)", [0.859375, 0.390625, 0.390625, 0], "hsla(30, 62.5%, 62.5%, 0)", [0.859375, 0.625, 0.390625, 0], "hsla(60, 62.5%, 62.5%, 0)", [0.859375, 0.859375, 0.390625, 0], "hsla(90, 62.5%, 62.5%, 0)", [0.625, 0.859375, 0.390625, 0], "hsla(120, 62.5%, 62.5%, 0)", [0.390625, 0.859375, 0.390625, 0], "hsla(150, 62.5%, 62.5%, 0)", [0.390625, 0.859375, 0.625, 0], "hsla(180, 62.5%, 62.5%, 0)", [0.390625, 0.859375, 0.859375, 0], "hsla(210, 62.5%, 62.5%, 0)", [0.390625, 0.625, 0.859375, 0], "hsla(240, 62.5%, 62.5%, 0)", [0.390625, 0.390625, 0.859375, 0], "hsla(270, 62.5%, 62.5%, 0)", [0.625, 0.390625, 0.859375, 0], "hsla(300, 62.5%, 62.5%, 0)", [0.859375, 0.390625, 0.859375, 0], "hsla(330, 62.5%, 62.5%, 0)", [0.859375, 0.390625, 0.625, 0], "hsla(0, 75%, 62.5%, 0)", [0.90625, 0.34375, 0.34375, 0], "hsla(30, 75%, 62.5%, 0)", [0.90625, 0.625, 0.34375, 0], "hsla(60, 75%, 62.5%, 0)", [0.90625, 0.90625, 0.34375, 0], "hsla(90, 75%, 62.5%, 0)", [0.625, 0.90625, 0.34375, 0], "hsla(120, 75%, 62.5%, 0)", [0.34375, 0.90625, 0.34375, 0], "hsla(150, 75%, 62.5%, 0)", [0.34375, 0.90625, 0.625, 0], "hsla(180, 75%, 62.5%, 0)", [0.34375, 0.90625, 0.90625, 0], "hsla(210, 75%, 62.5%, 0)", [0.34375, 0.625, 0.90625, 0], "hsla(240, 75%, 62.5%, 0)", [0.34375, 0.34375, 0.90625, 0], "hsla(270, 75%, 62.5%, 0)", [0.625, 0.34375, 0.90625, 0], "hsla(300, 75%, 62.5%, 0)", [0.90625, 0.34375, 0.90625, 0], "hsla(330, 75%, 62.5%, 0)", [0.90625, 0.34375, 0.625, 0], "hsla(0, 87.5%, 62.5%, 0)", [0.953125, 0.296875, 0.296875, 0], "hsla(30, 87.5%, 62.5%, 0)", [0.953125, 0.625, 0.296875, 0], "hsla(60, 87.5%, 62.5%, 0)", [0.953125, 0.953125, 0.296875, 0], "hsla(90, 87.5%, 62.5%, 0)", [0.625, 0.953125, 0.296875, 0], "hsla(120, 87.5%, 62.5%, 0)", [0.296875, 0.953125, 0.296875, 0], "hsla(150, 87.5%, 62.5%, 0)", [0.296875, 0.953125, 0.625, 0], "hsla(180, 87.5%, 62.5%, 0)", [0.296875, 0.953125, 0.953125, 0], "hsla(210, 87.5%, 62.5%, 0)", [0.296875, 0.625, 0.953125, 0], "hsla(240, 87.5%, 62.5%, 0)", [0.296875, 0.296875, 0.953125, 0], "hsla(270, 87.5%, 62.5%, 0)", [0.625, 0.296875, 0.953125, 0], "hsla(300, 87.5%, 62.5%, 0)", [0.953125, 0.296875, 0.953125, 0], "hsla(330, 87.5%, 62.5%, 0)", [0.953125, 0.296875, 0.625, 0], "hsla(0, 100%, 62.5%, 0)", [1, 0.25, 0.25, 0], "hsla(30, 100%, 62.5%, 0)", [1, 0.625, 0.25, 0], "hsla(60, 100%, 62.5%, 0)", [1, 1, 0.25, 0], "hsla(90, 100%, 62.5%, 0)", [0.625, 1, 0.25, 0], "hsla(120, 100%, 62.5%, 0)", [0.25, 1, 0.25, 0], "hsla(150, 100%, 62.5%, 0)", [0.25, 1, 0.625, 0], "hsla(180, 100%, 62.5%, 0)", [0.25, 1, 1, 0], "hsla(210, 100%, 62.5%, 0)", [0.25, 0.625, 1, 0], "hsla(240, 100%, 62.5%, 0)", [0.25, 0.25, 1, 0], "hsla(270, 100%, 62.5%, 0)", [0.625, 0.25, 1, 0], "hsla(300, 100%, 62.5%, 0)", [1, 0.25, 1, 0], "hsla(330, 100%, 62.5%, 0)", [1, 0.25, 0.625, 0], "hsla(0, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(30, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(60, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(90, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(120, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(150, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(180, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(210, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(240, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(270, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(300, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(330, 0%, 75%, 0)", [0.75, 0.75, 0.75, 0], "hsla(0, 12.5%, 75%, 0)", [0.78125, 0.71875, 0.71875, 0], "hsla(30, 12.5%, 75%, 0)", [0.78125, 0.75, 0.71875, 0], "hsla(60, 12.5%, 75%, 0)", [0.78125, 0.78125, 0.71875, 0], "hsla(90, 12.5%, 75%, 0)", [0.75, 0.78125, 0.71875, 0], "hsla(120, 12.5%, 75%, 0)", [0.71875, 0.78125, 0.71875, 0], "hsla(150, 12.5%, 75%, 0)", [0.71875, 0.78125, 0.75, 0], "hsla(180, 12.5%, 75%, 0)", [0.71875, 0.78125, 0.78125, 0], "hsla(210, 12.5%, 75%, 0)", [0.71875, 0.75, 0.78125, 0], "hsla(240, 12.5%, 75%, 0)", [0.71875, 0.71875, 0.78125, 0], "hsla(270, 12.5%, 75%, 0)", [0.75, 0.71875, 0.78125, 0], "hsla(300, 12.5%, 75%, 0)", [0.78125, 0.71875, 0.78125, 0], "hsla(330, 12.5%, 75%, 0)", [0.78125, 0.71875, 0.75, 0], "hsla(0, 25%, 75%, 0)", [0.8125, 0.6875, 0.6875, 0], "hsla(30, 25%, 75%, 0)", [0.8125, 0.75, 0.6875, 0], "hsla(60, 25%, 75%, 0)", [0.8125, 0.8125, 0.6875, 0], "hsla(90, 25%, 75%, 0)", [0.75, 0.8125, 0.6875, 0], "hsla(120, 25%, 75%, 0)", [0.6875, 0.8125, 0.6875, 0], "hsla(150, 25%, 75%, 0)", [0.6875, 0.8125, 0.75, 0], "hsla(180, 25%, 75%, 0)", [0.6875, 0.8125, 0.8125, 0], "hsla(210, 25%, 75%, 0)", [0.6875, 0.75, 0.8125, 0], "hsla(240, 25%, 75%, 0)", [0.6875, 0.6875, 0.8125, 0], "hsla(270, 25%, 75%, 0)", [0.75, 0.6875, 0.8125, 0], "hsla(300, 25%, 75%, 0)", [0.8125, 0.6875, 0.8125, 0], "hsla(330, 25%, 75%, 0)", [0.8125, 0.6875, 0.75, 0], "hsla(0, 37.5%, 75%, 0)", [0.84375, 0.65625, 0.65625, 0], "hsla(30, 37.5%, 75%, 0)", [0.84375, 0.75, 0.65625, 0], "hsla(60, 37.5%, 75%, 0)", [0.84375, 0.84375, 0.65625, 0], "hsla(90, 37.5%, 75%, 0)", [0.75, 0.84375, 0.65625, 0], "hsla(120, 37.5%, 75%, 0)", [0.65625, 0.84375, 0.65625, 0], "hsla(150, 37.5%, 75%, 0)", [0.65625, 0.84375, 0.75, 0], "hsla(180, 37.5%, 75%, 0)", [0.65625, 0.84375, 0.84375, 0], "hsla(210, 37.5%, 75%, 0)", [0.65625, 0.75, 0.84375, 0], "hsla(240, 37.5%, 75%, 0)", [0.65625, 0.65625, 0.84375, 0], "hsla(270, 37.5%, 75%, 0)", [0.75, 0.65625, 0.84375, 0], "hsla(300, 37.5%, 75%, 0)", [0.84375, 0.65625, 0.84375, 0], "hsla(330, 37.5%, 75%, 0)", [0.84375, 0.65625, 0.75, 0], "hsla(0, 50%, 75%, 0)", [0.875, 0.625, 0.625, 0], "hsla(30, 50%, 75%, 0)", [0.875, 0.75, 0.625, 0], "hsla(60, 50%, 75%, 0)", [0.875, 0.875, 0.625, 0], "hsla(90, 50%, 75%, 0)", [0.75, 0.875, 0.625, 0], "hsla(120, 50%, 75%, 0)", [0.625, 0.875, 0.625, 0], "hsla(150, 50%, 75%, 0)", [0.625, 0.875, 0.75, 0], "hsla(180, 50%, 75%, 0)", [0.625, 0.875, 0.875, 0], "hsla(210, 50%, 75%, 0)", [0.625, 0.75, 0.875, 0], "hsla(240, 50%, 75%, 0)", [0.625, 0.625, 0.875, 0], "hsla(270, 50%, 75%, 0)", [0.75, 0.625, 0.875, 0], "hsla(300, 50%, 75%, 0)", [0.875, 0.625, 0.875, 0], "hsla(330, 50%, 75%, 0)", [0.875, 0.625, 0.75, 0], "hsla(0, 62.5%, 75%, 0)", [0.90625, 0.59375, 0.59375, 0], "hsla(30, 62.5%, 75%, 0)", [0.90625, 0.75, 0.59375, 0], "hsla(60, 62.5%, 75%, 0)", [0.90625, 0.90625, 0.59375, 0], "hsla(90, 62.5%, 75%, 0)", [0.75, 0.90625, 0.59375, 0], "hsla(120, 62.5%, 75%, 0)", [0.59375, 0.90625, 0.59375, 0], "hsla(150, 62.5%, 75%, 0)", [0.59375, 0.90625, 0.75, 0], "hsla(180, 62.5%, 75%, 0)", [0.59375, 0.90625, 0.90625, 0], "hsla(210, 62.5%, 75%, 0)", [0.59375, 0.75, 0.90625, 0], "hsla(240, 62.5%, 75%, 0)", [0.59375, 0.59375, 0.90625, 0], "hsla(270, 62.5%, 75%, 0)", [0.75, 0.59375, 0.90625, 0], "hsla(300, 62.5%, 75%, 0)", [0.90625, 0.59375, 0.90625, 0], "hsla(330, 62.5%, 75%, 0)", [0.90625, 0.59375, 0.75, 0], "hsla(0, 75%, 75%, 0)", [0.9375, 0.5625, 0.5625, 0], "hsla(30, 75%, 75%, 0)", [0.9375, 0.75, 0.5625, 0], "hsla(60, 75%, 75%, 0)", [0.9375, 0.9375, 0.5625, 0], "hsla(90, 75%, 75%, 0)", [0.75, 0.9375, 0.5625, 0], "hsla(120, 75%, 75%, 0)", [0.5625, 0.9375, 0.5625, 0], "hsla(150, 75%, 75%, 0)", [0.5625, 0.9375, 0.75, 0], "hsla(180, 75%, 75%, 0)", [0.5625, 0.9375, 0.9375, 0], "hsla(210, 75%, 75%, 0)", [0.5625, 0.75, 0.9375, 0], "hsla(240, 75%, 75%, 0)", [0.5625, 0.5625, 0.9375, 0], "hsla(270, 75%, 75%, 0)", [0.75, 0.5625, 0.9375, 0], "hsla(300, 75%, 75%, 0)", [0.9375, 0.5625, 0.9375, 0], "hsla(330, 75%, 75%, 0)", [0.9375, 0.5625, 0.75, 0], "hsla(0, 87.5%, 75%, 0)", [0.96875, 0.53125, 0.53125, 0], "hsla(30, 87.5%, 75%, 0)", [0.96875, 0.75, 0.53125, 0], "hsla(60, 87.5%, 75%, 0)", [0.96875, 0.96875, 0.53125, 0], "hsla(90, 87.5%, 75%, 0)", [0.75, 0.96875, 0.53125, 0], "hsla(120, 87.5%, 75%, 0)", [0.53125, 0.96875, 0.53125, 0], "hsla(150, 87.5%, 75%, 0)", [0.53125, 0.96875, 0.75, 0], "hsla(180, 87.5%, 75%, 0)", [0.53125, 0.96875, 0.96875, 0], "hsla(210, 87.5%, 75%, 0)", [0.53125, 0.75, 0.96875, 0], "hsla(240, 87.5%, 75%, 0)", [0.53125, 0.53125, 0.96875, 0], "hsla(270, 87.5%, 75%, 0)", [0.75, 0.53125, 0.96875, 0], "hsla(300, 87.5%, 75%, 0)", [0.96875, 0.53125, 0.96875, 0], "hsla(330, 87.5%, 75%, 0)", [0.96875, 0.53125, 0.75, 0], "hsla(0, 100%, 75%, 0)", [1, 0.5, 0.5, 0], "hsla(30, 100%, 75%, 0)", [1, 0.75, 0.5, 0], "hsla(60, 100%, 75%, 0)", [1, 1, 0.5, 0], "hsla(90, 100%, 75%, 0)", [0.75, 1, 0.5, 0], "hsla(120, 100%, 75%, 0)", [0.5, 1, 0.5, 0], "hsla(150, 100%, 75%, 0)", [0.5, 1, 0.75, 0], "hsla(180, 100%, 75%, 0)", [0.5, 1, 1, 0], "hsla(210, 100%, 75%, 0)", [0.5, 0.75, 1, 0], "hsla(240, 100%, 75%, 0)", [0.5, 0.5, 1, 0], "hsla(270, 100%, 75%, 0)", [0.75, 0.5, 1, 0], "hsla(300, 100%, 75%, 0)", [1, 0.5, 1, 0], "hsla(330, 100%, 75%, 0)", [1, 0.5, 0.75, 0], "hsla(0, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(30, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(60, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(90, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(120, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(150, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(180, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(210, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(240, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(270, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(300, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(330, 0%, 87.5%, 0)", [0.875, 0.875, 0.875, 0], "hsla(0, 12.5%, 87.5%, 0)", [0.890625, 0.859375, 0.859375, 0], "hsla(30, 12.5%, 87.5%, 0)", [0.890625, 0.875, 0.859375, 0], "hsla(60, 12.5%, 87.5%, 0)", [0.890625, 0.890625, 0.859375, 0], "hsla(90, 12.5%, 87.5%, 0)", [0.875, 0.890625, 0.859375, 0], "hsla(120, 12.5%, 87.5%, 0)", [0.859375, 0.890625, 0.859375, 0], "hsla(150, 12.5%, 87.5%, 0)", [0.859375, 0.890625, 0.875, 0], "hsla(180, 12.5%, 87.5%, 0)", [0.859375, 0.890625, 0.890625, 0], "hsla(210, 12.5%, 87.5%, 0)", [0.859375, 0.875, 0.890625, 0], "hsla(240, 12.5%, 87.5%, 0)", [0.859375, 0.859375, 0.890625, 0], "hsla(270, 12.5%, 87.5%, 0)", [0.875, 0.859375, 0.890625, 0], "hsla(300, 12.5%, 87.5%, 0)", [0.890625, 0.859375, 0.890625, 0], "hsla(330, 12.5%, 87.5%, 0)", [0.890625, 0.859375, 0.875, 0], "hsla(0, 25%, 87.5%, 0)", [0.90625, 0.84375, 0.84375, 0], "hsla(30, 25%, 87.5%, 0)", [0.90625, 0.875, 0.84375, 0], "hsla(60, 25%, 87.5%, 0)", [0.90625, 0.90625, 0.84375, 0], "hsla(90, 25%, 87.5%, 0)", [0.875, 0.90625, 0.84375, 0], "hsla(120, 25%, 87.5%, 0)", [0.84375, 0.90625, 0.84375, 0], "hsla(150, 25%, 87.5%, 0)", [0.84375, 0.90625, 0.875, 0], "hsla(180, 25%, 87.5%, 0)", [0.84375, 0.90625, 0.90625, 0], "hsla(210, 25%, 87.5%, 0)", [0.84375, 0.875, 0.90625, 0], "hsla(240, 25%, 87.5%, 0)", [0.84375, 0.84375, 0.90625, 0], "hsla(270, 25%, 87.5%, 0)", [0.875, 0.84375, 0.90625, 0], "hsla(300, 25%, 87.5%, 0)", [0.90625, 0.84375, 0.90625, 0], "hsla(330, 25%, 87.5%, 0)", [0.90625, 0.84375, 0.875, 0], "hsla(0, 37.5%, 87.5%, 0)", [0.921875, 0.828125, 0.828125, 0], "hsla(30, 37.5%, 87.5%, 0)", [0.921875, 0.875, 0.828125, 0], "hsla(60, 37.5%, 87.5%, 0)", [0.921875, 0.921875, 0.828125, 0], "hsla(90, 37.5%, 87.5%, 0)", [0.875, 0.921875, 0.828125, 0], "hsla(120, 37.5%, 87.5%, 0)", [0.828125, 0.921875, 0.828125, 0], "hsla(150, 37.5%, 87.5%, 0)", [0.828125, 0.921875, 0.875, 0], "hsla(180, 37.5%, 87.5%, 0)", [0.828125, 0.921875, 0.921875, 0], "hsla(210, 37.5%, 87.5%, 0)", [0.828125, 0.875, 0.921875, 0], "hsla(240, 37.5%, 87.5%, 0)", [0.828125, 0.828125, 0.921875, 0], "hsla(270, 37.5%, 87.5%, 0)", [0.875, 0.828125, 0.921875, 0], "hsla(300, 37.5%, 87.5%, 0)", [0.921875, 0.828125, 0.921875, 0], "hsla(330, 37.5%, 87.5%, 0)", [0.921875, 0.828125, 0.875, 0], "hsla(0, 50%, 87.5%, 0)", [0.9375, 0.8125, 0.8125, 0], "hsla(30, 50%, 87.5%, 0)", [0.9375, 0.875, 0.8125, 0], "hsla(60, 50%, 87.5%, 0)", [0.9375, 0.9375, 0.8125, 0], "hsla(90, 50%, 87.5%, 0)", [0.875, 0.9375, 0.8125, 0], "hsla(120, 50%, 87.5%, 0)", [0.8125, 0.9375, 0.8125, 0], "hsla(150, 50%, 87.5%, 0)", [0.8125, 0.9375, 0.875, 0], "hsla(180, 50%, 87.5%, 0)", [0.8125, 0.9375, 0.9375, 0], "hsla(210, 50%, 87.5%, 0)", [0.8125, 0.875, 0.9375, 0], "hsla(240, 50%, 87.5%, 0)", [0.8125, 0.8125, 0.9375, 0], "hsla(270, 50%, 87.5%, 0)", [0.875, 0.8125, 0.9375, 0], "hsla(300, 50%, 87.5%, 0)", [0.9375, 0.8125, 0.9375, 0], "hsla(330, 50%, 87.5%, 0)", [0.9375, 0.8125, 0.875, 0], "hsla(0, 62.5%, 87.5%, 0)", [0.953125, 0.796875, 0.796875, 0], "hsla(30, 62.5%, 87.5%, 0)", [0.953125, 0.875, 0.796875, 0], "hsla(60, 62.5%, 87.5%, 0)", [0.953125, 0.953125, 0.796875, 0], "hsla(90, 62.5%, 87.5%, 0)", [0.875, 0.953125, 0.796875, 0], "hsla(120, 62.5%, 87.5%, 0)", [0.796875, 0.953125, 0.796875, 0], "hsla(150, 62.5%, 87.5%, 0)", [0.796875, 0.953125, 0.875, 0], "hsla(180, 62.5%, 87.5%, 0)", [0.796875, 0.953125, 0.953125, 0], "hsla(210, 62.5%, 87.5%, 0)", [0.796875, 0.875, 0.953125, 0], "hsla(240, 62.5%, 87.5%, 0)", [0.796875, 0.796875, 0.953125, 0], "hsla(270, 62.5%, 87.5%, 0)", [0.875, 0.796875, 0.953125, 0], "hsla(300, 62.5%, 87.5%, 0)", [0.953125, 0.796875, 0.953125, 0], "hsla(330, 62.5%, 87.5%, 0)", [0.953125, 0.796875, 0.875, 0], "hsla(0, 75%, 87.5%, 0)", [0.96875, 0.78125, 0.78125, 0], "hsla(30, 75%, 87.5%, 0)", [0.96875, 0.875, 0.78125, 0], "hsla(60, 75%, 87.5%, 0)", [0.96875, 0.96875, 0.78125, 0], "hsla(90, 75%, 87.5%, 0)", [0.875, 0.96875, 0.78125, 0], "hsla(120, 75%, 87.5%, 0)", [0.78125, 0.96875, 0.78125, 0], "hsla(150, 75%, 87.5%, 0)", [0.78125, 0.96875, 0.875, 0], "hsla(180, 75%, 87.5%, 0)", [0.78125, 0.96875, 0.96875, 0], "hsla(210, 75%, 87.5%, 0)", [0.78125, 0.875, 0.96875, 0], "hsla(240, 75%, 87.5%, 0)", [0.78125, 0.78125, 0.96875, 0], "hsla(270, 75%, 87.5%, 0)", [0.875, 0.78125, 0.96875, 0], "hsla(300, 75%, 87.5%, 0)", [0.96875, 0.78125, 0.96875, 0], "hsla(330, 75%, 87.5%, 0)", [0.96875, 0.78125, 0.875, 0], "hsla(0, 87.5%, 87.5%, 0)", [0.984375, 0.765625, 0.765625, 0], "hsla(30, 87.5%, 87.5%, 0)", [0.984375, 0.875, 0.765625, 0], "hsla(60, 87.5%, 87.5%, 0)", [0.984375, 0.984375, 0.765625, 0], "hsla(90, 87.5%, 87.5%, 0)", [0.875, 0.984375, 0.765625, 0], "hsla(120, 87.5%, 87.5%, 0)", [0.765625, 0.984375, 0.765625, 0], "hsla(150, 87.5%, 87.5%, 0)", [0.765625, 0.984375, 0.875, 0], "hsla(180, 87.5%, 87.5%, 0)", [0.765625, 0.984375, 0.984375, 0], "hsla(210, 87.5%, 87.5%, 0)", [0.765625, 0.875, 0.984375, 0], "hsla(240, 87.5%, 87.5%, 0)", [0.765625, 0.765625, 0.984375, 0], "hsla(270, 87.5%, 87.5%, 0)", [0.875, 0.765625, 0.984375, 0], "hsla(300, 87.5%, 87.5%, 0)", [0.984375, 0.765625, 0.984375, 0], "hsla(330, 87.5%, 87.5%, 0)", [0.984375, 0.765625, 0.875, 0], "hsla(0, 100%, 87.5%, 0)", [1, 0.75, 0.75, 0], "hsla(30, 100%, 87.5%, 0)", [1, 0.875, 0.75, 0], "hsla(60, 100%, 87.5%, 0)", [1, 1, 0.75, 0], "hsla(90, 100%, 87.5%, 0)", [0.875, 1, 0.75, 0], "hsla(120, 100%, 87.5%, 0)", [0.75, 1, 0.75, 0], "hsla(150, 100%, 87.5%, 0)", [0.75, 1, 0.875, 0], "hsla(180, 100%, 87.5%, 0)", [0.75, 1, 1, 0], "hsla(210, 100%, 87.5%, 0)", [0.75, 0.875, 1, 0], "hsla(240, 100%, 87.5%, 0)", [0.75, 0.75, 1, 0], "hsla(270, 100%, 87.5%, 0)", [0.875, 0.75, 1, 0], "hsla(300, 100%, 87.5%, 0)", [1, 0.75, 1, 0], "hsla(330, 100%, 87.5%, 0)", [1, 0.75, 0.875, 0], "hsla(0, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(30, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(60, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(90, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(120, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(150, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(180, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(210, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(240, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(270, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(300, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(330, 0%, 100%, 0)", [1, 1, 1, 0], "hsla(0, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(30, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(60, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(90, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(120, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(150, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(180, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(210, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(240, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(270, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(300, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(330, 12.5%, 100%, 0)", [1, 1, 1, 0], "hsla(0, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(30, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(60, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(90, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(120, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(150, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(180, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(210, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(240, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(270, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(300, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(330, 25%, 100%, 0)", [1, 1, 1, 0], "hsla(0, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(30, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(60, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(90, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(120, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(150, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(180, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(210, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(240, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(270, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(300, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(330, 37.5%, 100%, 0)", [1, 1, 1, 0], "hsla(0, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(30, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(60, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(90, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(120, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(150, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(180, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(210, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(240, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(270, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(300, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(330, 50%, 100%, 0)", [1, 1, 1, 0], "hsla(0, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(30, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(60, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(90, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(120, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(150, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(180, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(210, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(240, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(270, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(300, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(330, 62.5%, 100%, 0)", [1, 1, 1, 0], "hsla(0, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(30, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(60, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(90, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(120, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(150, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(180, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(210, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(240, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(270, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(300, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(330, 75%, 100%, 0)", [1, 1, 1, 0], "hsla(0, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(30, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(60, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(90, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(120, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(150, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(180, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(210, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(240, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(270, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(300, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(330, 87.5%, 100%, 0)", [1, 1, 1, 0], "hsla(0, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(30, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(60, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(90, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(120, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(150, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(180, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(210, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(240, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(270, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(300, 100%, 100%, 0)", [1, 1, 1, 0], "hsla(330, 100%, 100%, 0)", [1, 1, 1, 0] ] crass-1.0.2/test/css-parsing-tests/LICENSE0000644000004100000410000000050612530245151020231 0ustar www-datawww-dataWritten in 2013 by Simon Sapin. To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this work to the public domain worldwide. This work is distributed without any warranty. See the CC0 Public Domain Dedication: http://creativecommons.org/publicdomain/zero/1.0/ crass-1.0.2/test/css-parsing-tests/declaration_list.json0000644000004100000410000000225612530245151023443 0ustar www-datawww-data[ "", [], ";; /**/ ; ;", [], "a:b; c:d 42!important;\n", [ ["declaration", "a", [["ident", "b"]], false], ["declaration", "c", [["ident", "d"], " ", ["number", "42", 42, "integer"]], true] ], "z;a:b", [ ["error", "invalid"], ["declaration", "a", [["ident", "b"]], false] ], "z:x!;a:b", [ ["declaration", "z", [["ident", "x"], "!"], false], ["declaration", "a", [["ident", "b"]], false] ], "a:b; c+:d", [ ["declaration", "a", [["ident", "b"]], false], ["error", "invalid"] ], "@import 'foo.css'; a:b; @import 'bar.css'", [ ["at-rule", "import", [" ", ["string", "foo.css"]], null], ["declaration", "a", [["ident", "b"]], false], ["at-rule", "import", [" ", ["string", "bar.css"]], null] ], "@media screen { div{;}} a:b;; @media print{div{", [ ["at-rule", "media", [" ", ["ident", "screen"], " "], [" ", ["ident", "div"], ["{}", ";"]]], ["declaration", "a", [["ident", "b"]], false], ["at-rule", "media", [" ", ["ident", "print"]], [["ident", "div"], ["{}"]]] ], "@ media screen { div{;}} a:b;; @media print{div{", [ ["error", "invalid"], ["at-rule", "media", [" ", ["ident", "print"]], [["ident", "div"], ["{}"]]] ], "", [] ] crass-1.0.2/test/css-parsing-tests/README.rst0000644000004100000410000002222512530245151020715 0ustar www-datawww-dataCSS parsing tests ################# This repository contains implementation-independent test for CSS parsers, based on the 2013 draft of the `CSS Syntax Level 3`_ specification. .. _CSS Syntax Level 3: http://dev.w3.org/csswg/css-syntax-3/ The upstream repository for these tests is at https://github.com/SimonSapin/css-parsing-tests Projects using this =================== CSS parsers using these tests: * `tinycss2 `_ (Python) * `rust-cssparser `_ (Rust, used in `Servo `_) * `Crass `_ (Ruby) Importing ========= The recommended way to use these tests in an implementation is to import them with git-subtree_. .. _git-subtree: https://github.com/git/git/tree/master/contrib/subtree To import the first time to a ``./css-parsing-tests`` sub-directory, run this from the top-level of a git repository:: git subtree add -P css-parsing-tests https://github.com/SimonSapin/css-parsing-tests.git master Later, to merge changes made in the upstream repository, run:: git subtree pull -P css-parsing-tests https://github.com/SimonSapin/css-parsing-tests.git master Test files ========== CSS Syntax specification describes a number of "functions". Each ``.json`` file in this repository corresponds to such a function. The files are encoded as UTF-8 and each contain a JSON array with an even number of items, where each pair of items is one function input associated with the expected result. ``component_value_list.json`` Tests `Parse a list of component values `_. The Unicode input is represented by a JSON string, the output as an array of `component values`_ as described below. ``component_value_list.json`` Tests `Parse a component value `_. The Unicode input is represented by a JSON string, the output as a `component value`_. ``declaration_list.json`` Tests `Parse a list of declarations `_. The Unicode input is represented by a JSON string, the output as an array of declarations_ and at-rules_. ``one_declaration.json`` Tests `Parse a declaration `_. The Unicode input is represented by a JSON string, the output as a declaration_. ``one_rule.json`` Tests `Parse a rule `_. The Unicode input is represented by a JSON string, the output as a `qualified rule`_ or at-rule_. ``rule_list.json`` Tests `Parse a list of rules `_. The Unicode input is represented by a JSON string, the output as a list of `qualified rules`_ or at-rules_. ``stylesheet.json`` Tests `Parse a stylesheet `_. The Unicode input is represented by a JSON string, the output as a list of `qualified rules`_ or at-rules_. ``stylesheet_bytes.json`` Tests `Parse a stylesheet `_ together with `The input byte stream `_. The input is represented as a JSON object containing: * A required ``css_bytes``, the input byte string, represented as a JSON string where code points U+0000 to U+00FF represent bytes of the same value. * An optional ``protocol_encoding``, a protocol encoding label as a JSON string, or null. * An optional ``environment_encoding``, an environment encoding label as a JSON string, or null. * An optional ``comment`` that is ignored. The output is represented a list of `qualified rules`_ or at-rules_. ``color3.json`` Tests the ```` syntax `defined in CSS Color Level 3 `_. The Unicode input is represented by a JSON string, the output as one of: * null if the input is not a valid color in CSS syntax * The string "currentColor" for the currentColor keyword * An array of length 4 for every other values: four (floating point) numbers for the Red, Green, Blue and Alpha channel. Each value is between 0 and 1. ``color3_hsl.json`` Same as ``color3.json``. This file is generated by the ``make_color3_hsl.py`` Python script. ``color3_keywords.json`` Same as ``color3.json``, except that the values for the Red, Green and Blue channel are between 0 and 255. This file is generated by the ``make_color3_keywords.py`` Python script. ``An+B.json`` Tests the `An+B `_ syntax defined in CSS Syntax Level 3. This `differs `_ from the `nth grammar rule `_ in Selectors Level 3 only in that ``-`` charecters and digits can be escaped in some cases. The Unicode input is represented by a JSON string, the output as null for invalid syntax, or an array of two integers ``[A, B]``. Result representation ===================== AST nodes (the results of parsing) are represented in JSON as follow. This representation was chosen to be compact (and thus less annoying to write by hand) while staying unambiguous. For example, the difference between ``@import`` and ``\@import`` is not lost: they are represented as ``["at-keyword", "import"]`` and ``["ident", "@import"]``, respectively. Rules and declarations ---------------------- .. _at-rule: .. _at-rules: .. _qualified rule: .. _qualified rules: .. _declaration: .. _declarations: At-rule An array of length 4: the string ``"at-rule"``, the name (value of the at-keyword) as a string, the prelude as a nested array of `component values`_, and the optional block as a nested array of component value, or null. Qualified rule An array of length 3: the string ``"qualified rule"``, the prelude as a nested array of `component values`_, and the block as a nested array of component value. Declaration An array of length 4: the string ``"declaration"``, the name as a string, the value as a nested array of `component values`_, and a the important flag as a boolean. .. _component value: .. _component values: Component values ---------------- Array of length 2: the string ``"ident"``, and the value as a string. Array of length 2: the string ``"at-keyword"``, and the value as a string. Array of length 3: the string ``"hash"``, the value as a string, and the type as the string ``"id"`` or ``"unrestricted"``. Array of length 2: the string ``"string"``, and the value as a string. Array of length 1: the string ``"bad-string"``. Array of length 2: the string ``"url"``, and the value as a string. Array of length 1: the string ``"bad-url"``. The value as a one-character string. Array of length 4: the string ``"number"``, the representation as a string, the value as a number, and the type as the string ``"integer"`` or ``"number"``. Array of length 4: the string ``"percentage"``, the representation as a string, the value as a number, and the type as the string ``"integer"`` or ``"number"``. Array of length 4: the string ``"dimension"``, the representation as a string, the value as a number, the type as the string ``"integer"`` or ``"number"``, and the unit as a string. Array of length 3: the string ``"unicode-range"``, followed by the *start* and *end* integers as two numbers. The string ``"~="``. The string ``"|="``. The string ``"^="``. The string ``"$="``. The string ``"*="``. The string ``"||"``. The string ``" "`` (a single space.) The string ``""``. The string ``":"``. The string ``";"``. The string ``","``. {} block An array of length N+1: the string ``"{}"`` followed by the N `component values`_ of the block’s content. [] block An array of length N+1: the string ``"[]"`` followed by the N `component values`_ of the block’s content. () block An array of length N+1: the string ``"()"`` followed by the N `component values`_ of the block’s content. Function An array of length N+2: the string ``"function"`` and the name of the function as a string followed by the N `component values`_ of the function’s arguments. The array of two strings ``["error", "bad-string"]``. The array of two strings ``["error", "bad-url"]``. Unmatched <}> The array of two strings ``["error", "}"]``. Unmatched <]> The array of two strings ``["error", "]"]``. Unmatched <)> The array of two strings ``["error", ")"]``. crass-1.0.2/test/css-parsing-tests/stylesheet.json0000644000004100000410000000247512530245151022317 0ustar www-datawww-data[ "", [], "foo", [["error", "invalid"]], "foo 4", [["error", "invalid"]], "@foo", [["at-rule", "foo", [], null]], "@foo bar; \t/* comment */", [["at-rule", "foo", [" ", ["ident", "bar"]], null]], " /**/ @foo bar{[(4", [["at-rule", "foo", [" ", ["ident", "bar"]], [["[]", ["()", ["number", "4", 4, "integer"]]]] ]], "@foo { bar", [["at-rule", "foo", [" "], [" ", ["ident", "bar"]]]], "@foo [ bar", [["at-rule", "foo", [" ", ["[]", " ", ["ident", "bar"]]], null]], " /**/ div > p { color: #aaa; } /**/ ", [["qualified rule", [["ident", "div"], " ", ">", " ", ["ident", "p"], " "], [" ", ["ident", "color"], ":", " ", ["hash", "aaa", "id"], ";", " "] ]], " /**/ { color: #aaa ", [["qualified rule", [], [" ", ["ident", "color"], ":", " ", ["hash", "aaa", "id"], " "] ]], " /* CDO/CDC are ignored between rules */ {", [["qualified rule", [], []]], " a{", [["qualified rule", [["ident", "a"], ""], []]], "div { color: #aaa; } p{}", [ ["qualified rule", [["ident", "div"], " "], [" ", ["ident", "color"], ":", " ", ["hash", "aaa", "id"], ";", " "] ], ["qualified rule", [["ident", "p"]], []] ], "div {} -->", [["qualified rule", [["ident", "div"], " "], []]], "{}a", [["qualified rule", [], []], ["error", "invalid"]], "{}@a", [["qualified rule", [], []], ["at-rule", "a", [], null]] ] crass-1.0.2/test/css-parsing-tests/color3_keywords.json0000644000004100000410000005553612530245151023264 0ustar www-datawww-data[ "transparent", [0, 0, 0, 0], "Transparent", [0, 0, 0, 0], "\\transparent", [0, 0, 0, 0], "\\74 ransparent", [0, 0, 0, 0], "ransparent", null, "black", [0, 0, 0, 1], "bLack", [0, 0, 0, 1], "b\\lack", [0, 0, 0, 1], "b\\6C ack", [0, 0, 0, 1], "back", null, "blacK", null, "silver", [192, 192, 192, 1], "siLver", [192, 192, 192, 1], "si\\lver", [192, 192, 192, 1], "si\\6C ver", [192, 192, 192, 1], "siver", null, "gray", [128, 128, 128, 1], "graY", [128, 128, 128, 1], "gra\\y", [128, 128, 128, 1], "gra\\79 ", [128, 128, 128, 1], "gra", null, "white", [255, 255, 255, 1], "whitE", [255, 255, 255, 1], "whit\\65 ", [255, 255, 255, 1], "whit", null, "maroon", [128, 0, 0, 1], "marooN", [128, 0, 0, 1], "maroo\\n", [128, 0, 0, 1], "maroo\\6E ", [128, 0, 0, 1], "maroo", null, "red", [255, 0, 0, 1], "Red", [255, 0, 0, 1], "\\red", [255, 0, 0, 1], "\\72 ed", [255, 0, 0, 1], "ed", null, "purple", [128, 0, 128, 1], "pUrple", [128, 0, 128, 1], "p\\urple", [128, 0, 128, 1], "p\\75 rple", [128, 0, 128, 1], "prple", null, "fuchsia", [255, 0, 255, 1], "fUchsia", [255, 0, 255, 1], "f\\uchsia", [255, 0, 255, 1], "f\\75 chsia", [255, 0, 255, 1], "fchsia", null, "green", [0, 128, 0, 1], "greeN", [0, 128, 0, 1], "gree\\n", [0, 128, 0, 1], "gree\\6E ", [0, 128, 0, 1], "gree", null, "lime", [0, 255, 0, 1], "liMe", [0, 255, 0, 1], "li\\me", [0, 255, 0, 1], "li\\6D e", [0, 255, 0, 1], "lie", null, "olive", [128, 128, 0, 1], "oLive", [128, 128, 0, 1], "o\\live", [128, 128, 0, 1], "o\\6C ive", [128, 128, 0, 1], "oive", null, "yellow", [255, 255, 0, 1], "Yellow", [255, 255, 0, 1], "\\yellow", [255, 255, 0, 1], "\\79 ellow", [255, 255, 0, 1], "ellow", null, "navy", [0, 0, 128, 1], "nAvy", [0, 0, 128, 1], "n\\61 vy", [0, 0, 128, 1], "nvy", null, "blue", [0, 0, 255, 1], "blUe", [0, 0, 255, 1], "bl\\ue", [0, 0, 255, 1], "bl\\75 e", [0, 0, 255, 1], "ble", null, "teal", [0, 128, 128, 1], "teaL", [0, 128, 128, 1], "tea\\l", [0, 128, 128, 1], "tea\\6C ", [0, 128, 128, 1], "tea", null, "aqua", [0, 255, 255, 1], "Aqua", [0, 255, 255, 1], "\\61 qua", [0, 255, 255, 1], "qua", null, "aliceblue", [240, 248, 255, 1], "alicebluE", [240, 248, 255, 1], "aliceblu\\65 ", [240, 248, 255, 1], "aliceblu", null, "antiquewhite", [250, 235, 215, 1], "antiquEwhite", [250, 235, 215, 1], "antiqu\\65 white", [250, 235, 215, 1], "antiquwhite", null, "aqua", [0, 255, 255, 1], "aquA", [0, 255, 255, 1], "aqu\\61 ", [0, 255, 255, 1], "aqu", null, "aquamarine", [127, 255, 212, 1], "Aquamarine", [127, 255, 212, 1], "\\61 quamarine", [127, 255, 212, 1], "quamarine", null, "azure", [240, 255, 255, 1], "aZure", [240, 255, 255, 1], "a\\zure", [240, 255, 255, 1], "a\\7A ure", [240, 255, 255, 1], "aure", null, "beige", [245, 245, 220, 1], "beIge", [245, 245, 220, 1], "be\\ige", [245, 245, 220, 1], "be\\69 ge", [245, 245, 220, 1], "bege", null, "bisque", [255, 228, 196, 1], "bisquE", [255, 228, 196, 1], "bisqu\\65 ", [255, 228, 196, 1], "bisqu", null, "black", [0, 0, 0, 1], "blacK", [0, 0, 0, 1], "blac\\k", [0, 0, 0, 1], "blac\\6B ", [0, 0, 0, 1], "blac", null, "blacK", null, "blanchedalmond", [255, 235, 205, 1], "blanchedalmOnd", [255, 235, 205, 1], "blanchedalm\\ond", [255, 235, 205, 1], "blanchedalm\\6F nd", [255, 235, 205, 1], "blanchedalmnd", null, "blue", [0, 0, 255, 1], "blUe", [0, 0, 255, 1], "bl\\ue", [0, 0, 255, 1], "bl\\75 e", [0, 0, 255, 1], "ble", null, "blueviolet", [138, 43, 226, 1], "bluevioLet", [138, 43, 226, 1], "bluevio\\let", [138, 43, 226, 1], "bluevio\\6C et", [138, 43, 226, 1], "bluevioet", null, "brown", [165, 42, 42, 1], "broWn", [165, 42, 42, 1], "bro\\wn", [165, 42, 42, 1], "bro\\77 n", [165, 42, 42, 1], "bron", null, "burlywood", [222, 184, 135, 1], "buRlywood", [222, 184, 135, 1], "bu\\rlywood", [222, 184, 135, 1], "bu\\72 lywood", [222, 184, 135, 1], "bulywood", null, "cadetblue", [95, 158, 160, 1], "cadEtblue", [95, 158, 160, 1], "cad\\65 tblue", [95, 158, 160, 1], "cadtblue", null, "chartreuse", [127, 255, 0, 1], "cHartreuse", [127, 255, 0, 1], "c\\hartreuse", [127, 255, 0, 1], "c\\68 artreuse", [127, 255, 0, 1], "cartreuse", null, "chocolate", [210, 105, 30, 1], "chocoLate", [210, 105, 30, 1], "choco\\late", [210, 105, 30, 1], "choco\\6C ate", [210, 105, 30, 1], "chocoate", null, "coral", [255, 127, 80, 1], "corAl", [255, 127, 80, 1], "cor\\61 l", [255, 127, 80, 1], "corl", null, "cornflowerblue", [100, 149, 237, 1], "cornflOwerblue", [100, 149, 237, 1], "cornfl\\owerblue", [100, 149, 237, 1], "cornfl\\6F werblue", [100, 149, 237, 1], "cornflwerblue", null, "cornsilk", [255, 248, 220, 1], "corNsilk", [255, 248, 220, 1], "cor\\nsilk", [255, 248, 220, 1], "cor\\6E silk", [255, 248, 220, 1], "corsilk", null, "cornsilK", null, "crimson", [220, 20, 60, 1], "cRimson", [220, 20, 60, 1], "c\\rimson", [220, 20, 60, 1], "c\\72 imson", [220, 20, 60, 1], "cimson", null, "cyan", [0, 255, 255, 1], "cYan", [0, 255, 255, 1], "c\\yan", [0, 255, 255, 1], "c\\79 an", [0, 255, 255, 1], "can", null, "darkblue", [0, 0, 139, 1], "darkblUe", [0, 0, 139, 1], "darkbl\\ue", [0, 0, 139, 1], "darkbl\\75 e", [0, 0, 139, 1], "darkble", null, "darKblue", null, "darkcyan", [0, 139, 139, 1], "darkcyaN", [0, 139, 139, 1], "darkcya\\n", [0, 139, 139, 1], "darkcya\\6E ", [0, 139, 139, 1], "darkcya", null, "darKcyan", null, "darkgoldenrod", [184, 134, 11, 1], "dArkgoldenrod", [184, 134, 11, 1], "d\\61 rkgoldenrod", [184, 134, 11, 1], "drkgoldenrod", null, "darKgoldenrod", null, "darkgray", [169, 169, 169, 1], "dArkgray", [169, 169, 169, 1], "d\\61 rkgray", [169, 169, 169, 1], "drkgray", null, "darKgray", null, "darkgreen", [0, 100, 0, 1], "darkgrEen", [0, 100, 0, 1], "darkgr\\65 en", [0, 100, 0, 1], "darkgren", null, "darKgreen", null, "darkgrey", [169, 169, 169, 1], "darKgrey", [169, 169, 169, 1], "dar\\kgrey", [169, 169, 169, 1], "dar\\6B grey", [169, 169, 169, 1], "dargrey", null, "darKgrey", null, "darkkhaki", [189, 183, 107, 1], "darkkhakI", [189, 183, 107, 1], "darkkhak\\i", [189, 183, 107, 1], "darkkhak\\69 ", [189, 183, 107, 1], "darkkhak", null, "darKKhaKi", null, "darkmagenta", [139, 0, 139, 1], "dArkmagenta", [139, 0, 139, 1], "d\\61 rkmagenta", [139, 0, 139, 1], "drkmagenta", null, "darKmagenta", null, "darkolivegreen", [85, 107, 47, 1], "darkOlivegreen", [85, 107, 47, 1], "dark\\olivegreen", [85, 107, 47, 1], "dark\\6F livegreen", [85, 107, 47, 1], "darklivegreen", null, "darKolivegreen", null, "darkorange", [255, 140, 0, 1], "darkoraNge", [255, 140, 0, 1], "darkora\\nge", [255, 140, 0, 1], "darkora\\6E ge", [255, 140, 0, 1], "darkorage", null, "darKorange", null, "darkorchid", [153, 50, 204, 1], "darkorchId", [153, 50, 204, 1], "darkorch\\id", [153, 50, 204, 1], "darkorch\\69 d", [153, 50, 204, 1], "darkorchd", null, "darKorchid", null, "darkred", [139, 0, 0, 1], "Darkred", [139, 0, 0, 1], "\\64 arkred", [139, 0, 0, 1], "arkred", null, "darKred", null, "darksalmon", [233, 150, 122, 1], "Darksalmon", [233, 150, 122, 1], "\\64 arksalmon", [233, 150, 122, 1], "arksalmon", null, "darKsalmon", null, "darkseagreen", [143, 188, 143, 1], "darKseagreen", [143, 188, 143, 1], "dar\\kseagreen", [143, 188, 143, 1], "dar\\6B seagreen", [143, 188, 143, 1], "darseagreen", null, "darKseagreen", null, "darkslateblue", [72, 61, 139, 1], "Darkslateblue", [72, 61, 139, 1], "\\64 arkslateblue", [72, 61, 139, 1], "arkslateblue", null, "darKslateblue", null, "darkslategray", [47, 79, 79, 1], "dArkslategray", [47, 79, 79, 1], "d\\61 rkslategray", [47, 79, 79, 1], "drkslategray", null, "darKslategray", null, "darkslategrey", [47, 79, 79, 1], "daRkslategrey", [47, 79, 79, 1], "da\\rkslategrey", [47, 79, 79, 1], "da\\72 kslategrey", [47, 79, 79, 1], "dakslategrey", null, "darKslategrey", null, "darkturquoise", [0, 206, 209, 1], "darKturquoise", [0, 206, 209, 1], "dar\\kturquoise", [0, 206, 209, 1], "dar\\6B turquoise", [0, 206, 209, 1], "darturquoise", null, "darKturquoise", null, "darkviolet", [148, 0, 211, 1], "darkviOlet", [148, 0, 211, 1], "darkvi\\olet", [148, 0, 211, 1], "darkvi\\6F let", [148, 0, 211, 1], "darkvilet", null, "darKviolet", null, "deeppink", [255, 20, 147, 1], "dEeppink", [255, 20, 147, 1], "d\\65 eppink", [255, 20, 147, 1], "deppink", null, "deeppinK", null, "deepskyblue", [0, 191, 255, 1], "deePskyblue", [0, 191, 255, 1], "dee\\pskyblue", [0, 191, 255, 1], "dee\\70 skyblue", [0, 191, 255, 1], "deeskyblue", null, "deepsKyblue", null, "dimgray", [105, 105, 105, 1], "dimGray", [105, 105, 105, 1], "dim\\gray", [105, 105, 105, 1], "dim\\67 ray", [105, 105, 105, 1], "dimray", null, "dimgrey", [105, 105, 105, 1], "dimgRey", [105, 105, 105, 1], "dimg\\rey", [105, 105, 105, 1], "dimg\\72 ey", [105, 105, 105, 1], "dimgey", null, "dodgerblue", [30, 144, 255, 1], "dOdgerblue", [30, 144, 255, 1], "d\\odgerblue", [30, 144, 255, 1], "d\\6F dgerblue", [30, 144, 255, 1], "ddgerblue", null, "firebrick", [178, 34, 34, 1], "firebricK", [178, 34, 34, 1], "firebric\\k", [178, 34, 34, 1], "firebric\\6B ", [178, 34, 34, 1], "firebric", null, "firebricK", null, "floralwhite", [255, 250, 240, 1], "floralwhIte", [255, 250, 240, 1], "floralwh\\ite", [255, 250, 240, 1], "floralwh\\69 te", [255, 250, 240, 1], "floralwhte", null, "forestgreen", [34, 139, 34, 1], "forestgreEn", [34, 139, 34, 1], "forestgre\\65 n", [34, 139, 34, 1], "forestgren", null, "fuchsia", [255, 0, 255, 1], "fuChsia", [255, 0, 255, 1], "fu\\63 hsia", [255, 0, 255, 1], "fuhsia", null, "gainsboro", [220, 220, 220, 1], "gaiNsboro", [220, 220, 220, 1], "gai\\nsboro", [220, 220, 220, 1], "gai\\6E sboro", [220, 220, 220, 1], "gaisboro", null, "ghostwhite", [248, 248, 255, 1], "ghostwhIte", [248, 248, 255, 1], "ghostwh\\ite", [248, 248, 255, 1], "ghostwh\\69 te", [248, 248, 255, 1], "ghostwhte", null, "gold", [255, 215, 0, 1], "Gold", [255, 215, 0, 1], "\\gold", [255, 215, 0, 1], "\\67 old", [255, 215, 0, 1], "old", null, "goldenrod", [218, 165, 32, 1], "goldenRod", [218, 165, 32, 1], "golden\\rod", [218, 165, 32, 1], "golden\\72 od", [218, 165, 32, 1], "goldenod", null, "gray", [128, 128, 128, 1], "grAy", [128, 128, 128, 1], "gr\\61 y", [128, 128, 128, 1], "gry", null, "green", [0, 128, 0, 1], "gReen", [0, 128, 0, 1], "g\\reen", [0, 128, 0, 1], "g\\72 een", [0, 128, 0, 1], "geen", null, "greenyellow", [173, 255, 47, 1], "greenyEllow", [173, 255, 47, 1], "greeny\\65 llow", [173, 255, 47, 1], "greenyllow", null, "grey", [128, 128, 128, 1], "gRey", [128, 128, 128, 1], "g\\rey", [128, 128, 128, 1], "g\\72 ey", [128, 128, 128, 1], "gey", null, "honeydew", [240, 255, 240, 1], "hoNeydew", [240, 255, 240, 1], "ho\\neydew", [240, 255, 240, 1], "ho\\6E eydew", [240, 255, 240, 1], "hoeydew", null, "hotpink", [255, 105, 180, 1], "hotpiNk", [255, 105, 180, 1], "hotpi\\nk", [255, 105, 180, 1], "hotpi\\6E k", [255, 105, 180, 1], "hotpik", null, "hotpinK", null, "indianred", [205, 92, 92, 1], "indiAnred", [205, 92, 92, 1], "indi\\61 nred", [205, 92, 92, 1], "indinred", null, "indigo", [75, 0, 130, 1], "indigO", [75, 0, 130, 1], "indig\\o", [75, 0, 130, 1], "indig\\6F ", [75, 0, 130, 1], "indig", null, "ivory", [255, 255, 240, 1], "ivoRy", [255, 255, 240, 1], "ivo\\ry", [255, 255, 240, 1], "ivo\\72 y", [255, 255, 240, 1], "ivoy", null, "khaki", [240, 230, 140, 1], "khakI", [240, 230, 140, 1], "khak\\i", [240, 230, 140, 1], "khak\\69 ", [240, 230, 140, 1], "khak", null, "KhaKi", null, "lavender", [230, 230, 250, 1], "Lavender", [230, 230, 250, 1], "\\lavender", [230, 230, 250, 1], "\\6C avender", [230, 230, 250, 1], "avender", null, "lavenderblush", [255, 240, 245, 1], "lavEnderblush", [255, 240, 245, 1], "lav\\65 nderblush", [255, 240, 245, 1], "lavnderblush", null, "lawngreen", [124, 252, 0, 1], "lAwngreen", [124, 252, 0, 1], "l\\61 wngreen", [124, 252, 0, 1], "lwngreen", null, "lemonchiffon", [255, 250, 205, 1], "lemonchiffoN", [255, 250, 205, 1], "lemonchiffo\\n", [255, 250, 205, 1], "lemonchiffo\\6E ", [255, 250, 205, 1], "lemonchiffo", null, "lightblue", [173, 216, 230, 1], "ligHtblue", [173, 216, 230, 1], "lig\\htblue", [173, 216, 230, 1], "lig\\68 tblue", [173, 216, 230, 1], "ligtblue", null, "lightcoral", [240, 128, 128, 1], "lightCoral", [240, 128, 128, 1], "light\\63 oral", [240, 128, 128, 1], "lightoral", null, "lightcyan", [224, 255, 255, 1], "lightCyan", [224, 255, 255, 1], "light\\63 yan", [224, 255, 255, 1], "lightyan", null, "lightgoldenrodyellow", [250, 250, 210, 1], "lightgoLdenrodyellow", [250, 250, 210, 1], "lightgo\\ldenrodyellow", [250, 250, 210, 1], "lightgo\\6C denrodyellow", [250, 250, 210, 1], "lightgodenrodyellow", null, "lightgray", [211, 211, 211, 1], "lightgrAy", [211, 211, 211, 1], "lightgr\\61 y", [211, 211, 211, 1], "lightgry", null, "lightgreen", [144, 238, 144, 1], "lightgreeN", [144, 238, 144, 1], "lightgree\\n", [144, 238, 144, 1], "lightgree\\6E ", [144, 238, 144, 1], "lightgree", null, "lightgrey", [211, 211, 211, 1], "Lightgrey", [211, 211, 211, 1], "\\lightgrey", [211, 211, 211, 1], "\\6C ightgrey", [211, 211, 211, 1], "ightgrey", null, "lightpink", [255, 182, 193, 1], "lIghtpink", [255, 182, 193, 1], "l\\ightpink", [255, 182, 193, 1], "l\\69 ghtpink", [255, 182, 193, 1], "lghtpink", null, "lightpinK", null, "lightsalmon", [255, 160, 122, 1], "lighTsalmon", [255, 160, 122, 1], "ligh\\tsalmon", [255, 160, 122, 1], "ligh\\74 salmon", [255, 160, 122, 1], "lighsalmon", null, "lightseagreen", [32, 178, 170, 1], "liGhtseagreen", [32, 178, 170, 1], "li\\ghtseagreen", [32, 178, 170, 1], "li\\67 htseagreen", [32, 178, 170, 1], "lihtseagreen", null, "lightskyblue", [135, 206, 250, 1], "lightskyblUe", [135, 206, 250, 1], "lightskybl\\ue", [135, 206, 250, 1], "lightskybl\\75 e", [135, 206, 250, 1], "lightskyble", null, "lightsKyblue", null, "lightslategray", [119, 136, 153, 1], "lightslategRay", [119, 136, 153, 1], "lightslateg\\ray", [119, 136, 153, 1], "lightslateg\\72 ay", [119, 136, 153, 1], "lightslategay", null, "lightslategrey", [119, 136, 153, 1], "lightslategrEy", [119, 136, 153, 1], "lightslategr\\65 y", [119, 136, 153, 1], "lightslategry", null, "lightsteelblue", [176, 196, 222, 1], "lightsteelbluE", [176, 196, 222, 1], "lightsteelblu\\65 ", [176, 196, 222, 1], "lightsteelblu", null, "lightyellow", [255, 255, 224, 1], "lightyelloW", [255, 255, 224, 1], "lightyello\\w", [255, 255, 224, 1], "lightyello\\77 ", [255, 255, 224, 1], "lightyello", null, "lime", [0, 255, 0, 1], "limE", [0, 255, 0, 1], "lim\\65 ", [0, 255, 0, 1], "lim", null, "limegreen", [50, 205, 50, 1], "lImegreen", [50, 205, 50, 1], "l\\imegreen", [50, 205, 50, 1], "l\\69 megreen", [50, 205, 50, 1], "lmegreen", null, "linen", [250, 240, 230, 1], "lInen", [250, 240, 230, 1], "l\\inen", [250, 240, 230, 1], "l\\69 nen", [250, 240, 230, 1], "lnen", null, "magenta", [255, 0, 255, 1], "mageNta", [255, 0, 255, 1], "mage\\nta", [255, 0, 255, 1], "mage\\6E ta", [255, 0, 255, 1], "mageta", null, "maroon", [128, 0, 0, 1], "mAroon", [128, 0, 0, 1], "m\\61 roon", [128, 0, 0, 1], "mroon", null, "mediumaquamarine", [102, 205, 170, 1], "mediumaqUamarine", [102, 205, 170, 1], "mediumaq\\uamarine", [102, 205, 170, 1], "mediumaq\\75 amarine", [102, 205, 170, 1], "mediumaqamarine", null, "mediumblue", [0, 0, 205, 1], "mediuMblue", [0, 0, 205, 1], "mediu\\mblue", [0, 0, 205, 1], "mediu\\6D blue", [0, 0, 205, 1], "mediublue", null, "mediumorchid", [186, 85, 211, 1], "mediumorchId", [186, 85, 211, 1], "mediumorch\\id", [186, 85, 211, 1], "mediumorch\\69 d", [186, 85, 211, 1], "mediumorchd", null, "mediumpurple", [147, 112, 219, 1], "mediumpurplE", [147, 112, 219, 1], "mediumpurpl\\65 ", [147, 112, 219, 1], "mediumpurpl", null, "mediumseagreen", [60, 179, 113, 1], "mediumseagReen", [60, 179, 113, 1], "mediumseag\\reen", [60, 179, 113, 1], "mediumseag\\72 een", [60, 179, 113, 1], "mediumseageen", null, "mediumslateblue", [123, 104, 238, 1], "mediUmslateblue", [123, 104, 238, 1], "medi\\umslateblue", [123, 104, 238, 1], "medi\\75 mslateblue", [123, 104, 238, 1], "medimslateblue", null, "mediumspringgreen", [0, 250, 154, 1], "mediumspRinggreen", [0, 250, 154, 1], "mediumsp\\ringgreen", [0, 250, 154, 1], "mediumsp\\72 inggreen", [0, 250, 154, 1], "mediumspinggreen", null, "mediumturquoise", [72, 209, 204, 1], "mediumTurquoise", [72, 209, 204, 1], "medium\\turquoise", [72, 209, 204, 1], "medium\\74 urquoise", [72, 209, 204, 1], "mediumurquoise", null, "mediumvioletred", [199, 21, 133, 1], "mediumvIoletred", [199, 21, 133, 1], "mediumv\\ioletred", [199, 21, 133, 1], "mediumv\\69 oletred", [199, 21, 133, 1], "mediumvoletred", null, "midnightblue", [25, 25, 112, 1], "midniGhtblue", [25, 25, 112, 1], "midni\\ghtblue", [25, 25, 112, 1], "midni\\67 htblue", [25, 25, 112, 1], "midnihtblue", null, "mintcream", [245, 255, 250, 1], "mintcrEam", [245, 255, 250, 1], "mintcr\\65 am", [245, 255, 250, 1], "mintcram", null, "mistyrose", [255, 228, 225, 1], "mistyroSe", [255, 228, 225, 1], "mistyro\\se", [255, 228, 225, 1], "mistyro\\73 e", [255, 228, 225, 1], "mistyroe", null, "moccasin", [255, 228, 181, 1], "moccAsin", [255, 228, 181, 1], "mocc\\61 sin", [255, 228, 181, 1], "moccsin", null, "navajowhite", [255, 222, 173, 1], "navajowHite", [255, 222, 173, 1], "navajow\\hite", [255, 222, 173, 1], "navajow\\68 ite", [255, 222, 173, 1], "navajowite", null, "navy", [0, 0, 128, 1], "naVy", [0, 0, 128, 1], "na\\vy", [0, 0, 128, 1], "na\\76 y", [0, 0, 128, 1], "nay", null, "oldlace", [253, 245, 230, 1], "Oldlace", [253, 245, 230, 1], "\\oldlace", [253, 245, 230, 1], "\\6F ldlace", [253, 245, 230, 1], "ldlace", null, "olive", [128, 128, 0, 1], "Olive", [128, 128, 0, 1], "\\olive", [128, 128, 0, 1], "\\6F live", [128, 128, 0, 1], "live", null, "olivedrab", [107, 142, 35, 1], "olivEdrab", [107, 142, 35, 1], "oliv\\65 drab", [107, 142, 35, 1], "olivdrab", null, "orange", [255, 165, 0, 1], "orAnge", [255, 165, 0, 1], "or\\61 nge", [255, 165, 0, 1], "ornge", null, "orangered", [255, 69, 0, 1], "orangeRed", [255, 69, 0, 1], "orange\\red", [255, 69, 0, 1], "orange\\72 ed", [255, 69, 0, 1], "orangeed", null, "orchid", [218, 112, 214, 1], "orchId", [218, 112, 214, 1], "orch\\id", [218, 112, 214, 1], "orch\\69 d", [218, 112, 214, 1], "orchd", null, "palegoldenrod", [238, 232, 170, 1], "palegoldEnrod", [238, 232, 170, 1], "palegold\\65 nrod", [238, 232, 170, 1], "palegoldnrod", null, "palegreen", [152, 251, 152, 1], "Palegreen", [152, 251, 152, 1], "\\palegreen", [152, 251, 152, 1], "\\70 alegreen", [152, 251, 152, 1], "alegreen", null, "paleturquoise", [175, 238, 238, 1], "paleturquoIse", [175, 238, 238, 1], "paleturquo\\ise", [175, 238, 238, 1], "paleturquo\\69 se", [175, 238, 238, 1], "paleturquose", null, "palevioletred", [219, 112, 147, 1], "palevioletrEd", [219, 112, 147, 1], "palevioletr\\65 d", [219, 112, 147, 1], "palevioletrd", null, "papayawhip", [255, 239, 213, 1], "papayawhiP", [255, 239, 213, 1], "papayawhi\\p", [255, 239, 213, 1], "papayawhi\\70 ", [255, 239, 213, 1], "papayawhi", null, "peachpuff", [255, 218, 185, 1], "peacHpuff", [255, 218, 185, 1], "peac\\hpuff", [255, 218, 185, 1], "peac\\68 puff", [255, 218, 185, 1], "peacpuff", null, "peru", [205, 133, 63, 1], "perU", [205, 133, 63, 1], "per\\u", [205, 133, 63, 1], "per\\75 ", [205, 133, 63, 1], "per", null, "pink", [255, 192, 203, 1], "Pink", [255, 192, 203, 1], "\\pink", [255, 192, 203, 1], "\\70 ink", [255, 192, 203, 1], "ink", null, "pinK", null, "plum", [221, 160, 221, 1], "pLum", [221, 160, 221, 1], "p\\lum", [221, 160, 221, 1], "p\\6C um", [221, 160, 221, 1], "pum", null, "powderblue", [176, 224, 230, 1], "powdErblue", [176, 224, 230, 1], "powd\\65 rblue", [176, 224, 230, 1], "powdrblue", null, "purple", [128, 0, 128, 1], "purPle", [128, 0, 128, 1], "pur\\ple", [128, 0, 128, 1], "pur\\70 le", [128, 0, 128, 1], "purle", null, "red", [255, 0, 0, 1], "rEd", [255, 0, 0, 1], "r\\65 d", [255, 0, 0, 1], "rd", null, "rosybrown", [188, 143, 143, 1], "roSybrown", [188, 143, 143, 1], "ro\\sybrown", [188, 143, 143, 1], "ro\\73 ybrown", [188, 143, 143, 1], "roybrown", null, "royalblue", [65, 105, 225, 1], "royAlblue", [65, 105, 225, 1], "roy\\61 lblue", [65, 105, 225, 1], "roylblue", null, "saddlebrown", [139, 69, 19, 1], "saddlebRown", [139, 69, 19, 1], "saddleb\\rown", [139, 69, 19, 1], "saddleb\\72 own", [139, 69, 19, 1], "saddlebown", null, "salmon", [250, 128, 114, 1], "saLmon", [250, 128, 114, 1], "sa\\lmon", [250, 128, 114, 1], "sa\\6C mon", [250, 128, 114, 1], "samon", null, "sandybrown", [244, 164, 96, 1], "sAndybrown", [244, 164, 96, 1], "s\\61 ndybrown", [244, 164, 96, 1], "sndybrown", null, "seagreen", [46, 139, 87, 1], "seagreEn", [46, 139, 87, 1], "seagre\\65 n", [46, 139, 87, 1], "seagren", null, "seashell", [255, 245, 238, 1], "seashelL", [255, 245, 238, 1], "seashel\\l", [255, 245, 238, 1], "seashel\\6C ", [255, 245, 238, 1], "seashel", null, "sienna", [160, 82, 45, 1], "Sienna", [160, 82, 45, 1], "\\sienna", [160, 82, 45, 1], "\\73 ienna", [160, 82, 45, 1], "ienna", null, "silver", [192, 192, 192, 1], "sIlver", [192, 192, 192, 1], "s\\ilver", [192, 192, 192, 1], "s\\69 lver", [192, 192, 192, 1], "slver", null, "skyblue", [135, 206, 235, 1], "skybluE", [135, 206, 235, 1], "skyblu\\65 ", [135, 206, 235, 1], "skyblu", null, "sKyblue", null, "slateblue", [106, 90, 205, 1], "slaTeblue", [106, 90, 205, 1], "sla\\teblue", [106, 90, 205, 1], "sla\\74 eblue", [106, 90, 205, 1], "slaeblue", null, "slategray", [112, 128, 144, 1], "slatEgray", [112, 128, 144, 1], "slat\\65 gray", [112, 128, 144, 1], "slatgray", null, "slategrey", [112, 128, 144, 1], "slateGrey", [112, 128, 144, 1], "slate\\grey", [112, 128, 144, 1], "slate\\67 rey", [112, 128, 144, 1], "slaterey", null, "snow", [255, 250, 250, 1], "snOw", [255, 250, 250, 1], "sn\\ow", [255, 250, 250, 1], "sn\\6F w", [255, 250, 250, 1], "snw", null, "springgreen", [0, 255, 127, 1], "springgrEen", [0, 255, 127, 1], "springgr\\65 en", [0, 255, 127, 1], "springgren", null, "steelblue", [70, 130, 180, 1], "steelbluE", [70, 130, 180, 1], "steelblu\\65 ", [70, 130, 180, 1], "steelblu", null, "tan", [210, 180, 140, 1], "Tan", [210, 180, 140, 1], "\\tan", [210, 180, 140, 1], "\\74 an", [210, 180, 140, 1], "an", null, "teal", [0, 128, 128, 1], "teAl", [0, 128, 128, 1], "te\\61 l", [0, 128, 128, 1], "tel", null, "thistle", [216, 191, 216, 1], "tHistle", [216, 191, 216, 1], "t\\histle", [216, 191, 216, 1], "t\\68 istle", [216, 191, 216, 1], "tistle", null, "tomato", [255, 99, 71, 1], "Tomato", [255, 99, 71, 1], "\\tomato", [255, 99, 71, 1], "\\74 omato", [255, 99, 71, 1], "omato", null, "turquoise", [64, 224, 208, 1], "turqUoise", [64, 224, 208, 1], "turq\\uoise", [64, 224, 208, 1], "turq\\75 oise", [64, 224, 208, 1], "turqoise", null, "violet", [238, 130, 238, 1], "viOlet", [238, 130, 238, 1], "vi\\olet", [238, 130, 238, 1], "vi\\6F let", [238, 130, 238, 1], "vilet", null, "wheat", [245, 222, 179, 1], "wheaT", [245, 222, 179, 1], "whea\\t", [245, 222, 179, 1], "whea\\74 ", [245, 222, 179, 1], "whea", null, "white", [255, 255, 255, 1], "White", [255, 255, 255, 1], "\\white", [255, 255, 255, 1], "\\77 hite", [255, 255, 255, 1], "hite", null, "whitesmoke", [245, 245, 245, 1], "wHitesmoke", [245, 245, 245, 1], "w\\hitesmoke", [245, 245, 245, 1], "w\\68 itesmoke", [245, 245, 245, 1], "witesmoke", null, "whitesmoKe", null, "yellow", [255, 255, 0, 1], "Yellow", [255, 255, 0, 1], "\\yellow", [255, 255, 0, 1], "\\79 ellow", [255, 255, 0, 1], "ellow", null, "yellowgreen", [154, 205, 50, 1], "yellowgreEn", [154, 205, 50, 1], "yellowgre\\65 n", [154, 205, 50, 1], "yellowgren", null ] crass-1.0.2/test/support/0000755000004100000410000000000012530245151015346 5ustar www-datawww-datacrass-1.0.2/test/support/serialization/0000755000004100000410000000000012530245151020223 5ustar www-datawww-datacrass-1.0.2/test/support/serialization/bootstrap-theme.css0000755000004100000410000004066312530245151024066 0ustar www-datawww-data.btn-default, .btn-primary, .btn-success, .btn-info, .btn-warning, .btn-danger { text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); } .btn-default:active, .btn-primary:active, .btn-success:active, .btn-info:active, .btn-warning:active, .btn-danger:active, .btn-default.active, .btn-primary.active, .btn-success.active, .btn-info.active, .btn-warning.active, .btn-danger.active { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } .btn:active, .btn.active { background-image: none; } .btn-default { text-shadow: 0 1px 0 #fff; background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, 0%, #e6e6e6, 100%); background-image: -moz-linear-gradient(top, #ffffff 0%, #e6e6e6 100%); background-image: linear-gradient(to bottom, #ffffff 0%, #e6e6e6 100%); background-repeat: repeat-x; border-color: #e0e0e0; border-color: #ccc; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); } .btn-default:active, .btn-default.active { background-color: #e6e6e6; border-color: #e0e0e0; } .btn-primary { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9)); background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%); background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%); background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); background-repeat: repeat-x; border-color: #2d6ca2; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); } .btn-primary:active, .btn-primary.active { background-color: #3071a9; border-color: #2d6ca2; } .btn-success { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44)); background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%); background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%); background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); background-repeat: repeat-x; border-color: #419641; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); } .btn-success:active, .btn-success.active { background-color: #449d44; border-color: #419641; } .btn-warning { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f)); background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%); background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); background-repeat: repeat-x; border-color: #eb9316; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); } .btn-warning:active, .btn-warning.active { background-color: #ec971f; border-color: #eb9316; } .btn-danger { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c)); background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%); background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%); background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); background-repeat: repeat-x; border-color: #c12e2a; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); } .btn-danger:active, .btn-danger.active { background-color: #c9302c; border-color: #c12e2a; } .btn-info { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5)); background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%); background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); background-repeat: repeat-x; border-color: #2aabd2; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); } .btn-info:active, .btn-info.active { background-color: #31b0d5; border-color: #2aabd2; } .thumbnail, .img-thumbnail { -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { background-color: #357ebd; background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%); background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); } .navbar { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#f8f8f8)); background-image: -webkit-linear-gradient(top, #ffffff, 0%, #f8f8f8, 100%); background-image: -moz-linear-gradient(top, #ffffff 0%, #f8f8f8 100%); background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%); background-repeat: repeat-x; border-radius: 4px; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); } .navbar .navbar-nav > .active > a { background-color: #f8f8f8; } .navbar-brand, .navbar-nav > li > a { text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); } .navbar-inverse { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#3c3c3c), to(#222222)); background-image: -webkit-linear-gradient(top, #3c3c3c, 0%, #222222, 100%); background-image: -moz-linear-gradient(top, #3c3c3c 0%, #222222 100%); background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); } .navbar-inverse .navbar-nav > .active > a { background-color: #222222; } .navbar-inverse .navbar-brand, .navbar-inverse .navbar-nav > li > a { text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .navbar-static-top, .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } .alert { text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); } .alert-success { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#c8e5bc)); background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #c8e5bc, 100%); background-image: -moz-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); background-repeat: repeat-x; border-color: #b2dba1; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); } .alert-info { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#b9def0)); background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #b9def0, 100%); background-image: -moz-linear-gradient(top, #d9edf7 0%, #b9def0 100%); background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); background-repeat: repeat-x; border-color: #9acfea; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); } .alert-warning { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#f8efc0)); background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #f8efc0, 100%); background-image: -moz-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); background-repeat: repeat-x; border-color: #f5e79e; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); } .alert-danger { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#e7c3c3)); background-image: -webkit-linear-gradient(top, #f2dede, 0%, #e7c3c3, 100%); background-image: -moz-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); background-repeat: repeat-x; border-color: #dca7a7; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); } .progress { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f5f5f5)); background-image: -webkit-linear-gradient(top, #ebebeb, 0%, #f5f5f5, 100%); background-image: -moz-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); } .progress-bar { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9)); background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%); background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%); background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); } .progress-bar-success { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44)); background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%); background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%); background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); } .progress-bar-info { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5)); background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%); background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); } .progress-bar-warning { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f)); background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%); background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); } .progress-bar-danger { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c)); background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%); background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%); background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); } .list-group { border-radius: 4px; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); } .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { text-shadow: 0 -1px 0 #3071a9; background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3278b3)); background-image: -webkit-linear-gradient(top, #428bca, 0%, #3278b3, 100%); background-image: -moz-linear-gradient(top, #428bca 0%, #3278b3 100%); background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); background-repeat: repeat-x; border-color: #3278b3; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); } .panel { -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .panel-default > .panel-heading { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8)); background-image: -webkit-linear-gradient(top, #f5f5f5, 0%, #e8e8e8, 100%); background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); } .panel-primary > .panel-heading { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%); background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); } .panel-success > .panel-heading { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#d0e9c6)); background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #d0e9c6, 100%); background-image: -moz-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); } .panel-info > .panel-heading { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#c4e3f3)); background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #c4e3f3, 100%); background-image: -moz-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); } .panel-warning > .panel-heading { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#faf2cc)); background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #faf2cc, 100%); background-image: -moz-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); } .panel-danger > .panel-heading { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#ebcccc)); background-image: -webkit-linear-gradient(top, #f2dede, 0%, #ebcccc, 100%); background-image: -moz-linear-gradient(top, #f2dede 0%, #ebcccc 100%); background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); } .well { background-image: -webkit-gradient(linear, left 0%, left 100%, from(#e8e8e8), to(#f5f5f5)); background-image: -webkit-linear-gradient(top, #e8e8e8, 0%, #f5f5f5, 100%); background-image: -moz-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); background-repeat: repeat-x; border-color: #dcdcdc; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); }crass-1.0.2/test/support/serialization/bootstrap.css0000755000004100000410000035212412530245151022764 0ustar www-datawww-data/*! * Bootstrap v3.0.0 * * Copyright 2013 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world by @mdo and @fat. */ /*! normalize.css v2.1.0 | MIT License | git.io/normalize */ article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } audio, canvas, video { display: inline-block; } audio:not([controls]) { display: none; height: 0; } [hidden] { display: none; } html { font-family: sans-serif; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } body { margin: 0; } a:focus { outline: thin dotted; } a:active, a:hover { outline: 0; } h1 { margin: 0.67em 0; font-size: 2em; } abbr[title] { border-bottom: 1px dotted; } b, strong { font-weight: bold; } dfn { font-style: italic; } hr { height: 0; -moz-box-sizing: content-box; box-sizing: content-box; } mark { color: #000; background: #ff0; } code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; } pre { white-space: pre-wrap; } q { quotes: "\201C" "\201D" "\2018" "\2019"; } small { font-size: 80%; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } img { border: 0; } svg:not(:root) { overflow: hidden; } figure { margin: 0; } fieldset { padding: 0.35em 0.625em 0.75em; margin: 0 2px; border: 1px solid #c0c0c0; } legend { padding: 0; border: 0; } button, input, select, textarea { margin: 0; font-family: inherit; font-size: 100%; } button, input { line-height: normal; } button, select { text-transform: none; } button, html input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; } button[disabled], html input[disabled] { cursor: default; } input[type="checkbox"], input[type="radio"] { padding: 0; box-sizing: border-box; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } textarea { overflow: auto; vertical-align: top; } table { border-collapse: collapse; border-spacing: 0; } @media print { * { color: #000 !important; text-shadow: none !important; background: transparent !important; box-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } @page { margin: 2cm .5cm; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } .navbar { display: none; } .table td, .table th { background-color: #fff !important; } .btn > .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table-bordered th, .table-bordered td { border: 1px solid #ddd !important; } } *, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } html { font-size: 62.5%; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.428571429; color: #333333; background-color: #ffffff; } input, button, select, textarea { font-family: inherit; font-size: inherit; line-height: inherit; } button, input, select[multiple], textarea { background-image: none; } a { color: #428bca; text-decoration: none; } a:hover, a:focus { color: #2a6496; text-decoration: underline; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } img { vertical-align: middle; } .img-responsive { display: block; height: auto; max-width: 100%; } .img-rounded { border-radius: 6px; } .img-thumbnail { display: inline-block; height: auto; max-width: 100%; padding: 4px; line-height: 1.428571429; background-color: #ffffff; border: 1px solid #dddddd; border-radius: 4px; -webkit-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } .img-circle { border-radius: 50%; } hr { margin-top: 20px; margin-bottom: 20px; border: 0; border-top: 1px solid #eeeeee; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); border: 0; } p { margin: 0 0 10px; } .lead { margin-bottom: 20px; font-size: 16.099999999999998px; font-weight: 200; line-height: 1.4; } @media (min-width: 768px) { .lead { font-size: 21px; } } small { font-size: 85%; } cite { font-style: normal; } .text-muted { color: #999999; } .text-primary { color: #428bca; } .text-warning { color: #c09853; } .text-danger { color: #b94a48; } .text-success { color: #468847; } .text-info { color: #3a87ad; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 500; line-height: 1.1; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small { font-weight: normal; line-height: 1; color: #999999; } h1, h2, h3 { margin-top: 20px; margin-bottom: 10px; } h4, h5, h6 { margin-top: 10px; margin-bottom: 10px; } h1, .h1 { font-size: 36px; } h2, .h2 { font-size: 30px; } h3, .h3 { font-size: 24px; } h4, .h4 { font-size: 18px; } h5, .h5 { font-size: 14px; } h6, .h6 { font-size: 12px; } h1 small, .h1 small { font-size: 24px; } h2 small, .h2 small { font-size: 18px; } h3 small, .h3 small, h4 small, .h4 small { font-size: 14px; } .page-header { padding-bottom: 9px; margin: 40px 0 20px; border-bottom: 1px solid #eeeeee; } ul, ol { margin-top: 0; margin-bottom: 10px; } ul ul, ol ul, ul ol, ol ol { margin-bottom: 0; } .list-unstyled { padding-left: 0; list-style: none; } .list-inline { padding-left: 0; list-style: none; } .list-inline > li { display: inline-block; padding-right: 5px; padding-left: 5px; } dl { margin-bottom: 20px; } dt, dd { line-height: 1.428571429; } dt { font-weight: bold; } dd { margin-left: 0; } @media (min-width: 768px) { .dl-horizontal dt { float: left; width: 160px; overflow: hidden; clear: left; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } .dl-horizontal dd:before, .dl-horizontal dd:after { display: table; content: " "; } .dl-horizontal dd:after { clear: both; } .dl-horizontal dd:before, .dl-horizontal dd:after { display: table; content: " "; } .dl-horizontal dd:after { clear: both; } } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #999999; } abbr.initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 10px 20px; margin: 0 0 20px; border-left: 5px solid #eeeeee; } blockquote p { font-size: 17.5px; font-weight: 300; line-height: 1.25; } blockquote p:last-child { margin-bottom: 0; } blockquote small { display: block; line-height: 1.428571429; color: #999999; } blockquote small:before { content: '\2014 \00A0'; } blockquote.pull-right { padding-right: 15px; padding-left: 0; border-right: 5px solid #eeeeee; border-left: 0; } blockquote.pull-right p, blockquote.pull-right small { text-align: right; } blockquote.pull-right small:before { content: ''; } blockquote.pull-right small:after { content: '\00A0 \2014'; } q:before, q:after, blockquote:before, blockquote:after { content: ""; } address { display: block; margin-bottom: 20px; font-style: normal; line-height: 1.428571429; } code, pre { font-family: Monaco, Menlo, Consolas, "Courier New", monospace; } code { padding: 2px 4px; font-size: 90%; color: #c7254e; white-space: nowrap; background-color: #f9f2f4; border-radius: 4px; } pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 13px; line-height: 1.428571429; color: #333333; word-break: break-all; word-wrap: break-word; background-color: #f5f5f5; border: 1px solid #cccccc; border-radius: 4px; } pre.prettyprint { margin-bottom: 20px; } pre code { padding: 0; font-size: inherit; color: inherit; white-space: pre-wrap; background-color: transparent; border: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } .container { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } .container:before, .container:after { display: table; content: " "; } .container:after { clear: both; } .container:before, .container:after { display: table; content: " "; } .container:after { clear: both; } .row { margin-right: -15px; margin-left: -15px; } .row:before, .row:after { display: table; content: " "; } .row:after { clear: both; } .row:before, .row:after { display: table; content: " "; } .row:after { clear: both; } .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { position: relative; min-height: 1px; padding-right: 15px; padding-left: 15px; } .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11 { float: left; } .col-xs-1 { width: 8.333333333333332%; } .col-xs-2 { width: 16.666666666666664%; } .col-xs-3 { width: 25%; } .col-xs-4 { width: 33.33333333333333%; } .col-xs-5 { width: 41.66666666666667%; } .col-xs-6 { width: 50%; } .col-xs-7 { width: 58.333333333333336%; } .col-xs-8 { width: 66.66666666666666%; } .col-xs-9 { width: 75%; } .col-xs-10 { width: 83.33333333333334%; } .col-xs-11 { width: 91.66666666666666%; } .col-xs-12 { width: 100%; } @media (min-width: 768px) { .container { max-width: 750px; } .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11 { float: left; } .col-sm-1 { width: 8.333333333333332%; } .col-sm-2 { width: 16.666666666666664%; } .col-sm-3 { width: 25%; } .col-sm-4 { width: 33.33333333333333%; } .col-sm-5 { width: 41.66666666666667%; } .col-sm-6 { width: 50%; } .col-sm-7 { width: 58.333333333333336%; } .col-sm-8 { width: 66.66666666666666%; } .col-sm-9 { width: 75%; } .col-sm-10 { width: 83.33333333333334%; } .col-sm-11 { width: 91.66666666666666%; } .col-sm-12 { width: 100%; } .col-sm-push-1 { left: 8.333333333333332%; } .col-sm-push-2 { left: 16.666666666666664%; } .col-sm-push-3 { left: 25%; } .col-sm-push-4 { left: 33.33333333333333%; } .col-sm-push-5 { left: 41.66666666666667%; } .col-sm-push-6 { left: 50%; } .col-sm-push-7 { left: 58.333333333333336%; } .col-sm-push-8 { left: 66.66666666666666%; } .col-sm-push-9 { left: 75%; } .col-sm-push-10 { left: 83.33333333333334%; } .col-sm-push-11 { left: 91.66666666666666%; } .col-sm-pull-1 { right: 8.333333333333332%; } .col-sm-pull-2 { right: 16.666666666666664%; } .col-sm-pull-3 { right: 25%; } .col-sm-pull-4 { right: 33.33333333333333%; } .col-sm-pull-5 { right: 41.66666666666667%; } .col-sm-pull-6 { right: 50%; } .col-sm-pull-7 { right: 58.333333333333336%; } .col-sm-pull-8 { right: 66.66666666666666%; } .col-sm-pull-9 { right: 75%; } .col-sm-pull-10 { right: 83.33333333333334%; } .col-sm-pull-11 { right: 91.66666666666666%; } .col-sm-offset-1 { margin-left: 8.333333333333332%; } .col-sm-offset-2 { margin-left: 16.666666666666664%; } .col-sm-offset-3 { margin-left: 25%; } .col-sm-offset-4 { margin-left: 33.33333333333333%; } .col-sm-offset-5 { margin-left: 41.66666666666667%; } .col-sm-offset-6 { margin-left: 50%; } .col-sm-offset-7 { margin-left: 58.333333333333336%; } .col-sm-offset-8 { margin-left: 66.66666666666666%; } .col-sm-offset-9 { margin-left: 75%; } .col-sm-offset-10 { margin-left: 83.33333333333334%; } .col-sm-offset-11 { margin-left: 91.66666666666666%; } } @media (min-width: 992px) { .container { max-width: 970px; } .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11 { float: left; } .col-md-1 { width: 8.333333333333332%; } .col-md-2 { width: 16.666666666666664%; } .col-md-3 { width: 25%; } .col-md-4 { width: 33.33333333333333%; } .col-md-5 { width: 41.66666666666667%; } .col-md-6 { width: 50%; } .col-md-7 { width: 58.333333333333336%; } .col-md-8 { width: 66.66666666666666%; } .col-md-9 { width: 75%; } .col-md-10 { width: 83.33333333333334%; } .col-md-11 { width: 91.66666666666666%; } .col-md-12 { width: 100%; } .col-md-push-0 { left: auto; } .col-md-push-1 { left: 8.333333333333332%; } .col-md-push-2 { left: 16.666666666666664%; } .col-md-push-3 { left: 25%; } .col-md-push-4 { left: 33.33333333333333%; } .col-md-push-5 { left: 41.66666666666667%; } .col-md-push-6 { left: 50%; } .col-md-push-7 { left: 58.333333333333336%; } .col-md-push-8 { left: 66.66666666666666%; } .col-md-push-9 { left: 75%; } .col-md-push-10 { left: 83.33333333333334%; } .col-md-push-11 { left: 91.66666666666666%; } .col-md-pull-0 { right: auto; } .col-md-pull-1 { right: 8.333333333333332%; } .col-md-pull-2 { right: 16.666666666666664%; } .col-md-pull-3 { right: 25%; } .col-md-pull-4 { right: 33.33333333333333%; } .col-md-pull-5 { right: 41.66666666666667%; } .col-md-pull-6 { right: 50%; } .col-md-pull-7 { right: 58.333333333333336%; } .col-md-pull-8 { right: 66.66666666666666%; } .col-md-pull-9 { right: 75%; } .col-md-pull-10 { right: 83.33333333333334%; } .col-md-pull-11 { right: 91.66666666666666%; } .col-md-offset-0 { margin-left: 0; } .col-md-offset-1 { margin-left: 8.333333333333332%; } .col-md-offset-2 { margin-left: 16.666666666666664%; } .col-md-offset-3 { margin-left: 25%; } .col-md-offset-4 { margin-left: 33.33333333333333%; } .col-md-offset-5 { margin-left: 41.66666666666667%; } .col-md-offset-6 { margin-left: 50%; } .col-md-offset-7 { margin-left: 58.333333333333336%; } .col-md-offset-8 { margin-left: 66.66666666666666%; } .col-md-offset-9 { margin-left: 75%; } .col-md-offset-10 { margin-left: 83.33333333333334%; } .col-md-offset-11 { margin-left: 91.66666666666666%; } } @media (min-width: 1200px) { .container { max-width: 1170px; } .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11 { float: left; } .col-lg-1 { width: 8.333333333333332%; } .col-lg-2 { width: 16.666666666666664%; } .col-lg-3 { width: 25%; } .col-lg-4 { width: 33.33333333333333%; } .col-lg-5 { width: 41.66666666666667%; } .col-lg-6 { width: 50%; } .col-lg-7 { width: 58.333333333333336%; } .col-lg-8 { width: 66.66666666666666%; } .col-lg-9 { width: 75%; } .col-lg-10 { width: 83.33333333333334%; } .col-lg-11 { width: 91.66666666666666%; } .col-lg-12 { width: 100%; } .col-lg-push-0 { left: auto; } .col-lg-push-1 { left: 8.333333333333332%; } .col-lg-push-2 { left: 16.666666666666664%; } .col-lg-push-3 { left: 25%; } .col-lg-push-4 { left: 33.33333333333333%; } .col-lg-push-5 { left: 41.66666666666667%; } .col-lg-push-6 { left: 50%; } .col-lg-push-7 { left: 58.333333333333336%; } .col-lg-push-8 { left: 66.66666666666666%; } .col-lg-push-9 { left: 75%; } .col-lg-push-10 { left: 83.33333333333334%; } .col-lg-push-11 { left: 91.66666666666666%; } .col-lg-pull-0 { right: auto; } .col-lg-pull-1 { right: 8.333333333333332%; } .col-lg-pull-2 { right: 16.666666666666664%; } .col-lg-pull-3 { right: 25%; } .col-lg-pull-4 { right: 33.33333333333333%; } .col-lg-pull-5 { right: 41.66666666666667%; } .col-lg-pull-6 { right: 50%; } .col-lg-pull-7 { right: 58.333333333333336%; } .col-lg-pull-8 { right: 66.66666666666666%; } .col-lg-pull-9 { right: 75%; } .col-lg-pull-10 { right: 83.33333333333334%; } .col-lg-pull-11 { right: 91.66666666666666%; } .col-lg-offset-0 { margin-left: 0; } .col-lg-offset-1 { margin-left: 8.333333333333332%; } .col-lg-offset-2 { margin-left: 16.666666666666664%; } .col-lg-offset-3 { margin-left: 25%; } .col-lg-offset-4 { margin-left: 33.33333333333333%; } .col-lg-offset-5 { margin-left: 41.66666666666667%; } .col-lg-offset-6 { margin-left: 50%; } .col-lg-offset-7 { margin-left: 58.333333333333336%; } .col-lg-offset-8 { margin-left: 66.66666666666666%; } .col-lg-offset-9 { margin-left: 75%; } .col-lg-offset-10 { margin-left: 83.33333333333334%; } .col-lg-offset-11 { margin-left: 91.66666666666666%; } } table { max-width: 100%; background-color: transparent; } th { text-align: left; } .table { width: 100%; margin-bottom: 20px; } .table thead > tr > th, .table tbody > tr > th, .table tfoot > tr > th, .table thead > tr > td, .table tbody > tr > td, .table tfoot > tr > td { padding: 8px; line-height: 1.428571429; vertical-align: top; border-top: 1px solid #dddddd; } .table thead > tr > th { vertical-align: bottom; border-bottom: 2px solid #dddddd; } .table caption + thead tr:first-child th, .table colgroup + thead tr:first-child th, .table thead:first-child tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child td { border-top: 0; } .table tbody + tbody { border-top: 2px solid #dddddd; } .table .table { background-color: #ffffff; } .table-condensed thead > tr > th, .table-condensed tbody > tr > th, .table-condensed tfoot > tr > th, .table-condensed thead > tr > td, .table-condensed tbody > tr > td, .table-condensed tfoot > tr > td { padding: 5px; } .table-bordered { border: 1px solid #dddddd; } .table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td { border: 1px solid #dddddd; } .table-bordered > thead > tr > th, .table-bordered > thead > tr > td { border-bottom-width: 2px; } .table-striped > tbody > tr:nth-child(odd) > td, .table-striped > tbody > tr:nth-child(odd) > th { background-color: #f9f9f9; } .table-hover > tbody > tr:hover > td, .table-hover > tbody > tr:hover > th { background-color: #f5f5f5; } table col[class*="col-"] { display: table-column; float: none; } table td[class*="col-"], table th[class*="col-"] { display: table-cell; float: none; } .table > thead > tr > td.active, .table > tbody > tr > td.active, .table > tfoot > tr > td.active, .table > thead > tr > th.active, .table > tbody > tr > th.active, .table > tfoot > tr > th.active, .table > thead > tr.active > td, .table > tbody > tr.active > td, .table > tfoot > tr.active > td, .table > thead > tr.active > th, .table > tbody > tr.active > th, .table > tfoot > tr.active > th { background-color: #f5f5f5; } .table > thead > tr > td.success, .table > tbody > tr > td.success, .table > tfoot > tr > td.success, .table > thead > tr > th.success, .table > tbody > tr > th.success, .table > tfoot > tr > th.success, .table > thead > tr.success > td, .table > tbody > tr.success > td, .table > tfoot > tr.success > td, .table > thead > tr.success > th, .table > tbody > tr.success > th, .table > tfoot > tr.success > th { background-color: #dff0d8; border-color: #d6e9c6; } .table-hover > tbody > tr > td.success:hover, .table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td { background-color: #d0e9c6; border-color: #c9e2b3; } .table > thead > tr > td.danger, .table > tbody > tr > td.danger, .table > tfoot > tr > td.danger, .table > thead > tr > th.danger, .table > tbody > tr > th.danger, .table > tfoot > tr > th.danger, .table > thead > tr.danger > td, .table > tbody > tr.danger > td, .table > tfoot > tr.danger > td, .table > thead > tr.danger > th, .table > tbody > tr.danger > th, .table > tfoot > tr.danger > th { background-color: #f2dede; border-color: #eed3d7; } .table-hover > tbody > tr > td.danger:hover, .table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td { background-color: #ebcccc; border-color: #e6c1c7; } .table > thead > tr > td.warning, .table > tbody > tr > td.warning, .table > tfoot > tr > td.warning, .table > thead > tr > th.warning, .table > tbody > tr > th.warning, .table > tfoot > tr > th.warning, .table > thead > tr.warning > td, .table > tbody > tr.warning > td, .table > tfoot > tr.warning > td, .table > thead > tr.warning > th, .table > tbody > tr.warning > th, .table > tfoot > tr.warning > th { background-color: #fcf8e3; border-color: #fbeed5; } .table-hover > tbody > tr > td.warning:hover, .table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td { background-color: #faf2cc; border-color: #f8e5be; } @media (max-width: 768px) { .table-responsive { width: 100%; margin-bottom: 15px; overflow-x: scroll; overflow-y: hidden; border: 1px solid #dddddd; } .table-responsive > .table { margin-bottom: 0; background-color: #fff; } .table-responsive > .table > thead > tr > th, .table-responsive > .table > tbody > tr > th, .table-responsive > .table > tfoot > tr > th, .table-responsive > .table > thead > tr > td, .table-responsive > .table > tbody > tr > td, .table-responsive > .table > tfoot > tr > td { white-space: nowrap; } .table-responsive > .table-bordered { border: 0; } .table-responsive > .table-bordered > thead > tr > th:first-child, .table-responsive > .table-bordered > tbody > tr > th:first-child, .table-responsive > .table-bordered > tfoot > tr > th:first-child, .table-responsive > .table-bordered > thead > tr > td:first-child, .table-responsive > .table-bordered > tbody > tr > td:first-child, .table-responsive > .table-bordered > tfoot > tr > td:first-child { border-left: 0; } .table-responsive > .table-bordered > thead > tr > th:last-child, .table-responsive > .table-bordered > tbody > tr > th:last-child, .table-responsive > .table-bordered > tfoot > tr > th:last-child, .table-responsive > .table-bordered > thead > tr > td:last-child, .table-responsive > .table-bordered > tbody > tr > td:last-child, .table-responsive > .table-bordered > tfoot > tr > td:last-child { border-right: 0; } .table-responsive > .table-bordered > thead > tr:last-child > th, .table-responsive > .table-bordered > tbody > tr:last-child > th, .table-responsive > .table-bordered > tfoot > tr:last-child > th, .table-responsive > .table-bordered > thead > tr:last-child > td, .table-responsive > .table-bordered > tbody > tr:last-child > td, .table-responsive > .table-bordered > tfoot > tr:last-child > td { border-bottom: 0; } } fieldset { padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 21px; line-height: inherit; color: #333333; border: 0; border-bottom: 1px solid #e5e5e5; } label { display: inline-block; margin-bottom: 5px; font-weight: bold; } input[type="search"] { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; margin-top: 1px \9; /* IE8-9 */ line-height: normal; } input[type="file"] { display: block; } select[multiple], select[size] { height: auto; } select optgroup { font-family: inherit; font-size: inherit; font-style: inherit; } input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button { height: auto; } .form-control:-moz-placeholder { color: #999999; } .form-control::-moz-placeholder { color: #999999; } .form-control:-ms-input-placeholder { color: #999999; } .form-control::-webkit-input-placeholder { color: #999999; } .form-control { display: block; width: 100%; height: 34px; padding: 6px 12px; font-size: 14px; line-height: 1.428571429; color: #555555; vertical-align: middle; background-color: #ffffff; border: 1px solid #cccccc; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; } .form-control:focus { border-color: #66afe9; outline: 0; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); } .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { cursor: not-allowed; background-color: #eeeeee; } textarea.form-control { height: auto; } .form-group { margin-bottom: 15px; } .radio, .checkbox { display: block; min-height: 20px; padding-left: 20px; margin-top: 10px; margin-bottom: 10px; vertical-align: middle; } .radio label, .checkbox label { display: inline; margin-bottom: 0; font-weight: normal; cursor: pointer; } .radio input[type="radio"], .radio-inline input[type="radio"], .checkbox input[type="checkbox"], .checkbox-inline input[type="checkbox"] { float: left; margin-left: -20px; } .radio + .radio, .checkbox + .checkbox { margin-top: -5px; } .radio-inline, .checkbox-inline { display: inline-block; padding-left: 20px; margin-bottom: 0; font-weight: normal; vertical-align: middle; cursor: pointer; } .radio-inline + .radio-inline, .checkbox-inline + .checkbox-inline { margin-top: 0; margin-left: 10px; } input[type="radio"][disabled], input[type="checkbox"][disabled], .radio[disabled], .radio-inline[disabled], .checkbox[disabled], .checkbox-inline[disabled], fieldset[disabled] input[type="radio"], fieldset[disabled] input[type="checkbox"], fieldset[disabled] .radio, fieldset[disabled] .radio-inline, fieldset[disabled] .checkbox, fieldset[disabled] .checkbox-inline { cursor: not-allowed; } .input-sm { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-sm { height: 30px; line-height: 30px; } textarea.input-sm { height: auto; } .input-lg { height: 45px; padding: 10px 16px; font-size: 18px; line-height: 1.33; border-radius: 6px; } select.input-lg { height: 45px; line-height: 45px; } textarea.input-lg { height: auto; } .has-warning .help-block, .has-warning .control-label { color: #c09853; } .has-warning .form-control { border-color: #c09853; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .has-warning .form-control:focus { border-color: #a47e3c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; } .has-warning .input-group-addon { color: #c09853; background-color: #fcf8e3; border-color: #c09853; } .has-error .help-block, .has-error .control-label { color: #b94a48; } .has-error .form-control { border-color: #b94a48; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .has-error .form-control:focus { border-color: #953b39; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; } .has-error .input-group-addon { color: #b94a48; background-color: #f2dede; border-color: #b94a48; } .has-success .help-block, .has-success .control-label { color: #468847; } .has-success .form-control { border-color: #468847; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .has-success .form-control:focus { border-color: #356635; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; } .has-success .input-group-addon { color: #468847; background-color: #dff0d8; border-color: #468847; } .form-control-static { padding-top: 7px; margin-bottom: 0; } .help-block { display: block; margin-top: 5px; margin-bottom: 10px; color: #737373; } @media (min-width: 768px) { .form-inline .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .form-inline .form-control { display: inline-block; } .form-inline .radio, .form-inline .checkbox { display: inline-block; padding-left: 0; margin-top: 0; margin-bottom: 0; } .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: none; margin-left: 0; } } .form-horizontal .control-label, .form-horizontal .radio, .form-horizontal .checkbox, .form-horizontal .radio-inline, .form-horizontal .checkbox-inline { padding-top: 7px; margin-top: 0; margin-bottom: 0; } .form-horizontal .form-group { margin-right: -15px; margin-left: -15px; } .form-horizontal .form-group:before, .form-horizontal .form-group:after { display: table; content: " "; } .form-horizontal .form-group:after { clear: both; } .form-horizontal .form-group:before, .form-horizontal .form-group:after { display: table; content: " "; } .form-horizontal .form-group:after { clear: both; } @media (min-width: 768px) { .form-horizontal .control-label { text-align: right; } } .btn { display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 14px; font-weight: normal; line-height: 1.428571429; text-align: center; white-space: nowrap; vertical-align: middle; cursor: pointer; border: 1px solid transparent; border-radius: 4px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none; } .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn:hover, .btn:focus { color: #333333; text-decoration: none; } .btn:active, .btn.active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } .btn.disabled, .btn[disabled], fieldset[disabled] .btn { pointer-events: none; cursor: not-allowed; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; box-shadow: none; } .btn-default { color: #333333; background-color: #ffffff; border-color: #cccccc; } .btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { color: #333333; background-color: #ebebeb; border-color: #adadad; } .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default { background-image: none; } .btn-default.disabled, .btn-default[disabled], fieldset[disabled] .btn-default, .btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled:active, .btn-default[disabled]:active, fieldset[disabled] .btn-default:active, .btn-default.disabled.active, .btn-default[disabled].active, fieldset[disabled] .btn-default.active { background-color: #ffffff; border-color: #cccccc; } .btn-primary { color: #ffffff; background-color: #428bca; border-color: #357ebd; } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { color: #ffffff; background-color: #3276b1; border-color: #285e8e; } .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary { background-image: none; } .btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { background-color: #428bca; border-color: #357ebd; } .btn-warning { color: #ffffff; background-color: #f0ad4e; border-color: #eea236; } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { color: #ffffff; background-color: #ed9c28; border-color: #d58512; } .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning { background-image: none; } .btn-warning.disabled, .btn-warning[disabled], fieldset[disabled] .btn-warning, .btn-warning.disabled:hover, .btn-warning[disabled]:hover, fieldset[disabled] .btn-warning:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, fieldset[disabled] .btn-warning:focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, fieldset[disabled] .btn-warning:active, .btn-warning.disabled.active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning.active { background-color: #f0ad4e; border-color: #eea236; } .btn-danger { color: #ffffff; background-color: #d9534f; border-color: #d43f3a; } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { color: #ffffff; background-color: #d2322d; border-color: #ac2925; } .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger { background-image: none; } .btn-danger.disabled, .btn-danger[disabled], fieldset[disabled] .btn-danger, .btn-danger.disabled:hover, .btn-danger[disabled]:hover, fieldset[disabled] .btn-danger:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, fieldset[disabled] .btn-danger:focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, fieldset[disabled] .btn-danger:active, .btn-danger.disabled.active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger.active { background-color: #d9534f; border-color: #d43f3a; } .btn-success { color: #ffffff; background-color: #5cb85c; border-color: #4cae4c; } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { color: #ffffff; background-color: #47a447; border-color: #398439; } .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success { background-image: none; } .btn-success.disabled, .btn-success[disabled], fieldset[disabled] .btn-success, .btn-success.disabled:hover, .btn-success[disabled]:hover, fieldset[disabled] .btn-success:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, fieldset[disabled] .btn-success:focus, .btn-success.disabled:active, .btn-success[disabled]:active, fieldset[disabled] .btn-success:active, .btn-success.disabled.active, .btn-success[disabled].active, fieldset[disabled] .btn-success.active { background-color: #5cb85c; border-color: #4cae4c; } .btn-info { color: #ffffff; background-color: #5bc0de; border-color: #46b8da; } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info { color: #ffffff; background-color: #39b3d7; border-color: #269abc; } .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info { background-image: none; } .btn-info.disabled, .btn-info[disabled], fieldset[disabled] .btn-info, .btn-info.disabled:hover, .btn-info[disabled]:hover, fieldset[disabled] .btn-info:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, fieldset[disabled] .btn-info:focus, .btn-info.disabled:active, .btn-info[disabled]:active, fieldset[disabled] .btn-info:active, .btn-info.disabled.active, .btn-info[disabled].active, fieldset[disabled] .btn-info.active { background-color: #5bc0de; border-color: #46b8da; } .btn-link { font-weight: normal; color: #428bca; cursor: pointer; border-radius: 0; } .btn-link, .btn-link:active, .btn-link[disabled], fieldset[disabled] .btn-link { background-color: transparent; -webkit-box-shadow: none; box-shadow: none; } .btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active { border-color: transparent; } .btn-link:hover, .btn-link:focus { color: #2a6496; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, fieldset[disabled] .btn-link:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:focus { color: #999999; text-decoration: none; } .btn-lg { padding: 10px 16px; font-size: 18px; line-height: 1.33; border-radius: 6px; } .btn-sm, .btn-xs { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-xs { padding: 1px 5px; } .btn-block { display: block; width: 100%; padding-right: 0; padding-left: 0; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .fade { opacity: 0; -webkit-transition: opacity 0.15s linear; transition: opacity 0.15s linear; } .fade.in { opacity: 1; } .collapse { display: none; } .collapse.in { display: block; } .collapsing { position: relative; height: 0; overflow: hidden; -webkit-transition: height 0.35s ease; transition: height 0.35s ease; } @font-face { font-family: 'Glyphicons Halflings'; src: url('../fonts/glyphicons-halflings-regular.eot'); src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg'); } .glyphicon { position: relative; top: 1px; display: inline-block; font-family: 'Glyphicons Halflings'; -webkit-font-smoothing: antialiased; font-style: normal; font-weight: normal; line-height: 1; } .glyphicon-asterisk:before { content: "\2a"; } .glyphicon-plus:before { content: "\2b"; } .glyphicon-euro:before { content: "\20ac"; } .glyphicon-minus:before { content: "\2212"; } .glyphicon-cloud:before { content: "\2601"; } .glyphicon-envelope:before { content: "\2709"; } .glyphicon-pencil:before { content: "\270f"; } .glyphicon-glass:before { content: "\e001"; } .glyphicon-music:before { content: "\e002"; } .glyphicon-search:before { content: "\e003"; } .glyphicon-heart:before { content: "\e005"; } .glyphicon-star:before { content: "\e006"; } .glyphicon-star-empty:before { content: "\e007"; } .glyphicon-user:before { content: "\e008"; } .glyphicon-film:before { content: "\e009"; } .glyphicon-th-large:before { content: "\e010"; } .glyphicon-th:before { content: "\e011"; } .glyphicon-th-list:before { content: "\e012"; } .glyphicon-ok:before { content: "\e013"; } .glyphicon-remove:before { content: "\e014"; } .glyphicon-zoom-in:before { content: "\e015"; } .glyphicon-zoom-out:before { content: "\e016"; } .glyphicon-off:before { content: "\e017"; } .glyphicon-signal:before { content: "\e018"; } .glyphicon-cog:before { content: "\e019"; } .glyphicon-trash:before { content: "\e020"; } .glyphicon-home:before { content: "\e021"; } .glyphicon-file:before { content: "\e022"; } .glyphicon-time:before { content: "\e023"; } .glyphicon-road:before { content: "\e024"; } .glyphicon-download-alt:before { content: "\e025"; } .glyphicon-download:before { content: "\e026"; } .glyphicon-upload:before { content: "\e027"; } .glyphicon-inbox:before { content: "\e028"; } .glyphicon-play-circle:before { content: "\e029"; } .glyphicon-repeat:before { content: "\e030"; } .glyphicon-refresh:before { content: "\e031"; } .glyphicon-list-alt:before { content: "\e032"; } .glyphicon-flag:before { content: "\e034"; } .glyphicon-headphones:before { content: "\e035"; } .glyphicon-volume-off:before { content: "\e036"; } .glyphicon-volume-down:before { content: "\e037"; } .glyphicon-volume-up:before { content: "\e038"; } .glyphicon-qrcode:before { content: "\e039"; } .glyphicon-barcode:before { content: "\e040"; } .glyphicon-tag:before { content: "\e041"; } .glyphicon-tags:before { content: "\e042"; } .glyphicon-book:before { content: "\e043"; } .glyphicon-print:before { content: "\e045"; } .glyphicon-font:before { content: "\e047"; } .glyphicon-bold:before { content: "\e048"; } .glyphicon-italic:before { content: "\e049"; } .glyphicon-text-height:before { content: "\e050"; } .glyphicon-text-width:before { content: "\e051"; } .glyphicon-align-left:before { content: "\e052"; } .glyphicon-align-center:before { content: "\e053"; } .glyphicon-align-right:before { content: "\e054"; } .glyphicon-align-justify:before { content: "\e055"; } .glyphicon-list:before { content: "\e056"; } .glyphicon-indent-left:before { content: "\e057"; } .glyphicon-indent-right:before { content: "\e058"; } .glyphicon-facetime-video:before { content: "\e059"; } .glyphicon-picture:before { content: "\e060"; } .glyphicon-map-marker:before { content: "\e062"; } .glyphicon-adjust:before { content: "\e063"; } .glyphicon-tint:before { content: "\e064"; } .glyphicon-edit:before { content: "\e065"; } .glyphicon-share:before { content: "\e066"; } .glyphicon-check:before { content: "\e067"; } .glyphicon-move:before { content: "\e068"; } .glyphicon-step-backward:before { content: "\e069"; } .glyphicon-fast-backward:before { content: "\e070"; } .glyphicon-backward:before { content: "\e071"; } .glyphicon-play:before { content: "\e072"; } .glyphicon-pause:before { content: "\e073"; } .glyphicon-stop:before { content: "\e074"; } .glyphicon-forward:before { content: "\e075"; } .glyphicon-fast-forward:before { content: "\e076"; } .glyphicon-step-forward:before { content: "\e077"; } .glyphicon-eject:before { content: "\e078"; } .glyphicon-chevron-left:before { content: "\e079"; } .glyphicon-chevron-right:before { content: "\e080"; } .glyphicon-plus-sign:before { content: "\e081"; } .glyphicon-minus-sign:before { content: "\e082"; } .glyphicon-remove-sign:before { content: "\e083"; } .glyphicon-ok-sign:before { content: "\e084"; } .glyphicon-question-sign:before { content: "\e085"; } .glyphicon-info-sign:before { content: "\e086"; } .glyphicon-screenshot:before { content: "\e087"; } .glyphicon-remove-circle:before { content: "\e088"; } .glyphicon-ok-circle:before { content: "\e089"; } .glyphicon-ban-circle:before { content: "\e090"; } .glyphicon-arrow-left:before { content: "\e091"; } .glyphicon-arrow-right:before { content: "\e092"; } .glyphicon-arrow-up:before { content: "\e093"; } .glyphicon-arrow-down:before { content: "\e094"; } .glyphicon-share-alt:before { content: "\e095"; } .glyphicon-resize-full:before { content: "\e096"; } .glyphicon-resize-small:before { content: "\e097"; } .glyphicon-exclamation-sign:before { content: "\e101"; } .glyphicon-gift:before { content: "\e102"; } .glyphicon-leaf:before { content: "\e103"; } .glyphicon-eye-open:before { content: "\e105"; } .glyphicon-eye-close:before { content: "\e106"; } .glyphicon-warning-sign:before { content: "\e107"; } .glyphicon-plane:before { content: "\e108"; } .glyphicon-random:before { content: "\e110"; } .glyphicon-comment:before { content: "\e111"; } .glyphicon-magnet:before { content: "\e112"; } .glyphicon-chevron-up:before { content: "\e113"; } .glyphicon-chevron-down:before { content: "\e114"; } .glyphicon-retweet:before { content: "\e115"; } .glyphicon-shopping-cart:before { content: "\e116"; } .glyphicon-folder-close:before { content: "\e117"; } .glyphicon-folder-open:before { content: "\e118"; } .glyphicon-resize-vertical:before { content: "\e119"; } .glyphicon-resize-horizontal:before { content: "\e120"; } .glyphicon-hdd:before { content: "\e121"; } .glyphicon-bullhorn:before { content: "\e122"; } .glyphicon-certificate:before { content: "\e124"; } .glyphicon-thumbs-up:before { content: "\e125"; } .glyphicon-thumbs-down:before { content: "\e126"; } .glyphicon-hand-right:before { content: "\e127"; } .glyphicon-hand-left:before { content: "\e128"; } .glyphicon-hand-up:before { content: "\e129"; } .glyphicon-hand-down:before { content: "\e130"; } .glyphicon-circle-arrow-right:before { content: "\e131"; } .glyphicon-circle-arrow-left:before { content: "\e132"; } .glyphicon-circle-arrow-up:before { content: "\e133"; } .glyphicon-circle-arrow-down:before { content: "\e134"; } .glyphicon-globe:before { content: "\e135"; } .glyphicon-tasks:before { content: "\e137"; } .glyphicon-filter:before { content: "\e138"; } .glyphicon-fullscreen:before { content: "\e140"; } .glyphicon-dashboard:before { content: "\e141"; } .glyphicon-heart-empty:before { content: "\e143"; } .glyphicon-link:before { content: "\e144"; } .glyphicon-phone:before { content: "\e145"; } .glyphicon-usd:before { content: "\e148"; } .glyphicon-gbp:before { content: "\e149"; } .glyphicon-sort:before { content: "\e150"; } .glyphicon-sort-by-alphabet:before { content: "\e151"; } .glyphicon-sort-by-alphabet-alt:before { content: "\e152"; } .glyphicon-sort-by-order:before { content: "\e153"; } .glyphicon-sort-by-order-alt:before { content: "\e154"; } .glyphicon-sort-by-attributes:before { content: "\e155"; } .glyphicon-sort-by-attributes-alt:before { content: "\e156"; } .glyphicon-unchecked:before { content: "\e157"; } .glyphicon-expand:before { content: "\e158"; } .glyphicon-collapse-down:before { content: "\e159"; } .glyphicon-collapse-up:before { content: "\e160"; } .glyphicon-log-in:before { content: "\e161"; } .glyphicon-flash:before { content: "\e162"; } .glyphicon-log-out:before { content: "\e163"; } .glyphicon-new-window:before { content: "\e164"; } .glyphicon-record:before { content: "\e165"; } .glyphicon-save:before { content: "\e166"; } .glyphicon-open:before { content: "\e167"; } .glyphicon-saved:before { content: "\e168"; } .glyphicon-import:before { content: "\e169"; } .glyphicon-export:before { content: "\e170"; } .glyphicon-send:before { content: "\e171"; } .glyphicon-floppy-disk:before { content: "\e172"; } .glyphicon-floppy-saved:before { content: "\e173"; } .glyphicon-floppy-remove:before { content: "\e174"; } .glyphicon-floppy-save:before { content: "\e175"; } .glyphicon-floppy-open:before { content: "\e176"; } .glyphicon-credit-card:before { content: "\e177"; } .glyphicon-transfer:before { content: "\e178"; } .glyphicon-cutlery:before { content: "\e179"; } .glyphicon-header:before { content: "\e180"; } .glyphicon-compressed:before { content: "\e181"; } .glyphicon-earphone:before { content: "\e182"; } .glyphicon-phone-alt:before { content: "\e183"; } .glyphicon-tower:before { content: "\e184"; } .glyphicon-stats:before { content: "\e185"; } .glyphicon-sd-video:before { content: "\e186"; } .glyphicon-hd-video:before { content: "\e187"; } .glyphicon-subtitles:before { content: "\e188"; } .glyphicon-sound-stereo:before { content: "\e189"; } .glyphicon-sound-dolby:before { content: "\e190"; } .glyphicon-sound-5-1:before { content: "\e191"; } .glyphicon-sound-6-1:before { content: "\e192"; } .glyphicon-sound-7-1:before { content: "\e193"; } .glyphicon-copyright-mark:before { content: "\e194"; } .glyphicon-registration-mark:before { content: "\e195"; } .glyphicon-cloud-download:before { content: "\e197"; } .glyphicon-cloud-upload:before { content: "\e198"; } .glyphicon-tree-conifer:before { content: "\e199"; } .glyphicon-tree-deciduous:before { content: "\e200"; } .glyphicon-briefcase:before { content: "\1f4bc"; } .glyphicon-calendar:before { content: "\1f4c5"; } .glyphicon-pushpin:before { content: "\1f4cc"; } .glyphicon-paperclip:before { content: "\1f4ce"; } .glyphicon-camera:before { content: "\1f4f7"; } .glyphicon-lock:before { content: "\1f512"; } .glyphicon-bell:before { content: "\1f514"; } .glyphicon-bookmark:before { content: "\1f516"; } .glyphicon-fire:before { content: "\1f525"; } .glyphicon-wrench:before { content: "\1f527"; } .caret { display: inline-block; width: 0; height: 0; margin-left: 2px; vertical-align: middle; border-top: 4px solid #000000; border-right: 4px solid transparent; border-bottom: 0 dotted; border-left: 4px solid transparent; content: ""; } .dropdown { position: relative; } .dropdown-toggle:focus { outline: 0; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; font-size: 14px; list-style: none; background-color: #ffffff; border: 1px solid #cccccc; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px; -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); background-clip: padding-box; } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 1.428571429; color: #333333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { color: #ffffff; text-decoration: none; background-color: #428bca; } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #ffffff; text-decoration: none; background-color: #428bca; outline: 0; } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #999999; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; cursor: not-allowed; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); } .open > .dropdown-menu { display: block; } .open > a { outline: 0; } .dropdown-header { display: block; padding: 3px 20px; font-size: 12px; line-height: 1.428571429; color: #999999; } .dropdown-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 990; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { border-top: 0 dotted; border-bottom: 4px solid #000000; content: ""; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 1px; } @media (min-width: 768px) { .navbar-right .dropdown-menu { right: 0; left: auto; } } .btn-default .caret { border-top-color: #333333; } .btn-primary .caret, .btn-success .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret { border-top-color: #fff; } .dropup .btn-default .caret { border-bottom-color: #333333; } .dropup .btn-primary .caret, .dropup .btn-success .caret, .dropup .btn-warning .caret, .dropup .btn-danger .caret, .dropup .btn-info .caret { border-bottom-color: #fff; } .btn-group, .btn-group-vertical { position: relative; display: inline-block; vertical-align: middle; } .btn-group > .btn, .btn-group-vertical > .btn { position: relative; float: left; } .btn-group > .btn:hover, .btn-group-vertical > .btn:hover, .btn-group > .btn:focus, .btn-group-vertical > .btn:focus, .btn-group > .btn:active, .btn-group-vertical > .btn:active, .btn-group > .btn.active, .btn-group-vertical > .btn.active { z-index: 2; } .btn-group > .btn:focus, .btn-group-vertical > .btn:focus { outline: none; } .btn-group .btn + .btn, .btn-group .btn + .btn-group, .btn-group .btn-group + .btn, .btn-group .btn-group + .btn-group { margin-left: -1px; } .btn-toolbar:before, .btn-toolbar:after { display: table; content: " "; } .btn-toolbar:after { clear: both; } .btn-toolbar:before, .btn-toolbar:after { display: table; content: " "; } .btn-toolbar:after { clear: both; } .btn-toolbar .btn-group { float: left; } .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group, .btn-toolbar > .btn-group + .btn-group { margin-left: 5px; } .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; } .btn-group > .btn:first-child { margin-left: 0; } .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn:last-child:not(:first-child), .btn-group > .dropdown-toggle:not(:first-child) { border-bottom-left-radius: 0; border-top-left-radius: 0; } .btn-group > .btn-group { float: left; } .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group > .btn-group:first-child > .btn:last-child, .btn-group > .btn-group:first-child > .dropdown-toggle { border-top-right-radius: 0; border-bottom-right-radius: 0; } .btn-group > .btn-group:last-child > .btn:first-child { border-bottom-left-radius: 0; border-top-left-radius: 0; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group-xs > .btn { padding: 5px 10px; padding: 1px 5px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-group-sm > .btn { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } .btn-group-lg > .btn { padding: 10px 16px; font-size: 18px; line-height: 1.33; border-radius: 6px; } .btn-group > .btn + .dropdown-toggle { padding-right: 8px; padding-left: 8px; } .btn-group > .btn-lg + .dropdown-toggle { padding-right: 12px; padding-left: 12px; } .btn-group.open .dropdown-toggle { -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } .btn .caret { margin-left: 0; } .btn-lg .caret { border-width: 5px 5px 0; border-bottom-width: 0; } .dropup .btn-lg .caret { border-width: 0 5px 5px; } .btn-group-vertical > .btn, .btn-group-vertical > .btn-group { display: block; float: none; width: 100%; max-width: 100%; } .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { display: table; content: " "; } .btn-group-vertical > .btn-group:after { clear: both; } .btn-group-vertical > .btn-group:before, .btn-group-vertical > .btn-group:after { display: table; content: " "; } .btn-group-vertical > .btn-group:after { clear: both; } .btn-group-vertical > .btn-group > .btn { float: none; } .btn-group-vertical > .btn + .btn, .btn-group-vertical > .btn + .btn-group, .btn-group-vertical > .btn-group + .btn, .btn-group-vertical > .btn-group + .btn-group { margin-top: -1px; margin-left: 0; } .btn-group-vertical > .btn:not(:first-child):not(:last-child) { border-radius: 0; } .btn-group-vertical > .btn:first-child:not(:last-child) { border-top-right-radius: 4px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn:last-child:not(:first-child) { border-top-right-radius: 0; border-bottom-left-radius: 4px; border-top-left-radius: 0; } .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { border-radius: 0; } .btn-group-vertical > .btn-group:first-child > .btn:last-child, .btn-group-vertical > .btn-group:first-child > .dropdown-toggle { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .btn-group-vertical > .btn-group:last-child > .btn:first-child { border-top-right-radius: 0; border-top-left-radius: 0; } .btn-group-justified { display: table; width: 100%; border-collapse: separate; table-layout: fixed; } .btn-group-justified .btn { display: table-cell; float: none; width: 1%; } [data-toggle="buttons"] > .btn > input[type="radio"], [data-toggle="buttons"] > .btn > input[type="checkbox"] { display: none; } .input-group { position: relative; display: table; border-collapse: separate; } .input-group.col { float: none; padding-right: 0; padding-left: 0; } .input-group .form-control { width: 100%; margin-bottom: 0; } .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { height: 45px; padding: 10px 16px; font-size: 18px; line-height: 1.33; border-radius: 6px; } select.input-group-lg > .form-control, select.input-group-lg > .input-group-addon, select.input-group-lg > .input-group-btn > .btn { height: 45px; line-height: 45px; } textarea.input-group-lg > .form-control, textarea.input-group-lg > .input-group-addon, textarea.input-group-lg > .input-group-btn > .btn { height: auto; } .input-group-sm > .form-control, .input-group-sm > .input-group-addon, .input-group-sm > .input-group-btn > .btn { height: 30px; padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } select.input-group-sm > .form-control, select.input-group-sm > .input-group-addon, select.input-group-sm > .input-group-btn > .btn { height: 30px; line-height: 30px; } textarea.input-group-sm > .form-control, textarea.input-group-sm > .input-group-addon, textarea.input-group-sm > .input-group-btn > .btn { height: auto; } .input-group-addon, .input-group-btn, .input-group .form-control { display: table-cell; } .input-group-addon:not(:first-child):not(:last-child), .input-group-btn:not(:first-child):not(:last-child), .input-group .form-control:not(:first-child):not(:last-child) { border-radius: 0; } .input-group-addon, .input-group-btn { width: 1%; white-space: nowrap; vertical-align: middle; } .input-group-addon { padding: 6px 12px; font-size: 14px; font-weight: normal; line-height: 1; text-align: center; background-color: #eeeeee; border: 1px solid #cccccc; border-radius: 4px; } .input-group-addon.input-sm { padding: 5px 10px; font-size: 12px; border-radius: 3px; } .input-group-addon.input-lg { padding: 10px 16px; font-size: 18px; border-radius: 6px; } .input-group-addon input[type="radio"], .input-group-addon input[type="checkbox"] { margin-top: 0; } .input-group .form-control:first-child, .input-group-addon:first-child, .input-group-btn:first-child > .btn, .input-group-btn:first-child > .dropdown-toggle, .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .input-group-addon:first-child { border-right: 0; } .input-group .form-control:last-child, .input-group-addon:last-child, .input-group-btn:last-child > .btn, .input-group-btn:last-child > .dropdown-toggle, .input-group-btn:first-child > .btn:not(:first-child) { border-bottom-left-radius: 0; border-top-left-radius: 0; } .input-group-addon:last-child { border-left: 0; } .input-group-btn { position: relative; white-space: nowrap; } .input-group-btn > .btn { position: relative; } .input-group-btn > .btn + .btn { margin-left: -4px; } .input-group-btn > .btn:hover, .input-group-btn > .btn:active { z-index: 2; } .nav { padding-left: 0; margin-bottom: 0; list-style: none; } .nav:before, .nav:after { display: table; content: " "; } .nav:after { clear: both; } .nav:before, .nav:after { display: table; content: " "; } .nav:after { clear: both; } .nav > li { position: relative; display: block; } .nav > li > a { position: relative; display: block; padding: 10px 15px; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eeeeee; } .nav > li.disabled > a { color: #999999; } .nav > li.disabled > a:hover, .nav > li.disabled > a:focus { color: #999999; text-decoration: none; cursor: not-allowed; background-color: transparent; } .nav .open > a, .nav .open > a:hover, .nav .open > a:focus { background-color: #eeeeee; border-color: #428bca; } .nav .nav-divider { height: 1px; margin: 9px 0; overflow: hidden; background-color: #e5e5e5; } .nav > li > a > img { max-width: none; } .nav-tabs { border-bottom: 1px solid #dddddd; } .nav-tabs > li { float: left; margin-bottom: -1px; } .nav-tabs > li > a { margin-right: 2px; line-height: 1.428571429; border: 1px solid transparent; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover { border-color: #eeeeee #eeeeee #dddddd; } .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { color: #555555; cursor: default; background-color: #ffffff; border: 1px solid #dddddd; border-bottom-color: transparent; } .nav-tabs.nav-justified { width: 100%; border-bottom: 0; } .nav-tabs.nav-justified > li { float: none; } .nav-tabs.nav-justified > li > a { text-align: center; } @media (min-width: 768px) { .nav-tabs.nav-justified > li { display: table-cell; width: 1%; } } .nav-tabs.nav-justified > li > a { margin-right: 0; border-bottom: 1px solid #dddddd; } .nav-tabs.nav-justified > .active > a { border-bottom-color: #ffffff; } .nav-pills > li { float: left; } .nav-pills > li > a { border-radius: 5px; } .nav-pills > li + li { margin-left: 2px; } .nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { color: #ffffff; background-color: #428bca; } .nav-stacked > li { float: none; } .nav-stacked > li + li { margin-top: 2px; margin-left: 0; } .nav-justified { width: 100%; } .nav-justified > li { float: none; } .nav-justified > li > a { text-align: center; } @media (min-width: 768px) { .nav-justified > li { display: table-cell; width: 1%; } } .nav-tabs-justified { border-bottom: 0; } .nav-tabs-justified > li > a { margin-right: 0; border-bottom: 1px solid #dddddd; } .nav-tabs-justified > .active > a { border-bottom-color: #ffffff; } .tabbable:before, .tabbable:after { display: table; content: " "; } .tabbable:after { clear: both; } .tabbable:before, .tabbable:after { display: table; content: " "; } .tabbable:after { clear: both; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .nav .caret { border-top-color: #428bca; border-bottom-color: #428bca; } .nav a:hover .caret { border-top-color: #2a6496; border-bottom-color: #2a6496; } .nav-tabs .dropdown-menu { margin-top: -1px; border-top-right-radius: 0; border-top-left-radius: 0; } .navbar { position: relative; z-index: 1000; min-height: 50px; margin-bottom: 20px; border: 1px solid transparent; } .navbar:before, .navbar:after { display: table; content: " "; } .navbar:after { clear: both; } .navbar:before, .navbar:after { display: table; content: " "; } .navbar:after { clear: both; } @media (min-width: 768px) { .navbar { border-radius: 4px; } } .navbar-header:before, .navbar-header:after { display: table; content: " "; } .navbar-header:after { clear: both; } .navbar-header:before, .navbar-header:after { display: table; content: " "; } .navbar-header:after { clear: both; } @media (min-width: 768px) { .navbar-header { float: left; } } .navbar-collapse { max-height: 340px; padding-right: 15px; padding-left: 15px; overflow-x: visible; border-top: 1px solid transparent; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); -webkit-overflow-scrolling: touch; } .navbar-collapse:before, .navbar-collapse:after { display: table; content: " "; } .navbar-collapse:after { clear: both; } .navbar-collapse:before, .navbar-collapse:after { display: table; content: " "; } .navbar-collapse:after { clear: both; } .navbar-collapse.in { overflow-y: auto; } @media (min-width: 768px) { .navbar-collapse { width: auto; border-top: 0; box-shadow: none; } .navbar-collapse.collapse { display: block !important; height: auto !important; padding-bottom: 0; overflow: visible !important; } .navbar-collapse.in { overflow-y: visible; } .navbar-collapse .navbar-nav.navbar-left:first-child { margin-left: -15px; } .navbar-collapse .navbar-nav.navbar-right:last-child { margin-right: -15px; } .navbar-collapse .navbar-text:last-child { margin-right: 0; } } .container > .navbar-header, .container > .navbar-collapse { margin-right: -15px; margin-left: -15px; } @media (min-width: 768px) { .container > .navbar-header, .container > .navbar-collapse { margin-right: 0; margin-left: 0; } } .navbar-static-top { border-width: 0 0 1px; } @media (min-width: 768px) { .navbar-static-top { border-radius: 0; } } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; border-width: 0 0 1px; } @media (min-width: 768px) { .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } } .navbar-fixed-top { top: 0; z-index: 1030; } .navbar-fixed-bottom { bottom: 0; margin-bottom: 0; } .navbar-brand { float: left; padding: 15px 15px; font-size: 18px; line-height: 20px; } .navbar-brand:hover, .navbar-brand:focus { text-decoration: none; } @media (min-width: 768px) { .navbar > .container .navbar-brand { margin-left: -15px; } } .navbar-toggle { position: relative; float: right; padding: 9px 10px; margin-top: 8px; margin-right: 15px; margin-bottom: 8px; background-color: transparent; border: 1px solid transparent; border-radius: 4px; } .navbar-toggle .icon-bar { display: block; width: 22px; height: 2px; border-radius: 1px; } .navbar-toggle .icon-bar + .icon-bar { margin-top: 4px; } @media (min-width: 768px) { .navbar-toggle { display: none; } } .navbar-nav { margin: 7.5px -15px; } .navbar-nav > li > a { padding-top: 10px; padding-bottom: 10px; line-height: 20px; } @media (max-width: 767px) { .navbar-nav .open .dropdown-menu { position: static; float: none; width: auto; margin-top: 0; background-color: transparent; border: 0; box-shadow: none; } .navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header { padding: 5px 15px 5px 25px; } .navbar-nav .open .dropdown-menu > li > a { line-height: 20px; } .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { background-image: none; } } @media (min-width: 768px) { .navbar-nav { float: left; margin: 0; } .navbar-nav > li { float: left; } .navbar-nav > li > a { padding-top: 15px; padding-bottom: 15px; } } @media (min-width: 768px) { .navbar-left { float: left !important; } .navbar-right { float: right !important; } } .navbar-form { padding: 10px 15px; margin-top: 8px; margin-right: -15px; margin-bottom: 8px; margin-left: -15px; border-top: 1px solid transparent; border-bottom: 1px solid transparent; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); } @media (min-width: 768px) { .navbar-form .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .navbar-form .form-control { display: inline-block; } .navbar-form .radio, .navbar-form .checkbox { display: inline-block; padding-left: 0; margin-top: 0; margin-bottom: 0; } .navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] { float: none; margin-left: 0; } } @media (max-width: 767px) { .navbar-form .form-group { margin-bottom: 5px; } } @media (min-width: 768px) { .navbar-form { width: auto; padding-top: 0; padding-bottom: 0; margin-right: 0; margin-left: 0; border: 0; -webkit-box-shadow: none; box-shadow: none; } } .navbar-nav > li > .dropdown-menu { margin-top: 0; border-top-right-radius: 0; border-top-left-radius: 0; } .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .navbar-nav.pull-right > li > .dropdown-menu, .navbar-nav > li > .dropdown-menu.pull-right { right: 0; left: auto; } .navbar-btn { margin-top: 8px; margin-bottom: 8px; } .navbar-text { float: left; margin-top: 15px; margin-bottom: 15px; } @media (min-width: 768px) { .navbar-text { margin-right: 15px; margin-left: 15px; } } .navbar-default { background-color: #f8f8f8; border-color: #e7e7e7; } .navbar-default .navbar-brand { color: #777777; } .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { color: #5e5e5e; background-color: transparent; } .navbar-default .navbar-text { color: #777777; } .navbar-default .navbar-nav > li > a { color: #777777; } .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { color: #333333; background-color: transparent; } .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { color: #555555; background-color: #e7e7e7; } .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, .navbar-default .navbar-nav > .disabled > a:focus { color: #cccccc; background-color: transparent; } .navbar-default .navbar-toggle { border-color: #dddddd; } .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { background-color: #dddddd; } .navbar-default .navbar-toggle .icon-bar { background-color: #cccccc; } .navbar-default .navbar-collapse, .navbar-default .navbar-form { border-color: #e6e6e6; } .navbar-default .navbar-nav > .dropdown > a:hover .caret, .navbar-default .navbar-nav > .dropdown > a:focus .caret { border-top-color: #333333; border-bottom-color: #333333; } .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { color: #555555; background-color: #e7e7e7; } .navbar-default .navbar-nav > .open > a .caret, .navbar-default .navbar-nav > .open > a:hover .caret, .navbar-default .navbar-nav > .open > a:focus .caret { border-top-color: #555555; border-bottom-color: #555555; } .navbar-default .navbar-nav > .dropdown > a .caret { border-top-color: #777777; border-bottom-color: #777777; } @media (max-width: 767px) { .navbar-default .navbar-nav .open .dropdown-menu > li > a { color: #777777; } .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { color: #333333; background-color: transparent; } .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { color: #555555; background-color: #e7e7e7; } .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #cccccc; background-color: transparent; } } .navbar-default .navbar-link { color: #777777; } .navbar-default .navbar-link:hover { color: #333333; } .navbar-inverse { background-color: #222222; border-color: #080808; } .navbar-inverse .navbar-brand { color: #999999; } .navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus { color: #ffffff; background-color: transparent; } .navbar-inverse .navbar-text { color: #999999; } .navbar-inverse .navbar-nav > li > a { color: #999999; } .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { color: #ffffff; background-color: transparent; } .navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { color: #ffffff; background-color: #080808; } .navbar-inverse .navbar-nav > .disabled > a, .navbar-inverse .navbar-nav > .disabled > a:hover, .navbar-inverse .navbar-nav > .disabled > a:focus { color: #444444; background-color: transparent; } .navbar-inverse .navbar-toggle { border-color: #333333; } .navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus { background-color: #333333; } .navbar-inverse .navbar-toggle .icon-bar { background-color: #ffffff; } .navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { border-color: #101010; } .navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { color: #ffffff; background-color: #080808; } .navbar-inverse .navbar-nav > .dropdown > a:hover .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .navbar-inverse .navbar-nav > .dropdown > a .caret { border-top-color: #999999; border-bottom-color: #999999; } .navbar-inverse .navbar-nav > .open > a .caret, .navbar-inverse .navbar-nav > .open > a:hover .caret, .navbar-inverse .navbar-nav > .open > a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } @media (max-width: 767px) { .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { border-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { color: #999999; } .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { color: #ffffff; background-color: transparent; } .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { color: #ffffff; background-color: #080808; } .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { color: #444444; background-color: transparent; } } .navbar-inverse .navbar-link { color: #999999; } .navbar-inverse .navbar-link:hover { color: #ffffff; } .breadcrumb { padding: 8px 15px; margin-bottom: 20px; list-style: none; background-color: #f5f5f5; border-radius: 4px; } .breadcrumb > li { display: inline-block; } .breadcrumb > li + li:before { padding: 0 5px; color: #cccccc; content: "/\00a0"; } .breadcrumb > .active { color: #999999; } .pagination { display: inline-block; padding-left: 0; margin: 20px 0; border-radius: 4px; } .pagination > li { display: inline; } .pagination > li > a, .pagination > li > span { position: relative; float: left; padding: 6px 12px; margin-left: -1px; line-height: 1.428571429; text-decoration: none; background-color: #ffffff; border: 1px solid #dddddd; } .pagination > li:first-child > a, .pagination > li:first-child > span { margin-left: 0; border-bottom-left-radius: 4px; border-top-left-radius: 4px; } .pagination > li:last-child > a, .pagination > li:last-child > span { border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .pagination > li > a:hover, .pagination > li > span:hover, .pagination > li > a:focus, .pagination > li > span:focus { background-color: #eeeeee; } .pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus { z-index: 2; color: #ffffff; cursor: default; background-color: #428bca; border-color: #428bca; } .pagination > .disabled > span, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus { color: #999999; cursor: not-allowed; background-color: #ffffff; border-color: #dddddd; } .pagination-lg > li > a, .pagination-lg > li > span { padding: 10px 16px; font-size: 18px; } .pagination-lg > li:first-child > a, .pagination-lg > li:first-child > span { border-bottom-left-radius: 6px; border-top-left-radius: 6px; } .pagination-lg > li:last-child > a, .pagination-lg > li:last-child > span { border-top-right-radius: 6px; border-bottom-right-radius: 6px; } .pagination-sm > li > a, .pagination-sm > li > span { padding: 5px 10px; font-size: 12px; } .pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span { border-bottom-left-radius: 3px; border-top-left-radius: 3px; } .pagination-sm > li:last-child > a, .pagination-sm > li:last-child > span { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .pager { padding-left: 0; margin: 20px 0; text-align: center; list-style: none; } .pager:before, .pager:after { display: table; content: " "; } .pager:after { clear: both; } .pager:before, .pager:after { display: table; content: " "; } .pager:after { clear: both; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #ffffff; border: 1px solid #dddddd; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #eeeeee; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #999999; cursor: not-allowed; background-color: #ffffff; } .label { display: inline; padding: .2em .6em .3em; font-size: 75%; font-weight: bold; line-height: 1; color: #ffffff; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: .25em; } .label[href]:hover, .label[href]:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .label:empty { display: none; } .label-default { background-color: #999999; } .label-default[href]:hover, .label-default[href]:focus { background-color: #808080; } .label-primary { background-color: #428bca; } .label-primary[href]:hover, .label-primary[href]:focus { background-color: #3071a9; } .label-success { background-color: #5cb85c; } .label-success[href]:hover, .label-success[href]:focus { background-color: #449d44; } .label-info { background-color: #5bc0de; } .label-info[href]:hover, .label-info[href]:focus { background-color: #31b0d5; } .label-warning { background-color: #f0ad4e; } .label-warning[href]:hover, .label-warning[href]:focus { background-color: #ec971f; } .label-danger { background-color: #d9534f; } .label-danger[href]:hover, .label-danger[href]:focus { background-color: #c9302c; } .badge { display: inline-block; min-width: 10px; padding: 3px 7px; font-size: 12px; font-weight: bold; line-height: 1; color: #ffffff; text-align: center; white-space: nowrap; vertical-align: baseline; background-color: #999999; border-radius: 10px; } .badge:empty { display: none; } a.badge:hover, a.badge:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .btn .badge { position: relative; top: -1px; } a.list-group-item.active > .badge, .nav-pills > .active > a > .badge { color: #428bca; background-color: #ffffff; } .nav-pills > li > a > .badge { margin-left: 3px; } .jumbotron { padding: 30px; margin-bottom: 30px; font-size: 21px; font-weight: 200; line-height: 2.1428571435; color: inherit; background-color: #eeeeee; } .jumbotron h1 { line-height: 1; color: inherit; } .jumbotron p { line-height: 1.4; } .container .jumbotron { border-radius: 6px; } @media screen and (min-width: 768px) { .jumbotron { padding-top: 48px; padding-bottom: 48px; } .container .jumbotron { padding-right: 60px; padding-left: 60px; } .jumbotron h1 { font-size: 63px; } } .thumbnail { display: inline-block; display: block; height: auto; max-width: 100%; padding: 4px; line-height: 1.428571429; background-color: #ffffff; border: 1px solid #dddddd; border-radius: 4px; -webkit-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } .thumbnail > img { display: block; height: auto; max-width: 100%; } a.thumbnail:hover, a.thumbnail:focus { border-color: #428bca; } .thumbnail > img { margin-right: auto; margin-left: auto; } .thumbnail .caption { padding: 9px; color: #333333; } .alert { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } .alert h4 { margin-top: 0; color: inherit; } .alert .alert-link { font-weight: bold; } .alert > p, .alert > ul { margin-bottom: 0; } .alert > p + p { margin-top: 5px; } .alert-dismissable { padding-right: 35px; } .alert-dismissable .close { position: relative; top: -2px; right: -21px; color: inherit; } .alert-success { color: #468847; background-color: #dff0d8; border-color: #d6e9c6; } .alert-success hr { border-top-color: #c9e2b3; } .alert-success .alert-link { color: #356635; } .alert-info { color: #3a87ad; background-color: #d9edf7; border-color: #bce8f1; } .alert-info hr { border-top-color: #a6e1ec; } .alert-info .alert-link { color: #2d6987; } .alert-warning { color: #c09853; background-color: #fcf8e3; border-color: #fbeed5; } .alert-warning hr { border-top-color: #f8e5be; } .alert-warning .alert-link { color: #a47e3c; } .alert-danger { color: #b94a48; background-color: #f2dede; border-color: #eed3d7; } .alert-danger hr { border-top-color: #e6c1c7; } .alert-danger .alert-link { color: #953b39; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-moz-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { height: 20px; margin-bottom: 20px; overflow: hidden; background-color: #f5f5f5; border-radius: 4px; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } .progress-bar { float: left; width: 0; height: 100%; font-size: 12px; color: #ffffff; text-align: center; background-color: #428bca; -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-transition: width 0.6s ease; transition: width 0.6s ease; } .progress-striped .progress-bar { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-size: 40px 40px; } .progress.active .progress-bar { -webkit-animation: progress-bar-stripes 2s linear infinite; -moz-animation: progress-bar-stripes 2s linear infinite; -ms-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-bar-success { background-color: #5cb85c; } .progress-striped .progress-bar-success { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-info { background-color: #5bc0de; } .progress-striped .progress-bar-info { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-warning { background-color: #f0ad4e; } .progress-striped .progress-bar-warning { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-bar-danger { background-color: #d9534f; } .progress-striped .progress-bar-danger { background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .media, .media-body { overflow: hidden; zoom: 1; } .media, .media .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media-object { display: block; } .media-heading { margin: 0 0 5px; } .media > .pull-left { margin-right: 10px; } .media > .pull-right { margin-left: 10px; } .media-list { padding-left: 0; list-style: none; } .list-group { padding-left: 0; margin-bottom: 20px; } .list-group-item { position: relative; display: block; padding: 10px 15px; margin-bottom: -1px; background-color: #ffffff; border: 1px solid #dddddd; } .list-group-item:first-child { border-top-right-radius: 4px; border-top-left-radius: 4px; } .list-group-item:last-child { margin-bottom: 0; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } .list-group-item > .badge { float: right; } .list-group-item > .badge + .badge { margin-right: 5px; } a.list-group-item { color: #555555; } a.list-group-item .list-group-item-heading { color: #333333; } a.list-group-item:hover, a.list-group-item:focus { text-decoration: none; background-color: #f5f5f5; } .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus { z-index: 2; color: #ffffff; background-color: #428bca; border-color: #428bca; } .list-group-item.active .list-group-item-heading, .list-group-item.active:hover .list-group-item-heading, .list-group-item.active:focus .list-group-item-heading { color: inherit; } .list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text { color: #e1edf7; } .list-group-item-heading { margin-top: 0; margin-bottom: 5px; } .list-group-item-text { margin-bottom: 0; line-height: 1.3; } .panel { margin-bottom: 20px; background-color: #ffffff; border: 1px solid transparent; border-radius: 4px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); } .panel-body { padding: 15px; } .panel-body:before, .panel-body:after { display: table; content: " "; } .panel-body:after { clear: both; } .panel-body:before, .panel-body:after { display: table; content: " "; } .panel-body:after { clear: both; } .panel > .list-group { margin-bottom: 0; } .panel > .list-group .list-group-item { border-width: 1px 0; } .panel > .list-group .list-group-item:first-child { border-top-right-radius: 0; border-top-left-radius: 0; } .panel > .list-group .list-group-item:last-child { border-bottom: 0; } .panel-heading + .list-group .list-group-item:first-child { border-top-width: 0; } .panel > .table { margin-bottom: 0; } .panel > .panel-body + .table { border-top: 1px solid #dddddd; } .panel-heading { padding: 10px 15px; border-bottom: 1px solid transparent; border-top-right-radius: 3px; border-top-left-radius: 3px; } .panel-title { margin-top: 0; margin-bottom: 0; font-size: 16px; } .panel-title > a { color: inherit; } .panel-footer { padding: 10px 15px; background-color: #f5f5f5; border-top: 1px solid #dddddd; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } .panel-group .panel { margin-bottom: 0; overflow: hidden; border-radius: 4px; } .panel-group .panel + .panel { margin-top: 5px; } .panel-group .panel-heading { border-bottom: 0; } .panel-group .panel-heading + .panel-collapse .panel-body { border-top: 1px solid #dddddd; } .panel-group .panel-footer { border-top: 0; } .panel-group .panel-footer + .panel-collapse .panel-body { border-bottom: 1px solid #dddddd; } .panel-default { border-color: #dddddd; } .panel-default > .panel-heading { color: #333333; background-color: #f5f5f5; border-color: #dddddd; } .panel-default > .panel-heading + .panel-collapse .panel-body { border-top-color: #dddddd; } .panel-default > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #dddddd; } .panel-primary { border-color: #428bca; } .panel-primary > .panel-heading { color: #ffffff; background-color: #428bca; border-color: #428bca; } .panel-primary > .panel-heading + .panel-collapse .panel-body { border-top-color: #428bca; } .panel-primary > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #428bca; } .panel-success { border-color: #d6e9c6; } .panel-success > .panel-heading { color: #468847; background-color: #dff0d8; border-color: #d6e9c6; } .panel-success > .panel-heading + .panel-collapse .panel-body { border-top-color: #d6e9c6; } .panel-success > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #d6e9c6; } .panel-warning { border-color: #fbeed5; } .panel-warning > .panel-heading { color: #c09853; background-color: #fcf8e3; border-color: #fbeed5; } .panel-warning > .panel-heading + .panel-collapse .panel-body { border-top-color: #fbeed5; } .panel-warning > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #fbeed5; } .panel-danger { border-color: #eed3d7; } .panel-danger > .panel-heading { color: #b94a48; background-color: #f2dede; border-color: #eed3d7; } .panel-danger > .panel-heading + .panel-collapse .panel-body { border-top-color: #eed3d7; } .panel-danger > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #eed3d7; } .panel-info { border-color: #bce8f1; } .panel-info > .panel-heading { color: #3a87ad; background-color: #d9edf7; border-color: #bce8f1; } .panel-info > .panel-heading + .panel-collapse .panel-body { border-top-color: #bce8f1; } .panel-info > .panel-footer + .panel-collapse .panel-body { border-bottom-color: #bce8f1; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, 0.15); } .well-lg { padding: 24px; border-radius: 6px; } .well-sm { padding: 9px; border-radius: 3px; } .close { float: right; font-size: 21px; font-weight: bold; line-height: 1; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover, .close:focus { color: #000000; text-decoration: none; cursor: pointer; opacity: 0.5; filter: alpha(opacity=50); } button.close { padding: 0; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } .modal-open { overflow: hidden; } body.modal-open, .modal-open .navbar-fixed-top, .modal-open .navbar-fixed-bottom { margin-right: 15px; } .modal { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; display: none; overflow: auto; overflow-y: scroll; } .modal.fade .modal-dialog { -webkit-transform: translate(0, -25%); -ms-transform: translate(0, -25%); transform: translate(0, -25%); -webkit-transition: -webkit-transform 0.3s ease-out; -moz-transition: -moz-transform 0.3s ease-out; -o-transition: -o-transform 0.3s ease-out; transition: transform 0.3s ease-out; } .modal.in .modal-dialog { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); } .modal-dialog { z-index: 1050; width: auto; padding: 10px; margin-right: auto; margin-left: auto; } .modal-content { position: relative; background-color: #ffffff; border: 1px solid #999999; border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 6px; outline: none; -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); background-clip: padding-box; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1030; background-color: #000000; } .modal-backdrop.fade { opacity: 0; filter: alpha(opacity=0); } .modal-backdrop.in { opacity: 0.5; filter: alpha(opacity=50); } .modal-header { min-height: 16.428571429px; padding: 15px; border-bottom: 1px solid #e5e5e5; } .modal-header .close { margin-top: -2px; } .modal-title { margin: 0; line-height: 1.428571429; } .modal-body { position: relative; padding: 20px; } .modal-footer { padding: 19px 20px 20px; margin-top: 15px; text-align: right; border-top: 1px solid #e5e5e5; } .modal-footer:before, .modal-footer:after { display: table; content: " "; } .modal-footer:after { clear: both; } .modal-footer:before, .modal-footer:after { display: table; content: " "; } .modal-footer:after { clear: both; } .modal-footer .btn + .btn { margin-bottom: 0; margin-left: 5px; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } @media screen and (min-width: 768px) { .modal-dialog { right: auto; left: 50%; width: 600px; padding-top: 30px; padding-bottom: 30px; } .modal-content { -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); } } .tooltip { position: absolute; z-index: 1030; display: block; font-size: 12px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); visibility: visible; } .tooltip.in { opacity: 0.9; filter: alpha(opacity=90); } .tooltip.top { padding: 5px 0; margin-top: -3px; } .tooltip.right { padding: 0 5px; margin-left: 3px; } .tooltip.bottom { padding: 5px 0; margin-top: 3px; } .tooltip.left { padding: 0 5px; margin-left: -3px; } .tooltip-inner { max-width: 200px; padding: 3px 8px; color: #ffffff; text-align: center; text-decoration: none; background-color: #000000; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-color: #000000; border-width: 5px 5px 0; } .tooltip.top-left .tooltip-arrow { bottom: 0; left: 5px; border-top-color: #000000; border-width: 5px 5px 0; } .tooltip.top-right .tooltip-arrow { right: 5px; bottom: 0; border-top-color: #000000; border-width: 5px 5px 0; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-right-color: #000000; border-width: 5px 5px 5px 0; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-left-color: #000000; border-width: 5px 0 5px 5px; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-bottom-color: #000000; border-width: 0 5px 5px; } .tooltip.bottom-left .tooltip-arrow { top: 0; left: 5px; border-bottom-color: #000000; border-width: 0 5px 5px; } .tooltip.bottom-right .tooltip-arrow { top: 0; right: 5px; border-bottom-color: #000000; border-width: 0 5px 5px; } .popover { position: absolute; top: 0; left: 0; z-index: 1010; display: none; max-width: 276px; padding: 1px; text-align: left; white-space: normal; background-color: #ffffff; border: 1px solid #cccccc; border: 1px solid rgba(0, 0, 0, 0.2); border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); background-clip: padding-box; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { padding: 8px 14px; margin: 0; font-size: 14px; font-weight: normal; line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; border-radius: 5px 5px 0 0; } .popover-content { padding: 9px 14px; } .popover .arrow, .popover .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover .arrow { border-width: 11px; } .popover .arrow:after { border-width: 10px; content: ""; } .popover.top .arrow { bottom: -11px; left: 50%; margin-left: -11px; border-top-color: #999999; border-top-color: rgba(0, 0, 0, 0.25); border-bottom-width: 0; } .popover.top .arrow:after { bottom: 1px; margin-left: -10px; border-top-color: #ffffff; border-bottom-width: 0; content: " "; } .popover.right .arrow { top: 50%; left: -11px; margin-top: -11px; border-right-color: #999999; border-right-color: rgba(0, 0, 0, 0.25); border-left-width: 0; } .popover.right .arrow:after { bottom: -10px; left: 1px; border-right-color: #ffffff; border-left-width: 0; content: " "; } .popover.bottom .arrow { top: -11px; left: 50%; margin-left: -11px; border-bottom-color: #999999; border-bottom-color: rgba(0, 0, 0, 0.25); border-top-width: 0; } .popover.bottom .arrow:after { top: 1px; margin-left: -10px; border-bottom-color: #ffffff; border-top-width: 0; content: " "; } .popover.left .arrow { top: 50%; right: -11px; margin-top: -11px; border-left-color: #999999; border-left-color: rgba(0, 0, 0, 0.25); border-right-width: 0; } .popover.left .arrow:after { right: 1px; bottom: -10px; border-left-color: #ffffff; border-right-width: 0; content: " "; } .carousel { position: relative; } .carousel-inner { position: relative; width: 100%; overflow: hidden; } .carousel-inner > .item { position: relative; display: none; -webkit-transition: 0.6s ease-in-out left; transition: 0.6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; height: auto; max-width: 100%; line-height: 1; } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 0; bottom: 0; left: 0; width: 15%; font-size: 20px; color: #ffffff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); opacity: 0.5; filter: alpha(opacity=50); } .carousel-control.left { background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); } .carousel-control.right { right: 0; left: auto; background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); } .carousel-control:hover, .carousel-control:focus { color: #ffffff; text-decoration: none; opacity: 0.9; filter: alpha(opacity=90); } .carousel-control .icon-prev, .carousel-control .icon-next, .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right { position: absolute; top: 50%; left: 50%; z-index: 5; display: inline-block; } .carousel-control .icon-prev, .carousel-control .icon-next { width: 20px; height: 20px; margin-top: -10px; margin-left: -10px; font-family: serif; } .carousel-control .icon-prev:before { content: '\2039'; } .carousel-control .icon-next:before { content: '\203a'; } .carousel-indicators { position: absolute; bottom: 10px; left: 50%; z-index: 15; width: 60%; padding-left: 0; margin-left: -30%; text-align: center; list-style: none; } .carousel-indicators li { display: inline-block; width: 10px; height: 10px; margin: 1px; text-indent: -999px; cursor: pointer; border: 1px solid #ffffff; border-radius: 10px; } .carousel-indicators .active { width: 12px; height: 12px; margin: 0; background-color: #ffffff; } .carousel-caption { position: absolute; right: 15%; bottom: 20px; left: 15%; z-index: 10; padding-top: 20px; padding-bottom: 20px; color: #ffffff; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); } .carousel-caption .btn { text-shadow: none; } @media screen and (min-width: 768px) { .carousel-control .icon-prev, .carousel-control .icon-next { width: 30px; height: 30px; margin-top: -15px; margin-left: -15px; font-size: 30px; } .carousel-caption { right: 20%; left: 20%; padding-bottom: 30px; } .carousel-indicators { bottom: 20px; } } .clearfix:before, .clearfix:after { display: table; content: " "; } .clearfix:after { clear: both; } .pull-right { float: right !important; } .pull-left { float: left !important; } .hide { display: none !important; } .show { display: block !important; } .invisible { visibility: hidden; } .text-hide { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .affix { position: fixed; } @-ms-viewport { width: device-width; } @media screen and (max-width: 400px) { @-ms-viewport { width: 320px; } } .hidden { display: none !important; visibility: hidden !important; } .visible-xs { display: none !important; } tr.visible-xs { display: none !important; } th.visible-xs, td.visible-xs { display: none !important; } @media (max-width: 767px) { .visible-xs { display: block !important; } tr.visible-xs { display: table-row !important; } th.visible-xs, td.visible-xs { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-xs.visible-sm { display: block !important; } tr.visible-xs.visible-sm { display: table-row !important; } th.visible-xs.visible-sm, td.visible-xs.visible-sm { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-xs.visible-md { display: block !important; } tr.visible-xs.visible-md { display: table-row !important; } th.visible-xs.visible-md, td.visible-xs.visible-md { display: table-cell !important; } } @media (min-width: 1200px) { .visible-xs.visible-lg { display: block !important; } tr.visible-xs.visible-lg { display: table-row !important; } th.visible-xs.visible-lg, td.visible-xs.visible-lg { display: table-cell !important; } } .visible-sm { display: none !important; } tr.visible-sm { display: none !important; } th.visible-sm, td.visible-sm { display: none !important; } @media (max-width: 767px) { .visible-sm.visible-xs { display: block !important; } tr.visible-sm.visible-xs { display: table-row !important; } th.visible-sm.visible-xs, td.visible-sm.visible-xs { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-sm { display: block !important; } tr.visible-sm { display: table-row !important; } th.visible-sm, td.visible-sm { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-sm.visible-md { display: block !important; } tr.visible-sm.visible-md { display: table-row !important; } th.visible-sm.visible-md, td.visible-sm.visible-md { display: table-cell !important; } } @media (min-width: 1200px) { .visible-sm.visible-lg { display: block !important; } tr.visible-sm.visible-lg { display: table-row !important; } th.visible-sm.visible-lg, td.visible-sm.visible-lg { display: table-cell !important; } } .visible-md { display: none !important; } tr.visible-md { display: none !important; } th.visible-md, td.visible-md { display: none !important; } @media (max-width: 767px) { .visible-md.visible-xs { display: block !important; } tr.visible-md.visible-xs { display: table-row !important; } th.visible-md.visible-xs, td.visible-md.visible-xs { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-md.visible-sm { display: block !important; } tr.visible-md.visible-sm { display: table-row !important; } th.visible-md.visible-sm, td.visible-md.visible-sm { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-md { display: block !important; } tr.visible-md { display: table-row !important; } th.visible-md, td.visible-md { display: table-cell !important; } } @media (min-width: 1200px) { .visible-md.visible-lg { display: block !important; } tr.visible-md.visible-lg { display: table-row !important; } th.visible-md.visible-lg, td.visible-md.visible-lg { display: table-cell !important; } } .visible-lg { display: none !important; } tr.visible-lg { display: none !important; } th.visible-lg, td.visible-lg { display: none !important; } @media (max-width: 767px) { .visible-lg.visible-xs { display: block !important; } tr.visible-lg.visible-xs { display: table-row !important; } th.visible-lg.visible-xs, td.visible-lg.visible-xs { display: table-cell !important; } } @media (min-width: 768px) and (max-width: 991px) { .visible-lg.visible-sm { display: block !important; } tr.visible-lg.visible-sm { display: table-row !important; } th.visible-lg.visible-sm, td.visible-lg.visible-sm { display: table-cell !important; } } @media (min-width: 992px) and (max-width: 1199px) { .visible-lg.visible-md { display: block !important; } tr.visible-lg.visible-md { display: table-row !important; } th.visible-lg.visible-md, td.visible-lg.visible-md { display: table-cell !important; } } @media (min-width: 1200px) { .visible-lg { display: block !important; } tr.visible-lg { display: table-row !important; } th.visible-lg, td.visible-lg { display: table-cell !important; } } .hidden-xs { display: block !important; } tr.hidden-xs { display: table-row !important; } th.hidden-xs, td.hidden-xs { display: table-cell !important; } @media (max-width: 767px) { .hidden-xs { display: none !important; } tr.hidden-xs { display: none !important; } th.hidden-xs, td.hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-xs.hidden-sm { display: none !important; } tr.hidden-xs.hidden-sm { display: none !important; } th.hidden-xs.hidden-sm, td.hidden-xs.hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-xs.hidden-md { display: none !important; } tr.hidden-xs.hidden-md { display: none !important; } th.hidden-xs.hidden-md, td.hidden-xs.hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-xs.hidden-lg { display: none !important; } tr.hidden-xs.hidden-lg { display: none !important; } th.hidden-xs.hidden-lg, td.hidden-xs.hidden-lg { display: none !important; } } .hidden-sm { display: block !important; } tr.hidden-sm { display: table-row !important; } th.hidden-sm, td.hidden-sm { display: table-cell !important; } @media (max-width: 767px) { .hidden-sm.hidden-xs { display: none !important; } tr.hidden-sm.hidden-xs { display: none !important; } th.hidden-sm.hidden-xs, td.hidden-sm.hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-sm { display: none !important; } tr.hidden-sm { display: none !important; } th.hidden-sm, td.hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-sm.hidden-md { display: none !important; } tr.hidden-sm.hidden-md { display: none !important; } th.hidden-sm.hidden-md, td.hidden-sm.hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-sm.hidden-lg { display: none !important; } tr.hidden-sm.hidden-lg { display: none !important; } th.hidden-sm.hidden-lg, td.hidden-sm.hidden-lg { display: none !important; } } .hidden-md { display: block !important; } tr.hidden-md { display: table-row !important; } th.hidden-md, td.hidden-md { display: table-cell !important; } @media (max-width: 767px) { .hidden-md.hidden-xs { display: none !important; } tr.hidden-md.hidden-xs { display: none !important; } th.hidden-md.hidden-xs, td.hidden-md.hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-md.hidden-sm { display: none !important; } tr.hidden-md.hidden-sm { display: none !important; } th.hidden-md.hidden-sm, td.hidden-md.hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-md { display: none !important; } tr.hidden-md { display: none !important; } th.hidden-md, td.hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-md.hidden-lg { display: none !important; } tr.hidden-md.hidden-lg { display: none !important; } th.hidden-md.hidden-lg, td.hidden-md.hidden-lg { display: none !important; } } .hidden-lg { display: block !important; } tr.hidden-lg { display: table-row !important; } th.hidden-lg, td.hidden-lg { display: table-cell !important; } @media (max-width: 767px) { .hidden-lg.hidden-xs { display: none !important; } tr.hidden-lg.hidden-xs { display: none !important; } th.hidden-lg.hidden-xs, td.hidden-lg.hidden-xs { display: none !important; } } @media (min-width: 768px) and (max-width: 991px) { .hidden-lg.hidden-sm { display: none !important; } tr.hidden-lg.hidden-sm { display: none !important; } th.hidden-lg.hidden-sm, td.hidden-lg.hidden-sm { display: none !important; } } @media (min-width: 992px) and (max-width: 1199px) { .hidden-lg.hidden-md { display: none !important; } tr.hidden-lg.hidden-md { display: none !important; } th.hidden-lg.hidden-md, td.hidden-lg.hidden-md { display: none !important; } } @media (min-width: 1200px) { .hidden-lg { display: none !important; } tr.hidden-lg { display: none !important; } th.hidden-lg, td.hidden-lg { display: none !important; } } .visible-print { display: none !important; } tr.visible-print { display: none !important; } th.visible-print, td.visible-print { display: none !important; } @media print { .visible-print { display: block !important; } tr.visible-print { display: table-row !important; } th.visible-print, td.visible-print { display: table-cell !important; } .hidden-print { display: none !important; } tr.hidden-print { display: none !important; } th.hidden-print, td.hidden-print { display: none !important; } }crass-1.0.2/test/support/serialization/animate.css0000644000004100000410000021633212530245151022362 0ustar www-datawww-data@charset "UTF-8"; /*! Animate.css - http://daneden.me/animate Licensed under the MIT license - http://opensource.org/licenses/MIT Copyright (c) 2014 Daniel Eden */ .animated { -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-fill-mode: both; animation-fill-mode: both; } .animated.infinite { -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; } .animated.hinge { -webkit-animation-duration: 2s; animation-duration: 2s; } @-webkit-keyframes bounce { 0%, 20%, 53%, 80%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); -webkit-transform: translate3d(0,0,0); transform: translate3d(0,0,0); } 40%, 43% { -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); -webkit-transform: translate3d(0, -30px, 0); transform: translate3d(0, -30px, 0); } 70% { -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); -webkit-transform: translate3d(0, -15px, 0); transform: translate3d(0, -15px, 0); } 90% { -webkit-transform: translate3d(0,-4px,0); transform: translate3d(0,-4px,0); } } @keyframes bounce { 0%, 20%, 53%, 80%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); -webkit-transform: translate3d(0,0,0); transform: translate3d(0,0,0); } 40%, 43% { -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); -webkit-transform: translate3d(0, -30px, 0); transform: translate3d(0, -30px, 0); } 70% { -webkit-transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); -webkit-transform: translate3d(0, -15px, 0); transform: translate3d(0, -15px, 0); } 90% { -webkit-transform: translate3d(0,-4px,0); transform: translate3d(0,-4px,0); } } .bounce { -webkit-animation-name: bounce; animation-name: bounce; -webkit-transform-origin: center bottom; -ms-transform-origin: center bottom; transform-origin: center bottom; } @-webkit-keyframes flash { 0%, 50%, 100% { opacity: 1; } 25%, 75% { opacity: 0; } } @keyframes flash { 0%, 50%, 100% { opacity: 1; } 25%, 75% { opacity: 0; } } .flash { -webkit-animation-name: flash; animation-name: flash; } /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ @-webkit-keyframes pulse { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 50% { -webkit-transform: scale3d(1.05, 1.05, 1.05); transform: scale3d(1.05, 1.05, 1.05); } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes pulse { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 50% { -webkit-transform: scale3d(1.05, 1.05, 1.05); transform: scale3d(1.05, 1.05, 1.05); } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } .pulse { -webkit-animation-name: pulse; animation-name: pulse; } @-webkit-keyframes rubberBand { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 30% { -webkit-transform: scale3d(1.25, 0.75, 1); transform: scale3d(1.25, 0.75, 1); } 40% { -webkit-transform: scale3d(0.75, 1.25, 1); transform: scale3d(0.75, 1.25, 1); } 50% { -webkit-transform: scale3d(1.15, 0.85, 1); transform: scale3d(1.15, 0.85, 1); } 65% { -webkit-transform: scale3d(.95, 1.05, 1); transform: scale3d(.95, 1.05, 1); } 75% { -webkit-transform: scale3d(1.05, .95, 1); transform: scale3d(1.05, .95, 1); } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes rubberBand { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 30% { -webkit-transform: scale3d(1.25, 0.75, 1); transform: scale3d(1.25, 0.75, 1); } 40% { -webkit-transform: scale3d(0.75, 1.25, 1); transform: scale3d(0.75, 1.25, 1); } 50% { -webkit-transform: scale3d(1.15, 0.85, 1); transform: scale3d(1.15, 0.85, 1); } 65% { -webkit-transform: scale3d(.95, 1.05, 1); transform: scale3d(.95, 1.05, 1); } 75% { -webkit-transform: scale3d(1.05, .95, 1); transform: scale3d(1.05, .95, 1); } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } .rubberBand { -webkit-animation-name: rubberBand; animation-name: rubberBand; } @-webkit-keyframes shake { 0%, 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } } @keyframes shake { 0%, 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } } .shake { -webkit-animation-name: shake; animation-name: shake; } @-webkit-keyframes swing { 20% { -webkit-transform: rotate3d(0, 0, 1, 15deg); transform: rotate3d(0, 0, 1, 15deg); } 40% { -webkit-transform: rotate3d(0, 0, 1, -10deg); transform: rotate3d(0, 0, 1, -10deg); } 60% { -webkit-transform: rotate3d(0, 0, 1, 5deg); transform: rotate3d(0, 0, 1, 5deg); } 80% { -webkit-transform: rotate3d(0, 0, 1, -5deg); transform: rotate3d(0, 0, 1, -5deg); } 100% { -webkit-transform: rotate3d(0, 0, 1, 0deg); transform: rotate3d(0, 0, 1, 0deg); } } @keyframes swing { 20% { -webkit-transform: rotate3d(0, 0, 1, 15deg); transform: rotate3d(0, 0, 1, 15deg); } 40% { -webkit-transform: rotate3d(0, 0, 1, -10deg); transform: rotate3d(0, 0, 1, -10deg); } 60% { -webkit-transform: rotate3d(0, 0, 1, 5deg); transform: rotate3d(0, 0, 1, 5deg); } 80% { -webkit-transform: rotate3d(0, 0, 1, -5deg); transform: rotate3d(0, 0, 1, -5deg); } 100% { -webkit-transform: rotate3d(0, 0, 1, 0deg); transform: rotate3d(0, 0, 1, 0deg); } } .swing { -webkit-transform-origin: top center; -ms-transform-origin: top center; transform-origin: top center; -webkit-animation-name: swing; animation-name: swing; } @-webkit-keyframes tada { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 10%, 20% { -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); } 40%, 60%, 80% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes tada { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 10%, 20% { -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); } 40%, 60%, 80% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } .tada { -webkit-animation-name: tada; animation-name: tada; } /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ @-webkit-keyframes wobble { 0% { -webkit-transform: none; transform: none; } 15% { -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); } 30% { -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); } 45% { -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); } 60% { -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); } 75% { -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); } 100% { -webkit-transform: none; transform: none; } } @keyframes wobble { 0% { -webkit-transform: none; transform: none; } 15% { -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); } 30% { -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); } 45% { -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); } 60% { -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); } 75% { -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); } 100% { -webkit-transform: none; transform: none; } } .wobble { -webkit-animation-name: wobble; animation-name: wobble; } @-webkit-keyframes bounceIn { 0%, 20%, 40%, 60%, 80%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(.9, .9, .9); transform: scale3d(.9, .9, .9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(.97, .97, .97); transform: scale3d(.97, .97, .97); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes bounceIn { 0%, 20%, 40%, 60%, 80%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(.9, .9, .9); transform: scale3d(.9, .9, .9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(.97, .97, .97); transform: scale3d(.97, .97, .97); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } .bounceIn { -webkit-animation-name: bounceIn; animation-name: bounceIn; -webkit-animation-duration: .75s; animation-duration: .75s; } @-webkit-keyframes bounceInDown { 0%, 60%, 75%, 90%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(0, -3000px, 0); transform: translate3d(0, -3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, 25px, 0); transform: translate3d(0, 25px, 0); } 75% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 90% { -webkit-transform: translate3d(0, 5px, 0); transform: translate3d(0, 5px, 0); } 100% { -webkit-transform: none; transform: none; } } @keyframes bounceInDown { 0%, 60%, 75%, 90%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(0, -3000px, 0); transform: translate3d(0, -3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, 25px, 0); transform: translate3d(0, 25px, 0); } 75% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 90% { -webkit-transform: translate3d(0, 5px, 0); transform: translate3d(0, 5px, 0); } 100% { -webkit-transform: none; transform: none; } } .bounceInDown { -webkit-animation-name: bounceInDown; animation-name: bounceInDown; } @-webkit-keyframes bounceInLeft { 0%, 60%, 75%, 90%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(-3000px, 0, 0); transform: translate3d(-3000px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(25px, 0, 0); transform: translate3d(25px, 0, 0); } 75% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 90% { -webkit-transform: translate3d(5px, 0, 0); transform: translate3d(5px, 0, 0); } 100% { -webkit-transform: none; transform: none; } } @keyframes bounceInLeft { 0%, 60%, 75%, 90%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(-3000px, 0, 0); transform: translate3d(-3000px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(25px, 0, 0); transform: translate3d(25px, 0, 0); } 75% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 90% { -webkit-transform: translate3d(5px, 0, 0); transform: translate3d(5px, 0, 0); } 100% { -webkit-transform: none; transform: none; } } .bounceInLeft { -webkit-animation-name: bounceInLeft; animation-name: bounceInLeft; } @-webkit-keyframes bounceInRight { 0%, 60%, 75%, 90%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(3000px, 0, 0); transform: translate3d(3000px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(-25px, 0, 0); transform: translate3d(-25px, 0, 0); } 75% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } 90% { -webkit-transform: translate3d(-5px, 0, 0); transform: translate3d(-5px, 0, 0); } 100% { -webkit-transform: none; transform: none; } } @keyframes bounceInRight { 0%, 60%, 75%, 90%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(3000px, 0, 0); transform: translate3d(3000px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(-25px, 0, 0); transform: translate3d(-25px, 0, 0); } 75% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } 90% { -webkit-transform: translate3d(-5px, 0, 0); transform: translate3d(-5px, 0, 0); } 100% { -webkit-transform: none; transform: none; } } .bounceInRight { -webkit-animation-name: bounceInRight; animation-name: bounceInRight; } @-webkit-keyframes bounceInUp { 0%, 60%, 75%, 90%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(0, 3000px, 0); transform: translate3d(0, 3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 75% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 90% { -webkit-transform: translate3d(0, -5px, 0); transform: translate3d(0, -5px, 0); } 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } @keyframes bounceInUp { 0%, 60%, 75%, 90%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } 0% { opacity: 0; -webkit-transform: translate3d(0, 3000px, 0); transform: translate3d(0, 3000px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 75% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 90% { -webkit-transform: translate3d(0, -5px, 0); transform: translate3d(0, -5px, 0); } 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } .bounceInUp { -webkit-animation-name: bounceInUp; animation-name: bounceInUp; } @-webkit-keyframes bounceOut { 20% { -webkit-transform: scale3d(.9, .9, .9); transform: scale3d(.9, .9, .9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 100% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } } @keyframes bounceOut { 20% { -webkit-transform: scale3d(.9, .9, .9); transform: scale3d(.9, .9, .9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 100% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } } .bounceOut { -webkit-animation-name: bounceOut; animation-name: bounceOut; -webkit-animation-duration: .75s; animation-duration: .75s; } @-webkit-keyframes bounceOutDown { 20% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 100% { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } @keyframes bounceOutDown { 20% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 100% { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } .bounceOutDown { -webkit-animation-name: bounceOutDown; animation-name: bounceOutDown; } @-webkit-keyframes bounceOutLeft { 20% { opacity: 1; -webkit-transform: translate3d(20px, 0, 0); transform: translate3d(20px, 0, 0); } 100% { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } @keyframes bounceOutLeft { 20% { opacity: 1; -webkit-transform: translate3d(20px, 0, 0); transform: translate3d(20px, 0, 0); } 100% { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } .bounceOutLeft { -webkit-animation-name: bounceOutLeft; animation-name: bounceOutLeft; } @-webkit-keyframes bounceOutRight { 20% { opacity: 1; -webkit-transform: translate3d(-20px, 0, 0); transform: translate3d(-20px, 0, 0); } 100% { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } @keyframes bounceOutRight { 20% { opacity: 1; -webkit-transform: translate3d(-20px, 0, 0); transform: translate3d(-20px, 0, 0); } 100% { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } .bounceOutRight { -webkit-animation-name: bounceOutRight; animation-name: bounceOutRight; } @-webkit-keyframes bounceOutUp { 20% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, 20px, 0); transform: translate3d(0, 20px, 0); } 100% { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } @keyframes bounceOutUp { 20% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, 20px, 0); transform: translate3d(0, 20px, 0); } 100% { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } .bounceOutUp { -webkit-animation-name: bounceOutUp; animation-name: bounceOutUp; } @-webkit-keyframes fadeIn { 0% {opacity: 0;} 100% {opacity: 1;} } @keyframes fadeIn { 0% {opacity: 0;} 100% {opacity: 1;} } .fadeIn { -webkit-animation-name: fadeIn; animation-name: fadeIn; } @-webkit-keyframes fadeInDown { 0% { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInDown { 0% { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInDown { -webkit-animation-name: fadeInDown; animation-name: fadeInDown; } @-webkit-keyframes fadeInDownBig { 0% { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInDownBig { 0% { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInDownBig { -webkit-animation-name: fadeInDownBig; animation-name: fadeInDownBig; } @-webkit-keyframes fadeInLeft { 0% { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInLeft { 0% { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInLeft { -webkit-animation-name: fadeInLeft; animation-name: fadeInLeft; } @-webkit-keyframes fadeInLeftBig { 0% { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInLeftBig { 0% { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInLeftBig { -webkit-animation-name: fadeInLeftBig; animation-name: fadeInLeftBig; } @-webkit-keyframes fadeInRight { 0% { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInRight { 0% { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInRight { -webkit-animation-name: fadeInRight; animation-name: fadeInRight; } @-webkit-keyframes fadeInRightBig { 0% { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInRightBig { 0% { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInRightBig { -webkit-animation-name: fadeInRightBig; animation-name: fadeInRightBig; } @-webkit-keyframes fadeInUp { 0% { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInUp { 0% { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInUp { -webkit-animation-name: fadeInUp; animation-name: fadeInUp; } @-webkit-keyframes fadeInUpBig { 0% { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes fadeInUpBig { 0% { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } .fadeInUpBig { -webkit-animation-name: fadeInUpBig; animation-name: fadeInUpBig; } @-webkit-keyframes fadeOut { 0% {opacity: 1;} 100% {opacity: 0;} } @keyframes fadeOut { 0% {opacity: 1;} 100% {opacity: 0;} } .fadeOut { -webkit-animation-name: fadeOut; animation-name: fadeOut; } @-webkit-keyframes fadeOutDown { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } } @keyframes fadeOutDown { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } } .fadeOutDown { -webkit-animation-name: fadeOutDown; animation-name: fadeOutDown; } @-webkit-keyframes fadeOutDownBig { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } @keyframes fadeOutDownBig { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } .fadeOutDownBig { -webkit-animation-name: fadeOutDownBig; animation-name: fadeOutDownBig; } @-webkit-keyframes fadeOutLeft { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } } @keyframes fadeOutLeft { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } } .fadeOutLeft { -webkit-animation-name: fadeOutLeft; animation-name: fadeOutLeft; } @-webkit-keyframes fadeOutLeftBig { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } @keyframes fadeOutLeftBig { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } .fadeOutLeftBig { -webkit-animation-name: fadeOutLeftBig; animation-name: fadeOutLeftBig; } @-webkit-keyframes fadeOutRight { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } } @keyframes fadeOutRight { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } } .fadeOutRight { -webkit-animation-name: fadeOutRight; animation-name: fadeOutRight; } @-webkit-keyframes fadeOutRightBig { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } @keyframes fadeOutRightBig { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } .fadeOutRightBig { -webkit-animation-name: fadeOutRightBig; animation-name: fadeOutRightBig; } @-webkit-keyframes fadeOutUp { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } } @keyframes fadeOutUp { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } } .fadeOutUp { -webkit-animation-name: fadeOutUp; animation-name: fadeOutUp; } @-webkit-keyframes fadeOutUpBig { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } @keyframes fadeOutUpBig { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } .fadeOutUpBig { -webkit-animation-name: fadeOutUpBig; animation-name: fadeOutUpBig; } @-webkit-keyframes flip { 0% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); transform: perspective(400px) rotate3d(0, 1, 0, -360deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 40% { -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 50% { -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 80% { -webkit-transform: perspective(400px) scale3d(.95, .95, .95); transform: perspective(400px) scale3d(.95, .95, .95); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } } @keyframes flip { 0% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg); transform: perspective(400px) rotate3d(0, 1, 0, -360deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 40% { -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } 50% { -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 80% { -webkit-transform: perspective(400px) scale3d(.95, .95, .95); transform: perspective(400px) scale3d(.95, .95, .95); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } } .animated.flip { -webkit-backface-visibility: visible; backface-visibility: visible; -webkit-animation-name: flip; animation-name: flip; } @-webkit-keyframes flipInX { 0% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @keyframes flipInX { 0% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } .flipInX { -webkit-backface-visibility: visible !important; backface-visibility: visible !important; -webkit-animation-name: flipInX; animation-name: flipInX; } @-webkit-keyframes flipInY { 0% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); transform: perspective(400px) rotate3d(0, 1, 0, -20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); transform: perspective(400px) rotate3d(0, 1, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); transform: perspective(400px) rotate3d(0, 1, 0, -5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @keyframes flipInY { 0% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); transform: perspective(400px) rotate3d(0, 1, 0, -20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); transform: perspective(400px) rotate3d(0, 1, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); transform: perspective(400px) rotate3d(0, 1, 0, -5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } .flipInY { -webkit-backface-visibility: visible !important; backface-visibility: visible !important; -webkit-animation-name: flipInY; animation-name: flipInY; } @-webkit-keyframes flipOutX { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; } } @keyframes flipOutX { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; } } .flipOutX { -webkit-animation-name: flipOutX; animation-name: flipOutX; -webkit-animation-duration: .75s; animation-duration: .75s; -webkit-backface-visibility: visible !important; backface-visibility: visible !important; } @-webkit-keyframes flipOutY { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); transform: perspective(400px) rotate3d(0, 1, 0, -15deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); opacity: 0; } } @keyframes flipOutY { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); transform: perspective(400px) rotate3d(0, 1, 0, -15deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); opacity: 0; } } .flipOutY { -webkit-backface-visibility: visible !important; backface-visibility: visible !important; -webkit-animation-name: flipOutY; animation-name: flipOutY; -webkit-animation-duration: .75s; animation-duration: .75s; } @-webkit-keyframes lightSpeedIn { 0% { -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; } 60% { -webkit-transform: skewX(20deg); transform: skewX(20deg); opacity: 1; } 80% { -webkit-transform: skewX(-5deg); transform: skewX(-5deg); opacity: 1; } 100% { -webkit-transform: none; transform: none; opacity: 1; } } @keyframes lightSpeedIn { 0% { -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; } 60% { -webkit-transform: skewX(20deg); transform: skewX(20deg); opacity: 1; } 80% { -webkit-transform: skewX(-5deg); transform: skewX(-5deg); opacity: 1; } 100% { -webkit-transform: none; transform: none; opacity: 1; } } .lightSpeedIn { -webkit-animation-name: lightSpeedIn; animation-name: lightSpeedIn; -webkit-animation-timing-function: ease-out; animation-timing-function: ease-out; } @-webkit-keyframes lightSpeedOut { 0% { opacity: 1; } 100% { -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); transform: translate3d(100%, 0, 0) skewX(30deg); opacity: 0; } } @keyframes lightSpeedOut { 0% { opacity: 1; } 100% { -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); transform: translate3d(100%, 0, 0) skewX(30deg); opacity: 0; } } .lightSpeedOut { -webkit-animation-name: lightSpeedOut; animation-name: lightSpeedOut; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } @-webkit-keyframes rotateIn { 0% { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, -200deg); transform: rotate3d(0, 0, 1, -200deg); opacity: 0; } 100% { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateIn { 0% { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, -200deg); transform: rotate3d(0, 0, 1, -200deg); opacity: 0; } 100% { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: none; transform: none; opacity: 1; } } .rotateIn { -webkit-animation-name: rotateIn; animation-name: rotateIn; } @-webkit-keyframes rotateInDownLeft { 0% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } 100% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateInDownLeft { 0% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } 100% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: none; transform: none; opacity: 1; } } .rotateInDownLeft { -webkit-animation-name: rotateInDownLeft; animation-name: rotateInDownLeft; } @-webkit-keyframes rotateInDownRight { 0% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } 100% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateInDownRight { 0% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } 100% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: none; transform: none; opacity: 1; } } .rotateInDownRight { -webkit-animation-name: rotateInDownRight; animation-name: rotateInDownRight; } @-webkit-keyframes rotateInUpLeft { 0% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } 100% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateInUpLeft { 0% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } 100% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: none; transform: none; opacity: 1; } } .rotateInUpLeft { -webkit-animation-name: rotateInUpLeft; animation-name: rotateInUpLeft; } @-webkit-keyframes rotateInUpRight { 0% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, -90deg); transform: rotate3d(0, 0, 1, -90deg); opacity: 0; } 100% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: none; transform: none; opacity: 1; } } @keyframes rotateInUpRight { 0% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, -90deg); transform: rotate3d(0, 0, 1, -90deg); opacity: 0; } 100% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: none; transform: none; opacity: 1; } } .rotateInUpRight { -webkit-animation-name: rotateInUpRight; animation-name: rotateInUpRight; } @-webkit-keyframes rotateOut { 0% { -webkit-transform-origin: center; transform-origin: center; opacity: 1; } 100% { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, 200deg); transform: rotate3d(0, 0, 1, 200deg); opacity: 0; } } @keyframes rotateOut { 0% { -webkit-transform-origin: center; transform-origin: center; opacity: 1; } 100% { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, 200deg); transform: rotate3d(0, 0, 1, 200deg); opacity: 0; } } .rotateOut { -webkit-animation-name: rotateOut; animation-name: rotateOut; } @-webkit-keyframes rotateOutDownLeft { 0% { -webkit-transform-origin: left bottom; transform-origin: left bottom; opacity: 1; } 100% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } } @keyframes rotateOutDownLeft { 0% { -webkit-transform-origin: left bottom; transform-origin: left bottom; opacity: 1; } 100% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, 45deg); transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } } .rotateOutDownLeft { -webkit-animation-name: rotateOutDownLeft; animation-name: rotateOutDownLeft; } @-webkit-keyframes rotateOutDownRight { 0% { -webkit-transform-origin: right bottom; transform-origin: right bottom; opacity: 1; } 100% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } } @keyframes rotateOutDownRight { 0% { -webkit-transform-origin: right bottom; transform-origin: right bottom; opacity: 1; } 100% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } } .rotateOutDownRight { -webkit-animation-name: rotateOutDownRight; animation-name: rotateOutDownRight; } @-webkit-keyframes rotateOutUpLeft { 0% { -webkit-transform-origin: left bottom; transform-origin: left bottom; opacity: 1; } 100% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } } @keyframes rotateOutUpLeft { 0% { -webkit-transform-origin: left bottom; transform-origin: left bottom; opacity: 1; } 100% { -webkit-transform-origin: left bottom; transform-origin: left bottom; -webkit-transform: rotate3d(0, 0, 1, -45deg); transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } } .rotateOutUpLeft { -webkit-animation-name: rotateOutUpLeft; animation-name: rotateOutUpLeft; } @-webkit-keyframes rotateOutUpRight { 0% { -webkit-transform-origin: right bottom; transform-origin: right bottom; opacity: 1; } 100% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, 90deg); transform: rotate3d(0, 0, 1, 90deg); opacity: 0; } } @keyframes rotateOutUpRight { 0% { -webkit-transform-origin: right bottom; transform-origin: right bottom; opacity: 1; } 100% { -webkit-transform-origin: right bottom; transform-origin: right bottom; -webkit-transform: rotate3d(0, 0, 1, 90deg); transform: rotate3d(0, 0, 1, 90deg); opacity: 0; } } .rotateOutUpRight { -webkit-animation-name: rotateOutUpRight; animation-name: rotateOutUpRight; } @-webkit-keyframes hinge { 0% { -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; } 20%, 60% { -webkit-transform: rotate3d(0, 0, 1, 80deg); transform: rotate3d(0, 0, 1, 80deg); -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; } 40%, 80% { -webkit-transform: rotate3d(0, 0, 1, 60deg); transform: rotate3d(0, 0, 1, 60deg); -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; opacity: 1; } 100% { -webkit-transform: translate3d(0, 700px, 0); transform: translate3d(0, 700px, 0); opacity: 0; } } @keyframes hinge { 0% { -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; } 20%, 60% { -webkit-transform: rotate3d(0, 0, 1, 80deg); transform: rotate3d(0, 0, 1, 80deg); -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; } 40%, 80% { -webkit-transform: rotate3d(0, 0, 1, 60deg); transform: rotate3d(0, 0, 1, 60deg); -webkit-transform-origin: top left; transform-origin: top left; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; opacity: 1; } 100% { -webkit-transform: translate3d(0, 700px, 0); transform: translate3d(0, 700px, 0); opacity: 0; } } .hinge { -webkit-animation-name: hinge; animation-name: hinge; } /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ @-webkit-keyframes rollIn { 0% { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } @keyframes rollIn { 0% { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); } 100% { opacity: 1; -webkit-transform: none; transform: none; } } .rollIn { -webkit-animation-name: rollIn; animation-name: rollIn; } /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ @-webkit-keyframes rollOut { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } } @keyframes rollOut { 0% { opacity: 1; } 100% { opacity: 0; -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); } } .rollOut { -webkit-animation-name: rollOut; animation-name: rollOut; } @-webkit-keyframes zoomIn { 0% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } 50% { opacity: 1; } } @keyframes zoomIn { 0% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } 50% { opacity: 1; } } .zoomIn { -webkit-animation-name: zoomIn; animation-name: zoomIn; } @-webkit-keyframes zoomInDown { 0% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 60% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } @keyframes zoomInDown { 0% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 60% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } .zoomInDown { -webkit-animation-name: zoomInDown; animation-name: zoomInDown; } @-webkit-keyframes zoomInLeft { 0% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 60% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } @keyframes zoomInLeft { 0% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 60% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } .zoomInLeft { -webkit-animation-name: zoomInLeft; animation-name: zoomInLeft; } @-webkit-keyframes zoomInRight { 0% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 60% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } @keyframes zoomInRight { 0% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 60% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } .zoomInRight { -webkit-animation-name: zoomInRight; animation-name: zoomInRight; } @-webkit-keyframes zoomInUp { 0% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 60% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } @keyframes zoomInUp { 0% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 60% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } .zoomInUp { -webkit-animation-name: zoomInUp; animation-name: zoomInUp; } @-webkit-keyframes zoomOut { 0% { opacity: 1; } 50% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } 100% { opacity: 0; } } @keyframes zoomOut { 0% { opacity: 1; } 50% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } 100% { opacity: 0; } } .zoomOut { -webkit-animation-name: zoomOut; animation-name: zoomOut; } @-webkit-keyframes zoomOutDown { 40% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 100% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); -webkit-transform-origin: center bottom; transform-origin: center bottom; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } @keyframes zoomOutDown { 40% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 100% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0); -webkit-transform-origin: center bottom; transform-origin: center bottom; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } .zoomOutDown { -webkit-animation-name: zoomOutDown; animation-name: zoomOutDown; } @-webkit-keyframes zoomOutLeft { 40% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); } 100% { opacity: 0; -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); transform: scale(.1) translate3d(-2000px, 0, 0); -webkit-transform-origin: left center; transform-origin: left center; } } @keyframes zoomOutLeft { 40% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0); } 100% { opacity: 0; -webkit-transform: scale(.1) translate3d(-2000px, 0, 0); transform: scale(.1) translate3d(-2000px, 0, 0); -webkit-transform-origin: left center; transform-origin: left center; } } .zoomOutLeft { -webkit-animation-name: zoomOutLeft; animation-name: zoomOutLeft; } @-webkit-keyframes zoomOutRight { 40% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); } 100% { opacity: 0; -webkit-transform: scale(.1) translate3d(2000px, 0, 0); transform: scale(.1) translate3d(2000px, 0, 0); -webkit-transform-origin: right center; transform-origin: right center; } } @keyframes zoomOutRight { 40% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0); } 100% { opacity: 0; -webkit-transform: scale(.1) translate3d(2000px, 0, 0); transform: scale(.1) translate3d(2000px, 0, 0); -webkit-transform-origin: right center; transform-origin: right center; } } .zoomOutRight { -webkit-animation-name: zoomOutRight; animation-name: zoomOutRight; } @-webkit-keyframes zoomOutUp { 40% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 100% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); -webkit-transform-origin: center bottom; transform-origin: center bottom; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } @keyframes zoomOutUp { 40% { opacity: 1; -webkit-transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); -webkit-animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190); } 100% { opacity: 0; -webkit-transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0); -webkit-transform-origin: center bottom; transform-origin: center bottom; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); } } .zoomOutUp { -webkit-animation-name: zoomOutUp; animation-name: zoomOutUp; } @-webkit-keyframes slideInDown { 0% { -webkit-transform: translateY(-100%); transform: translateY(-100%); visibility: visible; } 100% { -webkit-transform: translateY(0); transform: translateY(0); } } @keyframes slideInDown { 0% { -webkit-transform: translateY(-100%); transform: translateY(-100%); visibility: visible; } 100% { -webkit-transform: translateY(0); transform: translateY(0); } } .slideInDown { -webkit-animation-name: slideInDown; animation-name: slideInDown; } @-webkit-keyframes slideInLeft { 0% { -webkit-transform: translateX(-100%); transform: translateX(-100%); visibility: visible; } 100% { -webkit-transform: translateX(0); transform: translateX(0); } } @keyframes slideInLeft { 0% { -webkit-transform: translateX(-100%); transform: translateX(-100%); visibility: visible; } 100% { -webkit-transform: translateX(0); transform: translateX(0); } } .slideInLeft { -webkit-animation-name: slideInLeft; animation-name: slideInLeft; } @-webkit-keyframes slideInRight { 0% { -webkit-transform: translateX(100%); transform: translateX(100%); visibility: visible; } 100% { -webkit-transform: translateX(0); transform: translateX(0); } } @keyframes slideInRight { 0% { -webkit-transform: translateX(100%); transform: translateX(100%); visibility: visible; } 100% { -webkit-transform: translateX(0); transform: translateX(0); } } .slideInRight { -webkit-animation-name: slideInRight; animation-name: slideInRight; } @-webkit-keyframes slideInUp { 0% { -webkit-transform: translateY(100%); transform: translateY(100%); visibility: visible; } 100% { -webkit-transform: translateY(0); transform: translateY(0); } } @keyframes slideInUp { 0% { -webkit-transform: translateY(100%); transform: translateY(100%); visibility: visible; } 100% { -webkit-transform: translateY(0); transform: translateY(0); } } .slideInUp { -webkit-animation-name: slideInUp; animation-name: slideInUp; } @-webkit-keyframes slideOutDown { 0% { -webkit-transform: translateY(0); transform: translateY(0); } 100% { visibility: hidden; -webkit-transform: translateY(100%); transform: translateY(100%); } } @keyframes slideOutDown { 0% { -webkit-transform: translateY(0); transform: translateY(0); } 100% { visibility: hidden; -webkit-transform: translateY(100%); transform: translateY(100%); } } .slideOutDown { -webkit-animation-name: slideOutDown; animation-name: slideOutDown; } @-webkit-keyframes slideOutLeft { 0% { -webkit-transform: translateX(0); transform: translateX(0); } 100% { visibility: hidden; -webkit-transform: translateX(-100%); transform: translateX(-100%); } } @keyframes slideOutLeft { 0% { -webkit-transform: translateX(0); transform: translateX(0); } 100% { visibility: hidden; -webkit-transform: translateX(-100%); transform: translateX(-100%); } } .slideOutLeft { -webkit-animation-name: slideOutLeft; animation-name: slideOutLeft; } @-webkit-keyframes slideOutRight { 0% { -webkit-transform: translateX(0); transform: translateX(0); } 100% { visibility: hidden; -webkit-transform: translateX(100%); transform: translateX(100%); } } @keyframes slideOutRight { 0% { -webkit-transform: translateX(0); transform: translateX(0); } 100% { visibility: hidden; -webkit-transform: translateX(100%); transform: translateX(100%); } } .slideOutRight { -webkit-animation-name: slideOutRight; animation-name: slideOutRight; } @-webkit-keyframes slideOutUp { 0% { -webkit-transform: translateY(0); transform: translateY(0); } 100% { visibility: hidden; -webkit-transform: translateY(-100%); transform: translateY(-100%); } } @keyframes slideOutUp { 0% { -webkit-transform: translateY(0); transform: translateY(0); } 100% { visibility: hidden; -webkit-transform: translateY(-100%); transform: translateY(-100%); } } .slideOutUp { -webkit-animation-name: slideOutUp; animation-name: slideOutUp; } crass-1.0.2/test/support/serialization/html5-boilerplate.css0000644000004100000410000001240412530245151024267 0ustar www-datawww-data/*! HTML5 Boilerplate v4.3.0 | MIT License | http://h5bp.com/ */ /* * What follows is the result of much research on cross-browser styling. * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal, * Kroc Camen, and the H5BP dev community and team. */ /* ========================================================================== Base styles: opinionated defaults ========================================================================== */ html { color: #222; font-size: 1em; line-height: 1.4; } /* * Remove text-shadow in selection highlight: h5bp.com/i * These selection rule sets have to be separate. * Customize the background color to match your design. */ ::-moz-selection { background: #b3d4fc; text-shadow: none; } ::selection { background: #b3d4fc; text-shadow: none; } /* * A better looking default horizontal rule */ hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } /* * Remove the gap between images, videos, audio and canvas and the bottom of * their containers: h5bp.com/i/440 */ audio, canvas, img, svg, video { vertical-align: middle; } /* * Remove default fieldset styles. */ fieldset { border: 0; margin: 0; padding: 0; } /* * Allow only vertical resizing of textareas. */ textarea { resize: vertical; } /* ========================================================================== Browser Upgrade Prompt ========================================================================== */ .browserupgrade { margin: 0.2em 0; background: #ccc; color: #000; padding: 0.2em 0; } /* ========================================================================== Author's custom styles ========================================================================== */ /* ========================================================================== Helper classes ========================================================================== */ /* * Hide visually and from screen readers: h5bp.com/u */ .hidden { display: none !important; visibility: hidden; } /* * Hide only visually, but have it available for screen readers: h5bp.com/v */ .visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } /* * Extends the .visuallyhidden class to allow the element to be focusable * when navigated to via the keyboard: h5bp.com/p */ .visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; } /* * Hide visually and from screen readers, but maintain layout */ .invisible { visibility: hidden; } /* * Clearfix: contain floats * * For modern browsers * 1. The space content is one way to avoid an Opera bug when the * `contenteditable` attribute is included anywhere else in the document. * Otherwise it causes space to appear at the top and bottom of elements * that receive the `clearfix` class. * 2. The use of `table` rather than `block` is only necessary if using * `:before` to contain the top-margins of child elements. */ .clearfix:before, .clearfix:after { content: " "; /* 1 */ display: table; /* 2 */ } .clearfix:after { clear: both; } /* ========================================================================== EXAMPLE Media Queries for Responsive Design. These examples override the primary ('mobile first') styles. Modify as content requires. ========================================================================== */ @media only screen and (min-width: 35em) { /* Style adjustments for viewports that meet the condition */ } @media print, (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { /* Style adjustments for high resolution devices */ } /* ========================================================================== Print styles. Inlined to avoid the additional HTTP request: h5bp.com/r ========================================================================== */ @media print { *, *:before, *:after { background: transparent !important; color: #000 !important; /* Black prints faster: h5bp.com/s */ box-shadow: none !important; text-shadow: none !important; } a, a:visited { text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } /* * Don't show links that are fragment identifiers, * or use the `javascript:` pseudo protocol */ a[href^="#"]:after, a[href^="javascript:"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; /* h5bp.com/t */ } tr, img { page-break-inside: avoid; } img { max-width: 100% !important; } p, h2, h3 { orphans: 3; widows: 3; } h2, h3 { page-break-after: avoid; } } crass-1.0.2/test/support/serialization/pure.css0000644000004100000410000010541212530245151021713 0ustar www-datawww-data/*! Pure v0.3.0 Copyright 2013 Yahoo! Inc. All rights reserved. Licensed under the BSD License. https://github.com/yui/pure/blob/master/LICENSE.md */ /*! normalize.css v1.1.2 | MIT License | git.io/normalize Copyright (c) Nicolas Gallagher and Jonathan Neal */ /*! normalize.css v1.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3. */ article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. */ audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } /** * Prevent modern browsers from displaying `audio` without controls. * Remove excess height in iOS 5 devices. */ audio:not([controls]) { display: none; height: 0; } /** * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. * Known issue: no IE 6 support. */ [hidden] { display: none; } /* ========================================================================== Base ========================================================================== */ /** * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using * `em` units. * 2. Prevent iOS text size adjust after orientation change, without disabling * user zoom. */ html { font-size: 100%; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } /** * Address `font-family` inconsistency between `textarea` and other form * elements. */ html, button, input, select, textarea { font-family: sans-serif; } /** * Address margins handled incorrectly in IE 6/7. */ body { margin: 0; } /* ========================================================================== Links ========================================================================== */ /** * Address `outline` inconsistency between Chrome and other browsers. */ a:focus { outline: thin dotted; } /** * Improve readability when focused and also mouse hovered in all browsers. */ a:active, a:hover { outline: 0; } /* ========================================================================== Typography ========================================================================== */ /** * Address font sizes and margins set differently in IE 6/7. * Address font sizes within `section` and `article` in Firefox 4+, Safari 5, * and Chrome. */ h1 { font-size: 2em; margin: 0.67em 0; } h2 { font-size: 1.5em; margin: 0.83em 0; } h3 { font-size: 1.17em; margin: 1em 0; } h4 { font-size: 1em; margin: 1.33em 0; } h5 { font-size: 0.83em; margin: 1.67em 0; } h6 { font-size: 0.67em; margin: 2.33em 0; } /** * Address styling not present in IE 7/8/9, Safari 5, and Chrome. */ abbr[title] { border-bottom: 1px dotted; } /** * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome. */ b, strong { font-weight: bold; } blockquote { margin: 1em 40px; } /** * Address styling not present in Safari 5 and Chrome. */ dfn { font-style: italic; } /** * Address differences between Firefox and other browsers. * Known issue: no IE 6/7 normalization. */ hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; } /** * Address styling not present in IE 6/7/8/9. */ mark { background: #ff0; color: #000; } /** * Address margins set differently in IE 6/7. */ p, pre { margin: 1em 0; } /** * Correct font family set oddly in IE 6, Safari 4/5, and Chrome. */ code, kbd, pre, samp { font-family: monospace, serif; _font-family: 'courier new', monospace; font-size: 1em; } /** * Improve readability of pre-formatted text in all browsers. */ pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } /** * Address CSS quotes not supported in IE 6/7. */ q { quotes: none; } /** * Address `quotes` property not supported in Safari 4. */ q:before, q:after { content: ''; content: none; } /** * Address inconsistent and variable font size in all browsers. */ small { font-size: 80%; } /** * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } /* ========================================================================== Lists ========================================================================== */ /** * Address margins set differently in IE 6/7. */ dl, menu, ol, ul { margin: 1em 0; } dd { margin: 0 0 0 40px; } /** * Address paddings set differently in IE 6/7. */ menu, ol, ul { padding: 0 0 0 40px; } /** * Correct list images handled incorrectly in IE 7. */ nav ul, nav ol { list-style: none; list-style-image: none; } /* ========================================================================== Embedded content ========================================================================== */ /** * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. * 2. Improve image quality when scaled in IE 7. */ img { border: 0; /* 1 */ -ms-interpolation-mode: bicubic; /* 2 */ } /** * Correct overflow displayed oddly in IE 9. */ svg:not(:root) { overflow: hidden; } /* ========================================================================== Figures ========================================================================== */ /** * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. */ figure { margin: 0; } /* ========================================================================== Forms ========================================================================== */ /** * Correct margin displayed oddly in IE 6/7. */ form { margin: 0; } /** * Define consistent border, margin, and padding. */ fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } /** * 1. Correct color not being inherited in IE 6/7/8/9. * 2. Correct text not wrapping in Firefox 3. * 3. Correct alignment displayed oddly in IE 6/7. */ legend { border: 0; /* 1 */ padding: 0; white-space: normal; /* 2 */ *margin-left: -7px; /* 3 */ } /** * 1. Correct font size not being inherited in all browsers. * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, * and Chrome. * 3. Improve appearance and consistency in all browsers. */ button, input, select, textarea { font-size: 100%; /* 1 */ margin: 0; /* 2 */ vertical-align: baseline; /* 3 */ *vertical-align: middle; /* 3 */ } /** * Address Firefox 3+ setting `line-height` on `input` using `!important` in * the UA stylesheet. */ button, input { line-height: normal; } /** * Address inconsistent `text-transform` inheritance for `button` and `select`. * All other form control elements do not inherit `text-transform` values. * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. * Correct `select` style inheritance in Firefox 4+ and Opera. */ button, select { text-transform: none; } /** * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` * and `video` controls. * 2. Correct inability to style clickable `input` types in iOS. * 3. Improve usability and consistency of cursor style between image-type * `input` and others. * 4. Remove inner spacing in IE 7 without affecting normal text inputs. * Known issue: inner spacing remains in IE 6. */ button, html input[type="button"], /* 1 */ input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ *overflow: visible; /* 4 */ } /** * Re-set default cursor for disabled elements. */ button[disabled], html input[disabled] { cursor: default; } /** * 1. Address box sizing set to content-box in IE 8/9. * 2. Remove excess padding in IE 8/9. * 3. Remove excess padding in IE 7. * Known issue: excess padding remains in IE 6. */ input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ *height: 13px; /* 3 */ *width: 13px; /* 3 */ } /** * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome * (include `-moz` to future-proof). */ input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; } /** * Remove inner padding and search cancel button in Safari 5 and Chrome * on OS X. */ input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } /** * Remove inner padding and border in Firefox 3+. */ button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } /** * 1. Remove default vertical scrollbar in IE 6/7/8/9. * 2. Improve readability and alignment in all browsers. */ textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ } /* ========================================================================== Tables ========================================================================== */ /** * Remove most spacing between table cells. */ table { border-collapse: collapse; border-spacing: 0; } .pure-button { /* Structure */ display: inline-block; *display: inline; /*IE 6/7*/ zoom: 1; line-height: normal; white-space: nowrap; vertical-align: baseline; text-align: center; cursor: pointer; -webkit-user-drag: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } /* Firefox: Get rid of the inner focus border */ .pure-button::-moz-focus-inner { padding: 0; border: 0; } /*csslint unqualified-attributes:false, outline-none:false*/ .pure-button { font-size: 100%; *font-size: 90%; /*IE 6/7 - To reduce IE's oversized button text*/ *overflow: visible; /*IE 6/7 - Because of IE's overly large left/right padding on buttons */ padding: 0.5em 1.5em 0.5em; color: #444; /* rgba not supported (IE 8) */ color: rgba(0, 0, 0, 0.80); /* rgba supported */ *color: #444; /* IE 6 & 7 */ border: 1px solid #999; /*IE 6/7/8*/ border: none rgba(0, 0, 0, 0); /*IE9 + everything else*/ background-color: #E6E6E6; text-decoration: none; border-radius: 2px; /* Transitions */ -webkit-transition: 0.1s linear -webkit-box-shadow; -moz-transition: 0.1s linear -moz-box-shadow; -ms-transition: 0.1s linear box-shadow; -o-transition: 0.1s linear box-shadow; transition: 0.1s linear box-shadow; } .pure-button-hover, .pure-button:hover, .pure-button:focus { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#1a000000',GradientType=0); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(transparent), color-stop(40%, rgba(0,0,0, 0.05)), to(rgba(0,0,0, 0.10))); background-image: -webkit-linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); background-image: -moz-linear-gradient(top, rgba(0,0,0, 0.05) 0%, rgba(0,0,0, 0.10)); background-image: -ms-linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); background-image: -o-linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10)); } .pure-button:focus { outline: 0; } .pure-button-active, .pure-button:active { box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) inset; } .pure-button[disabled], .pure-button-disabled, .pure-button-disabled:hover, .pure-button-disabled:focus, .pure-button-disabled:active { border: none; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); filter: alpha(opacity=40); -khtml-opacity: 0.40; -moz-opacity: 0.40; opacity: 0.40; cursor: not-allowed; box-shadow: none; } .pure-button-hidden { display: none; } /* Firefox: Get rid of the inner focus border */ .pure-button::-moz-focus-inner{ padding: 0; border: 0; } .pure-button-primary, .pure-button-selected, a.pure-button-primary, a.pure-button-selected { background-color: rgb(0, 120, 231); color: #fff; } .pure-form input[type="text"], .pure-form input[type="password"], .pure-form input[type="email"], .pure-form input[type="url"], .pure-form input[type="date"], .pure-form input[type="month"], .pure-form input[type="time"], .pure-form input[type="datetime"], .pure-form input[type="datetime-local"], .pure-form input[type="week"], .pure-form input[type="number"], .pure-form input[type="search"], .pure-form input[type="tel"], .pure-form input[type="color"], .pure-form select, .pure-form textarea { padding: 0.5em 0.6em; display: inline-block; border: 1px solid #ccc; font-size: 0.8em; box-shadow: inset 0 1px 3px #ddd; border-radius: 4px; -webkit-transition: 0.3s linear border; -moz-transition: 0.3s linear border; -ms-transition: 0.3s linear border; -o-transition: 0.3s linear border; transition: 0.3s linear border; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .pure-form input[type="text"]:focus, .pure-form input[type="password"]:focus, .pure-form input[type="email"]:focus, .pure-form input[type="url"]:focus, .pure-form input[type="date"]:focus, .pure-form input[type="month"]:focus, .pure-form input[type="time"]:focus, .pure-form input[type="datetime"]:focus, .pure-form input[type="datetime-local"]:focus, .pure-form input[type="week"]:focus, .pure-form input[type="number"]:focus, .pure-form input[type="search"]:focus, .pure-form input[type="tel"]:focus, .pure-form input[type="color"]:focus, .pure-form select:focus, .pure-form textarea:focus { outline: 0; outline: thin dotted \9; /* IE6-9 */ border-color: #129FEA; } .pure-form input[type="file"]:focus, .pure-form input[type="radio"]:focus, .pure-form input[type="checkbox"]:focus { outline: thin dotted #333; outline: 1px auto #129FEA; } .pure-form .pure-checkbox, .pure-form .pure-radio { margin: 0.5em 0; display: block; } .pure-form input[type="text"][disabled], .pure-form input[type="password"][disabled], .pure-form input[type="email"][disabled], .pure-form input[type="url"][disabled], .pure-form input[type="date"][disabled], .pure-form input[type="month"][disabled], .pure-form input[type="time"][disabled], .pure-form input[type="datetime"][disabled], .pure-form input[type="datetime-local"][disabled], .pure-form input[type="week"][disabled], .pure-form input[type="number"][disabled], .pure-form input[type="search"][disabled], .pure-form input[type="tel"][disabled], .pure-form input[type="color"][disabled], .pure-form select[disabled], .pure-form textarea[disabled] { cursor: not-allowed; background-color: #eaeded; color: #cad2d3; } .pure-form input[readonly], .pure-form select[readonly], .pure-form textarea[readonly] { background: #eee; /* menu hover bg color */ color: #777; /* menu text color */ border-color: #ccc; } .pure-form input:focus:invalid, .pure-form textarea:focus:invalid, .pure-form select:focus:invalid { color: #b94a48; border: 1px solid #ee5f5b; } .pure-form input:focus:invalid:focus, .pure-form textarea:focus:invalid:focus, .pure-form select:focus:invalid:focus { border-color: #e9322d; } .pure-form input[type="file"]:focus:invalid:focus, .pure-form input[type="radio"]:focus:invalid:focus, .pure-form input[type="checkbox"]:focus:invalid:focus { outline-color: #e9322d; } .pure-form select { border: 1px solid #ccc; background-color: white; } .pure-form select[multiple] { height: auto; } .pure-form label { margin: 0.5em 0 0.2em; font-size: 90%; } .pure-form fieldset { margin: 0; padding: 0.35em 0 0.75em; border: 0; } .pure-form legend { display: block; width: 100%; padding: 0.3em 0; margin-bottom: 0.3em; font-size: 125%; color: #333; border-bottom: 1px solid #e5e5e5; } .pure-form-stacked input[type="text"], .pure-form-stacked input[type="password"], .pure-form-stacked input[type="email"], .pure-form-stacked input[type="url"], .pure-form-stacked input[type="date"], .pure-form-stacked input[type="month"], .pure-form-stacked input[type="time"], .pure-form-stacked input[type="datetime"], .pure-form-stacked input[type="datetime-local"], .pure-form-stacked input[type="week"], .pure-form-stacked input[type="number"], .pure-form-stacked input[type="search"], .pure-form-stacked input[type="tel"], .pure-form-stacked input[type="color"], .pure-form-stacked select, .pure-form-stacked label, .pure-form-stacked textarea { display: block; margin: 0.25em 0; } .pure-form-aligned input, .pure-form-aligned textarea, .pure-form-aligned select, /* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */ .pure-form-aligned .pure-help-inline, .pure-form-message-inline { display: inline-block; *display: inline; *zoom: 1; vertical-align: middle; } /* Aligned Forms */ .pure-form-aligned .pure-control-group { margin-bottom: 0.5em; } .pure-form-aligned .pure-control-group label { text-align: right; display: inline-block; vertical-align: middle; width: 10em; margin: 0 1em 0 0; } .pure-form-aligned .pure-controls { margin: 1.5em 0 0 10em; } /* Rounded Inputs */ .pure-form input.pure-input-rounded, .pure-form .pure-input-rounded { border-radius: 2em; padding: 0.5em 1em; } /* Grouped Inputs */ .pure-form .pure-group fieldset { margin-bottom: 10px; } .pure-form .pure-group input { display: block; padding: 10px; margin: 0; border-radius: 0; position: relative; top: -1px; } .pure-form .pure-group input:focus { z-index: 2; } .pure-form .pure-group input:first-child { top: 1px; border-radius: 4px 4px 0 0; } .pure-form .pure-group input:last-child { top: -2px; border-radius: 0 0 4px 4px; } .pure-form .pure-group button { margin: 0.35em 0; } .pure-form .pure-input-1 { width: 100%; } .pure-form .pure-input-2-3 { width: 66%; } .pure-form .pure-input-1-2 { width: 50%; } .pure-form .pure-input-1-3 { width: 33%; } .pure-form .pure-input-1-4 { width: 25%; } /* Inline help for forms */ /* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */ .pure-form .pure-help-inline, .pure-form-message-inline { display: inline-block; padding-left: 0.3em; color: #666; vertical-align: middle; font-size: 90%; } /* Block help for forms */ .pure-form-message { display: block; color: #666; font-size: 90%; } @media only screen and (max-width : 480px) { .pure-form button[type="submit"] { margin: 0.7em 0 0; } .pure-form input[type="text"], .pure-form input[type="password"], .pure-form input[type="email"], .pure-form input[type="url"], .pure-form input[type="date"], .pure-form input[type="month"], .pure-form input[type="time"], .pure-form input[type="datetime"], .pure-form input[type="datetime-local"], .pure-form input[type="week"], .pure-form input[type="number"], .pure-form input[type="search"], .pure-form input[type="tel"], .pure-form input[type="color"], .pure-form label { margin-bottom: 0.3em; display: block; } .pure-group input[type="text"], .pure-group input[type="password"], .pure-group input[type="email"], .pure-group input[type="url"], .pure-group input[type="date"], .pure-group input[type="month"], .pure-group input[type="time"], .pure-group input[type="datetime"], .pure-group input[type="datetime-local"], .pure-group input[type="week"], .pure-group input[type="number"], .pure-group input[type="search"], .pure-group input[type="tel"], .pure-group input[type="color"] { margin-bottom: 0; } .pure-form-aligned .pure-control-group label { margin-bottom: 0.3em; text-align: left; display: block; width: 100%; } .pure-form-aligned .pure-controls { margin: 1.5em 0 0 0; } /* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */ .pure-form .pure-help-inline, .pure-form-message-inline, .pure-form-message { display: block; font-size: 80%; /* Increased bottom padding to make it group with its related input element. */ padding: 0.2em 0 0.8em; } } /*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/ .pure-g { letter-spacing: -0.31em; /* Webkit: collapse white-space between units */ *letter-spacing: normal; /* reset IE < 8 */ *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */ text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */ /* Sets the font stack to fonts known to work properly with the above letter and word spacings. See: https://github.com/yui/pure/issues/41/ The following font stack makes Pure Grids work on all known environments. * FreeSans: Ships with many Linux distros, including Ubuntu * Arimo: Ships with Chrome OS. Arimo has to be defined before Helvetica and Arial to get picked up by the browser, even though neither is available in Chrome OS. * Droid Sans: Ships with all versions of Android. * Helvetica, Arial, sans-serif: Common font stack on OS X and Windows. */ font-family: FreeSans, Arimo, "Droid Sans", Helvetica, Arial, sans-serif; /* Use flexbox when possible to avoid `letter-spacing` side-effects. NOTE: Firefox (as of 25) does not currently support flex-wrap, so the `-moz-` prefix version is omitted. */ display: -webkit-flex; -webkit-flex-flow: row wrap; /* IE10 uses display: flexbox */ display: -ms-flexbox; -ms-flex-flow: row wrap; } /* Opera as of 12 on Windows needs word-spacing. The ".opera-only" selector is used to prevent actual prefocus styling and is not required in markup. */ .opera-only :-o-prefocus, .pure-g { word-spacing: -0.43em; } .pure-u { display: inline-block; *display: inline; /* IE < 8: fake inline-block */ zoom: 1; letter-spacing: normal; word-spacing: normal; vertical-align: top; text-rendering: auto; } /* Resets the font family back to the OS/browser's default sans-serif font, this the same font stack that Normalize.css sets for the `body`. */ .pure-g [class *= "pure-u"] { font-family: sans-serif; } .pure-u-1, .pure-u-1-2, .pure-u-1-3, .pure-u-2-3, .pure-u-1-4, .pure-u-3-4, .pure-u-1-5, .pure-u-2-5, .pure-u-3-5, .pure-u-4-5, .pure-u-1-6, .pure-u-5-6, .pure-u-1-8, .pure-u-3-8, .pure-u-5-8, .pure-u-7-8, .pure-u-1-12, .pure-u-5-12, .pure-u-7-12, .pure-u-11-12, .pure-u-1-24, .pure-u-5-24, .pure-u-7-24, .pure-u-11-24, .pure-u-13-24, .pure-u-17-24, .pure-u-19-24, .pure-u-23-24 { display: inline-block; *display: inline; /* IE < 8: fake inline-block */ zoom: 1; letter-spacing: normal; word-spacing: normal; vertical-align: top; text-rendering: auto; } .pure-u-1 { width: 100%; } .pure-u-1-2 { width: 50%; *width: 49.969%; } .pure-u-1-3 { width: 33.3333%; *width: 33.3023%; } .pure-u-2-3 { width: 66.6667%; *width: 66.6357%; } .pure-u-1-4 { width: 25%; *width: 24.969%; } .pure-u-3-4 { width: 75%; *width: 74.969%; } .pure-u-1-5 { width: 20%; *width: 19.969%; } .pure-u-2-5 { width: 40%; *width: 39.969%; } .pure-u-3-5 { width: 60%; *width: 59.969%; } .pure-u-4-5 { width: 80%; *width: 79.969%; } .pure-u-1-6 { width: 16.6667%; *width: 16.6357%; } .pure-u-5-6 { width: 83.3333%; *width: 83.3023%; } .pure-u-1-8 { width: 12.5%; *width: 12.469%; } .pure-u-3-8 { width: 37.5%; *width: 37.469%; } .pure-u-5-8 { width: 62.5%; *width: 62.469%; } .pure-u-7-8 { width: 87.5%; *width: 87.469%; } .pure-u-1-12 { width: 8.3333%; *width: 8.3023%; } .pure-u-5-12 { width: 41.6667%; *width: 41.6357%; } .pure-u-7-12 { width: 58.3333%; *width: 58.3023%; } .pure-u-11-12 { width: 91.6667%; *width: 91.6357%; } .pure-u-1-24 { width: 4.1667%; *width: 4.1357%; } .pure-u-5-24 { width: 20.8333%; *width: 20.8023%; } .pure-u-7-24 { width: 29.1667%; *width: 29.1357%; } .pure-u-11-24 { width: 45.8333%; *width: 45.8023%; } .pure-u-13-24 { width: 54.1667%; *width: 54.1357%; } .pure-u-17-24 { width: 70.8333%; *width: 70.8023%; } .pure-u-19-24 { width: 79.1667%; *width: 79.1357%; } .pure-u-23-24 { width: 95.8333%; *width: 95.8023%; } /*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/ .pure-g-r { letter-spacing: -0.31em; *letter-spacing: normal; *word-spacing: -0.43em; /* Sets the font stack to fonts known to work properly with the above letter and word spacings. See: https://github.com/yui/pure/issues/41/ The following font stack makes Pure Grids work on all known environments. * FreeSans: Ships with many Linux distros, including Ubuntu * Arimo: Ships with Chrome OS. Arimo has to be defined before Helvetica and Arial to get picked up by the browser, even though neither is available in Chrome OS. * Droid Sans: Ships with all versions of Android. * Helvetica, Arial, sans-serif: Common font stack on OS X and Windows. */ font-family: FreeSans, Arimo, "Droid Sans", Helvetica, Arial, sans-serif; /* Use flexbox when possible to avoid `letter-spacing` side-effects. NOTE: Firefox (as of 25) does not currently support flex-wrap, so the `-moz-` prefix version is omitted. */ display: -webkit-flex; -webkit-flex-flow: row wrap; /* IE10 uses display: flexbox */ display: -ms-flexbox; -ms-flex-flow: row wrap; } /* Opera as of 12 on Windows needs word-spacing. The ".opera-only" selector is used to prevent actual prefocus styling and is not required in markup. */ .opera-only :-o-prefocus, .pure-g-r { word-spacing: -0.43em; } /* Resets the font family back to the OS/browser's default sans-serif font, this the same font stack that Normalize.css sets for the `body`. */ .pure-g-r [class *= "pure-u"] { font-family: sans-serif; } .pure-g-r img { max-width: 100%; height: auto; } @media (min-width: 980px) { .pure-visible-phone { display: none; } .pure-visible-tablet { display: none; } .pure-hidden-desktop { display: none; } } @media (max-width: 480px) { .pure-g-r > .pure-u, .pure-g-r > [class *= "pure-u-"] { width: 100%; } } @media (max-width: 767px) { .pure-g-r > .pure-u, .pure-g-r > [class *= "pure-u-"] { width: 100%; } .pure-hidden-phone { display: none; } .pure-visible-desktop { display: none; } } @media (min-width: 768px) and (max-width: 979px) { .pure-hidden-tablet { display: none; } .pure-visible-desktop { display: none; } } /*csslint adjoining-classes:false, outline-none:false*/ /*TODO: Remove this lint rule override after a refactor of this code.*/ .pure-menu ul { position: absolute; visibility: hidden; } .pure-menu.pure-menu-open { visibility: visible; z-index: 2; width: 100%; } .pure-menu ul { left: -10000px; list-style: none; margin: 0; padding: 0; top: -10000px; z-index: 1; } .pure-menu > ul { position: relative; } .pure-menu-open > ul { left: 0; top: 0; visibility: visible; } .pure-menu-open > ul:focus { outline: 0; } .pure-menu li { position: relative; } .pure-menu a, .pure-menu .pure-menu-heading { display: block; color: inherit; line-height: 1.5em; padding: 5px 20px; text-decoration: none; white-space: nowrap; } .pure-menu.pure-menu-horizontal > .pure-menu-heading { display: inline-block; *display: inline; zoom: 1; margin: 0; vertical-align: middle; } .pure-menu.pure-menu-horizontal > ul { display: inline-block; *display: inline; zoom: 1; vertical-align: middle; height: 2.4em; } .pure-menu li a { padding: 5px 20px; } .pure-menu-can-have-children > .pure-menu-label:after { content: '\25B8'; float: right; /* These specific fonts have the Unicode char we need. */ font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'DejaVu Sans', sans-serif; margin-right: -20px; margin-top: -1px; } .pure-menu-can-have-children > .pure-menu-label { padding-right: 30px; } .pure-menu-separator { background-color: #dfdfdf; display: block; height: 1px; font-size: 0; margin: 7px 2px; overflow: hidden; } .pure-menu-hidden { display: none; } /* FIXED MENU */ .pure-menu-fixed { position: fixed; top: 0; left: 0; width: 100%; } /* HORIZONTAL MENU CODE */ /* Initial menus should be inline-block so that they are horizontal */ .pure-menu-horizontal li { display: inline-block; *display: inline; zoom: 1; vertical-align: middle; } /* Submenus should still be display: block; */ .pure-menu-horizontal li li { display: block; } /* Content after should be down arrow */ .pure-menu-horizontal > .pure-menu-children > .pure-menu-can-have-children > .pure-menu-label:after { content: "\25BE"; } /*Add extra padding to elements that have the arrow so that the hover looks nice */ .pure-menu-horizontal > .pure-menu-children > .pure-menu-can-have-children > .pure-menu-label { padding-right: 30px; } /* Adjusting separator for vertical menus */ .pure-menu-horizontal li.pure-menu-separator { height: 50%; width: 1px; margin: 0 7px; } /* Submenus should be horizontal separator again */ .pure-menu-horizontal li li.pure-menu-separator { height: 1px; width: auto; margin: 7px 2px; } /*csslint adjoining-classes:false*/ /*TODO: Remove this lint rule override after a refactor of this code.*/ /* MAIN MENU STYLING */ .pure-menu.pure-menu-open, .pure-menu.pure-menu-horizontal li .pure-menu-children { background: #fff; /* Old browsers */ border: 1px solid #b7b7b7; } /* remove borders for horizontal menus */ .pure-menu.pure-menu-horizontal, .pure-menu.pure-menu-horizontal .pure-menu-heading { border: none; } /* LINK STYLES */ .pure-menu a { border: 1px solid transparent; border-left: none; border-right: none; } .pure-menu a, .pure-menu .pure-menu-can-have-children > li:after { color: #777; } .pure-menu .pure-menu-can-have-children > li:hover:after { color: #fff; } /* Focus style for a dropdown menu-item when the parent has been opened */ .pure-menu .pure-menu-open { background: #dedede; } .pure-menu li a:hover, .pure-menu li a:focus { background: #eee; } /* DISABLED STATES */ .pure-menu li.pure-menu-disabled a:hover, .pure-menu li.pure-menu-disabled a:focus { background: #fff; color: #bfbfbf; } .pure-menu .pure-menu-disabled > a { background-image: none; border-color: transparent; cursor: default; } .pure-menu .pure-menu-disabled > a, .pure-menu .pure-menu-can-have-children.pure-menu-disabled > a:after { color: #bfbfbf; } /* HEADINGS */ .pure-menu .pure-menu-heading { color: #565d64; text-transform: uppercase; font-size: 90%; margin-top: 0.5em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #dfdfdf; } /* ACTIVE MENU ITEM */ .pure-menu .pure-menu-selected a { color: #000; } /* FIXED MENU */ .pure-menu.pure-menu-open.pure-menu-fixed { border: none; border-bottom: 1px solid #b7b7b7; } /*csslint box-model:false*/ /*TODO: Remove this lint rule override after a refactor of this code.*/ .pure-paginator { /* `pure-g` Grid styles */ letter-spacing: -0.31em; /* Webkit: collapse white-space between units */ *letter-spacing: normal; /* reset IE < 8 */ *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */ text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */ /* `pure-paginator` Specific styles */ list-style: none; margin: 0; padding: 0; } .opera-only :-o-prefocus, .pure-paginator { word-spacing: -0.43em; } /* `pure-u` Grid styles */ .pure-paginator li { display: inline-block; *display: inline; /* IE < 8: fake inline-block */ zoom: 1; letter-spacing: normal; word-spacing: normal; vertical-align: top; text-rendering: auto; } .pure-paginator .pure-button { border-radius: 0; padding: 0.8em 1.4em; vertical-align: top; height: 1.1em; } .pure-paginator .pure-button:focus, .pure-paginator .pure-button:active { outline-style: none; } .pure-paginator .prev, .pure-paginator .next { color: #C0C1C3; text-shadow: 0 -1px 0 rgba(0,0,0, 0.45); } .pure-paginator .prev { border-radius: 2px 0 0 2px; } .pure-paginator .next { border-radius: 0 2px 2px 0; } @media (max-width: 480px) { .pure-menu-horizontal { width: 100%; } .pure-menu-children li { display: block; border-bottom: 1px solid black; } } .pure-table { /* Remove spacing between table cells (from Normalize.css) */ border-collapse: collapse; border-spacing: 0; empty-cells: show; border: 1px solid #cbcbcb; } .pure-table caption { color: #000; font: italic 85%/1 arial, sans-serif; padding: 1em 0; text-align: center; } .pure-table td, .pure-table th { border-left: 1px solid #cbcbcb;/* inner column border */ border-width: 0 0 0 1px; font-size: inherit; margin: 0; overflow: visible; /*to make ths where the title is really long work*/ padding: 6px 12px; /* cell padding */ } .pure-table td:first-child, .pure-table th:first-child { border-left-width: 0; } .pure-table thead { background: #e0e0e0; color: #000; text-align: left; vertical-align: bottom; } /* striping: even - #fff (white) odd - #f2f2f2 (light gray) */ .pure-table td { background-color: transparent; } .pure-table-odd td { background-color: #f2f2f2; } /* nth-child selector for modern browsers */ .pure-table-striped tr:nth-child(2n-1) td { background-color: #f2f2f2; } /* BORDERED TABLES */ .pure-table-bordered td { border-bottom: 1px solid #cbcbcb; } .pure-table-bordered tbody > tr:last-child td, .pure-table-horizontal tbody > tr:last-child td { border-bottom-width: 0; } /* HORIZONTAL BORDERED TABLES */ .pure-table-horizontal td, .pure-table-horizontal th { border-width: 0 0 1px 0; border-bottom: 1px solid #cbcbcb; } .pure-table-horizontal tbody > tr:last-child td { border-bottom-width: 0; } crass-1.0.2/test/support/serialization/misc.css0000644000004100000410000000024712530245151021673 0ustar www-datawww-data/* mangled !important */ .foo { display: none /**/ ! IMPORTANT /* */ ; } /* An+B */ li:nth-child(even of li:not(.filtered)) { background-color: black; } crass-1.0.2/test/support/common.rb0000644000004100000410000000645612530245151017176 0ustar www-datawww-data# encoding: utf-8 gem 'minitest' require 'minitest/autorun' require_relative '../../lib/crass' CP = Crass::Parser CT = Crass::Tokenizer # Hack shared test support into MiniTest. MiniTest::Spec.class_eval do def self.shared_tests @shared_tests ||= {} end end module MiniTest::Spec::SharedTests def behaves_like(desc) self.instance_eval(&MiniTest::Spec.shared_tests[desc]) end def shared_tests_for(desc, &block) MiniTest::Spec.shared_tests[desc] = block end end Object.class_eval { include MiniTest::Spec::SharedTests } # Custom assertions and helpers. def assert_tokens(input, actual, offset = 0, options = {}) actual = [actual] unless actual.is_a?(Array) tokens = tokenize(input, offset, options) assert_equal tokens, actual end def reposition_tokens(tokens, offset) tokens.each {|token| token[:pos] += offset } tokens end def tokenize(input, offset = 0, options = {}) tokens = CT.tokenize(input, options) reposition_tokens(tokens, offset) unless offset == 0 tokens end # Translates Crass tokens into a form that can be compared to the expected # values of Simon Sapin's CSS parsing tests. # # https://github.com/SimonSapin/css-parsing-tests/#result-representation def translate_tokens(tokens) return [] if tokens.nil? translated = [] tokens = [tokens] unless tokens.is_a?(Array) tokens.each do |token| value = token[:value] result = case token[:node] # Rules and declarations. when :at_rule ['at-rule', token[:name], translate_tokens(token[:prelude]), token[:block] ? translate_tokens(token[:block]) : nil] when :qualified_rule ['qualified rule', translate_tokens(token[:prelude]), token[:block] ? translate_tokens(token[:block]) : nil] when :declaration ['declaration', token[:name], translate_tokens(value), token[:important]] # Component values. when :at_keyword ['at-keyword', value] when :bad_string ['error', 'bad-string'] when :bad_url ['error', 'bad-url'] when :cdc '-->' when :cdo '