// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Based on the grammar provided here: https://goo.gl/svLze7
// Most top level definitions here (mostly messages, but also the enum "h", is
// named after a rule or token in the grammar. The messages that aren't were
// implemented to hack around shortcomings in the protobuf format (such as
// "StringCharOrQuote"). These can be identified because they are preceded by
// a comment that says "Not in grammar".

syntax = "proto2";

package css_proto_converter;

// Tokens
// TODO(metzman): Implement CDO, CDC, UNICODERANGE, and range.
// The following tokens are implmented in code and do not have their own
// message: INCLUDES, DASHMATCH, HASH, STRING IMPORT_SYM, PAGE_SYM, MEDIA_SYM,
// FONT_FACE_SYM, CHARSET_SYM, NAMESPACE_SYM, IMPORTANT_SYM, EMS, EXS, NUMBER,
// and PERCENTAGE.
// DIMEN not implemented since it isnt used in any production.

// This is named "h" because it represents the "h" token in the grammar this is
// based off of.
enum H {
  ZERO = 48;
  ONE = 49;
  TWO = 50;
  THREE = 51;
  FOUR = 52;
  FIVE = 53;
  SIX = 54;
  SEVEN = 55;
  EIGHT = 56;
  NINE = 57;
  A_UPPER = 65;
  B_UPPER = 66;
  C_UPPER = 67;
  D_UPPER = 68;
  E_UPPER = 69;
  F_UPPER = 70;
  A_LOWER = 97;
  B_LOWER = 98;
  C_LOWER = 99;
  D_LOWER = 100;
  E_LOWER = 101;
  F_LOWER = 102;
}

// TODO(metzman): Add "nonascii" token from grammar.

message Unicode {
  required H ascii_value_1 = 1;
  optional H ascii_value_2 = 2;
  optional H ascii_value_3 = 3;
  optional H ascii_value_4 = 4;
  optional H ascii_value_5 = 5;
  optional H ascii_value_6 = 6;
  optional UnrepeatedW unrepeated_w = 7;
}

// unicode | '\' [#x20-#x7E#x80-#xD7FF#xE000-#xFFFD#x10000-#x10FFFF]
message Escape {
  // #x20-#x7E
  enum AsciiValue {
    SPACE = 32;
    EXCLAMATION_POINT = 33;
    DOUBLE_QUOTE = 34;
    HASH = 35;
    DOLLAR = 36;
    PERCENT = 37;
    AMPERSAND = 38;
    APOSTROPHE = 39;
    OPEN_PAREN = 40;
    CLOSE_PAREN = 41;
    STAR = 42;
    PLUS = 43;
    COMMA = 44;
    MINUS = 45;
    DOT = 46;
    SLASH = 47;
    ZERO = 48;
    ONE = 49;
    TWO = 50;
    THREE = 51;
    FOUR = 52;
    FIVE = 53;
    SIX = 54;
    SEVEN = 55;
    EIGHT = 56;
    NINE = 57;
    COLON = 58;
    SEMI_COLON = 59;
    LESS_THAN = 60;
    EQUAL = 61;
    GREATER_THAN = 62;
    QUESTION = 63;
    AT_SIGN = 64;
    A_UPPER = 65;
    B_UPPER = 66;
    C_UPPER = 67;
    D_UPPER = 68;
    E_UPPER = 69;
    F_UPPER = 70;
    G_UPPER = 71;
    H_UPPER = 72;
    I_UPPER = 73;
    J_UPPER = 74;
    K_UPPER = 75;
    L_UPPER = 76;
    M_UPPER = 77;
    N_UPPER = 78;
    O_UPPER = 79;
    P_UPPER = 80;
    Q_UPPER = 81;
    R_UPPER = 82;
    S_UPPER = 83;
    T_UPPER = 84;
    U_UPPER = 85;
    V_UPPER = 86;
    W_UPPER = 87;
    X_UPPER = 88;
    Y_UPPER = 89;
    Z_UPPER = 90;
    OPEN_BRACKET = 91;
    BACKSLASH = 92;
    CLOSE_BRACKET = 93;
    CARET = 94;
    UNDERSCORE = 95;
    BACKTICK = 96;
    A_LOWER = 97;
    B_LOWER = 98;
    C_LOWER = 99;
    D_LOWER = 100;
    E_LOWER = 101;
    F_LOWER = 102;
    G_LOWER = 103;
    H_LOWER = 104;
    I_LOWER = 105;
    J_LOWER = 106;
    K_LOWER = 107;
    L_LOWER = 108;
    M_LOWER = 109;
    N_LOWER = 110;
    O_LOWER = 111;
    P_LOWER = 112;
    Q_LOWER = 113;
    R_LOWER = 114;
    S_LOWER = 115;
    T_LOWER = 116;
    U_LOWER = 117;
    V_LOWER = 118;
    W_LOWER = 119;
    X_LOWER = 120;
    Y_LOWER = 121;
    Z_LOWER = 122;
    OPEN_CURLY_BRACE = 123;
    PIPE = 124;
    CLOSE_CURLY_BRACE_ = 125;
    TILDE = 126;
  }

  oneof rhs {
    Unicode unicode = 1;
    AsciiValue ascii_value = 2;
  }
  // TODO(metzman): Determine if we care about unicode points not covered here.
}

message Nmstart {
  enum AsciiValue {
    A_UPPER = 65;
    B_UPPER = 66;
    C_UPPER = 67;
    D_UPPER = 68;
    E_UPPER = 69;
    F_UPPER = 70;
    G_UPPER = 71;
    H_UPPER = 72;
    I_UPPER = 73;
    J_UPPER = 74;
    K_UPPER = 75;
    L_UPPER = 76;
    M_UPPER = 77;
    N_UPPER = 78;
    O_UPPER = 79;
    P_UPPER = 80;
    Q_UPPER = 81;
    R_UPPER = 82;
    S_UPPER = 83;
    T_UPPER = 84;
    U_UPPER = 85;
    V_UPPER = 86;
    W_UPPER = 87;
    X_UPPER = 88;
    Y_UPPER = 89;
    Z_UPPER = 90;
    A_LOWER = 97;
    B_LOWER = 98;
    C_LOWER = 99;
    D_LOWER = 100;
    E_LOWER = 101;
    F_LOWER = 102;
    G_LOWER = 103;
    H_LOWER = 104;
    I_LOWER = 105;
    J_LOWER = 106;
    K_LOWER = 107;
    L_LOWER = 108;
    M_LOWER = 109;
    N_LOWER = 110;
    O_LOWER = 111;
    P_LOWER = 112;
    Q_LOWER = 113;
    R_LOWER = 114;
    S_LOWER = 115;
    T_LOWER = 116;
    U_LOWER = 117;
    V_LOWER = 118;
    W_LOWER = 119;
    X_LOWER = 120;
    Y_LOWER = 121;
    Z_LOWER = 122;
  }

  oneof rhs {
    AsciiValue ascii_value = 1;
    Escape escape = 2;
    // TODO(metzman): Add nonascii token once (if) I implement it.
  }
}

message Nmchar {
  enum AsciiValue {
    MINUS = 45;
    ZERO = 48;
    ONE = 49;
    TWO = 50;
    THREE = 51;
    FOUR = 52;
    FIVE = 53;
    SIX = 54;
    SEVEN = 55;
    EIGHT = 56;
    NINE = 57;
    A_UPPER = 65;
    B_UPPER = 66;
    C_UPPER = 67;
    D_UPPER = 68;
    E_UPPER = 69;
    F_UPPER = 70;
    G_UPPER = 71;
    H_UPPER = 72;
    I_UPPER = 73;
    J_UPPER = 74;
    K_UPPER = 75;
    L_UPPER = 76;
    M_UPPER = 77;
    N_UPPER = 78;
    O_UPPER = 79;
    P_UPPER = 80;
    Q_UPPER = 81;
    R_UPPER = 82;
    S_UPPER = 83;
    T_UPPER = 84;
    U_UPPER = 85;
    V_UPPER = 86;
    W_UPPER = 87;
    X_UPPER = 88;
    Y_UPPER = 89;
    Z_UPPER = 90;
    A_LOWER = 97;
    B_LOWER = 98;
    C_LOWER = 99;
    D_LOWER = 100;
    E_LOWER = 101;
    F_LOWER = 102;
    G_LOWER = 103;
    H_LOWER = 104;
    I_LOWER = 105;
    J_LOWER = 106;
    K_LOWER = 107;
    L_LOWER = 108;
    M_LOWER = 109;
    N_LOWER = 110;
    O_LOWER = 111;
    P_LOWER = 112;
    Q_LOWER = 113;
    R_LOWER = 114;
    S_LOWER = 115;
    T_LOWER = 116;
    U_LOWER = 117;
    V_LOWER = 118;
    W_LOWER = 119;
    X_LOWER = 120;
    Y_LOWER = 121;
    Z_LOWER = 122;
  }
  oneof rhs {
    AsciiValue ascii_value = 1;
    Escape escape = 2;
    // TODO(metzman): Add nonascii token once (if) I implement it.
  }
}

// string1, string2 and string
message String {
  // TODO(metzman): determine if these hacks are more efficient than enforcing
  // constraints on string types in the actual code.
  required bool use_single_quotes = 1;
  repeated StringCharOrQuote string_char_quotes = 2;
}

// Not in grammar.
message StringCharOrQuote {
  enum QuoteChar {
    UNSET = 0;
    IS_SET = 1;
  }
  oneof rhs {
    StringChar string_char = 2;
    QuoteChar quote_char = 1;
  }
}

message StringChar {
  enum Space {
    UNSET = 0;
    IS_SET = 1;
  }
  oneof rhs {
    UrlChar url_char = 1;
    Space space = 2;
    // '\' nl
    Nl nl = 3;
  }
}

message Ident {
  optional bool starting_minus = 1 [default = false];  // -
  required Nmstart nmstart = 2;
  repeated Nmchar nmchars = 3;
}

message Num {
  required sint64 signed_int_value = 1;
  optional float float_value = 2;
}

message UrlChar {
  enum AsciiValue {
    NUL = 0;
    // #x9
    HT = 9;

    // #x21
    EXCLAMATION_POINT = 33;

    // #x23-#x26
    HASH = 35;
    DOLLAR = 36;
    PERCENT = 37;
    AMPERSAND = 38;

    // #x26-#x27
    APOSTROPHE = 39;
    OPEN_PAREN = 40;
    CLOSE_PAREN = 41;
    STAR = 42;
    PLUS = 43;
    COMMA = 44;
    MINUS = 45;
    DOT = 46;
    SLASH = 47;
    ZERO = 48;
    ONE = 49;
    TWO = 50;
    THREE = 51;
    FOUR = 52;
    FIVE = 53;
    SIX = 54;
    SEVEN = 55;
    EIGHT = 56;
    NINE = 57;
    COLON = 58;
    SEMI_COLON = 59;
    LESS_THAN = 60;
    EQUAL = 61;
    GREATER_THAN = 62;
    QUESTION = 63;
    AT_SIGN = 64;
    A_UPPER = 65;
    B_UPPER = 66;
    C_UPPER = 67;
    D_UPPER = 68;
    E_UPPER = 69;
    F_UPPER = 70;
    G_UPPER = 71;
    H_UPPER = 72;
    I_UPPER = 73;
    J_UPPER = 74;
    K_UPPER = 75;
    L_UPPER = 76;
    M_UPPER = 77;
    N_UPPER = 78;
    O_UPPER = 79;
    P_UPPER = 80;
    Q_UPPER = 81;
    R_UPPER = 82;
    S_UPPER = 83;
    T_UPPER = 84;
    U_UPPER = 85;
    V_UPPER = 86;
    W_UPPER = 87;
    X_UPPER = 88;
    Y_UPPER = 89;
    Z_UPPER = 90;
    OPEN_BRACKET = 91;
    BACKSLASH = 92;
    CLOSE_BRACKET = 93;
    CARET = 94;
    UNDERSCORE = 95;
    BACKTICK = 96;
    A_LOWER = 97;
    B_LOWER = 98;
    C_LOWER = 99;
    D_LOWER = 100;
    E_LOWER = 101;
    F_LOWER = 102;
    G_LOWER = 103;
    H_LOWER = 104;
    I_LOWER = 105;
    J_LOWER = 106;
    K_LOWER = 107;
    L_LOWER = 108;
    M_LOWER = 109;
    N_LOWER = 110;
    O_LOWER = 111;
    P_LOWER = 112;
    Q_LOWER = 113;
    R_LOWER = 114;
    S_LOWER = 115;
    T_LOWER = 116;
    U_LOWER = 117;
    V_LOWER = 118;
    W_LOWER = 119;
    X_LOWER = 120;
    Y_LOWER = 121;
    Z_LOWER = 122;
    OPEN_CURLY_BRACE = 123;
    PIPE = 124;
    CLOSE_CURLY_BRACE_ = 125;
    TILDE = 126;
  }
  oneof rhs {
    AsciiValue ascii_value = 1;
    Escape escape = 2;
    // TODO(metzman): Support nonascii tokens.
  }
}

message W {
  repeated UnrepeatedW unrepeated_w = 1;
}

// Not in grammar
message UnrepeatedW {
  enum AsciiValue {
    // #x9 ('\t')
    HT = 9;
    // #xA ('\n')
    LF = 10;
    // #xC ('\f')
    FF = 12;
    // #xD ('\r')
    CR = 13;
    // #x20 (' ')
    SPACE = 32;
  }
  required AsciiValue ascii_value = 1;
}

message Nl {
  enum NewlineKind {
    // #xA ('\n')
    LF = 10;
    // #xD #xA ('\r\n') Pseudo value, since we don't need SOH
    CR_LF = 1;
    // #xD ('\r')
    CR = 13;
    // #xC ('\f')
    FF = 12;
  }
  required NewlineKind newline_kind = 1;
}

// {num}[px|cm|mm|in|pt|pc]
message Length {
  enum Unit {
    PX = 1;
    CM = 2;
    MM = 3;
    IN = 4;
    PT = 5;
    PC = 6;
  }
  required Num num = 1;
  required Unit unit = 2;
}

// {num}[deg|rad|grad]
message Angle {
  enum Unit {
    DEG = 1;
    RAD = 2;
    GRAD = 3;
  }
  required Num num = 1;
  required Unit unit = 2;
}

// {num}[ms|s]
message Time {
  enum Unit {
    MS = 1;
    S = 2;
  }
  required Num num = 1;
  required Unit unit = 2;
}

// {num}[Hz|kHz]
message Freq {
  enum Unit {
    // Hack around build bug since some system header #defines HZ.
    _HZ = 1;
    KHZ = 2;
  }
  required Num num = 1;
  required Unit unit = 2;
}

message Uri {
  // "url(" w (string | url* ) w ")"
  // TODO(metzman): Add url token once (if) I implement it.
  // optional String value = 1;
}

// FUNCTION. Not named Function to avoid conflict.
message FunctionToken {
  required Ident ident = 1;
}
// end tokens

// rules
// TODO(metzman): Add rules for @keyframes (including
// -webkit-keyframes), and @supports.
message StyleSheet {
  optional CharsetDeclaration charset_declaration = 1;
  repeated Import imports = 2;
  repeated Namespace namespaces = 3;
  repeated NestedAtRule nested_at_rules = 4;
}

// Not in grammar.
message CharsetDeclaration {
  enum EncodingId {
    UTF_8 = 1;
    UTF_16 = 2;
    UTF_32 = 3;
  }
  required EncodingId encoding_id = 1;
}

// Not in grammar.
message NestedAtRule {
  oneof rhs {
    Ruleset ruleset = 1;
    Media media = 2;
    Page page = 3;
    FontFace font_face = 4;
    Viewport viewport = 5;
    SupportsRule supports_rule = 6;
  }
}

message SupportsRule {
  required SupportsCondition supports_condition = 1;
  repeated AtRuleOrRulesets at_rule_or_rulesets = 2;
}

message AtRuleOrRulesets {
  required AtRuleOrRuleset first = 1;
  repeated AtRuleOrRuleset laters = 2;
}

message AtRuleOrRuleset {
  required Ruleset ruleset = 1;
  optional NestedAtRule at_rule = 2;
}

message SupportsCondition {
  // Using PropertyAndValue rather than declaration means that there
  // will always be a declaration. This is syntactically correct but
  // means we may miss some error paths.
  // TODO(metzman): Figure out what to do about generating invalid output that
  // causes more coverage. Maybe doing so infrequently is the correct move.
  required PropertyAndValue property_and_value = 1;  // Default.
  // TODO(metzman): Do functions also need to be supported?
  required bool not_condition = 2;
  oneof rhs {
    BinarySupportsCondition and_supports_condition = 3;
    BinarySupportsCondition or_supports_condition = 4;
  }
}

message BinarySupportsCondition {
  required SupportsCondition condition_1 = 1;
  required SupportsCondition condition_2 = 2;
}

message Viewport {
  repeated ViewportPropertyAndValue properties_and_values = 1;
}

message ViewportPropertyAndValue {
  required ViewportProperty property = 1;
  required ViewportValue value = 2;
}

message ViewportProperty {
  enum PropertyId {
    MIN_WIDTH = 1;
    MAX_WIDTH = 2;
    WIDTH = 3;
    MIN_HEIGHT = 4;
    MAX_HEIGHT = 5;
    HEIGHT = 6;
    ZOOM = 7;
    MIN_ZOOM = 8;
    USER_ZOOM = 9;
    MAX_ZOOM = 10;
    ORIENTATION = 11;
  }
  required PropertyId id = 1;
}

message ViewportValue {
  enum ValueId {
    LANDSCAPE = 1;
    PORTRAIT = 2;
    AUTO = 3;
    ZOOM = 4;
    FIXED = 5;
    NONE = 6;
  }
  required ValueId value_id = 1;
  oneof rhs {
    Length length = 2;
    Num num = 3;
  }
}

message Import {
  enum SrcId {
    RELATIVE_STRING = 1;
    FULL_URL = 2;
  }
  optional SrcId src_id = 1;
  optional MediaQueryList media_query_list = 2;
}

// Media based on https://developer.mozilla.org/en-US/docs/Web/CSS/@media
message MediaQueryList {
  repeated MediaQuery media_queries = 1;
}

message MediaQuery {
  required MediaCondition media_condition = 1;
  optional MediaQueryPartTwo media_query_part_two = 2;
}

// Not in spec.
message MediaQueryPartTwo {
  enum NotOrOnly {
    NOT = 1;
    ONLY = 2;
  }
  optional NotOrOnly not_or_only = 1;
  required MediaType media_type = 2;
  optional MediaConditionWithoutOr media_condition_without_or = 3;
}

message MediaConditionWithoutOr {
  required MediaNot media_not = 1;
  oneof rhs {
    MediaAnd media_and = 2;
    MediaInParens media_in_parens = 3;
  }
}

message MediaCondition {
  required MediaAnd media_and = 1;
  oneof rhs {
    MediaNot media_not = 2;
    MediaOr media_or = 3;
    MediaInParens media_in_parens = 4;
  }
}

message MediaType {
  enum ValueId {
    ALL = 1;
    BRAILLE = 2;
    EMBOSSED = 3;
    HANDHELD = 4;
    PRINT = 5;
    PROJECTION = 6;
    SCREEN = 7;
    SPEECH = 8;
    TTY = 9;
    TV = 10;
    INVALID_MEDIA_TYPE = 11;
  }
  required ValueId value_id = 1;
}

message MediaNot {
  required MediaInParens media_in_parens = 1;
}

message MediaAnd {
  required MediaInParens first_media_in_parens = 1;
  required MediaInParens second_media_in_parens = 2;
  repeated MediaInParens media_in_parens_list = 3;
}

message MediaOr {
  required MediaInParens first_media_in_parens = 1;
  required MediaInParens second_media_in_parens = 2;
  repeated MediaInParens media_in_parens_list = 3;
}

message MediaInParens {
  required MediaFeature media_feature = 1;
  optional MediaCondition media_condition = 2;
}

message MediaFeature {
  required MfPlain mf_plain = 1;
  optional MfBool mf_bool = 2;
  // TODO(metzman): Implement <mf-range>
}

// TODO(metzman): implement <general-enclosed>

message MfPlain {
  required MfName property = 1;
  required MfValue value = 2;
}

message MfBool {
  required MfName mf_name = 1;
}

message MfName {
  enum ValueId {
    ANY_HOVER = 1;
    ANY_POINTER = 2;
    COLOR = 3;
    COLOR_INDEX = 4;
    COLOR_GAMUT = 5;
    GRID = 6;
    MONOCHROME = 7;
    HEIGHT = 8;
    HOVER = 9;
    WIDTH = 10;
    ORIENTATION = 11;
    ASPECT_RATIO = 12;
    DEVICE_ASPECT_RATIO = 13;
    _WEBKIT_DEVICE_PIXEL_RATIO = 14;
    DEVICE_HEIGHT = 15;
    DEVICE_WIDTH = 16;
    DISPLAY_MODE = 17;
    MAX_COLOR = 18;
    MAX_COLOR_INDEX = 19;
    MAX_ASPECT_RATIO = 20;
    MAX_DEVICE_ASPECT_RATIO = 21;
    _WEBKIT_MAX_DEVICE_PIXEL_RATIO = 22;
    MAX_DEVICE_HEIGHT = 23;
    MAX_DEVICE_WIDTH = 24;
    MAX_HEIGHT = 25;
    MAX_MONOCHROME = 26;
    MAX_WIDTH = 27;
    MAX_RESOLUTION = 28;
    MIN_COLOR = 29;
    MIN_COLOR_INDEX = 30;
    MIN_ASPECT_RATIO = 31;
    MIN_DEVICE_ASPECT_RATIO = 32;
    _WEBKIT_MIN_DEVICE_PIXEL_RATIO = 33;
    MIN_DEVICE_HEIGHT = 34;
    MIN_DEVICE_WIDTH = 35;
    MIN_HEIGHT = 36;
    MIN_MONOCHROME = 37;
    MIN_WIDTH = 38;
    MIN_RESOLUTION = 39;
    POINTER = 40;
    RESOLUTION = 41;
    _WEBKIT_TRANSFORM_3D = 42;
    SCAN = 43;
    SHAPE = 44;
    INVALID_NAME = 45;
  }
  required ValueId id = 1;
}

message MfValue {
  required Num num = 1;
  oneof rhs {
    Length length = 2;  // Called <dimension> on developer.mozilla.org
    Ident ident = 3;
    // TODO(metzman) implement <mf-range>
  }
}

message Namespace {
  optional NamespacePrefix namespace_prefix = 1;
  oneof rhs {
    String string = 2;
    Uri uri = 3;
  }
}

// TODO(metzman): Determine if this is unnecessary.
message NamespacePrefix {
  required Ident ident = 1;
}

message Media {
  required MediaQueryList media_query_list = 1;
  repeated Ruleset rulesets = 2;
}

message Page {
  optional Ident ident = 1;
  optional PseudoPage pseudo_page = 2;
  required DeclarationList declaration_list = 3;
}

// Not in grammar.
message DeclarationList {
  required Declaration first_declaration = 1;
  repeated Declaration later_declarations = 2;
}

// TODO(metzman): Determine if this is unnecessary.
message PseudoPage {
  required Ident ident = 1;
}

message FontFace {
  // required DeclarationList declaration_list = 1;
  // https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face#Formal_syntax
  // repeated FontFaceContents font_face_contents = 1;
}

message Operator {
  enum AsciiValue {
    COMMA = 44;
    SLASH = 47;
  }
  optional AsciiValue ascii_value = 1;
}

message UnaryOperator {
  enum AsciiValue {
    PLUS = 43;
    MINUS = 45;
  }
  required AsciiValue ascii_value = 1;
}

// TODO(metzman): Determine if this is unnecessary.
message Property {
  enum NameId {
    ALL = 1;
    _WEBKIT_ANIMATION_ITERATION_COUNT = 2;
    FONT_FEATURE_SETTINGS = 3;
    _WEBKIT_TEXT_EMPHASIS_POSITION = 4;
    _WEBKIT_TEXT_EMPHASIS_STYLE = 5;
    GRID_TEMPLATE_ROWS = 6;
    TEXT_UNDERLINE_POSITION = 7;
    _WEBKIT_FLEX_GROW = 8;
    SCROLL_SNAP_MARGIN_RIGHT = 9;
    _WEBKIT_COLUMN_RULE = 10;
    _WEBKIT_ORDER = 11;
    GRID_ROW_GAP = 12;
    BACKDROP_FILTER = 13;
    FONT_VARIANT_EAST_ASIAN = 14;
    BUFFERED_RENDERING = 15;
    _WEBKIT_APPEARANCE = 16;
    OUTLINE_WIDTH = 17;
    ALIGNMENT_BASELINE = 18;
    _WEBKIT_FLEX_FLOW = 19;
    COLUMN_RULE = 20;
    GRID_COLUMN_GAP = 21;
    _WEBKIT_BORDER_AFTER = 22;
    _WEBKIT_COLUMN_BREAK_INSIDE = 23;
    _WEBKIT_SHAPE_OUTSIDE = 24;
    _WEBKIT_PRINT_COLOR_ADJUST = 25;
    LIST_STYLE_TYPE = 26;
    PAGE_BREAK_BEFORE = 27;
    FLOOD_COLOR = 28;
    TEXT_ANCHOR = 29;
    _WEBKIT_PADDING_START = 30;
    _WEBKIT_USER_SELECT = 31;
    _WEBKIT_COLUMN_RULE_COLOR = 32;
    PADDING_LEFT = 33;
    _WEBKIT_BACKFACE_VISIBILITY = 34;
    _WEBKIT_MARGIN_BEFORE = 35;
    BREAK_INSIDE = 36;
    COLUMN_COUNT = 37;
    _WEBKIT_LOGICAL_HEIGHT = 38;
    PERSPECTIVE = 39;
    MAX_BLOCK_SIZE = 40;
    _WEBKIT_ANIMATION_PLAY_STATE = 41;
    BORDER_IMAGE_REPEAT = 42;
    _WEBKIT_FONT_SIZE_DELTA = 43;
    SCROLL_PADDING_BOTTOM = 44;
    BORDER_RIGHT_STYLE = 45;
    BORDER_LEFT_STYLE = 46;
    SCROLL_SNAP_MARGIN_BLOCK = 47;
    FLEX_FLOW = 48;
    OUTLINE_COLOR = 49;
    FLEX_GROW = 50;
    MAX_WIDTH = 51;
    GRID_COLUMN = 52;
    IMAGE_ORIENTATION = 53;
    ANIMATION_DURATION = 54;
    _WEBKIT_COLUMNS = 55;
    _WEBKIT_BOX_FLEX_GROUP = 56;
    _WEBKIT_ANIMATION_DELAY = 57;
    _EPUB_TEXT_EMPHASIS = 58;
    FLEX_SHRINK = 59;
    TEXT_RENDERING = 60;
    ALIGN_ITEMS = 61;
    BORDER_COLLAPSE = 62;
    OFFSET = 63;
    TEXT_COMBINE_UPRIGHT = 64;
    _WEBKIT_MASK_POSITION_X = 65;
    _WEBKIT_MASK_POSITION_Y = 66;
    OUTLINE_STYLE = 67;
    _WEBKIT_MARGIN_BOTTOM_COLLAPSE = 68;
    COLOR_INTERPOLATION_FILTERS = 69;
    FONT_VARIANT = 70;
    _WEBKIT_ANIMATION_FILL_MODE = 71;
    BORDER_RIGHT = 72;
    VISIBILITY = 73;
    TRANSFORM_BOX = 74;
    FONT_VARIANT_CAPS = 75;
    _EPUB_TEXT_EMPHASIS_COLOR = 76;
    _WEBKIT_BORDER_BEFORE_STYLE = 77;
    RESIZE = 78;
    _WEBKIT_RTL_ORDERING = 79;
    _WEBKIT_BOX_ORDINAL_GROUP = 80;
    PAINT_ORDER = 81;
    STROKE_LINECAP = 82;
    ANIMATION_DIRECTION = 83;
    _WEBKIT_FONT_FEATURE_SETTINGS = 84;
    BORDER_TOP_LEFT_RADIUS = 85;
    _WEBKIT_COLUMN_WIDTH = 86;
    _WEBKIT_BOX_ALIGN = 87;
    _WEBKIT_PADDING_AFTER = 88;
    COLUMN_WIDTH = 89;
    LIST_STYLE = 90;
    _WEBKIT_MASK_REPEAT_Y = 91;
    _WEBKIT_MARGIN_BEFORE_COLLAPSE = 92;
    STROKE = 93;
    TEXT_DECORATION_LINE = 94;
    _WEBKIT_BACKGROUND_SIZE = 95;
    _WEBKIT_MASK_REPEAT_X = 96;
    PADDING_BOTTOM = 97;
    FONT_STYLE = 98;
    _WEBKIT_TRANSITION_DELAY = 99;
    BACKGROUND_REPEAT = 100;
    FLEX_BASIS = 101;
    BORDER_IMAGE_SLICE = 102;
    _WEBKIT_TRANSFORM_ORIGIN = 103;
    SCROLL_BOUNDARY_BEHAVIOR_X = 104;
    SCROLL_BOUNDARY_BEHAVIOR_Y = 105;
    VECTOR_EFFECT = 106;
    _WEBKIT_ANIMATION_TIMING_FUNCTION = 107;
    _WEBKIT_BORDER_AFTER_STYLE = 108;
    _WEBKIT_PERSPECTIVE_ORIGIN_X = 109;
    _WEBKIT_PERSPECTIVE_ORIGIN_Y = 110;
    INLINE_SIZE = 111;
    OUTLINE = 112;
    FONT_DISPLAY = 113;
    _WEBKIT_BORDER_BEFORE = 114;
    BORDER_IMAGE_SOURCE = 115;
    TRANSITION_DURATION = 116;
    SCROLL_PADDING_TOP = 117;
    ORDER = 118;
    _WEBKIT_BOX_ORIENT = 119;
    COUNTER_RESET = 120;
    COLOR_RENDERING = 121;
    FLEX_DIRECTION = 122;
    _WEBKIT_TEXT_STROKE_WIDTH = 123;
    FONT_VARIANT_NUMERIC = 124;
    SCROLL_SNAP_MARGIN_BLOCK_END = 125;
    MIN_HEIGHT = 126;
    SCROLL_PADDING_INLINE_START = 127;
    _WEBKIT_MASK_BOX_IMAGE = 128;
    LEFT = 129;
    _WEBKIT_MASK = 130;
    _WEBKIT_BORDER_AFTER_WIDTH = 131;
    STROKE_WIDTH = 132;
    _WEBKIT_BOX_DECORATION_BREAK = 133;
    _WEBKIT_MASK_POSITION = 134;
    BACKGROUND_ORIGIN = 135;
    _WEBKIT_BORDER_START_COLOR = 136;
    FONT_STRETCH = 137;
    _WEBKIT_BACKGROUND_CLIP = 138;
    SCROLL_SNAP_MARGIN_TOP = 139;
    _WEBKIT_BORDER_HORIZONTAL_SPACING = 140;
    BORDER_RADIUS = 141;
    FLEX = 142;
    TEXT_INDENT = 143;
    HYPHENS = 144;
    COLUMN_RULE_WIDTH = 145;
    _WEBKIT_MARGIN_AFTER = 146;
    _EPUB_CAPTION_SIDE = 147;
    BREAK_AFTER = 148;
    TEXT_TRANSFORM = 149;
    TOUCH_ACTION = 150;
    FONT_SIZE = 151;
    _WEBKIT_ANIMATION_NAME = 152;
    SCROLL_PADDING_INLINE = 153;
    OFFSET_PATH = 154;
    SCROLL_SNAP_MARGIN = 155;
    PADDING_TOP = 156;
    SCROLL_SNAP_ALIGN = 157;
    _WEBKIT_TEXT_COMBINE = 158;
    _WEBKIT_FLEX_SHRINK = 159;
    RX = 160;
    RY = 161;
    CONTENT = 162;
    PADDING_RIGHT = 163;
    _WEBKIT_TRANSFORM = 164;
    MARKER_MID = 165;
    _WEBKIT_MIN_LOGICAL_WIDTH = 166;
    CLIP_RULE = 167;
    FONT_FAMILY = 168;
    SCROLL_SNAP_TYPE = 169;
    TEXT_DECORATION_SKIP = 170;
    TRANSITION = 171;
    FILTER = 172;
    BORDER_RIGHT_WIDTH = 173;
    _WEBKIT_FLEX_DIRECTION = 174;
    _WEBKIT_MASK_COMPOSITE = 175;
    MIX_BLEND_MODE = 176;
    COLOR_INTERPOLATION = 177;
    BORDER_TOP_STYLE = 178;
    FILL_OPACITY = 179;
    MARKER_START = 180;
    BORDER_BOTTOM_WIDTH = 181;
    _WEBKIT_TEXT_EMPHASIS = 182;
    GRID_AREA = 183;
    SIZE = 184;
    BACKGROUND_CLIP = 185;
    _WEBKIT_TEXT_FILL_COLOR = 186;
    TOP = 187;
    _WEBKIT_BOX_REFLECT = 188;
    BORDER_WIDTH = 189;
    OFFSET_ANCHOR = 190;
    MAX_INLINE_SIZE = 191;
    _WEBKIT_COLUMN_RULE_STYLE = 192;
    _WEBKIT_COLUMN_COUNT = 193;
    ANIMATION_PLAY_STATE = 194;
    PADDING = 195;
    DOMINANT_BASELINE = 196;
    BACKGROUND_ATTACHMENT = 197;
    _WEBKIT_BOX_SIZING = 198;
    _WEBKIT_BOX_FLEX = 199;
    TEXT_ORIENTATION = 200;
    BACKGROUND_POSITION = 201;
    _WEBKIT_BORDER_START_WIDTH = 202;
    _EPUB_TEXT_EMPHASIS_STYLE = 203;
    ISOLATION = 204;
    _EPUB_TEXT_ORIENTATION = 205;
    _WEBKIT_BORDER_BOTTOM_RIGHT_RADIUS = 206;
    R = 207;
    BORDER_LEFT_WIDTH = 208;
    GRID_COLUMN_END = 209;
    BACKGROUND_BLEND_MODE = 210;
    VERTICAL_ALIGN = 211;
    CLIP = 212;
    GRID_AUTO_ROWS = 213;
    OFFSET_ROTATE = 214;
    MARGIN_LEFT = 215;
    ANIMATION_NAME = 216;
    TEXT_DECORATION = 217;
    BORDER = 218;
    _WEBKIT_TRANSITION_TIMING_FUNCTION = 219;
    MARGIN_BOTTOM = 220;
    UNICODE_RANGE = 221;
    ANIMATION = 222;
    _WEBKIT_SHAPE_MARGIN = 223;
    FONT_WEIGHT = 224;
    SHAPE_MARGIN = 225;
    MASK_TYPE = 226;
    SCROLL_PADDING = 227;
    MIN_INLINE_SIZE = 228;
    OBJECT_POSITION = 229;
    PAGE_BREAK_AFTER = 230;
    _WEBKIT_MASK_CLIP = 231;
    WHITE_SPACE = 232;
    _WEBKIT_BORDER_AFTER_COLOR = 233;
    _WEBKIT_MAX_LOGICAL_WIDTH = 234;
    _WEBKIT_BORDER_BEFORE_COLOR = 235;
    FONT_KERNING = 236;
    _EPUB_WORD_BREAK = 237;
    CLEAR = 238;
    ANIMATION_TIMING_FUNCTION = 239;
    _WEBKIT_BORDER_RADIUS = 240;
    SCROLL_PADDING_RIGHT = 241;
    _WEBKIT_TEXT_DECORATIONS_IN_EFFECT = 242;
    _WEBKIT_ANIMATION_DIRECTION = 243;
    JUSTIFY_SELF = 244;
    TRANSITION_TIMING_FUNCTION = 245;
    SCROLL_SNAP_STOP = 246;
    COUNTER_INCREMENT = 247;
    _WEBKIT_TRANSFORM_STYLE = 248;
    GRID_AUTO_COLUMNS = 249;
    _WEBKIT_ALIGN_CONTENT = 250;
    FONT = 251;
    FLEX_WRAP = 252;
    GRID_ROW_START = 253;
    LIST_STYLE_IMAGE = 254;
    _WEBKIT_TAP_HIGHLIGHT_COLOR = 255;
    _WEBKIT_TEXT_EMPHASIS_COLOR = 256;
    BORDER_LEFT = 257;
    _WEBKIT_BORDER_END_COLOR = 258;
    COLUMNS = 259;
    BOX_SHADOW = 260;
    _WEBKIT_FLEX_WRAP = 261;
    ALIGN_SELF = 262;
    BORDER_BOTTOM = 263;
    BORDER_SPACING = 264;
    _WEBKIT_COLUMN_SPAN = 265;
    GRID_ROW_END = 266;
    _WEBKIT_BORDER_END = 267;
    PERSPECTIVE_ORIGIN = 268;
    PAGE_BREAK_INSIDE = 269;
    ORPHANS = 270;
    _WEBKIT_BORDER_START_STYLE = 271;
    SCROLL_BEHAVIOR = 272;
    COLUMN_SPAN = 273;
    _WEBKIT_HYPHENATE_CHARACTER = 274;
    COLUMN_FILL = 275;
    TAB_SIZE = 276;
    CONTAIN = 277;
    X = 278;
    GRID_ROW = 279;
    BORDER_BOTTOM_RIGHT_RADIUS = 280;
    LINE_HEIGHT = 281;
    STROKE_LINEJOIN = 282;
    TEXT_ALIGN_LAST = 283;
    OFFSET_POSITION = 284;
    WORD_SPACING = 285;
    TRANSFORM_STYLE = 286;
    _WEBKIT_APP_REGION = 287;
    _WEBKIT_BORDER_END_STYLE = 288;
    _WEBKIT_TRANSFORM_ORIGIN_Z = 289;
    _WEBKIT_TRANSFORM_ORIGIN_X = 290;
    _WEBKIT_TRANSFORM_ORIGIN_Y = 291;
    BACKGROUND_REPEAT_X = 292;
    BACKGROUND_REPEAT_Y = 293;
    BORDER_BOTTOM_COLOR = 294;
    _WEBKIT_RUBY_POSITION = 295;
    _WEBKIT_LOGICAL_WIDTH = 296;
    TEXT_JUSTIFY = 297;
    SCROLL_SNAP_MARGIN_INLINE_START = 298;
    CAPTION_SIDE = 299;
    MASK_SOURCE_TYPE = 300;
    _WEBKIT_MASK_BOX_IMAGE_SLICE = 301;
    _WEBKIT_BORDER_IMAGE = 302;
    TEXT_SIZE_ADJUST = 303;
    _WEBKIT_TEXT_SECURITY = 304;
    _EPUB_WRITING_MODE = 305;
    GRID_TEMPLATE = 306;
    _WEBKIT_MASK_BOX_IMAGE_REPEAT = 307;
    _WEBKIT_MASK_REPEAT = 308;
    _WEBKIT_JUSTIFY_CONTENT = 309;
    BASELINE_SHIFT = 310;
    BORDER_IMAGE = 311;
    TEXT_DECORATION_COLOR = 312;
    COLOR = 313;
    SHAPE_IMAGE_THRESHOLD = 314;
    SHAPE_RENDERING = 315;
    CY = 316;
    CX = 317;
    _WEBKIT_USER_MODIFY = 318;
    OFFSET_DISTANCE = 319;
    _WEBKIT_BORDER_BOTTOM_LEFT_RADIUS = 320;
    SPEAK = 321;
    BORDER_BOTTOM_LEFT_RADIUS = 322;
    _WEBKIT_COLUMN_BREAK_AFTER = 323;
    _WEBKIT_FONT_SMOOTHING = 324;
    _WEBKIT_MAX_LOGICAL_HEIGHT = 325;
    _WEBKIT_LINE_BREAK = 326;
    FILL_RULE = 327;
    _WEBKIT_MARGIN_START = 328;
    MIN_WIDTH = 329;
    _EPUB_TEXT_COMBINE = 330;
    BREAK_BEFORE = 331;
    CARET_COLOR = 332;
    EMPTY_CELLS = 333;
    DIRECTION = 334;
    CLIP_PATH = 335;
    JUSTIFY_CONTENT = 336;
    SCROLL_PADDING_BLOCK_END = 337;
    Z_INDEX = 338;
    BACKGROUND_POSITION_Y = 339;
    TEXT_DECORATION_STYLE = 340;
    GRID_TEMPLATE_AREAS = 341;
    _WEBKIT_MIN_LOGICAL_HEIGHT = 342;
    FONT_SIZE_ADJUST = 343;
    SCROLL_PADDING_BLOCK = 344;
    OVERFLOW_ANCHOR = 345;
    CURSOR = 346;
    SCROLL_SNAP_MARGIN_BLOCK_START = 347;
    _WEBKIT_MASK_BOX_IMAGE_SOURCE = 348;
    MARGIN = 349;
    _WEBKIT_ANIMATION = 350;
    LETTER_SPACING = 351;
    ORIENTATION = 352;
    WILL_CHANGE = 353;
    _WEBKIT_HIGHLIGHT = 354;
    TRANSFORM_ORIGIN = 355;
    FONT_VARIANT_LIGATURES = 356;
    _WEBKIT_ANIMATION_DURATION = 357;
    _WEBKIT_MASK_ORIGIN = 358;
    _WEBKIT_CLIP_PATH = 359;
    WORD_BREAK = 360;
    TABLE_LAYOUT = 361;
    TEXT_OVERFLOW = 362;
    _WEBKIT_LOCALE = 363;
    _WEBKIT_FLEX = 364;
    GRID_AUTO_FLOW = 365;
    BORDER_TOP_RIGHT_RADIUS = 366;
    BORDER_IMAGE_OUTSET = 367;
    PLACE_ITEMS = 368;
    BORDER_LEFT_COLOR = 369;
    FONT_VARIATION_SETTINGS = 370;
    BORDER_RIGHT_COLOR = 371;
    MIN_ZOOM = 372;
    SCROLL_SNAP_MARGIN_INLINE = 373;
    _WEBKIT_BORDER_BEFORE_WIDTH = 374;
    BACKFACE_VISIBILITY = 375;
    BACKGROUND_IMAGE = 376;
    _WEBKIT_TRANSITION_PROPERTY = 377;
    WRITING_MODE = 378;
    STROKE_OPACITY = 379;
    _WEBKIT_MARGIN_COLLAPSE = 380;
    BOX_SIZING = 381;
    MARGIN_TOP = 382;
    COLUMN_RULE_COLOR = 383;
    Y = 384;
    POSITION = 385;
    SCROLL_SNAP_MARGIN_BOTTOM = 386;
    LIST_STYLE_POSITION = 387;
    _WEBKIT_BOX_PACK = 388;
    SCROLL_PADDING_INLINE_END = 389;
    QUOTES = 390;
    BORDER_TOP = 391;
    SCROLL_PADDING_LEFT = 392;
    _WEBKIT_TRANSITION = 393;
    _WEBKIT_COLUMN_BREAK_BEFORE = 394;
    LIGHTING_COLOR = 395;
    BACKGROUND_SIZE = 396;
    _WEBKIT_PADDING_BEFORE = 397;
    _WEBKIT_BORDER_TOP_LEFT_RADIUS = 398;
    FLOOD_OPACITY = 399;
    LINE_HEIGHT_STEP = 400;
    _WEBKIT_MASK_SIZE = 401;
    TEXT_ALIGN = 402;
    _WEBKIT_FILTER = 403;
    WORD_WRAP = 404;
    MAX_ZOOM = 405;
    GRID = 406;
    BACKGROUND = 407;
    HEIGHT = 408;
    GRID_COLUMN_START = 409;
    ANIMATION_FILL_MODE = 410;
    ROTATE = 411;
    MARKER_END = 412;
    D = 413;
    JUSTIFY_ITEMS = 414;
    ZOOM = 415;
    SCROLL_PADDING_BLOCK_START = 416;
    _WEBKIT_MARGIN_TOP_COLLAPSE = 417;
    PAGE = 418;
    RIGHT = 419;
    USER_SELECT = 420;
    MARGIN_RIGHT = 421;
    MARKER = 422;
    LINE_BREAK = 423;
    _WEBKIT_MARGIN_END = 424;
    _WEBKIT_TRANSITION_DURATION = 425;
    _WEBKIT_WRITING_MODE = 426;
    BORDER_TOP_WIDTH = 427;
    BOTTOM = 428;
    PLACE_CONTENT = 429;
    _WEBKIT_SHAPE_IMAGE_THRESHOLD = 430;
    _WEBKIT_USER_DRAG = 431;
    _WEBKIT_BORDER_VERTICAL_SPACING = 432;
    _WEBKIT_COLUMN_GAP = 433;
    _WEBKIT_OPACITY = 434;
    BACKGROUND_COLOR = 435;
    COLUMN_GAP = 436;
    SHAPE_OUTSIDE = 437;
    _WEBKIT_PADDING_END = 438;
    _WEBKIT_BORDER_START = 439;
    ANIMATION_DELAY = 440;
    UNICODE_BIDI = 441;
    TEXT_SHADOW = 442;
    _WEBKIT_BOX_DIRECTION = 443;
    IMAGE_RENDERING = 444;
    SRC = 445;
    GRID_GAP = 446;
    POINTER_EVENTS = 447;
    BORDER_IMAGE_WIDTH = 448;
    MIN_BLOCK_SIZE = 449;
    TRANSITION_PROPERTY = 450;
    _WEBKIT_MASK_IMAGE = 451;
    FLOAT = 452;
    MAX_HEIGHT = 453;
    OUTLINE_OFFSET = 454;
    _WEBKIT_BOX_SHADOW = 455;
    OVERFLOW_WRAP = 456;
    BLOCK_SIZE = 457;
    TRANSFORM = 458;
    PLACE_SELF = 459;
    WIDTH = 460;
    STROKE_MITERLIMIT = 461;
    STOP_OPACITY = 462;
    BORDER_TOP_COLOR = 463;
    TRANSLATE = 464;
    OBJECT_FIT = 465;
    _WEBKIT_MASK_BOX_IMAGE_WIDTH = 466;
    _WEBKIT_BACKGROUND_ORIGIN = 467;
    _WEBKIT_ALIGN_ITEMS = 468;
    TRANSITION_DELAY = 469;
    SCROLL_SNAP_MARGIN_LEFT = 470;
    BORDER_STYLE = 471;
    ANIMATION_ITERATION_COUNT = 472;
    _WEBKIT_MARGIN_AFTER_COLLAPSE = 473;
    // Should be named OVERFLOW but can't because a macro uses this.
    _OVERFLOW = 474;
    USER_ZOOM = 475;
    _WEBKIT_BORDER_TOP_RIGHT_RADIUS = 476;
    GRID_TEMPLATE_COLUMNS = 477;
    _WEBKIT_ALIGN_SELF = 478;
    _WEBKIT_PERSPECTIVE_ORIGIN = 479;
    COLUMN_RULE_STYLE = 480;
    DISPLAY = 481;
    _WEBKIT_COLUMN_RULE_WIDTH = 482;
    _WEBKIT_BOX_LINES = 483;
    BORDER_COLOR = 484;
    _WEBKIT_FLEX_BASIS = 485;
    STROKE_DASHOFFSET = 486;
    _WEBKIT_TEXT_SIZE_ADJUST = 487;
    SCROLL_BOUNDARY_BEHAVIOR = 488;
    _WEBKIT_TEXT_STROKE = 489;
    WIDOWS = 490;
    FILL = 491;
    OVERFLOW_Y = 492;
    OVERFLOW_X = 493;
    OPACITY = 494;
    _WEBKIT_PERSPECTIVE = 495;
    _WEBKIT_TEXT_STROKE_COLOR = 496;
    SCROLL_SNAP_MARGIN_INLINE_END = 497;
    SCALE = 498;
    _WEBKIT_TEXT_ORIENTATION = 499;
    _WEBKIT_MASK_BOX_IMAGE_OUTSET = 500;
    ALIGN_CONTENT = 501;
    _WEBKIT_BORDER_END_WIDTH = 502;
    BORDER_BOTTOM_STYLE = 503;
    MASK = 504;
    BACKGROUND_POSITION_X = 505;
    _EPUB_TEXT_TRANSFORM = 506;
    STOP_COLOR = 507;
    STROKE_DASHARRAY = 508;
    _WEBKIT_LINE_CLAMP = 509;
    INVALID_PROPERTY = 510;
  }
  required NameId name_id = 1;
}

message Ruleset {
  required SelectorList selector_list = 1;
  required DeclarationList declaration_list = 2;
}

// Not in grammar.
message SelectorList {
  required Selector first_selector = 1;
  repeated Selector later_selectors = 2;
}

message Attr {
  enum Type {
    NONE = 1;
    EQUAL = 6;
    TILDE = 126;
    PIPE = 124;
    DOLLAR = 36;
    STAR = 42;
  }
  required Type type = 1;
  optional bool attr_i = 2;
  // TODO(metzman): Allow values to be set instead of hardcoding.
}

enum PseudoType {
  CLASS = 1;
  ELEMENT = 2;
}

enum Combinator {
  NONE = 1;
  DOLLAR = 36;
  COMMA = 44;
  GREATER_THAN = 62;
  PLUS = 43;
  TILDE = 126;
}

message Selector {
  enum Type {
    ELEMENT = 1;
    CLASS = 2;
    ID = 3;
    // TODO(metzman): Support the different variations of universal selectors.
    UNIVERSAL = 4;
    ATTR = 5;
  }
  required Type type = 1;
  required Attr attr = 2;
  // TODO(metzman): Allow the selector value to be set by fuzzer.
  required PseudoType pseudo_type = 3;
  enum PseudoValueId {
    _INTERNAL_LIST_BOX = 1;
    _INTERNAL_MEDIA_CONTROLS_OVERLAY_CAST_BUTTON = 2;
    _INTERNAL_SHADOW_HOST_HAS_APPEARANCE = 3;
    _INTERNAL_SPATIAL_NAVIGATION_FOCUS = 4;
    _INTERNAL_VIDEO_PERSISTENT = 5;
    _INTERNAL_VIDEO_PERSISTENT_ANCESTOR = 6;
    _WEBKIT_ANY_LINK = 7;
    _WEBKIT_AUTOFILL = 8;
    _WEBKIT_DRAG = 9;
    _WEBKIT_FULL_PAGE_MEDIA = 10;
    _WEBKIT_FULL_SCREEN = 11;
    _WEBKIT_FULL_SCREEN_ANCESTOR = 12;
    _WEBKIT_RESIZER = 13;
    _WEBKIT_SCROLLBAR = 14;
    _WEBKIT_SCROLLBAR_BUTTON = 15;
    _WEBKIT_SCROLLBAR_CORNER = 16;
    _WEBKIT_SCROLLBAR_THUMB = 17;
    _WEBKIT_SCROLLBAR_TRACK = 18;
    _WEBKIT_SCROLLBAR_TRACK_PIECE = 19;
    ACTIVE = 20;
    AFTER = 21;
    BACKDROP = 22;
    BEFORE = 23;
    CHECKED = 24;
    CONTENT = 25;
    CORNER_PRESENT = 26;
    CUE = 27;
    DECREMENT = 28;
    DEFAULT = 29;
    DEFINED = 30;
    DISABLED = 31;
    DOUBLE_BUTTON = 32;
    EMPTY = 33;
    ENABLED = 34;
    END = 35;
    FIRST = 36;
    FIRST_CHILD = 37;
    FIRST_LETTER = 38;
    FIRST_LINE = 39;
    FIRST_OF_TYPE = 40;
    FOCUS = 41;
    FOCUS_WITHIN = 42;
    FULLSCREEN = 43;
    FUTURE = 44;
    HORIZONTAL = 45;
    HOST = 46;
    HOVER = 47;
    IN_RANGE = 48;
    INCREMENT = 49;
    INDETERMINATE = 50;
    INVALID = 51;
    LAST_CHILD = 52;
    LAST_OF_TYPE = 53;
    LEFT = 54;
    LINK = 55;
    NO_BUTTON = 56;
    ONLY_CHILD = 57;
    ONLY_OF_TYPE = 58;
    OPTIONAL = 59;
    OUT_OF_RANGE = 60;
    PAST = 61;
    PLACEHOLDER = 62;
    PLACEHOLDER_SHOWN = 63;
    READ_ONLY = 64;
    READ_WRITE = 65;
    REQUIRED = 66;
    RIGHT = 67;
    ROOT = 68;
    SCOPE = 69;
    SELECTION = 70;
    SHADOW = 71;
    SINGLE_BUTTON = 72;
    START = 73;
    TARGET = 74;
    UNRESOLVED = 75;
    VALID = 76;
    VERTICAL = 77;
    VISITED = 78;
    WINDOW_INACTIVE = 79;
    _WEBKIT_ANY = 80;
    HOST_CONTEXT = 83;
    LANG = 84;
    NOT = 85;
    NTH_CHILD = 86;
    NTH_LAST_CHILD = 87;
    NTH_LAST_OF_TYPE = 88;
    NTH_OF_TYPE = 89;
    SLOTTED = 90;
    INVALID_PSEUDO_VALUE = 91;
  }
  optional PseudoValueId pseudo_value_id = 4;
  required Combinator combinator = 5;
}

message Pseudo {
  oneof rhs {
    Ident ident_1 = 1;
    FunctionToken function_token = 2;
  }
  required Ident ident_2 = 3;
}

message Declaration {
  // property ':' S* expr prio? | /* empty */
  optional PropertyAndValue property_and_value = 1;
}

message PropertyAndValue {
  required Property property = 1;
  required Expr expr = 2;
  enum Prio {
    UNSET = 0;
    IS_SET = 1;
  }
  optional Prio prio = 3;
  enum ValueId {
    ALL = 1;
    DYNAMIC = 2;
    YELLOW = 3;
    GRAYTEXT = 4;
    COLOR_DODGE = 5;
    DARKSEAGREEN = 6;
    DISC = 7;
    EXTRA_CONDENSED = 8;
    HANGING = 9;
    STEP_MIDDLE = 10;
    MENULIST = 11;
    ROW = 12;
    PRE_WRAP = 13;
    INLINE_BLOCK = 14;
    STEP_START = 15;
    ISOLATE_OVERRIDE = 16;
    SWAP = 17;
    RTL = 18;
    CRIMSON = 19;
    TB = 20;
    COMMON_LIGATURES = 21;
    _WEBKIT_MIN_CONTENT = 22;
    BROWN = 23;
    KHMER = 24;
    INFINITE = 25;
    TABLE_HEADER_GROUP = 26;
    BEFORE_EDGE = 27;
    READ_WRITE = 28;
    RL = 29;
    WAVY = 30;
    PROPORTIONAL_WIDTH = 31;
    NO_DROP = 32;
    CYAN = 33;
    DIFFERENCE = 34;
    EXACT = 35;
    SQUARE_BUTTON = 36;
    SKYBLUE = 37;
    _WEBKIT_ISOLATE_OVERRIDE = 38;
    TABLE_ROW_GROUP = 39;
    DARKGRAY = 40;
    BUTTON = 41;
    ETHIOPIC_HALEHAME_AM = 42;
    LARGE = 43;
    LIGHTPINK = 44;
    CROSSHAIR = 45;
    TEAL = 46;
    FILL_BOX = 47;
    SMALL = 48;
    MEDIA_SLIDERTHUMB = 49;
    ROUND = 50;
    _INTERNAL_MEDIA_SUBTITLES_ICON = 51;
    MEDIA_PLAY_BUTTON = 52;
    SMALLER = 53;
    JIS04 = 54;
    LR_TB = 55;
    LIGHTGOLDENRODYELLOW = 56;
    LAVENDER = 57;
    ULTRA_EXPANDED = 58;
    DIMGREY = 59;
    DIAGONAL_FRACTIONS = 60;
    BLUE = 61;
    XOR = 62;
    SUB = 63;
    TELUGU = 64;
    CRISPEDGES = 65;
    _WEBKIT_MINI_CONTROL = 66;
    ZOOM_OUT = 67;
    SEARCHFIELD = 68;
    CELL = 69;
    GUJARATI = 70;
    ABOVE = 71;
    NO_PUNCTUATION = 72;
    NEW = 73;
    FILLED = 74;
    USE_SCRIPT = 75;
    CONDENSED = 76;
    LOOSE = 77;
    SOURCE_OUT = 78;
    OBJECTS = 79;
    SLIDER_HORIZONTAL = 80;
    ROW_RESIZE = 81;
    BREAK_ALL = 82;
    WAIT = 83;
    MEDIA_EXIT_FULLSCREEN_BUTTON = 84;
    KOREAN_HANGUL_FORMAL = 85;
    FLORALWHITE = 86;
    RESET_SIZE = 87;
    ZOOM_IN = 88;
    _WEBKIT_GRABBING = 89;
    LARGER = 90;
    MAX_CONTENT = 91;
    SRGB = 92;
    LITERAL_PUNCTUATION = 93;
    WINDOWFRAME = 94;
    SUBPIXEL_ANTIALIASED = 95;
    BUTTONHIGHLIGHT = 96;
    HUE = 97;
    PIXELATED = 98;
    STICKY = 99;
    GREENYELLOW = 100;
    LINEARRGB = 101;
    LIGHTSEAGREEN = 102;
    LOGICAL = 103;
    _WEBKIT_RIGHT = 104;
    SIENNA = 105;
    FLOW_ROOT = 106;
    OPTIMIZESPEED = 107;
    KOREAN_HANJA_FORMAL = 108;
    NOWRAP = 109;
    X_SMALL = 110;
    LANDSCAPE = 111;
    LIME = 112;
    X_LARGE = 113;
    NS_RESIZE = 114;
    APPWORKSPACE = 115;
    PERU = 116;
    ALL_PETITE_CAPS = 117;
    BLACK = 118;
    XX_SMALL = 119;
    ALL_SCROLL = 120;
    DARKSLATEGRAY = 121;
    FLAT = 122;
    GEORGIAN = 123;
    UNDER = 124;
    LEMONCHIFFON = 125;
    CHOCOLATE = 126;
    PRE_LINE = 127;
    CONTEXT_MENU = 128;
    DARKGREY = 129;
    VIEW_BOX = 130;
    OLIVE = 131;
    _WEBKIT_PLAINTEXT = 132;
    EXTRA_EXPANDED = 133;
    ANTIQUEWHITE = 134;
    NONE = 135;
    MOCCASIN = 136;
    LOCAL = 137;
    STROKE = 138;
    DARKSLATEBLUE = 139;
    LIGHTSKYBLUE = 140;
    CONTENT_BOX = 141;
    THIN = 142;
    DEEPPINK = 143;
    SPELL_OUT = 144;
    NON_SCALING_STROKE = 145;
    SLIDER_VERTICAL = 146;
    _WEBKIT_BOX = 147;
    PLUM = 148;
    _INTERNAL_MEDIA_OVERLAY_CAST_OFF_BUTTON = 149;
    INACTIVECAPTIONTEXT = 150;
    DODGERBLUE = 151;
    THREEDSHADOW = 152;
    PETITE_CAPS = 153;
    PAUSED = 154;
    _WEBKIT_LINK = 155;
    MESSAGE_BOX = 156;
    _INTERNAL_CENTER = 157;
    TRIANGLE = 158;
    MAGENTA = 159;
    TAN = 160;
    ABSOLUTE = 161;
    PINK = 162;
    HIRAGANA_IROHA = 163;
    FARTHEST_SIDE = 164;
    PALEVIOLETRED = 165;
    CLOSE_QUOTE = 166;
    THREEDLIGHTSHADOW = 167;
    CAPTION = 168;
    POWDERBLUE = 169;
    TABLE_COLUMN = 170;
    SOURCE_ATOP = 171;
    HIRAGANA = 172;
    UPPER_ARMENIAN = 173;
    WINDOWTEXT = 174;
    FULL_WIDTH = 175;
    PROGRESS_BAR_VALUE = 176;
    MIDNIGHTBLUE = 177;
    INLINE_FLEX = 178;
    ECONOMY = 179;
    LAO = 180;
    CLONE = 181;
    AFTER = 182;
    STATUS_BAR = 183;
    LOWERCASE = 184;
    MIXED = 185;
    LINE_THROUGH = 186;
    LIGHTSLATEGRAY = 187;
    SMALL_CAPTION = 188;
    INFOBACKGROUND = 189;
    DISCARD = 190;
    CAPTIONTEXT = 191;
    END = 192;
    _INTERNAL_INACTIVE_LIST_BOX_SELECTION_TEXT = 193;
    CAPITALIZE = 194;
    MEDIUMSEAGREEN = 195;
    TOMATO = 196;
    CADETBLUE = 197;
    DECIMAL_LEADING_ZERO = 198;
    SANS_SERIF = 199;
    LINEN = 200;
    GREEN = 201;
    INACTIVEBORDER = 202;
    INLINE = 203;
    FALLBACK = 204;
    PEACHPUFF = 205;
    _WEBKIT_MAX_CONTENT = 206;
    PLUS_LIGHTER = 207;
    CHECKBOX = 208;
    HELP = 209;
    OBLIQUE = 210;
    MOVE = 211;
    METER = 212;
    LEDGER = 213;
    SLATEGREY = 214;
    MEDIA_TIME_REMAINING_DISPLAY = 215;
    URDU = 216;
    POINTER = 217;
    BEFORE = 218;
    DARKSLATEGREY = 219;
    _WEBKIT_CONTROL = 220;
    _WEBKIT_INLINE_BOX = 221;
    HARD_LIGHT = 222;
    MITER = 223;
    ORIYA = 224;
    UPPER_LATIN = 225;
    WINDOW = 226;
    MEDIUMBLUE = 227;
    LR = 228;
    ORANGE = 229;
    HIDDEN = 230;
    _INTERNAL_ACTIVE_LIST_BOX_SELECTION = 231;
    BOLDER = 232;
    _WEBKIT_CENTER = 233;
    SAFE = 234;
    HIGHLIGHTTEXT = 235;
    ACCUMULATE = 236;
    FLEX_END = 237;
    TRANSPARENT = 238;
    _INTERNAL_MEDIA_REMOTING_CAST_ICON = 239;
    GOLDENROD = 240;
    HISTORICAL_LIGATURES = 241;
    DARKVIOLET = 242;
    ALWAYS = 243;
    DECIMAL = 244;
    BLOCK_AXIS = 245;
    SCROLLBAR = 246;
    EW_RESIZE = 247;
    DARKMAGENTA = 248;
    NOT_ALLOWED = 249;
    EASE_IN = 250;
    TABLE_COLUMN_GROUP = 251;
    SQUARE = 252;
    NO_CONTEXTUAL = 253;
    _WEBKIT_FILL_AVAILABLE = 254;
    FRAMES = 255;
    PERSIAN = 256;
    STATIC = 257;
    NAVY = 258;
    VISIBLEPAINTED = 259;
    THICK = 260;
    SIMP_CHINESE_FORMAL = 261;
    GHOSTWHITE = 262;
    SPACE = 263;
    DARKKHAKI = 264;
    KEEP_ALL = 265;
    CONTENT = 266;
    _INTERNAL_MEDIA_DOWNLOAD_BUTTON = 267;
    UPPER_ROMAN = 268;
    CORNSILK = 269;
    RED = 270;
    NO_CHANGE = 271;
    LINEAR = 272;
    _INTERNAL_MEDIA_CONTROL = 273;
    SIDEWAYS = 274;
    CONTAIN = 275;
    KATAKANA_IROHA = 276;
    STEELBLUE = 277;
    DOUBLE_CIRCLE = 278;
    ANTIALIASED = 279;
    ALICEBLUE = 280;
    LIGHTSLATEGREY = 281;
    GEOMETRICPRECISION = 282;
    GAINSBORO = 283;
    INLINE_TABLE = 284;
    LTR = 285;
    BACKWARDS = 286;
    S_RESIZE = 287;
    LIGHTGREY = 288;
    MEDIA_MUTE_BUTTON = 289;
    LISTITEM = 290;
    MISTYROSE = 291;
    DARKSALMON = 292;
    SIDEWAYS_RIGHT = 293;
    JIS83 = 294;
    MEDIUMSPRINGGREEN = 295;
    CAPS_LOCK_INDICATOR = 296;
    SLIDERTHUMB_HORIZONTAL = 297;
    FORWARDS = 298;
    UPPER_ALPHA = 299;
    BLINK = 300;
    FANTASY = 301;
    SIMPLIFIED = 302;
    ORANGERED = 303;
    NAVAJOWHITE = 304;
    OPEN = 305;
    HORIZONTAL = 306;
    SLATEGRAY = 307;
    ACTIVECAPTION = 308;
    KOREAN_HANJA_INFORMAL = 309;
    STRICT = 310;
    LIGHTCYAN = 311;
    TOP = 312;
    _WEBKIT_PICTOGRAPH = 313;
    WHITE = 314;
    TEXT_AFTER_EDGE = 315;
    LIGHTGRAY = 316;
    COLLAPSE = 317;
    HOVER = 318;
    _WEBKIT_OPTIMIZE_CONTRAST = 319;
    PADDING = 320;
    BUTT = 321;
    OFF = 322;
    THAI = 323;
    COPY = 324;
    HOTPINK = 325;
    DOUBLE = 326;
    LOWER_GREEK = 327;
    GREY = 328;
    MEDIA_VOLUME_SLIDER_CONTAINER = 329;
    _WEBKIT_INLINE_FLEX = 330;
    SPACE_EVENLY = 331;
    ACTIVEBORDER = 332;
    BROWSER = 333;
    PRE = 334;
    UNICASE = 335;
    SIMP_CHINESE_INFORMAL = 336;
    CLIP = 337;
    CLOSEST_CORNER = 338;
    PLAINTEXT = 339;
    NO_REPEAT = 340;
    TEXT_TOP = 341;
    JIS78 = 342;
    XX_LARGE = 343;
    RL_TB = 344;
    TABLE_ROW = 345;
    MEDIUM = 346;
    MONGOLIAN = 347;
    KATAKANA = 348;
    ELEMENT = 349;
    BORDER = 350;
    ROSYBROWN = 351;
    PROGRESS_BAR = 352;
    WHITESMOKE = 353;
    LIGHTBLUE = 354;
    _WEBKIT_LEFT = 355;
    NO_COMMON_LIGATURES = 356;
    LISTBOX = 357;
    ISOLATE = 358;
    SNOW = 359;
    STEP_END = 360;
    ETHIOPIC_HALEHAME_TI_ER = 361;
    ETHIOPIC_HALEHAME_TI_ET = 362;
    MULTIPLE = 363;
    _INTERNAL_INACTIVE_LIST_BOX_SELECTION = 364;
    NORMAL = 365;
    BLUEVIOLET = 366;
    SALMON = 367;
    LOWER_ALPHA = 368;
    OLDLACE = 369;
    LETTER = 370;
    BORDER_BOX = 371;
    ALPHA = 372;
    TIBETAN = 373;
    ICON = 374;
    FLEX_START = 375;
    TEXTAREA = 376;
    W_RESIZE = 377;
    CLEAR = 378;
    COVER = 379;
    FARTHEST_CORNER = 380;
    MENULIST_TEXTFIELD = 381;
    TRADITIONAL = 382;
    LEFT = 383;
    DOT = 384;
    LUMINANCE = 385;
    GOLD = 386;
    SHOW = 387;
    TEXT = 388;
    _WEBKIT_MATCH_PARENT = 389;
    RADIO = 390;
    CAMBODIAN = 391;
    REPEAT_X = 392;
    REPEAT_Y = 393;
    FINE = 394;
    TEXTFIELD = 395;
    FROM_IMAGE = 396;
    LINING_NUMS = 397;
    MENU = 398;
    PROPORTIONAL_NUMS = 399;
    SOURCE_OVER = 400;
    NE_RESIZE = 401;
    PAPAYAWHIP = 402;
    SOURCE_IN = 403;
    SE_RESIZE = 404;
    CIRCLE = 405;
    DESTINATION_OUT = 406;
    THREEDFACE = 407;
    OVER = 408;
    DISTRIBUTE = 409;
    INACTIVECAPTION = 410;
    LIGHTEN = 411;
    _WEBKIT_FIT_CONTENT = 412;
    LIGHTER = 413;
    CONTEXTUAL = 414;
    GRAY = 415;
    DARKTURQUOISE = 416;
    E_RESIZE = 417;
    LUMINOSITY = 418;
    LIST_ITEM = 419;
    LIMEGREEN = 420;
    FIXED = 421;
    MIN_CONTENT = 422;
    MEDIA_SLIDER = 423;
    VISIBLESTROKE = 424;
    CUBIC_BEZIER = 425;
    CLOSEST_SIDE = 426;
    RELATIVE = 427;
    NO_OPEN_QUOTE = 428;
    THISTLE = 429;
    VIOLET = 430;
    PORTRAIT = 431;
    FULLSCREEN = 432;
    HONEYDEW = 433;
    ON_DEMAND = 434;
    CORNFLOWERBLUE = 435;
    DARKBLUE = 436;
    OUTSIDE = 437;
    PROGRESS = 438;
    MEDIUMPURPLE = 439;
    DARKCYAN = 440;
    VERTICAL = 441;
    MONOSPACE = 442;
    BREAK_WORD = 443;
    SCREEN = 444;
    REBECCAPURPLE = 445;
    DARKRED = 446;
    VERTICAL_LR = 447;
    OPTIMIZEQUALITY = 448;
    ARMENIAN = 449;
    NWSE_RESIZE = 450;
    TEXT_BEFORE_EDGE = 451;
    OPTIONAL = 452;
    EXCLUSION = 453;
    BOTH = 454;
    MEDIUMTURQUOISE = 455;
    LOWER_ROMAN = 456;
    REVERSE = 457;
    HANGUL_CONSONANT = 458;
    SOFT_LIGHT = 459;
    AQUA = 460;
    BUTTON_BEVEL = 461;
    GURMUKHI = 462;
    LIGHTSTEELBLUE = 463;
    SMALL_CAPS = 464;
    N_RESIZE = 465;
    TABLE_FOOTER_GROUP = 466;
    DESTINATION_IN = 467;
    OLIVEDRAB = 468;
    READ_WRITE_PLAINTEXT_ONLY = 469;
    PADDING_BOX = 470;
    COL_RESIZE = 471;
    _INTERNAL_MEDIA_TRACK_SELECTION_CHECKMARK = 472;
    LOWER_LATIN = 473;
    _WEBKIT_NOWRAP = 474;
    TABLE = 475;
    BUTTONSHADOW = 476;
    PALEGREEN = 477;
    JIS90 = 478;
    FIT_CONTENT = 479;
    STRETCH = 480;
    SEASHELL = 481;
    THREEDHIGHLIGHT = 482;
    VISIBLEFILL = 483;
    SPACE_AROUND = 484;
    COARSE = 485;
    AQUAMARINE = 486;
    DIGITS = 487;
    CURRENTCOLOR = 488;
    PAINTED = 489;
    TB_RL = 490;
    BUTTONFACE = 491;
    LAWNGREEN = 492;
    BURLYWOOD = 493;
    _WEBKIT_SMALL_CONTROL = 494;
    SLATEBLUE = 495;
    MINTCREAM = 496;
    RUBY = 497;
    SOLID = 498;
    ULTRA_CONDENSED = 499;
    EXPANDED = 500;
    SADDLEBROWN = 501;
    VERTICAL_RL = 502;
    SESAME = 503;
    _WEBKIT_BODY = 504;
    DESTINATION_ATOP = 505;
    MALAYALAM = 506;
    WRAP_REVERSE = 507;
    BALANCE = 508;
    VERTICAL_RIGHT = 509;
    NO_CLOSE_QUOTE = 510;
    FLEX = 511;
    PUSH_BUTTON = 512;
    DARKGOLDENROD = 513;
    SATURATION = 514;
    MIDDLE = 515;
    SANDYBROWN = 516;
    HEBREW = 517;
    MENUTEXT = 518;
    INLINE_AXIS = 519;
    BASELINE = 520;
    _WEBKIT_GRAB = 521;
    DARKORANGE = 522;
    _WEBKIT_FLEX = 523;
    NW_RESIZE = 524;
    CONTENTS = 525;
    AUTO = 526;
    MARGIN_BOX = 527;
    DOCUMENT = 528;
    PALEGOLDENROD = 529;
    ORDINAL = 530;
    HAND = 531;
    RUNNING = 532;
    CJK_EARTHLY_BRANCH = 533;
    TABLE_CAPTION = 534;
    MEDIA_TOGGLE_CLOSED_CAPTIONS_BUTTON = 535;
    AFTER_EDGE = 536;
    SLIDERTHUMB_VERTICAL = 537;
    CENTER = 538;
    LIGHTYELLOW = 539;
    LAVENDERBLUSH = 540;
    _INTERNAL_MEDIA_CLOSED_CAPTIONS_ICON = 541;
    INHERIT = 542;
    MEDIA_CONTROLS_BACKGROUND = 543;
    JUSTIFY = 544;
    OPTIMIZELEGIBILITY = 545;
    _WEBKIT_BASELINE_MIDDLE = 546;
    INDIGO = 547;
    MINIMAL_UI = 548;
    FIREBRICK = 549;
    INDIANRED = 550;
    DARKOLIVEGREEN = 551;
    SEMI_EXPANDED = 552;
    UNDERLINE = 553;
    MYANMAR = 554;
    SPACE_BETWEEN = 555;
    EASE = 556;
    ALTERNATE = 557;
    MEDIUMORCHID = 558;
    SILVER = 559;
    COLOR = 560;
    CHARTREUSE = 561;
    EASE_IN_OUT = 562;
    SPRINGGREEN = 563;
    LIGHTSALMON = 564;
    TURQUOISE = 565;
    HIDE = 566;
    HORIZONTAL_TB = 567;
    VERTICAL_TEXT = 568;
    ALIAS = 569;
    GRID = 570;
    NO_DISCRETIONARY_LIGATURES = 571;
    BACKGROUND = 572;
    DEVANAGARI = 573;
    TEXT_BOTTOM = 574;
    DARKGREEN = 575;
    VISIBLE = 576;
    TABULAR_NUMS = 577;
    MANUAL = 578;
    ZOOM = 579;
    CJK_HEAVENLY_STEM = 580;
    STEPS = 581;
    BOUNDING_BOX = 582;
    ALPHABETIC = 583;
    AFTER_WHITE_SPACE = 584;
    ROW_REVERSE = 585;
    MEDIA_CURRENT_TIME_DISPLAY = 586;
    MATHEMATICAL = 587;
    ETHIOPIC_HALEHAME = 588;
    RIGHT = 589;
    UPPERCASE = 590;
    _WEBKIT_XXX_LARGE = 591;
    B4 = 592;
    B5 = 593;
    YELLOWGREEN = 594;
    MEDIA_CONTROLS_FULLSCREEN_BACKGROUND = 595;
    LOWER_ARMENIAN = 596;
    ORCHID = 597;
    NONZERO = 598;
    SLICE = 599;
    DENSE = 600;
    INTER_WORD = 601;
    BOTTOM = 602;
    PURPLE = 603;
    AVOID = 604;
    SEPARATE = 605;
    HANGUL = 606;
    LEGAL = 607;
    ALTERNATE_REVERSE = 608;
    PRESERVE_3D = 609;
    READ_ONLY = 610;
    ELLIPSIS = 611;
    MEDIA_OVERLAY_PLAY_BUTTON = 612;
    BISQUE = 613;
    INFOTEXT = 614;
    KHAKI = 615;
    WHEAT = 616;
    BOLD = 617;
    NO_HISTORICAL_LIGATURES = 618;
    BIDI_OVERRIDE = 619;
    DEEPSKYBLUE = 620;
    EASE_OUT = 621;
    CJK_IDEOGRAPHIC = 622;
    OLDSTYLE_NUMS = 623;
    MEDIA_ENTER_FULLSCREEN_BUTTON = 624;
    SUPER = 625;
    CURSIVE = 626;
    ON = 627;
    CENTRAL = 628;
    _INTERNAL_MEDIA_OVERFLOW_BUTTON = 629;
    STANDALONE = 630;
    COLUMN = 631;
    CORAL = 632;
    DESTINATION_OVER = 633;
    DISCRETIONARY_LIGATURES = 634;
    BEIGE = 635;
    TABLE_CELL = 636;
    AZURE = 637;
    TRAD_CHINESE_INFORMAL = 638;
    TITLING_CAPS = 639;
    _WEBKIT_ZOOM_IN = 640;
    BLOCK = 641;
    OUTSET = 642;
    MEDIUMVIOLETRED = 643;
    ROYALBLUE = 644;
    MENULIST_TEXT = 645;
    SW_RESIZE = 646;
    MULTIPLY = 647;
    THREEDDARKSHADOW = 648;
    WRAP = 649;
    LIGHTCORAL = 650;
    ELLIPSE = 651;
    _INTERNAL_ACTIVE_LIST_BOX_SELECTION_TEXT = 652;
    RIDGE = 653;
    _WEBKIT_AUTO = 654;
    _INTERNAL_QUIRK_INHERIT = 655;
    INITIAL = 656;
    FUCHSIA = 657;
    MENULIST_BUTTON = 658;
    BLANCHEDALMOND = 659;
    CARET = 660;
    START = 661;
    _INTERNAL_MEDIA_CAST_OFF_BUTTON = 662;
    ITALIC = 663;
    IVORY = 664;
    BUTTONTEXT = 665;
    SEMI_CONDENSED = 666;
    INLINE_GRID = 667;
    _WEBKIT_ACTIVELINK = 668;
    SERIF = 669;
    FORESTGREEN = 670;
    BENGALI = 671;
    UPRIGHT = 672;
    RESET = 673;
    BEVEL = 674;
    IDEOGRAPHIC = 675;
    DARKEN = 676;
    MEDIA_VOLUME_SLIDERTHUMB = 677;
    DEFAULT = 678;
    INSIDE = 679;
    BELOW = 680;
    HIGHLIGHT = 681;
    EMBED = 682;
    GROOVE = 683;
    NESW_RESIZE = 684;
    STACKED_FRACTIONS = 685;
    UNSAFE = 686;
    MAROON = 687;
    KANNADA = 688;
    SINGLE = 689;
    AT = 690;
    INK = 691;
    ARABIC_INDIC = 692;
    MEDIA_VOLUME_SLIDER = 693;
    COLUMN_REVERSE = 694;
    _WEBKIT_ZOOM_OUT = 695;
    FILL = 696;
    EVENODD = 697;
    DOTTED = 698;
    DIMGRAY = 699;
    DASHED = 700;
    SEAGREEN = 701;
    TRAD_CHINESE_FORMAL = 702;
    MEDIUMSLATEBLUE = 703;
    PALETURQUOISE = 704;
    INNER_SPIN_BUTTON = 705;
    REPEAT = 706;
    DARKORCHID = 707;
    _WEBKIT_ISOLATE = 708;
    SEARCHFIELD_CANCEL_BUTTON = 709;
    ALL_SMALL_CAPS = 710;
    A3 = 711;
    A5 = 712;
    A4 = 713;
    OPEN_QUOTE = 714;
    LIGHTGREEN = 715;
    SLASHED_ZERO = 716;
    COLOR_BURN = 717;
    AUTO_FLOW = 718;
    OVERLAY = 719;
    VISUAL = 720;
    SCALE_DOWN = 721;
    OVERLINE = 722;
    INSET = 723;
    MEDIUMAQUAMARINE = 724;
    SCROLL = 725;
    INVALID_VALUE = 726;
  };

  optional ValueId value_id = 4;
}

message Expr {
  required Term term = 1;
  repeated OperatorTerm operator_terms = 2;
}

// Not in grammar.
message OperatorTerm {
  required Operator _operator = 1;
  required Term term = 2;
}

message Term {
  optional UnaryOperator unary_operator = 1;
  oneof rhs {
    //  [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* |
    // TIME S* | FREQ S* | function ]
    TermPart term_part = 2;
    // | STRING
    String string = 3;
  }
  // S* | IDENT S* | URI S* | UNICODERANGE S* | hexcolor
  optional Ident ident = 4;
  optional Uri uri = 5;
  // TODO(metzman): Add UNICODERANGE token once (if) I implement it.
  optional Hexcolor hexcolor = 6;
}

// Not in grammar.
message TermPart {
  // NUMBER
  required Num number = 1;
  // S* | PERCENTAGE
  optional Num percentage = 2;  // num "%"
  // S* | LENGTH
  optional Length length = 3;
  optional Num ems = 4;  // {num}em
  optional Num exs = 5;  // {num}ex
  optional Angle angle = 6;
  optional Time time = 7;
  optional Freq freq = 8;
  optional Function function = 9;
}

message Function {
  required FunctionToken function_token = 1;
  required Expr expr = 2;
}

message Hexcolor {
  required HexcolorThree first_three = 1;
  optional HexcolorThree last_three = 2;
}

// Not in grammar.
message HexcolorThree {
  // 0-9A-Za-z
  required H ascii_value_1 = 1;
  required H ascii_value_2 = 2;
  required H ascii_value_3 = 3;
}

message Input {
  enum CSSParserMode {
    kHTMLStandardMode = 0;
    kHTMLQuirksMode = 1;
    kSVGAttributeMode = 2;
    kCSSViewportRuleMode = 3;
    kCSSFontFaceRuleMode = 4;
    kUASheetMode = 5;
  }
  enum SecureContextMode {
    kInsecureContext = 0;
    kSecureContext = 1;
  }
  required CSSParserMode css_parser_mode = 1;
  required bool defer_property_parsing = 2;
  required StyleSheet style_sheet = 3;
  required bool is_dynamic_profile = 4;
  required SecureContextMode secure_context_mode = 5;
}
