[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

hyatt hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:23:27 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 3dcf6196aa6bb4014f436301ece84249aff0c35e
Author: hyatt <hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Jan 23 19:34:47 2004 +0000

    	Stub out @namespace support.  Implement the callbacks into the stylesheet that will enable us to
    	store namespace information for simple selectors.
    
    	Basically with this patch we no longer bomb when we encounter namespaced stylesheets, but we don't handle
    	them properly yet either.
    
            Reviewed by kocienda
    
            * khtml/css/css_stylesheetimpl.cpp:
            (CSSStyleSheetImpl::addNamespace):
            (CSSStyleSheetImpl::determineNamespace):
            * khtml/css/css_stylesheetimpl.h:
            * khtml/css/cssparser.cpp:
            (DOM::CSSParser::lex):
            * khtml/css/cssparser.h:
            * khtml/css/parser.cpp:
            * khtml/css/parser.h:
            * khtml/css/parser.y:
            * khtml/css/tokenizer.cpp:
            * khtml/css/tokenizer.flex:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@5971 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index c343e44..f074570 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,26 @@
+2004-01-23  David Hyatt  <hyatt at apple.com>
+
+	Stub out @namespace support.  Implement the callbacks into the stylesheet that will enable us to
+	store namespace information for simple selectors.
+
+	Basically with this patch we no longer bomb when we encounter namespaced stylesheets, but we don't handle
+	them properly yet either.
+	
+        Reviewed by kocienda
+
+        * khtml/css/css_stylesheetimpl.cpp:
+        (CSSStyleSheetImpl::addNamespace):
+        (CSSStyleSheetImpl::determineNamespace):
+        * khtml/css/css_stylesheetimpl.h:
+        * khtml/css/cssparser.cpp:
+        (DOM::CSSParser::lex):
+        * khtml/css/cssparser.h:
+        * khtml/css/parser.cpp:
+        * khtml/css/parser.h:
+        * khtml/css/parser.y:
+        * khtml/css/tokenizer.cpp:
+        * khtml/css/tokenizer.flex:
+
 2004-01-23  Ken Kocienda  <kocienda at apple.com>
 
         Reviewed by Hyatt
diff --git a/WebCore/khtml/css/css_stylesheetimpl.cpp b/WebCore/khtml/css/css_stylesheetimpl.cpp
index 6cb9c84..8e1cde7 100644
--- a/WebCore/khtml/css/css_stylesheetimpl.cpp
+++ b/WebCore/khtml/css/css_stylesheetimpl.cpp
@@ -195,6 +195,16 @@ void CSSStyleSheetImpl::deleteRule( unsigned long index, int &exceptioncode )
     b->deref();
 }
 
+void CSSStyleSheetImpl::addNamespace(const DOM::DOMString& prefix, const DOM::DOMString& uri)
+{
+    printf("Adding namespace.\n");
+}
+
+void CSSStyleSheetImpl::determineNamespace(CSSSelector* selector, const DOM::DOMString& prefix)
+{
+    printf("Determining namespace.\n");
+}
+
 bool CSSStyleSheetImpl::parseString(const DOMString &string, bool strict)
 {
 #ifdef CSS_STYLESHEET_DEBUG
diff --git a/WebCore/khtml/css/css_stylesheetimpl.h b/WebCore/khtml/css/css_stylesheetimpl.h
index 78c3bea..5ae0a14 100644
--- a/WebCore/khtml/css/css_stylesheetimpl.h
+++ b/WebCore/khtml/css/css_stylesheetimpl.h
@@ -97,6 +97,9 @@ public:
     unsigned long insertRule ( const DOM::DOMString &rule, unsigned long index, int &exceptioncode );
     void deleteRule ( unsigned long index, int &exceptioncode );
 
+    void addNamespace(const DOM::DOMString& prefix, const DOM::DOMString& uri);
+    void determineNamespace(CSSSelector* selector, const DOM::DOMString& prefix);
+    
     virtual bool parseString( const DOMString &string, bool strict = true );
 
     bool isLoading();
diff --git a/WebCore/khtml/css/cssparser.cpp b/WebCore/khtml/css/cssparser.cpp
index 60a94dc..1efd54e 100644
--- a/WebCore/khtml/css/cssparser.cpp
+++ b/WebCore/khtml/css/cssparser.cpp
@@ -1956,6 +1956,7 @@ int DOM::CSSParser::lex( void *_yylval ) {
     case MEDIA_SYM:
     case FONT_FACE_SYM:
     case CHARSET_SYM:
+    case NAMESPACE_SYM:
 
     case IMPORTANT_SYM:
 	break;
diff --git a/WebCore/khtml/css/cssparser.h b/WebCore/khtml/css/cssparser.h
index f95532a..d3aaa04 100644
--- a/WebCore/khtml/css/cssparser.h
+++ b/WebCore/khtml/css/cssparser.h
@@ -92,7 +92,7 @@ namespace DOM {
 
         ~Function() { delete args; }
     };
-
+    
     class CSSParser
     {
     public:
diff --git a/WebCore/khtml/css/parser.cpp b/WebCore/khtml/css/parser.cpp
index d5a3b12..b37ac5f 100644
--- a/WebCore/khtml/css/parser.cpp
+++ b/WebCore/khtml/css/parser.cpp
@@ -26,32 +26,33 @@
 #define	MEDIA_SYM	269
 #define	FONT_FACE_SYM	270
 #define	CHARSET_SYM	271
-#define	KHTML_RULE_SYM	272
-#define	KHTML_DECLS_SYM	273
-#define	KHTML_VALUE_SYM	274
-#define	IMPORTANT_SYM	275
-#define	QEMS	276
-#define	EMS	277
-#define	EXS	278
-#define	PXS	279
-#define	CMS	280
-#define	MMS	281
-#define	INS	282
-#define	PTS	283
-#define	PCS	284
-#define	DEGS	285
-#define	RADS	286
-#define	GRADS	287
-#define	MSECS	288
-#define	SECS	289
-#define	HERZ	290
-#define	KHERZ	291
-#define	DIMEN	292
-#define	PERCENTAGE	293
-#define	NUMBER	294
-#define	URI	295
-#define	FUNCTION	296
-#define	UNICODERANGE	297
+#define	NAMESPACE_SYM	272
+#define	KHTML_RULE_SYM	273
+#define	KHTML_DECLS_SYM	274
+#define	KHTML_VALUE_SYM	275
+#define	IMPORTANT_SYM	276
+#define	QEMS	277
+#define	EMS	278
+#define	EXS	279
+#define	PXS	280
+#define	CMS	281
+#define	MMS	282
+#define	INS	283
+#define	PTS	284
+#define	PCS	285
+#define	DEGS	286
+#define	RADS	287
+#define	GRADS	288
+#define	MSECS	289
+#define	SECS	290
+#define	HERZ	291
+#define	KHERZ	292
+#define	DIMEN	293
+#define	PERCENTAGE	294
+#define	NUMBER	295
+#define	URI	296
+#define	FUNCTION	297
+#define	UNICODERANGE	298
 
 #line 1 "parser.y"
 
@@ -181,26 +182,26 @@ static int cssyylex( YYSTYPE *yylval ) {
 
 
 
-#define	YYFINAL		275
+#define	YYFINAL		310
 #define	YYFLAG		-32768
-#define	YYNTBASE	61
+#define	YYNTBASE	63
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 297 ? yytranslate[x] : 110)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 298 ? yytranslate[x] : 116)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,    59,     2,     2,     2,     2,     2,
-    57,    54,    51,    50,    53,    14,    58,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,    13,    49,     2,
-    56,    52,     2,    60,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,    61,     2,     2,     2,     2,     2,
+    59,    13,    53,    52,    55,    15,    60,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,    14,    51,     2,
+    58,    54,     2,    62,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-    15,     2,    55,     2,     2,     2,     2,     2,     2,     2,
+    16,     2,    57,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,    47,     2,    48,     2,     2,     2,     2,     2,
+     2,     2,    49,    56,    50,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -214,101 +215,112 @@ static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    16,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-    40,    41,    42,    43,    44,    45,    46
+     7,     8,     9,    10,    11,    12,    17,    18,    19,    20,
+    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+    41,    42,    43,    44,    45,    46,    47,    48
 };
 
 #if YYDEBUG != 0
 static const short yyprhs[] = {     0,
-     0,     5,     8,    11,    14,    21,    27,    33,    34,    37,
-    38,    41,    44,    45,    51,    55,    59,    60,    64,    65,
-    69,    71,    73,    75,    77,    79,    81,    88,    92,    96,
-    98,   100,   101,   103,   104,   106,   111,   114,   122,   123,
-   127,   130,   134,   138,   142,   146,   149,   152,   153,   155,
-   157,   163,   165,   170,   173,   175,   179,   182,   185,   189,
-   192,   194,   196,   198,   201,   204,   206,   208,   210,   212,
-   215,   218,   223,   232,   234,   236,   238,   240,   242,   244,
-   246,   248,   251,   255,   262,   264,   267,   269,   273,   275,
-   279,   284,   288,   294,   299,   304,   311,   317,   320,   327,
-   329,   333,   336,   339,   340,   342,   346,   349,   352,   355,
-   356,   358,   361,   364,   367,   370,   374,   377,   380,   382,
-   385,   387,   390,   393,   396,   399,   402,   405,   408,   411,
-   414,   417,   420,   423,   426,   429,   432,   435,   438,   441,
-   447,   451,   454,   458,   462,   465,   471,   475,   477
+     0,     6,     9,    12,    15,    22,    28,    34,    35,    38,
+    39,    42,    45,    46,    52,    56,    60,    61,    65,    66,
+    70,    71,    75,    77,    79,    81,    83,    85,    87,    94,
+    98,   102,   109,   113,   117,   118,   121,   123,   125,   126,
+   128,   129,   131,   136,   139,   147,   148,   152,   155,   159,
+   163,   167,   171,   174,   177,   178,   180,   182,   188,   190,
+   195,   198,   200,   204,   207,   208,   210,   212,   215,   219,
+   222,   227,   233,   238,   240,   242,   244,   247,   250,   252,
+   254,   256,   258,   261,   264,   269,   278,   285,   296,   298,
+   300,   302,   304,   306,   308,   310,   312,   315,   319,   326,
+   328,   331,   333,   337,   339,   343,   348,   352,   358,   363,
+   368,   375,   381,   384,   391,   393,   397,   400,   403,   404,
+   406,   410,   413,   416,   419,   420,   422,   425,   428,   431,
+   434,   438,   441,   444,   446,   449,   451,   454,   457,   460,
+   463,   466,   469,   472,   475,   478,   481,   484,   487,   490,
+   493,   496,   499,   502,   505,   511,   515,   518,   522,   526,
+   529,   535,   539,   541
 };
 
-static const short yyrhs[] = {    67,
-    66,    68,    69,     0,    62,    65,     0,    63,    65,     0,
-    64,    65,     0,    21,    47,    65,    82,    65,    48,     0,
-    22,    47,    65,    95,    48,     0,    23,    47,    65,   100,
-    48,     0,     0,    65,     3,     0,     0,    66,     4,     0,
-    66,     3,     0,     0,    20,    65,    10,    65,    49,     0,
-    20,     1,   108,     0,    20,     1,    49,     0,     0,    68,
-    71,    66,     0,     0,    69,    70,    66,     0,    82,     0,
-    75,     0,    78,     0,    79,     0,   107,     0,   106,     0,
-    16,    65,    72,    65,    73,    49,     0,    16,     1,   108,
-     0,    16,     1,    49,     0,    10,     0,    44,     0,     0,
-    74,     0,     0,    77,     0,    74,    50,    65,    77,     0,
-    74,     1,     0,    18,    65,    74,    47,    65,    76,    48,
-     0,     0,    76,    82,    65,     0,    11,    65,     0,    17,
-     1,   108,     0,    17,     1,    49,     0,    19,     1,   108,
-     0,    19,     1,    49,     0,    51,    65,     0,    52,    65,
-     0,     0,    53,     0,    51,     0,    83,    47,    65,    95,
-    48,     0,    84,     0,    83,    50,    65,    84,     0,    83,
-     1,     0,    85,     0,    84,    80,    85,     0,    84,     1,
-     0,    86,    65,     0,    86,    87,    65,     0,    87,    65,
-     0,    11,     0,    54,     0,    88,     0,    87,    88,     0,
-    87,     1,     0,    12,     0,    89,     0,    91,     0,    94,
-     0,    14,    11,     0,    11,    65,     0,    15,    65,    90,
-    55,     0,    15,    65,    90,    92,    65,    93,    65,    55,
-     0,    56,     0,     5,     0,     6,     0,     7,     0,     8,
-     0,     9,     0,    11,     0,    10,     0,    13,    11,     0,
-    13,    13,    11,     0,    13,    45,    65,    85,    65,    57,
-     0,    97,     0,    96,    97,     0,    96,     0,     1,   109,
-     1,     0,     1,     0,    97,    49,    65,     0,    97,   109,
-    49,    65,     0,     1,    49,    65,     0,     1,   109,     1,
-    49,    65,     0,    96,    97,    49,    65,     0,    96,     1,
-    49,    65,     0,    96,     1,   109,     1,    49,    65,     0,
-    98,    13,    65,   100,    99,     0,    98,     1,     0,    98,
-    13,    65,     1,   100,    99,     0,    99,     0,    98,    13,
-    65,     0,    11,    65,     0,    24,    65,     0,     0,   102,
-     0,   100,   101,   102,     0,   100,     1,     0,    58,    65,
-     0,    50,    65,     0,     0,   103,     0,    81,   103,     0,
-    10,    65,     0,    11,    65,     0,    41,    65,     0,    81,
-    41,    65,     0,    44,    65,     0,    46,    65,     0,   105,
-     0,    59,    65,     0,   104,     0,    43,    65,     0,    42,
-    65,     0,    28,    65,     0,    29,    65,     0,    30,    65,
-     0,    31,    65,     0,    32,    65,     0,    33,    65,     0,
-    34,    65,     0,    35,    65,     0,    36,    65,     0,    37,
-    65,     0,    38,    65,     0,    39,    65,     0,    40,    65,
-     0,    26,    65,     0,    25,    65,     0,    27,    65,     0,
-    45,    65,   100,    57,    65,     0,    45,    65,     1,     0,
-    12,    65,     0,    60,     1,   108,     0,    60,     1,    49,
-     0,     1,   108,     0,    47,     1,   109,     1,    48,     0,
-    47,     1,    48,     0,   108,     0,   109,     1,   108,     0
+static const short yyrhs[] = {    69,
+    68,    70,    71,    72,     0,    64,    67,     0,    65,    67,
+     0,    66,    67,     0,    23,    49,    67,    87,    67,    50,
+     0,    24,    49,    67,   101,    50,     0,    25,    49,    67,
+   106,    50,     0,     0,    67,     3,     0,     0,    68,     4,
+     0,    68,     3,     0,     0,    21,    67,    10,    67,    51,
+     0,    21,     1,   114,     0,    21,     1,    51,     0,     0,
+    70,    74,    68,     0,     0,    71,    75,    68,     0,     0,
+    72,    73,    68,     0,    87,     0,    80,     0,    83,     0,
+    84,     0,   113,     0,   112,     0,    17,    67,    77,    67,
+    78,    51,     0,    17,     1,   114,     0,    17,     1,    51,
+     0,    22,    67,    76,    77,    67,    51,     0,    22,     1,
+   114,     0,    22,     1,    51,     0,     0,    11,     3,     0,
+    10,     0,    46,     0,     0,    79,     0,     0,    82,     0,
+    79,    52,    67,    82,     0,    79,     1,     0,    19,    67,
+    79,    49,    67,    81,    50,     0,     0,    81,    87,    67,
+     0,    11,    67,     0,    18,     1,   114,     0,    18,     1,
+    51,     0,    20,     1,   114,     0,    20,     1,    51,     0,
+    53,    67,     0,    54,    67,     0,     0,    55,     0,    53,
+     0,    88,    49,    67,   101,    50,     0,    89,     0,    88,
+    52,    67,    89,     0,    88,     1,     0,    91,     0,    89,
+    85,    91,     0,    89,     1,     0,     0,    13,     0,    11,
+     0,    92,    67,     0,    92,    93,    67,     0,    93,    67,
+     0,    90,    56,    92,    67,     0,    90,    56,    92,    93,
+    67,     0,    90,    56,    93,    67,     0,    11,     0,    13,
+     0,    94,     0,    93,    94,     0,    93,     1,     0,    12,
+     0,    95,     0,    97,     0,   100,     0,    15,    11,     0,
+    11,    67,     0,    16,    67,    96,    57,     0,    16,    67,
+    96,    98,    67,    99,    67,    57,     0,    16,    67,    90,
+    56,    96,    57,     0,    16,    67,    90,    56,    96,    98,
+    67,    99,    67,    57,     0,    58,     0,     5,     0,     6,
+     0,     7,     0,     8,     0,     9,     0,    11,     0,    10,
+     0,    14,    11,     0,    14,    14,    11,     0,    14,    47,
+    67,    91,    67,    59,     0,   103,     0,   102,   103,     0,
+   102,     0,     1,   115,     1,     0,     1,     0,   103,    51,
+    67,     0,   103,   115,    51,    67,     0,     1,    51,    67,
+     0,     1,   115,     1,    51,    67,     0,   102,   103,    51,
+    67,     0,   102,     1,    51,    67,     0,   102,     1,   115,
+     1,    51,    67,     0,   104,    14,    67,   106,   105,     0,
+   104,     1,     0,   104,    14,    67,     1,   106,   105,     0,
+   105,     0,   104,    14,    67,     0,    11,    67,     0,    26,
+    67,     0,     0,   108,     0,   106,   107,   108,     0,   106,
+     1,     0,    60,    67,     0,    52,    67,     0,     0,   109,
+     0,    86,   109,     0,    10,    67,     0,    11,    67,     0,
+    43,    67,     0,    86,    43,    67,     0,    46,    67,     0,
+    48,    67,     0,   111,     0,    61,    67,     0,   110,     0,
+    45,    67,     0,    44,    67,     0,    30,    67,     0,    31,
+    67,     0,    32,    67,     0,    33,    67,     0,    34,    67,
+     0,    35,    67,     0,    36,    67,     0,    37,    67,     0,
+    38,    67,     0,    39,    67,     0,    40,    67,     0,    41,
+    67,     0,    42,    67,     0,    28,    67,     0,    27,    67,
+     0,    29,    67,     0,    47,    67,   106,    59,    67,     0,
+    47,    67,     1,     0,    12,    67,     0,    62,     1,   114,
+     0,    62,     1,    51,     0,     1,   114,     0,    49,     1,
+   115,     1,    50,     0,    49,     1,    50,     0,   114,     0,
+   115,     1,   114,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   230,   232,   233,   234,   237,   244,   250,   275,   277,   280,
-   282,   283,   286,   288,   293,   294,   297,   299,   310,   312,
-   322,   324,   325,   326,   327,   328,   331,   344,   347,   352,
-   354,   357,   361,   365,   369,   373,   378,   384,   398,   400,
-   409,   431,   435,   440,   444,   449,   451,   452,   455,   457,
-   460,   480,   494,   508,   514,   518,   541,   547,   552,   557,
-   564,   585,   590,   595,   605,   611,   618,   619,   620,   623,
-   632,   656,   662,   670,   674,   677,   680,   683,   686,   691,
-   693,   696,   702,   708,   716,   720,   725,   728,   734,   742,
-   746,   749,   755,   761,   766,   772,   780,   803,   807,   815,
-   820,   827,   834,   836,   839,   844,   857,   863,   867,   870,
-   875,   877,   878,   879,   886,   887,   888,   889,   890,   891,
-   893,   898,   900,   901,   902,   903,   904,   905,   906,   907,
-   908,   909,   910,   911,   912,   913,   914,   915,   916,   920,
-   928,   943,   950,   957,   965,   991,   993,   996,   998
+   236,   238,   239,   240,   243,   250,   256,   281,   283,   286,
+   288,   289,   292,   294,   299,   300,   303,   305,   315,   317,
+   320,   322,   332,   334,   335,   336,   337,   338,   341,   354,
+   357,   362,   371,   372,   375,   377,   380,   382,   385,   389,
+   393,   397,   401,   406,   412,   426,   428,   437,   459,   463,
+   468,   472,   477,   479,   480,   483,   485,   488,   508,   522,
+   536,   542,   546,   569,   575,   577,   578,   581,   586,   591,
+   596,   603,   612,   623,   644,   649,   654,   664,   670,   677,
+   678,   679,   682,   691,   715,   721,   727,   735,   746,   750,
+   753,   756,   759,   762,   767,   769,   772,   778,   784,   792,
+   796,   801,   804,   810,   818,   822,   825,   831,   837,   842,
+   848,   856,   879,   883,   891,   896,   903,   910,   912,   915,
+   920,   933,   939,   943,   946,   951,   953,   954,   955,   962,
+   963,   964,   965,   966,   967,   969,   974,   976,   977,   978,
+   979,   980,   981,   982,   983,   984,   985,   986,   987,   988,
+   989,   990,   991,   992,   996,  1004,  1019,  1026,  1033,  1041,
+  1067,  1069,  1072,  1074
 };
 #endif
 
@@ -317,276 +329,295 @@ static const short yyrline[] = { 0,
 
 static const char * const yytname[] = {   "$","error","$undefined.","S","SGML_CD",
 "INCLUDES","DASHMATCH","BEGINSWITH","ENDSWITH","CONTAINS","STRING","IDENT","HASH",
-"':'","'.'","'['","IMPORT_SYM","PAGE_SYM","MEDIA_SYM","FONT_FACE_SYM","CHARSET_SYM",
-"KHTML_RULE_SYM","KHTML_DECLS_SYM","KHTML_VALUE_SYM","IMPORTANT_SYM","QEMS",
-"EMS","EXS","PXS","CMS","MMS","INS","PTS","PCS","DEGS","RADS","GRADS","MSECS",
-"SECS","HERZ","KHERZ","DIMEN","PERCENTAGE","NUMBER","URI","FUNCTION","UNICODERANGE",
-"'{'","'}'","';'","','","'+'","'>'","'-'","'*'","']'","'='","')'","'/'","'#'",
-"'@'","stylesheet","khtml_rule","khtml_decls","khtml_value","maybe_space","maybe_sgml",
-"maybe_charset","import_list","rule_list","rule","import","string_or_uri","maybe_media_list",
+"'*'","':'","'.'","'['","IMPORT_SYM","PAGE_SYM","MEDIA_SYM","FONT_FACE_SYM",
+"CHARSET_SYM","NAMESPACE_SYM","KHTML_RULE_SYM","KHTML_DECLS_SYM","KHTML_VALUE_SYM",
+"IMPORTANT_SYM","QEMS","EMS","EXS","PXS","CMS","MMS","INS","PTS","PCS","DEGS",
+"RADS","GRADS","MSECS","SECS","HERZ","KHERZ","DIMEN","PERCENTAGE","NUMBER","URI",
+"FUNCTION","UNICODERANGE","'{'","'}'","';'","','","'+'","'>'","'-'","'|'","']'",
+"'='","')'","'/'","'#'","'@'","stylesheet","khtml_rule","khtml_decls","khtml_value",
+"maybe_space","maybe_sgml","maybe_charset","import_list","namespace_list","rule_list",
+"rule","import","namespace","maybe_ns_prefix","string_or_uri","maybe_media_list",
 "media_list","media","ruleset_list","medium","page","font_face","combinator",
-"unary_operator","ruleset","selector_list","selector","simple_selector","element_name",
-"specifier_list","specifier","class","attrib_id","attrib","match","ident_or_string",
-"pseudo","declaration_list","decl_list","declaration","property","prio","expr",
-"operator","term","unary_term","function","hexcolor","invalid_at","invalid_rule",
-"invalid_block","invalid_block_list", NULL
+"unary_operator","ruleset","selector_list","selector","namespace_selector","simple_selector",
+"element_name","specifier_list","specifier","class","attrib_id","attrib","match",
+"ident_or_string","pseudo","declaration_list","decl_list","declaration","property",
+"prio","expr","operator","term","unary_term","function","hexcolor","invalid_at",
+"invalid_rule","invalid_block","invalid_block_list", NULL
 };
 #endif
 
 static const short yyr1[] = {     0,
-    61,    61,    61,    61,    62,    63,    64,    65,    65,    66,
-    66,    66,    67,    67,    67,    67,    68,    68,    69,    69,
-    70,    70,    70,    70,    70,    70,    71,    71,    71,    72,
-    72,    73,    73,    74,    74,    74,    74,    75,    76,    76,
-    77,    78,    78,    79,    79,    80,    80,    80,    81,    81,
-    82,    83,    83,    83,    84,    84,    84,    85,    85,    85,
-    86,    86,    87,    87,    87,    88,    88,    88,    88,    89,
-    90,    91,    91,    92,    92,    92,    92,    92,    92,    93,
-    93,    94,    94,    94,    95,    95,    95,    95,    95,    96,
-    96,    96,    96,    96,    96,    96,    97,    97,    97,    97,
-    97,    98,    99,    99,   100,   100,   100,   101,   101,   101,
-   102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
-   102,   103,   103,   103,   103,   103,   103,   103,   103,   103,
-   103,   103,   103,   103,   103,   103,   103,   103,   103,   104,
-   104,   105,   106,   106,   107,   108,   108,   109,   109
+    63,    63,    63,    63,    64,    65,    66,    67,    67,    68,
+    68,    68,    69,    69,    69,    69,    70,    70,    71,    71,
+    72,    72,    73,    73,    73,    73,    73,    73,    74,    74,
+    74,    75,    75,    75,    76,    76,    77,    77,    78,    78,
+    79,    79,    79,    79,    80,    81,    81,    82,    83,    83,
+    84,    84,    85,    85,    85,    86,    86,    87,    88,    88,
+    88,    89,    89,    89,    90,    90,    90,    91,    91,    91,
+    91,    91,    91,    92,    92,    93,    93,    93,    94,    94,
+    94,    94,    95,    96,    97,    97,    97,    97,    98,    98,
+    98,    98,    98,    98,    99,    99,   100,   100,   100,   101,
+   101,   101,   101,   101,   102,   102,   102,   102,   102,   102,
+   102,   103,   103,   103,   103,   103,   104,   105,   105,   106,
+   106,   106,   107,   107,   107,   108,   108,   108,   108,   108,
+   108,   108,   108,   108,   108,   108,   109,   109,   109,   109,
+   109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
+   109,   109,   109,   109,   110,   110,   111,   112,   112,   113,
+   114,   114,   115,   115
 };
 
 static const short yyr2[] = {     0,
-     4,     2,     2,     2,     6,     5,     5,     0,     2,     0,
+     5,     2,     2,     2,     6,     5,     5,     0,     2,     0,
      2,     2,     0,     5,     3,     3,     0,     3,     0,     3,
-     1,     1,     1,     1,     1,     1,     6,     3,     3,     1,
-     1,     0,     1,     0,     1,     4,     2,     7,     0,     3,
-     2,     3,     3,     3,     3,     2,     2,     0,     1,     1,
-     5,     1,     4,     2,     1,     3,     2,     2,     3,     2,
-     1,     1,     1,     2,     2,     1,     1,     1,     1,     2,
-     2,     4,     8,     1,     1,     1,     1,     1,     1,     1,
-     1,     2,     3,     6,     1,     2,     1,     3,     1,     3,
-     4,     3,     5,     4,     4,     6,     5,     2,     6,     1,
-     3,     2,     2,     0,     1,     3,     2,     2,     2,     0,
-     1,     2,     2,     2,     2,     3,     2,     2,     1,     2,
-     1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     5,
-     3,     2,     3,     3,     2,     5,     3,     1,     3
+     0,     3,     1,     1,     1,     1,     1,     1,     6,     3,
+     3,     6,     3,     3,     0,     2,     1,     1,     0,     1,
+     0,     1,     4,     2,     7,     0,     3,     2,     3,     3,
+     3,     3,     2,     2,     0,     1,     1,     5,     1,     4,
+     2,     1,     3,     2,     0,     1,     1,     2,     3,     2,
+     4,     5,     4,     1,     1,     1,     2,     2,     1,     1,
+     1,     1,     2,     2,     4,     8,     6,    10,     1,     1,
+     1,     1,     1,     1,     1,     1,     2,     3,     6,     1,
+     2,     1,     3,     1,     3,     4,     3,     5,     4,     4,
+     6,     5,     2,     6,     1,     3,     2,     2,     0,     1,
+     3,     2,     2,     2,     0,     1,     2,     2,     2,     2,
+     3,     2,     2,     1,     2,     1,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     5,     3,     2,     3,     3,     2,
+     5,     3,     1,     3
 };
 
 static const short yydefact[] = {    13,
      0,     0,     0,     0,     8,     8,     8,    10,     0,     0,
      8,     8,     8,     2,     3,     4,    17,     0,    16,    15,
-     9,     8,     0,     0,     0,    12,    11,    19,     0,     0,
-    61,    66,     0,     0,     8,    62,     8,     0,     0,    55,
-     8,     0,    63,    67,    68,    69,    89,     8,     8,     0,
-     0,    85,     0,   100,     8,     8,     8,     8,     8,     8,
+     9,     8,    65,     0,     0,    12,    11,    19,     0,     0,
+    74,    79,    75,     0,     0,     8,     8,     0,     0,     0,
+    62,     8,     0,    76,    80,    81,    82,   104,     8,     8,
+     0,     0,   100,     0,   115,     8,     8,     8,     8,     8,
+     8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
      8,     8,     8,     8,     8,     8,     8,     8,     8,     8,
-     8,     8,     8,     8,     8,     8,     8,     8,     8,    50,
-    49,     8,     0,     0,   105,   111,   121,   119,     0,     0,
-    10,   147,   148,     0,    14,    82,     0,     8,    70,     0,
-     0,    54,     8,     8,    57,     8,     8,     0,    58,     0,
-    65,    60,    64,     8,     0,   102,   103,     6,     0,    86,
-     8,     0,    98,     8,   113,   114,   142,   138,   137,   139,
-   124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-   134,   135,   136,   115,   123,   122,   117,     0,   118,   120,
-     8,   112,   107,     7,     8,     8,     0,     0,     0,     0,
-     0,     8,     0,     0,    10,    22,    23,    24,    21,    26,
-    25,    18,     0,    83,     0,     8,     0,     5,     0,     0,
-    46,    47,    56,    59,    92,    88,     8,     0,     8,    90,
-     0,     8,     0,   141,     0,   116,   109,   108,   106,    29,
-    28,    30,    31,     8,   145,     0,    34,     0,     0,    20,
-   146,   149,     8,    71,    75,    76,    77,    78,    79,    72,
-    74,     8,     0,     0,     8,    95,     0,    94,    91,     0,
-     0,     8,    34,    43,    42,     8,     0,    35,    45,    44,
-   144,   143,     0,     0,    51,    93,     8,     0,    97,   140,
-     0,     0,    41,    37,     8,     8,    84,    81,    80,     8,
-    96,    99,    27,    39,     0,     0,     0,    36,    73,    38,
-     8,    40,     0,     0,     0
+    57,    56,     8,     0,     0,   120,   126,   136,   134,     0,
+    21,    10,   162,   163,     0,    14,    97,     0,     8,    83,
+    65,     0,    61,     8,     8,    64,     8,     8,    65,     0,
+    68,     0,    78,    70,    77,     8,     0,   117,   118,     6,
+     0,   101,     8,     0,   113,     8,   128,   129,   157,   153,
+   152,   154,   139,   140,   141,   142,   143,   144,   145,   146,
+   147,   148,   149,   150,   151,   130,   138,   137,   132,     0,
+   133,   135,     8,   127,   122,     7,     8,     8,     0,     0,
+     0,     0,     0,    10,    18,     0,    98,    65,     8,    66,
+     0,     0,     5,     0,    65,    53,    54,    63,    74,    75,
+     8,     0,    69,   107,   103,     8,     0,     8,   105,     0,
+     8,     0,   156,     0,   131,   124,   123,   121,    31,    30,
+    37,    38,     8,     0,    35,     0,     0,     8,     0,     0,
+    10,    24,    25,    26,    23,    28,    27,    20,   161,   164,
+     8,    84,     0,    90,    91,    92,    93,    94,    85,    89,
+     8,     0,     0,    71,     0,    73,     8,   110,     0,   109,
+   106,     0,     0,     8,    41,    34,    33,     0,     0,   160,
+     0,    41,     0,     0,    22,     0,     8,     0,     0,    58,
+    72,   108,     8,     0,   112,   155,     8,     0,     0,    42,
+    36,     8,    50,    49,     0,    52,    51,   159,   158,    99,
+    87,     8,    96,    95,     8,   111,   114,    48,    29,    44,
+     8,     0,     8,     0,     0,     0,    32,    46,     8,    86,
+    43,    65,     0,    45,     8,    88,    47,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   273,
-     5,     6,     7,    10,    17,     8,    28,    90,   165,    91,
-   204,   251,   237,   166,   267,   238,   167,   168,   108,    83,
-    37,    38,    39,    40,    41,    42,    43,    44,   177,    45,
-   222,   260,    46,    50,    51,    52,    53,    54,    84,   157,
-    85,    86,    87,    88,   170,   171,    93,    94
+static const short yydefgoto[] = {   308,
+     5,     6,     7,   222,    17,     8,    28,    91,   163,   211,
+    92,   164,   249,   203,   268,   269,   212,   302,   270,   213,
+   214,   109,    84,    37,    38,    39,    40,    41,    42,    43,
+    44,    45,   172,    46,   231,   285,    47,    51,    52,    53,
+    54,    55,    85,   159,    86,    87,    88,    89,   216,   217,
+    94,    95
 };
 
-static const short yypact[] = {   223,
-    13,   -28,   -18,    39,-32768,-32768,-32768,-32768,     0,    15,
--32768,-32768,-32768,    87,    87,    87,    31,    99,-32768,-32768,
--32768,-32768,   129,   540,   494,-32768,-32768,   118,   159,    84,
--32768,-32768,   222,    92,-32768,-32768,-32768,    44,   178,-32768,
-   247,   162,-32768,-32768,-32768,-32768,    98,-32768,-32768,    69,
-   107,   119,    11,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+static const short yypact[] = {   201,
+    23,   -40,   -29,   -24,-32768,-32768,-32768,-32768,    70,    28,
+-32768,-32768,-32768,    40,    40,    40,    49,    46,-32768,-32768,
+-32768,-32768,   392,   113,   542,-32768,-32768,    91,   126,   120,
+    64,-32768,    82,     3,   133,-32768,-32768,    50,   226,    94,
+-32768,   253,   200,-32768,-32768,-32768,-32768,    96,-32768,-32768,
+   104,   222,   121,    14,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   608,   348,-32768,-32768,-32768,-32768,   194,   110,
--32768,-32768,-32768,   125,-32768,-32768,   109,-32768,-32768,   101,
-    82,-32768,-32768,-32768,-32768,-32768,-32768,   147,    87,   162,
--32768,    87,-32768,-32768,   148,    87,    87,-32768,   139,   120,
--32768,    32,-32768,-32768,    87,    87,    87,    87,    87,    87,
-    87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
-    87,    87,    87,    87,    87,    87,    87,   450,    87,    87,
--32768,-32768,-32768,-32768,-32768,-32768,   573,   175,   195,   149,
-   193,-32768,   214,   217,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,    31,   163,-32768,   129,-32768,    33,-32768,   540,   129,
-    87,    87,-32768,    87,    87,   187,-32768,   225,-32768,    87,
-   149,-32768,   297,-32768,   399,    87,    87,    87,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   205,   103,   216,   254,    31,
--32768,-32768,-32768,    87,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   100,   543,-32768,    87,   263,    87,    87,   573,
-   246,-32768,   104,-32768,-32768,-32768,    45,-32768,-32768,-32768,
--32768,-32768,    18,    17,-32768,    87,-32768,   246,-32768,    87,
-   174,    47,    87,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-    87,-32768,-32768,    87,   103,    23,   124,-32768,-32768,-32768,
--32768,    87,   237,   240,-32768
+-32768,-32768,-32768,   583,   390,-32768,-32768,-32768,-32768,   218,
+   170,-32768,-32768,-32768,   194,-32768,-32768,   198,-32768,-32768,
+    26,     4,-32768,-32768,-32768,-32768,-32768,-32768,   345,   398,
+    40,   200,-32768,    40,-32768,-32768,   204,    40,    40,-32768,
+   140,   159,-32768,   109,-32768,-32768,    40,    40,    40,    40,
+    40,    40,    40,    40,    40,    40,    40,    40,    40,    40,
+    40,    40,    40,    40,    40,    40,    40,    40,    40,   496,
+    40,    40,-32768,-32768,-32768,-32768,-32768,-32768,   623,   149,
+   131,   183,   117,-32768,    49,   250,-32768,   392,    64,-32768,
+   175,    85,-32768,   113,   392,    40,    40,-32768,-32768,-32768,
+   253,   200,    40,    40,   155,-32768,   234,-32768,    40,   196,
+-32768,   337,-32768,   443,    40,    40,    40,-32768,-32768,-32768,
+-32768,-32768,-32768,   206,    29,   196,   249,-32768,   269,   276,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,    49,-32768,-32768,
+-32768,    40,   240,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   233,   593,    40,   200,    40,-32768,    40,   209,    40,
+    40,   623,   284,-32768,    98,-32768,-32768,   286,   136,-32768,
+   212,   185,   225,   237,    49,    24,-32768,   160,   102,-32768,
+    40,    40,-32768,   284,-32768,    40,-32768,   236,    45,-32768,
+-32768,-32768,-32768,-32768,    99,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,    40,-32768,    40,-32768,-32768,
+-32768,   123,-32768,   102,    27,   185,-32768,    40,-32768,-32768,
+-32768,   339,    31,-32768,-32768,-32768,    40,   291,   293,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,    -5,   -82,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,     8,-32768,-32768,   -17,-32768,-32768,-32768,-32768,
-   -86,-32768,    73,   -95,-32768,   208,   -31,-32768,-32768,-32768,
--32768,-32768,-32768,    85,-32768,   218,-32768,  -226,  -117,-32768,
-   111,   219,-32768,-32768,-32768,-32768,    -6,   -37
+-32768,-32768,-32768,    -1,   -84,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,    48,-32768,    51,-32768,-32768,     5,-32768,
+-32768,-32768,-32768,  -162,-32768,   127,   205,   -87,   195,   -23,
+   -27,-32768,    84,-32768,    83,    15,-32768,   134,-32768,   290,
+-32768,  -220,  -147,-32768,   184,   262,-32768,-32768,-32768,-32768,
+    -7,   -35
 };
 
 
-#define	YYLAST		651
-
-
-static const short yytable[] = {    14,
-    15,    16,    20,   169,   249,    23,    24,    25,   172,   115,
-   113,   123,   183,     9,   122,    -8,    30,    21,    11,    21,
-    21,   262,    -8,   124,    22,    21,   258,   259,    12,   100,
-   195,   101,   191,    26,    27,   109,   112,   215,   216,   217,
-   218,   219,   116,   117,   102,   254,    18,   254,    19,   125,
-   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-   136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-   146,   147,   148,   149,   257,   231,   150,   269,   113,   213,
-   192,   188,   210,   159,    21,    13,    21,   220,   221,    21,
-   103,   255,   175,   104,   256,   -33,   256,   179,   180,    29,
-   181,   182,    99,    21,   184,    21,    21,   119,   185,    -1,
-   160,   176,   248,   236,   236,   190,   118,    48,   193,   174,
-    31,    32,    33,    34,    35,   173,   161,   162,   163,   178,
-    49,    21,    95,    89,    31,    32,    33,    34,    35,    31,
-    32,    33,    34,    35,    18,   196,   114,   245,   186,   197,
-   198,   201,   -32,   205,   -87,  -104,   207,    31,    32,    33,
-    34,    35,   111,    36,    -8,    18,   212,   121,   189,   164,
-   214,   270,    -8,    32,    33,    34,    35,    36,   105,   212,
-   271,   226,    36,   228,   212,    18,   229,   187,   -48,   -48,
-   -48,   -48,   -48,   206,   158,    18,    -8,    21,   233,   235,
-    36,   240,   242,    -8,   202,    18,    92,   243,    -8,    18,
-   211,    -8,    -8,    -8,   208,    -8,   244,   209,    -8,   246,
-   212,    18,   263,   200,   -52,   227,   250,   -52,   106,   107,
-   253,   -48,    96,    18,    97,   225,   274,    -8,   203,   275,
-   252,   261,     1,     2,     3,     4,   153,   268,   110,   264,
-   265,    18,   224,   234,   266,  -110,  -110,  -110,    32,    33,
-    34,    35,    18,   223,   239,   272,    98,   199,   120,    49,
-  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,
-  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,
-  -110,  -110,  -104,  -104,  -104,   155,  -110,   230,  -110,    21,
-    18,   152,   241,   156,  -110,     0,    55,    56,    57,    18,
-     0,   247,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,  -101,  -101,  -101,     0,    80,   153,    81,
-     0,     0,     0,     0,     0,    82,     0,  -110,  -110,  -110,
+#define	YYLAST		684
+
+
+static const short yytable[] = {    10,
+   215,    20,   194,    14,    15,    16,    21,   165,    11,    23,
+    24,    25,   117,    97,   125,   115,    98,   124,   112,    12,
+    30,   178,   265,     9,    13,    -8,    21,   126,    21,    21,
+    21,    21,    -8,    21,   101,   102,   169,    22,   170,   248,
+   111,   114,    21,   287,   243,   290,    29,   118,   119,    99,
+   103,    26,    27,   173,   127,   128,   129,   130,   131,   132,
+   133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
+   143,   144,   145,   146,   147,   148,   149,   150,   151,   218,
+   221,   152,   280,   300,   115,   187,   182,   306,   161,   224,
+   225,   226,   227,   228,   264,   -40,   291,   168,   104,   290,
+    21,   105,   174,   175,    21,   176,   177,    90,   267,   190,
+   183,   283,   284,    48,   184,    21,    -1,   206,    18,   -67,
+    19,   189,    21,    49,   192,    21,   255,    31,    32,    33,
+    34,    35,    36,    21,   207,   208,   209,   -66,    50,   305,
+   201,   229,   230,   100,    18,   201,   116,   293,   -39,   110,
+   291,   195,   200,   120,   115,   196,   197,   235,   220,   191,
+   205,  -119,  -119,  -119,   224,   225,   226,   227,   228,    18,
+    96,   123,   -65,   297,    18,    93,   202,   220,   210,   234,
+   236,   202,   220,   204,   238,    -8,   240,    21,    18,   241,
+   186,   162,    -8,    -8,   166,   267,   247,    18,   250,   199,
+   113,   245,    -8,    18,   185,   237,   252,   115,   167,   188,
+    -8,    32,    -8,    34,    35,    36,   281,   230,   160,   256,
+    -8,     1,   121,     2,     3,     4,   106,    -8,    -8,   259,
+   223,   220,    49,   261,   239,   262,   -55,   -55,   -55,   -55,
+   -55,   -55,   266,   274,    18,   277,   279,    50,    -8,   251,
+   257,    -8,    -8,    -8,    18,    -8,   246,    18,    -8,   263,
+    18,   286,   273,    -8,    32,   288,    34,    35,    36,   253,
+   292,  -102,  -119,    18,   -59,   276,   254,   -59,   107,   108,
+   294,   -55,   260,   295,   155,    18,   289,   278,   271,   296,
+   309,   298,   310,  -125,  -125,  -125,   272,   303,    18,   219,
+   301,   233,   275,   307,   181,   171,   258,   232,   299,    50,
+  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+  -125,  -125,  -119,  -119,  -119,   157,  -125,   242,  -125,    21,
+   282,   122,   198,   158,  -125,   154,    56,    57,    58,    31,
+    32,    33,    34,    35,    36,    31,    32,    33,    34,    35,
+    36,     0,     0,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,    77,    78,    79,    80,  -116,  -116,  -116,   304,    81,
+   155,    82,     0,     0,    21,     0,     0,    83,     0,  -125,
+  -125,  -125,    31,    32,    33,    34,    35,    36,   179,    32,
+   180,    34,    35,    36,     0,     0,  -125,  -125,  -125,  -125,
+  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,     0,   156,
+     0,   157,  -125,   155,  -125,     0,     0,     0,     0,   158,
+  -125,     0,  -125,  -125,  -125,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,  -125,
+  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+  -125,     0,     0,     0,   157,  -125,   193,  -125,    21,     0,
+     0,   244,   158,  -125,     0,    56,    57,    58,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,
-  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,
-  -110,  -110,  -110,  -110,     0,   154,     0,   155,  -110,   153,
-  -110,     0,     0,     0,     0,   156,  -110,     0,  -110,  -110,
-  -110,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,  -110,  -110,  -110,  -110,  -110,  -110,  -110,
-  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,  -110,
-  -110,  -110,  -110,  -110,  -110,     0,     0,     0,   155,  -110,
-   194,  -110,    21,     0,     0,   232,   156,  -110,     0,    55,
-    56,    57,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    58,    59,    60,    61,    62,    63,
-    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,    77,    78,    79,    21,     0,     0,     0,
-    80,     0,    81,    55,    56,    57,     0,     0,    82,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    58,    59,
+     0,     0,    59,    60,    61,    62,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    21,     0,     0,     0,    81,     0,
+    82,    56,    57,    58,     0,     0,    83,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    59,    60,
+    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+     0,     0,     0,   106,    81,     0,    82,     0,     0,     0,
+     0,     0,    83,   -55,   -55,   -55,   -55,   -55,   -55,    59,
+    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+    70,    71,    72,    73,    74,   153,    76,    77,     0,     0,
+     0,     0,    56,    57,    58,     0,     0,     0,     0,     0,
+     0,   -60,     0,     0,   -60,   107,   108,     0,   -55,    59,
     60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
     70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-    47,     0,    21,   105,    80,     0,    81,     0,     0,     0,
-    48,     0,    82,   -48,   -48,   -48,   -48,   -48,     0,     0,
-     0,     0,     0,    49,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    55,    56,    57,     0,  -104,  -104,  -104,   -53,
-     0,     0,   -53,   106,   107,     0,   -48,    58,    59,    60,
-    61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,     0,
-     0,     0,     0,    80,     0,    81,     0,     0,     0,     0,
-     0,    82,    58,    59,    60,    61,    62,    63,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,   151,    75,
-    76
+    80,     0,     0,     0,     0,    81,     0,    82,     0,     0,
+     0,     0,     0,    83
 };
 
-static const short yycheck[] = {     5,
-     6,     7,     9,    90,   231,    11,    12,    13,    91,    47,
-    42,     1,   108,     1,    52,     3,    22,     3,    47,     3,
-     3,   248,    10,    13,    10,     3,    10,    11,    47,    35,
-   148,    37,     1,     3,     4,    41,    42,     5,     6,     7,
-     8,     9,    48,    49,     1,     1,    47,     1,    49,    55,
-    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,    77,    78,    79,    57,   193,    82,    55,   110,   175,
-    49,   119,   165,    89,     3,    47,     3,    55,    56,     3,
-    47,    47,    98,    50,    50,    49,    50,   103,   104,     1,
-   106,   107,    11,     3,   110,     3,     3,     1,   114,     0,
-     1,    11,   230,    11,    11,   121,    48,    11,   124,    11,
-    11,    12,    13,    14,    15,     1,    17,    18,    19,    48,
-    24,     3,    49,    16,    11,    12,    13,    14,    15,    11,
-    12,    13,    14,    15,    47,   151,    49,    48,     1,   155,
-   156,   158,    49,   160,    48,    49,   162,    11,    12,    13,
-    14,    15,     1,    54,     3,    47,   173,    49,    49,    60,
-   176,    48,    11,    12,    13,    14,    15,    54,     1,   186,
-   267,   187,    54,   189,   191,    47,   192,    49,    11,    12,
-    13,    14,    15,     1,     1,    47,     3,     3,   204,   206,
-    54,   208,   209,    10,    10,    47,    48,   213,    47,    47,
-    48,    50,    51,    52,     1,    54,   222,     1,    57,   225,
-   227,    47,    49,    49,    47,     1,   232,    50,    51,    52,
-   236,    54,    11,    47,    13,    49,     0,    44,    44,     0,
-   233,   247,    20,    21,    22,    23,     1,   265,    41,   255,
-   256,    47,   180,    49,   260,    10,    11,    12,    12,    13,
-    14,    15,    47,   179,    49,   271,    45,   157,    51,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    48,    49,    50,    51,     1,    53,     3,
-    47,    83,    49,    58,    59,    -1,    10,    11,    12,    47,
-    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    -1,    51,     1,    53,
-    -1,    -1,    -1,    -1,    -1,    59,    -1,    10,    11,    12,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    25,    26,    27,    28,    29,    30,    31,    32,
-    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-    43,    44,    45,    46,    -1,    48,    -1,    50,    51,     1,
-    53,    -1,    -1,    -1,    -1,    58,    59,    -1,    10,    11,
-    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    25,    26,    27,    28,    29,    30,    31,
-    32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-    42,    43,    44,    45,    46,    -1,    -1,    -1,    50,    51,
-     1,    53,     3,    -1,    -1,    57,    58,    59,    -1,    10,
-    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    25,    26,    27,    28,    29,    30,
-    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,     3,    -1,    -1,    -1,
-    51,    -1,    53,    10,    11,    12,    -1,    -1,    59,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,
+static const short yycheck[] = {     1,
+   163,     9,   150,     5,     6,     7,     3,    92,    49,    11,
+    12,    13,    48,    11,     1,    43,    14,    53,    42,    49,
+    22,   109,   243,     1,    49,     3,     3,    14,     3,     3,
+     3,     3,    10,     3,    36,    37,    11,    10,    13,    11,
+    42,    43,     3,   264,   192,     1,     1,    49,    50,    47,
+     1,     3,     4,    50,    56,    57,    58,    59,    60,    61,
+    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,    79,    80,   164,
+   168,    83,    59,    57,   112,   121,   110,    57,    90,     5,
+     6,     7,     8,     9,   242,    51,    52,    99,    49,     1,
+     3,    52,   104,   105,     3,   107,   108,    17,    11,     1,
+   112,    10,    11,     1,   116,     3,     0,     1,    49,    56,
+    51,   123,     3,    11,   126,     3,   211,    11,    12,    13,
+    14,    15,    16,     3,    18,    19,    20,    56,    26,   302,
+    10,    57,    58,    11,    49,    10,    51,    49,    51,    56,
+    52,   153,   160,    50,   182,   157,   158,   181,   166,    51,
+   162,    49,    50,    51,     5,     6,     7,     8,     9,    49,
+    51,    51,    56,    51,    49,    50,    46,   185,    62,   181,
+   182,    46,   190,     1,   186,     3,   188,     3,    49,   191,
+    51,    22,    10,    11,     1,    11,   204,    49,   206,    51,
+     1,   203,     3,    49,     1,    51,   208,   235,    11,    51,
+    11,    12,    13,    14,    15,    16,    57,    58,     1,   221,
+     3,    21,     1,    23,    24,    25,     1,    10,    46,   231,
+    56,   239,    11,   235,     1,   237,    11,    12,    13,    14,
+    15,    16,   244,   251,    49,   253,   254,    26,    49,     1,
+    11,    52,    53,    54,    49,    56,    51,    49,    59,    51,
+    49,   263,    51,    46,    12,   267,    14,    15,    16,     1,
+   272,    50,    51,    49,    49,    51,     1,    52,    53,    54,
+   282,    56,    50,   285,     1,    49,    51,    51,     3,   291,
+     0,   293,     0,    10,    11,    12,   249,   299,    49,    50,
+   296,   175,   252,   305,   110,   101,   223,   174,   294,    26,
     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
     37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-     1,    -1,     3,     1,    51,    -1,    53,    -1,    -1,    -1,
-    11,    -1,    59,    11,    12,    13,    14,    15,    -1,    -1,
-    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    -1,    -1,
+    47,    48,    49,    50,    51,    52,    53,     1,    55,     3,
+   258,    52,   159,    60,    61,    84,    10,    11,    12,    11,
+    12,    13,    14,    15,    16,    11,    12,    13,    14,    15,
+    16,    -1,    -1,    27,    28,    29,    30,    31,    32,    33,
+    34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
+    44,    45,    46,    47,    48,    49,    50,    51,    50,    53,
+     1,    55,    -1,    -1,     3,    -1,    -1,    61,    -1,    10,
+    11,    12,    11,    12,    13,    14,    15,    16,    11,    12,
+    13,    14,    15,    16,    -1,    -1,    27,    28,    29,    30,
+    31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+    41,    42,    43,    44,    45,    46,    47,    48,    -1,    50,
+    -1,    52,    53,     1,    55,    -1,    -1,    -1,    -1,    60,
+    61,    -1,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
+    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+    38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+    48,    -1,    -1,    -1,    52,    53,     1,    55,     3,    -1,
+    -1,    59,    60,    61,    -1,    10,    11,    12,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    10,    11,    12,    -1,    47,    48,    49,    47,
-    -1,    -1,    50,    51,    52,    -1,    54,    25,    26,    27,
+    -1,    -1,    27,    28,    29,    30,    31,    32,    33,    34,
+    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,     3,    -1,    -1,    -1,    53,    -1,
+    55,    10,    11,    12,    -1,    -1,    61,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
+    29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+    39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
+    -1,    -1,    -1,     1,    53,    -1,    55,    -1,    -1,    -1,
+    -1,    -1,    61,    11,    12,    13,    14,    15,    16,    27,
+    28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+    38,    39,    40,    41,    42,    43,    44,    45,    -1,    -1,
+    -1,    -1,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
+    -1,    49,    -1,    -1,    52,    53,    54,    -1,    56,    27,
     28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-    38,    39,    40,    41,    42,    43,    44,    45,    46,    -1,
-    -1,    -1,    -1,    51,    -1,    53,    -1,    -1,    -1,    -1,
-    -1,    59,    25,    26,    27,    28,    29,    30,    31,    32,
-    33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-    43
+    38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+    48,    -1,    -1,    -1,    -1,    53,    -1,    55,    -1,    -1,
+    -1,    -1,    -1,    61
 };
 #define YYPURE 1
 
@@ -1134,20 +1165,20 @@ yyreduce:
   switch (yyn) {
 
 case 5:
-#line 238 "parser.y"
+#line 244 "parser.y"
 {
         CSSParser *p = static_cast<CSSParser *>(parser);
         p->rule = yyvsp[-2].rule;
     ;
     break;}
 case 6:
-#line 245 "parser.y"
+#line 251 "parser.y"
 {
 	/* can be empty */
     ;
     break;}
 case 7:
-#line 251 "parser.y"
+#line 257 "parser.y"
 {
 	CSSParser *p = static_cast<CSSParser *>(parser);
 	if ( yyvsp[-1].valueList ) {
@@ -1172,7 +1203,7 @@ case 7:
     ;
     break;}
 case 14:
-#line 288 "parser.y"
+#line 294 "parser.y"
 {
 #ifdef CSS_DEBUG
      kdDebug( 6080 ) << "charset rule: " << qString(yyvsp[-2].string) << endl;
@@ -1180,7 +1211,7 @@ case 14:
  ;
     break;}
 case 18:
-#line 299 "parser.y"
+#line 305 "parser.y"
 {
      CSSParser *p = static_cast<CSSParser *>(parser);
      if ( yyvsp[-1].rule && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
@@ -1190,8 +1221,8 @@ case 18:
      }
  ;
     break;}
-case 20:
-#line 312 "parser.y"
+case 22:
+#line 322 "parser.y"
 {
      CSSParser *p = static_cast<CSSParser *>(parser);
      if ( yyvsp[-1].rule && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
@@ -1201,8 +1232,8 @@ case 20:
      }
  ;
     break;}
-case 27:
-#line 332 "parser.y"
+case 29:
+#line 342 "parser.y"
 {
 #ifdef CSS_DEBUG
 	kdDebug( 6080 ) << "@import: " << qString(yyvsp[-3].string) << endl;
@@ -1216,54 +1247,73 @@ case 27:
         }
     ;
     break;}
-case 28:
-#line 344 "parser.y"
+case 30:
+#line 354 "parser.y"
 {
         yyval.rule = 0;
     ;
     break;}
-case 29:
-#line 347 "parser.y"
+case 31:
+#line 357 "parser.y"
 {
         yyval.rule = 0;
     ;
     break;}
 case 32:
-#line 358 "parser.y"
+#line 363 "parser.y"
+{
+#ifdef CSS_DEBUG
+    kdDebug( 6080 ) << "@namespace: " << qString(yyvsp[-2].string) << endl;
+#endif
+    CSSParser *p = static_cast<CSSParser *>(parser);
+    if (p->styleElement && p->styleElement->isCSSStyleSheet())
+        static_cast<CSSStyleSheetImpl*>(p->styleElement)->addNamespace(domString(yyvsp[-3].string), domString(yyvsp[-2].string));
+;
+    break;}
+case 35:
+#line 376 "parser.y"
+{ yyval.string.string = 0; ;
+    break;}
+case 36:
+#line 377 "parser.y"
+{ yyval.string = yyvsp[-1].string; ;
+    break;}
+case 39:
+#line 386 "parser.y"
 {
         yyval.mediaList = new MediaListImpl();
      ;
     break;}
-case 34:
-#line 366 "parser.y"
+case 41:
+#line 394 "parser.y"
 {
 	yyval.mediaList = 0;
     ;
     break;}
-case 35:
-#line 369 "parser.y"
+case 42:
+#line 397 "parser.y"
 {
 	yyval.mediaList = new MediaListImpl();
 	yyval.mediaList->appendMedium( domString(yyvsp[0].string).lower() );
     ;
     break;}
-case 36:
-#line 373 "parser.y"
+case 43:
+#line 401 "parser.y"
 {
 	yyval.mediaList = yyvsp[-3].mediaList;
         if (yyval.mediaList)
 	    yyval.mediaList->appendMedium( domString(yyvsp[0].string) );
     ;
     break;}
-case 37:
-#line 378 "parser.y"
+case 44:
+#line 406 "parser.y"
 {
         delete yyvsp[-1].mediaList;
         yyval.mediaList = 0;
     ;
     break;}
-case 38:
-#line 385 "parser.y"
+case 45:
+#line 413 "parser.y"
 {
 	CSSParser *p = static_cast<CSSParser *>(parser);
 	if ( yyvsp[-4].mediaList && yyvsp[-1].ruleList &&
@@ -1276,12 +1326,12 @@ case 38:
 	}
     ;
     break;}
-case 39:
-#line 399 "parser.y"
+case 46:
+#line 427 "parser.y"
 { yyval.ruleList = 0; ;
     break;}
-case 40:
-#line 400 "parser.y"
+case 47:
+#line 428 "parser.y"
 {
       yyval.ruleList = yyvsp[-2].ruleList;
       if ( yyvsp[-1].rule ) {
@@ -1290,58 +1340,58 @@ case 40:
       }
   ;
     break;}
-case 41:
-#line 410 "parser.y"
+case 48:
+#line 438 "parser.y"
 {
       yyval.string = yyvsp[-1].string;
   ;
     break;}
-case 42:
-#line 432 "parser.y"
+case 49:
+#line 460 "parser.y"
 {
       yyval.rule = 0;
     ;
     break;}
-case 43:
-#line 435 "parser.y"
+case 50:
+#line 463 "parser.y"
 {
       yyval.rule = 0;
     ;
     break;}
-case 44:
-#line 441 "parser.y"
+case 51:
+#line 469 "parser.y"
 {
       yyval.rule = 0;
     ;
     break;}
-case 45:
-#line 444 "parser.y"
+case 52:
+#line 472 "parser.y"
 {
       yyval.rule = 0;
     ;
     break;}
-case 46:
-#line 450 "parser.y"
+case 53:
+#line 478 "parser.y"
 { yyval.relation = CSSSelector::Sibling; ;
     break;}
-case 47:
-#line 451 "parser.y"
+case 54:
+#line 479 "parser.y"
 { yyval.relation = CSSSelector::Child; ;
     break;}
-case 48:
-#line 452 "parser.y"
+case 55:
+#line 480 "parser.y"
 { yyval.relation = CSSSelector::Descendant; ;
     break;}
-case 49:
-#line 456 "parser.y"
+case 56:
+#line 484 "parser.y"
 { yyval.val = -1; ;
     break;}
-case 50:
-#line 457 "parser.y"
+case 57:
+#line 485 "parser.y"
 { yyval.val = 1; ;
     break;}
-case 51:
-#line 461 "parser.y"
+case 58:
+#line 489 "parser.y"
 {
 #ifdef CSS_DEBUG
 	kdDebug( 6080 ) << "got ruleset" << endl << "  selector:" << endl;
@@ -1360,8 +1410,8 @@ case 51:
 	}
     ;
     break;}
-case 52:
-#line 481 "parser.y"
+case 59:
+#line 509 "parser.y"
 {
 	if ( yyvsp[0].selector ) {
 	    yyval.selectorList = new QPtrList<CSSSelector>;
@@ -1376,8 +1426,8 @@ case 52:
 	}
     ;
     break;}
-case 53:
-#line 494 "parser.y"
+case 60:
+#line 522 "parser.y"
 {
 	if ( yyvsp[-3].selectorList && yyvsp[0].selector ) {
 	    yyval.selectorList = yyvsp[-3].selectorList;
@@ -1393,21 +1443,21 @@ case 53:
         }
     ;
     break;}
-case 54:
-#line 508 "parser.y"
+case 61:
+#line 536 "parser.y"
 {
         delete yyvsp[-1].selectorList;
         yyval.selectorList = 0;
     ;
     break;}
-case 55:
-#line 515 "parser.y"
+case 62:
+#line 543 "parser.y"
 {
 	yyval.selector = yyvsp[0].selector;
     ;
     break;}
-case 56:
-#line 518 "parser.y"
+case 63:
+#line 546 "parser.y"
 {
     	yyval.selector = yyvsp[0].selector;
         if (!yyvsp[-2].selector) {
@@ -1432,38 +1482,84 @@ case 56:
         }
     ;
     break;}
-case 57:
-#line 541 "parser.y"
+case 64:
+#line 569 "parser.y"
 {
         delete yyvsp[-1].selector;
         yyval.selector = 0;
     ;
     break;}
-case 58:
-#line 548 "parser.y"
+case 65:
+#line 576 "parser.y"
+{ yyval.string.string = 0; yyval.string.length = 0; ;
+    break;}
+case 66:
+#line 577 "parser.y"
+{ yyval.string = yyvsp[0].string; ;
+    break;}
+case 67:
+#line 578 "parser.y"
+{ yyval.string = yyvsp[0].string; ;
+    break;}
+case 68:
+#line 582 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->tag = yyvsp[-1].element;
     ;
     break;}
-case 59:
-#line 552 "parser.y"
+case 69:
+#line 586 "parser.y"
 {
 	yyval.selector = yyvsp[-1].selector;
 	if ( yyval.selector )
             yyval.selector->tag = yyvsp[-2].element;
     ;
     break;}
-case 60:
-#line 557 "parser.y"
+case 70:
+#line 591 "parser.y"
 {
 	yyval.selector = yyvsp[-1].selector;
 	if ( yyval.selector )
             yyval.selector->tag = 0xffffffff;
     ;
     break;}
-case 61:
-#line 565 "parser.y"
+case 71:
+#line 596 "parser.y"
+{
+        yyval.selector = new CSSSelector();
+        yyval.selector->tag = yyvsp[-1].element;
+        CSSParser *p = static_cast<CSSParser *>(parser);
+        if (p->styleElement && p->styleElement->isCSSStyleSheet())
+            static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace(yyval.selector, domString(yyvsp[-3].string));
+    ;
+    break;}
+case 72:
+#line 603 "parser.y"
+{
+        yyval.selector = yyvsp[-1].selector;
+        if (yyval.selector) {
+            yyval.selector->tag = yyvsp[-2].element;
+            CSSParser *p = static_cast<CSSParser *>(parser);
+            if (p->styleElement && p->styleElement->isCSSStyleSheet())
+                static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace(yyval.selector, domString(yyvsp[-4].string));
+        }
+    ;
+    break;}
+case 73:
+#line 612 "parser.y"
+{
+        yyval.selector = yyvsp[-1].selector;
+        if (yyval.selector) {
+            yyval.selector->tag = 0xffffffff;
+            CSSParser *p = static_cast<CSSParser *>(parser);
+            if (p->styleElement && p->styleElement->isCSSStyleSheet())
+                static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace(yyval.selector, domString(yyvsp[-3].string));
+        }
+    ;
+    break;}
+case 74:
+#line 624 "parser.y"
 {
 	CSSParser *p = static_cast<CSSParser *>(parser);
 	DOM::DocumentImpl *doc = p->document();
@@ -1485,21 +1581,21 @@ case 61:
 	}
     ;
     break;}
-case 62:
-#line 585 "parser.y"
+case 75:
+#line 644 "parser.y"
 {
 	yyval.element = -1;
     ;
     break;}
-case 63:
-#line 591 "parser.y"
+case 76:
+#line 650 "parser.y"
 {
 	yyval.selector = yyvsp[0].selector;
 	yyval.selector->nonCSSHint = static_cast<CSSParser *>(parser)->nonCSSHint;
     ;
     break;}
-case 64:
-#line 595 "parser.y"
+case 77:
+#line 654 "parser.y"
 {
 	yyval.selector = yyvsp[-1].selector;
         if (yyval.selector) {
@@ -1511,15 +1607,15 @@ case 64:
         }
     ;
     break;}
-case 65:
-#line 605 "parser.y"
+case 78:
+#line 664 "parser.y"
 {
         delete yyvsp[-1].selector;
         yyval.selector = 0;
     ;
     break;}
-case 66:
-#line 612 "parser.y"
+case 79:
+#line 671 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->match = CSSSelector::Id;
@@ -1527,8 +1623,8 @@ case 66:
 	yyval.selector->value = domString(yyvsp[0].string);
     ;
     break;}
-case 70:
-#line 624 "parser.y"
+case 83:
+#line 683 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->match = CSSSelector::List;
@@ -1536,8 +1632,8 @@ case 70:
 	yyval.selector->value = domString(yyvsp[0].string);
     ;
     break;}
-case 71:
-#line 633 "parser.y"
+case 84:
+#line 692 "parser.y"
 {
 	CSSParser *p = static_cast<CSSParser *>(parser);
 	DOM::DocumentImpl *doc = p->document();
@@ -1560,16 +1656,16 @@ case 71:
 	    }
     ;
     break;}
-case 72:
-#line 657 "parser.y"
+case 85:
+#line 716 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->attr = yyvsp[-1].attribute;
 	yyval.selector->match = CSSSelector::Set;
     ;
     break;}
-case 73:
-#line 662 "parser.y"
+case 86:
+#line 721 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->attr = yyvsp[-5].attribute;
@@ -1577,60 +1673,83 @@ case 73:
 	yyval.selector->value = domString(yyvsp[-2].string);
     ;
     break;}
-case 74:
-#line 671 "parser.y"
+case 87:
+#line 727 "parser.y"
+{
+        yyval.selector = new CSSSelector();
+        yyval.selector->attr = yyvsp[-1].attribute;
+        yyval.selector->match = CSSSelector::Set;
+        CSSParser *p = static_cast<CSSParser *>(parser);
+        if (p->styleElement && p->styleElement->isCSSStyleSheet())
+            static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace(yyval.selector, domString(yyvsp[-3].string));
+    ;
+    break;}
+case 88:
+#line 735 "parser.y"
+{
+        yyval.selector = new CSSSelector();
+        yyval.selector->attr = yyvsp[-5].attribute;
+        yyval.selector->match = (CSSSelector::Match)yyvsp[-4].val;
+        yyval.selector->value = domString(yyvsp[-2].string);
+        CSSParser *p = static_cast<CSSParser *>(parser);
+        if (p->styleElement && p->styleElement->isCSSStyleSheet())
+            static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace(yyval.selector, domString(yyvsp[-7].string));
+    ;
+    break;}
+case 89:
+#line 747 "parser.y"
 {
 	yyval.val = CSSSelector::Exact;
     ;
     break;}
-case 75:
-#line 674 "parser.y"
+case 90:
+#line 750 "parser.y"
 {
 	yyval.val = CSSSelector::List;
     ;
     break;}
-case 76:
-#line 677 "parser.y"
+case 91:
+#line 753 "parser.y"
 {
 	yyval.val = CSSSelector::Hyphen;
     ;
     break;}
-case 77:
-#line 680 "parser.y"
+case 92:
+#line 756 "parser.y"
 {
 	yyval.val = CSSSelector::Begin;
     ;
     break;}
-case 78:
-#line 683 "parser.y"
+case 93:
+#line 759 "parser.y"
 {
 	yyval.val = CSSSelector::End;
     ;
     break;}
-case 79:
-#line 686 "parser.y"
+case 94:
+#line 762 "parser.y"
 {
 	yyval.val = CSSSelector::Contain;
     ;
     break;}
-case 82:
-#line 697 "parser.y"
+case 97:
+#line 773 "parser.y"
 {
         yyval.selector = new CSSSelector();
         yyval.selector->match = CSSSelector::Pseudo;
         yyval.selector->value = domString(yyvsp[0].string);
     ;
     break;}
-case 83:
-#line 703 "parser.y"
+case 98:
+#line 779 "parser.y"
 {
         yyval.selector = new CSSSelector();
         yyval.selector->match = CSSSelector::Pseudo;
         yyval.selector->value = domString(yyvsp[0].string);
     ;
     break;}
-case 84:
-#line 708 "parser.y"
+case 99:
+#line 784 "parser.y"
 {
         yyval.selector = new CSSSelector();
         yyval.selector->match = CSSSelector::Pseudo;
@@ -1638,28 +1757,28 @@ case 84:
         yyval.selector->value = domString(yyvsp[-4].string);
     ;
     break;}
-case 85:
-#line 717 "parser.y"
+case 100:
+#line 793 "parser.y"
 {
 	yyval.ok = yyvsp[0].ok;
     ;
     break;}
-case 86:
-#line 720 "parser.y"
+case 101:
+#line 796 "parser.y"
 {
 	yyval.ok = yyvsp[-1].ok;
 	if ( yyvsp[0].ok )
 	    yyval.ok = yyvsp[0].ok;
     ;
     break;}
-case 87:
-#line 725 "parser.y"
+case 102:
+#line 801 "parser.y"
 {
 	yyval.ok = yyvsp[0].ok;
     ;
     break;}
-case 88:
-#line 728 "parser.y"
+case 103:
+#line 804 "parser.y"
 {
 	yyval.ok = false;
 #ifdef CSS_DEBUG
@@ -1667,8 +1786,8 @@ case 88:
 #endif
     ;
     break;}
-case 89:
-#line 734 "parser.y"
+case 104:
+#line 810 "parser.y"
 {
 	yyval.ok = false;
 #ifdef CSS_DEBUG
@@ -1676,20 +1795,20 @@ case 89:
 #endif
     ;
     break;}
-case 90:
-#line 743 "parser.y"
+case 105:
+#line 819 "parser.y"
 {
 	yyval.ok = yyvsp[-2].ok;
     ;
     break;}
-case 91:
-#line 746 "parser.y"
+case 106:
+#line 822 "parser.y"
 {
         yyval.ok = false;
     ;
     break;}
-case 92:
-#line 749 "parser.y"
+case 107:
+#line 825 "parser.y"
 {
 	yyval.ok = false;
 #ifdef CSS_DEBUG
@@ -1697,8 +1816,8 @@ case 92:
 #endif
     ;
     break;}
-case 93:
-#line 755 "parser.y"
+case 108:
+#line 831 "parser.y"
 {
 	yyval.ok = false;
 #ifdef CSS_DEBUG
@@ -1706,16 +1825,16 @@ case 93:
 #endif
     ;
     break;}
-case 94:
-#line 761 "parser.y"
+case 109:
+#line 837 "parser.y"
 {
 	yyval.ok = yyvsp[-3].ok;
 	if ( yyvsp[-2].ok )
 	    yyval.ok = yyvsp[-2].ok;
     ;
     break;}
-case 95:
-#line 766 "parser.y"
+case 110:
+#line 842 "parser.y"
 {
 	yyval.ok = yyvsp[-3].ok;
 #ifdef CSS_DEBUG
@@ -1723,8 +1842,8 @@ case 95:
 #endif
     ;
     break;}
-case 96:
-#line 772 "parser.y"
+case 111:
+#line 848 "parser.y"
 {
 	yyval.ok = yyvsp[-5].ok;
 #ifdef CSS_DEBUG
@@ -1732,8 +1851,8 @@ case 96:
 #endif
     ;
     break;}
-case 97:
-#line 781 "parser.y"
+case 112:
+#line 857 "parser.y"
 {
 	yyval.ok = false;
 	CSSParser *p = static_cast<CSSParser *>(parser);
@@ -1757,14 +1876,14 @@ case 97:
 	p->valueList = 0;
     ;
     break;}
-case 98:
-#line 804 "parser.y"
+case 113:
+#line 880 "parser.y"
 {
         yyval.ok = false;
     ;
     break;}
-case 99:
-#line 808 "parser.y"
+case 114:
+#line 884 "parser.y"
 {
         /* The default movable type template has letter-spacing: .none;  Handle this by looking for
         error tokens at the start of an expr, recover the expr and then treat as an error, cleaning
@@ -1773,44 +1892,44 @@ case 99:
         yyval.ok = false;
     ;
     break;}
-case 100:
-#line 816 "parser.y"
+case 115:
+#line 892 "parser.y"
 {
         /* Handle this case: div { text-align: center; !important } Just reduce away the stray !important. */
         yyval.ok = false;
     ;
     break;}
-case 101:
-#line 821 "parser.y"
+case 116:
+#line 897 "parser.y"
 {
         /* div { font-family: } Just reduce away this property with no value. */
         yyval.ok = false;
     ;
     break;}
-case 102:
-#line 828 "parser.y"
+case 117:
+#line 904 "parser.y"
 {
 	QString str = qString(yyvsp[-1].string);
 	yyval.prop_id = getPropertyID( str.lower().latin1(), str.length() );
     ;
     break;}
-case 103:
-#line 835 "parser.y"
+case 118:
+#line 911 "parser.y"
 { yyval.b = true; ;
     break;}
-case 104:
-#line 836 "parser.y"
+case 119:
+#line 912 "parser.y"
 { yyval.b = false; ;
     break;}
-case 105:
-#line 840 "parser.y"
+case 120:
+#line 916 "parser.y"
 {
 	yyval.valueList = new ValueList;
 	yyval.valueList->addValue( yyvsp[0].value );
     ;
     break;}
-case 106:
-#line 844 "parser.y"
+case 121:
+#line 920 "parser.y"
 {
         yyval.valueList = yyvsp[-2].valueList;
 	if ( yyval.valueList ) {
@@ -1825,45 +1944,45 @@ case 106:
         }
     ;
     break;}
-case 107:
-#line 857 "parser.y"
+case 122:
+#line 933 "parser.y"
 {
         delete yyvsp[-1].valueList;
         yyval.valueList = 0;
     ;
     break;}
-case 108:
-#line 864 "parser.y"
+case 123:
+#line 940 "parser.y"
 {
 	yyval.tok = '/';
     ;
     break;}
-case 109:
-#line 867 "parser.y"
+case 124:
+#line 943 "parser.y"
 {
 	yyval.tok = ',';
     ;
     break;}
-case 110:
-#line 870 "parser.y"
+case 125:
+#line 946 "parser.y"
 {
         yyval.tok = 0;
   ;
     break;}
-case 111:
-#line 876 "parser.y"
+case 126:
+#line 952 "parser.y"
 { yyval.value = yyvsp[0].value; ;
     break;}
-case 112:
-#line 877 "parser.y"
+case 127:
+#line 953 "parser.y"
 { yyval.value = yyvsp[0].value; yyval.value.fValue *= yyvsp[-1].val; ;
     break;}
-case 113:
-#line 878 "parser.y"
+case 128:
+#line 954 "parser.y"
 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_STRING; ;
     break;}
-case 114:
-#line 879 "parser.y"
+case 129:
+#line 955 "parser.y"
 {
       QString str = qString( yyvsp[-1].string );
       yyval.value.id = getValueID( str.lower().latin1(), str.length() );
@@ -1871,110 +1990,110 @@ case 114:
       yyval.value.string = yyvsp[-1].string;
   ;
     break;}
-case 115:
-#line 886 "parser.y"
+case 130:
+#line 962 "parser.y"
 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_DIMENSION ;
     break;}
-case 116:
-#line 887 "parser.y"
+case 131:
+#line 963 "parser.y"
 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_DIMENSION ;
     break;}
-case 117:
-#line 888 "parser.y"
+case 132:
+#line 964 "parser.y"
 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_URI; ;
     break;}
-case 118:
-#line 889 "parser.y"
+case 133:
+#line 965 "parser.y"
 { yyval.value.id = 0; yyval.value.iValue = 0; yyval.value.unit = CSSPrimitiveValue::CSS_UNKNOWN;/* ### */ ;
     break;}
-case 119:
-#line 890 "parser.y"
+case 134:
+#line 966 "parser.y"
 { yyval.value.id = 0; yyval.value.string = yyvsp[0].string; yyval.value.unit = CSSPrimitiveValue::CSS_RGBCOLOR; ;
     break;}
-case 120:
-#line 891 "parser.y"
+case 135:
+#line 967 "parser.y"
 { yyval.value.id = 0; yyval.value.string = ParseString(); yyval.value.unit = CSSPrimitiveValue::CSS_RGBCOLOR; ;
     break;}
-case 121:
-#line 893 "parser.y"
+case 136:
+#line 969 "parser.y"
 {
       yyval.value = yyvsp[0].value;
   ;
     break;}
-case 122:
-#line 899 "parser.y"
+case 137:
+#line 975 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_NUMBER; ;
     break;}
-case 123:
-#line 900 "parser.y"
+case 138:
+#line 976 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PERCENTAGE; ;
     break;}
-case 124:
-#line 901 "parser.y"
+case 139:
+#line 977 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PX; ;
     break;}
-case 125:
-#line 902 "parser.y"
+case 140:
+#line 978 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_CM; ;
     break;}
-case 126:
-#line 903 "parser.y"
+case 141:
+#line 979 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_MM; ;
     break;}
-case 127:
-#line 904 "parser.y"
+case 142:
+#line 980 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_IN; ;
     break;}
-case 128:
-#line 905 "parser.y"
+case 143:
+#line 981 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PT; ;
     break;}
-case 129:
-#line 906 "parser.y"
+case 144:
+#line 982 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PC; ;
     break;}
-case 130:
-#line 907 "parser.y"
+case 145:
+#line 983 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_DEG; ;
     break;}
-case 131:
-#line 908 "parser.y"
+case 146:
+#line 984 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_RAD; ;
     break;}
-case 132:
-#line 909 "parser.y"
+case 147:
+#line 985 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_GRAD; ;
     break;}
-case 133:
-#line 910 "parser.y"
+case 148:
+#line 986 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_MS; ;
     break;}
-case 134:
-#line 911 "parser.y"
+case 149:
+#line 987 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_S; ;
     break;}
-case 135:
-#line 912 "parser.y"
+case 150:
+#line 988 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_HZ; ;
     break;}
-case 136:
-#line 913 "parser.y"
+case 151:
+#line 989 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_KHZ; ;
     break;}
-case 137:
-#line 914 "parser.y"
+case 152:
+#line 990 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_EMS; ;
     break;}
-case 138:
-#line 915 "parser.y"
+case 153:
+#line 991 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = Value::Q_EMS; ;
     break;}
-case 139:
-#line 916 "parser.y"
+case 154:
+#line 992 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_EXS; ;
     break;}
-case 140:
-#line 921 "parser.y"
+case 155:
+#line 997 "parser.y"
 {
       Function *f = new Function;
       f->name = yyvsp[-4].string;
@@ -1984,8 +2103,8 @@ case 140:
       yyval.value.function = f;
   ;
     break;}
-case 141:
-#line 929 "parser.y"
+case 156:
+#line 1005 "parser.y"
 {
       Function *f = new Function;
       f->name = yyvsp[-2].string;
@@ -1995,12 +2114,12 @@ case 141:
       yyval.value.function = f;
   ;
     break;}
-case 142:
-#line 944 "parser.y"
+case 157:
+#line 1020 "parser.y"
 { yyval.string = yyvsp[-1].string; ;
     break;}
-case 143:
-#line 951 "parser.y"
+case 158:
+#line 1027 "parser.y"
 {
 	yyval.rule = 0;
 #ifdef CSS_DEBUG
@@ -2008,8 +2127,8 @@ case 143:
 #endif
     ;
     break;}
-case 144:
-#line 957 "parser.y"
+case 159:
+#line 1033 "parser.y"
 {
 	yyval.rule = 0;
 #ifdef CSS_DEBUG
@@ -2017,8 +2136,8 @@ case 144:
 #endif
     ;
     break;}
-case 145:
-#line 966 "parser.y"
+case 160:
+#line 1042 "parser.y"
 {
 	yyval.rule = 0;
 #ifdef CSS_DEBUG
@@ -2248,6 +2367,6 @@ yyerrhandle:
     }
   return 1;
 }
-#line 1001 "parser.y"
+#line 1077 "parser.y"
 
 
diff --git a/WebCore/khtml/css/parser.h b/WebCore/khtml/css/parser.h
index 8ceb950..b059407 100644
--- a/WebCore/khtml/css/parser.h
+++ b/WebCore/khtml/css/parser.h
@@ -32,30 +32,31 @@ typedef union {
 #define	MEDIA_SYM	269
 #define	FONT_FACE_SYM	270
 #define	CHARSET_SYM	271
-#define	KHTML_RULE_SYM	272
-#define	KHTML_DECLS_SYM	273
-#define	KHTML_VALUE_SYM	274
-#define	IMPORTANT_SYM	275
-#define	QEMS	276
-#define	EMS	277
-#define	EXS	278
-#define	PXS	279
-#define	CMS	280
-#define	MMS	281
-#define	INS	282
-#define	PTS	283
-#define	PCS	284
-#define	DEGS	285
-#define	RADS	286
-#define	GRADS	287
-#define	MSECS	288
-#define	SECS	289
-#define	HERZ	290
-#define	KHERZ	291
-#define	DIMEN	292
-#define	PERCENTAGE	293
-#define	NUMBER	294
-#define	URI	295
-#define	FUNCTION	296
-#define	UNICODERANGE	297
+#define	NAMESPACE_SYM	272
+#define	KHTML_RULE_SYM	273
+#define	KHTML_DECLS_SYM	274
+#define	KHTML_VALUE_SYM	275
+#define	IMPORTANT_SYM	276
+#define	QEMS	277
+#define	EMS	278
+#define	EXS	279
+#define	PXS	280
+#define	CMS	281
+#define	MMS	282
+#define	INS	283
+#define	PTS	284
+#define	PCS	285
+#define	DEGS	286
+#define	RADS	287
+#define	GRADS	288
+#define	MSECS	289
+#define	SECS	290
+#define	HERZ	291
+#define	KHERZ	292
+#define	DIMEN	293
+#define	PERCENTAGE	294
+#define	NUMBER	295
+#define	URI	296
+#define	FUNCTION	297
+#define	UNICODERANGE	298
 
diff --git a/WebCore/khtml/css/parser.y b/WebCore/khtml/css/parser.y
index ca9dcc4..f37453b 100644
--- a/WebCore/khtml/css/parser.y
+++ b/WebCore/khtml/css/parser.y
@@ -134,6 +134,7 @@ static int cssyylex( YYSTYPE *yylval ) {
 %token <string> IDENT
 
 %token <string> HASH
+%token <string> '*'
 %token ':'
 %token '.'
 %token '['
@@ -143,6 +144,7 @@ static int cssyylex( YYSTYPE *yylval ) {
 %token MEDIA_SYM
 %token FONT_FACE_SYM
 %token CHARSET_SYM
+%token NAMESPACE_SYM
 %token KHTML_RULE_SYM
 %token KHTML_DECLS_SYM
 %token KHTML_VALUE_SYM
@@ -185,6 +187,10 @@ static int cssyylex( YYSTYPE *yylval ) {
 %type <rule> invalid_at
 %type <rule> rule
 
+%type <string> maybe_ns_prefix
+
+%type <string> namespace_selector
+
 %type <string> string_or_uri
 %type <string> ident_or_string
 %type <string> medium
@@ -228,7 +234,7 @@ static int cssyylex( YYSTYPE *yylval ) {
 %%
 
 stylesheet:
-    maybe_charset maybe_sgml import_list rule_list
+    maybe_charset maybe_sgml import_list namespace_list rule_list
   | khtml_rule maybe_space
   | khtml_decls maybe_space
   | khtml_value maybe_space
@@ -306,6 +312,10 @@ import_list:
  }
  ;
 
+namespace_list:
+/* empty */
+| namespace_list namespace maybe_sgml
+;
 
 rule_list:
    /* empty */
@@ -349,10 +359,28 @@ import:
     }
   ;
 
+namespace:
+NAMESPACE_SYM maybe_space maybe_ns_prefix string_or_uri maybe_space ';' {
+#ifdef CSS_DEBUG
+    kdDebug( 6080 ) << "@namespace: " << qString($4) << endl;
+#endif
+    CSSParser *p = static_cast<CSSParser *>(parser);
+    if (p->styleElement && p->styleElement->isCSSStyleSheet())
+        static_cast<CSSStyleSheetImpl*>(p->styleElement)->addNamespace(domString($3), domString($4));
+}
+| NAMESPACE_SYM error invalid_block
+| NAMESPACE_SYM error ';'
+;
+
+maybe_ns_prefix:
+/* empty */ { $$.string = 0; }
+| IDENT S { $$ = $1; }
+;
+
 string_or_uri:
-    STRING
-  | URI
-    ;
+STRING
+| URI
+;
 
 maybe_media_list:
      /* empty */ {
@@ -544,6 +572,12 @@ selector:
     }
     ;
 
+namespace_selector:
+    /* empty */ { $$.string = 0; $$.length = 0; }
+    | '*' { $$ = $1; }
+    | IDENT { $$ = $1; }
+;
+
 simple_selector:
     element_name maybe_space {
 	$$ = new CSSSelector();
@@ -559,6 +593,31 @@ simple_selector:
 	if ( $$ )
             $$->tag = 0xffffffff;
     }
+    | namespace_selector '|' element_name maybe_space {
+        $$ = new CSSSelector();
+        $$->tag = $3;
+        CSSParser *p = static_cast<CSSParser *>(parser);
+        if (p->styleElement && p->styleElement->isCSSStyleSheet())
+            static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace($$, domString($1));
+    }
+    | namespace_selector '|' element_name specifier_list maybe_space {
+        $$ = $4;
+        if ($$) {
+            $$->tag = $3;
+            CSSParser *p = static_cast<CSSParser *>(parser);
+            if (p->styleElement && p->styleElement->isCSSStyleSheet())
+                static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace($$, domString($1));
+        }
+    }
+    | namespace_selector '|' specifier_list maybe_space {
+        $$ = $3;
+        if ($$) {
+            $$->tag = 0xffffffff;
+            CSSParser *p = static_cast<CSSParser *>(parser);
+            if (p->styleElement && p->styleElement->isCSSStyleSheet())
+                static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace($$, domString($1));
+        }
+    }
   ;
 
 element_name:
@@ -665,6 +724,23 @@ attrib:
 	$$->match = (CSSSelector::Match)$4;
 	$$->value = domString($6);
     }
+    | '[' maybe_space namespace_selector '|' attrib_id ']' {
+        $$ = new CSSSelector();
+        $$->attr = $5;
+        $$->match = CSSSelector::Set;
+        CSSParser *p = static_cast<CSSParser *>(parser);
+        if (p->styleElement && p->styleElement->isCSSStyleSheet())
+            static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace($$, domString($3));
+    }
+    | '[' maybe_space namespace_selector '|' attrib_id match maybe_space ident_or_string maybe_space ']' {
+        $$ = new CSSSelector();
+        $$->attr = $5;
+        $$->match = (CSSSelector::Match)$6;
+        $$->value = domString($8);
+        CSSParser *p = static_cast<CSSParser *>(parser);
+        if (p->styleElement && p->styleElement->isCSSStyleSheet())
+            static_cast<CSSStyleSheetImpl*>(p->styleElement)->determineNamespace($$, domString($3));
+    }
   ;
 
 match:
diff --git a/WebCore/khtml/css/tokenizer.cpp b/WebCore/khtml/css/tokenizer.cpp
index a24d1f6..65a88de 100644
--- a/WebCore/khtml/css/tokenizer.cpp
+++ b/WebCore/khtml/css/tokenizer.cpp
@@ -40,44 +40,45 @@
 
 // --------- begin generated code -------------------
 
-#define YY_NUM_RULES 47
-#define YY_END_OF_BUFFER 48
-static yyconst short int yy_accept[308] =
+#define YY_NUM_RULES 48
+#define YY_END_OF_BUFFER 49
+static yyconst short int yy_accept[317] =
     {   0,
-        0,    0,   48,   46,    2,    2,   46,   46,   46,   46,
-       46,   46,   46,   46,   46,   40,   46,   46,   46,   46,
-       11,   11,   46,   46,    2,    0,    0,    0,   10,    0,
-       12,    0,    8,    0,    0,    9,    0,    0,   11,   40,
-        0,   39,    0,    0,   40,    0,   38,   38,   38,   38,
-       38,   38,   38,   38,   38,   38,   38,   38,   35,    0,
-        0,    0,    0,    0,    0,    0,   11,   11,    7,   43,
-       11,    0,    0,   11,    6,    5,    0,    0,    0,   10,
-        0,    0,   12,   12,    0,    0,   10,    0,    0,    4,
-        0,    0,   38,   38,   38,    0,   38,   26,   38,   22,
-
-       24,   38,   36,   28,   38,   27,   34,   30,   29,   25,
-       38,    0,    0,    0,    0,    0,    0,    0,   11,   11,
-       11,   44,   44,   11,    0,    0,    0,   12,    0,    0,
-        0,    1,   38,   38,   38,   38,   31,   38,   37,   32,
-        3,    0,    0,    0,    0,    0,    0,   11,   11,    0,
-       44,   44,   44,   43,    0,    0,   12,    0,    0,    0,
-       38,   38,   38,   33,    0,    0,    0,    0,    0,   14,
-       11,   11,   45,   44,   44,   44,   44,    0,    0,    0,
-        0,   42,    0,    0,    0,   12,    0,   38,   38,   23,
-        0,    0,    0,    0,   15,   11,   11,   45,   44,   44,
-
-       44,   44,   44,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   42,    0,    0,    0,    0,   12,    0,   38,
-       38,    0,    0,    0,   13,   11,   11,   45,   44,   44,
-       44,   44,   44,   44,    0,   41,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   12,
-        0,   38,   38,    0,   17,    0,   11,   45,   44,   44,
-       44,   44,   44,   44,   44,    0,   41,    0,    0,    0,
-       41,    0,    0,    0,    0,   38,    0,    0,    0,    0,
-       45,    0,    0,    0,   21,    0,    0,    0,   16,   45,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-       18,    0,    0,    0,   19,   20,    0
+        0,    0,   49,   47,    2,    2,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   41,   47,   47,   47,   47,
+       11,   11,   47,   47,    2,    0,    0,    0,   10,    0,
+       12,    0,    8,    0,    0,    9,    0,    0,   11,   41,
+        0,   40,    0,    0,   41,    0,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   36,    0,
+        0,    0,    0,    0,    0,    0,    0,   11,   11,    7,
+       44,   11,    0,    0,   11,    6,    5,    0,    0,    0,
+       10,    0,    0,   12,   12,    0,    0,   10,    0,    0,
+        4,    0,    0,   39,   39,   39,    0,   39,   27,   39,
+
+       23,   25,   39,   37,   29,   39,   28,   35,   31,   30,
+       26,   39,    0,    0,    0,    0,    0,    0,    0,    0,
+       11,   11,   11,   45,   45,   11,    0,    0,    0,   12,
+        0,    0,    0,    1,   39,   39,   39,   39,   32,   39,
+       38,   33,    3,    0,    0,    0,    0,    0,    0,    0,
+       11,   11,    0,   45,   45,   45,   44,    0,    0,   12,
+        0,    0,    0,   39,   39,   39,   34,    0,    0,    0,
+        0,    0,    0,   14,   11,   11,   46,   45,   45,   45,
+       45,    0,    0,    0,    0,   43,    0,    0,    0,   12,
+        0,   39,   39,   24,    0,    0,    0,    0,   15,    0,
+
+       11,   11,   46,   45,   45,   45,   45,   45,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   43,    0,    0,
+        0,    0,   12,    0,   39,   39,    0,    0,    0,   13,
+        0,   11,   11,   46,   45,   45,   45,   45,   45,   45,
+        0,   42,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   12,    0,   39,   39,    0,
+       17,    0,    0,   11,   46,   45,   45,   45,   45,   45,
+       45,   45,    0,   42,    0,    0,    0,   42,    0,    0,
+        0,    0,   39,    0,    0,    0,    0,    0,   46,    0,
+        0,    0,   22,    0,    0,    0,   16,   18,   46,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   19,
+        0,    0,    0,   20,   21,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -122,89 +123,91 @@ static yyconst int yy_meta[57] =
         9,    9,    9,    4,    4,    9
     } ;
 
-static yyconst short int yy_base[336] =
+static yyconst short int yy_base[345] =
     {   0,
-        0,    0,  744, 1642,   55,   60,   65,   64,  708,  711,
-       60,  710,   56,  711,  715,   93,  716,   57,   75,  698,
-       63,   71,  697,  696,   76,  148,  676,   86, 1642,  185,
-      677,  126, 1642,   73,  219, 1642,  679,  134,   70,   96,
-      686,  690,  673,  678,    0,  141,   92,  671,   74,  136,
-      150,  151,  152,  153,  154,  155,  177,  180,  670,  665,
-      642,  642,  634,  635,  642,  632,  181,  253, 1642, 1642,
-      186,  204,  268,  187, 1642, 1642,  616,  239,  203,  233,
-      302,  336,  614,  370,  265,  172,  218,  404,  438, 1642,
-      624,  228,  610,  472,  609,  321,  216,  608,  234,  607,
-
-      598,  242,  596,  595,  237,  594,  593,  579,  578,  564,
-      200,  564,  544,  550,  536,  533,  544,  540,  423,  249,
-      506,  257,  549,  267,  529,  269,  498,  513,  252,  521,
-      556, 1642,  528,  544,  562,  282,  543,  264,  542,  530,
-     1642,  501,  488,  477,  481,  486,  489,  554,  569,  577,
-      293,  497,  496,  611,  473,  597,  612,  618,  502,  297,
-      633,  639,  285,  490,  474,  467,  495,  454,  468, 1642,
-      654,  660,  675,  296,  472,  471,  470,  709,  735,  316,
-      318, 1642,  761,  445,  695,  721,  768,  776,  783,  465,
-      450,  455,  453,  438, 1642,  791,  798,  806,  297,  461,
-
-      459,  458,  457,  344,  350,  377,  840,  351,  874,  908,
-      934,  960,  986, 1012, 1046,  450,  825,  859,  894,  920,
-      946,  461,  380,  397, 1642,  972, 1053, 1061,  301,  394,
-      393,  391,  370,  369,  383, 1642,  357,  385,  418, 1095,
-     1129,  487,  386, 1108, 1163, 1197, 1182,  347, 1204, 1212,
-     1219,  458, 1227,  381, 1642,  330,  444, 1234,  343, 1642,
-     1642, 1642, 1642, 1642, 1642, 1026,  388,  403, 1242, 1276,
-      439,  454, 1262, 1277,  281,  653,  294,  275,  290,  261,
-     1283, 1298, 1304, 1319, 1642,  241,  230,  153, 1642, 1642,
-     1325, 1340, 1346,  143,  149,   98, 1361, 1367, 1382,   45,
-
-     1642,   42, 1388, 1403, 1642, 1642, 1642, 1437, 1442, 1451,
-     1456, 1463, 1469, 1478, 1485, 1494, 1504, 1506, 1513, 1518,
-     1525, 1535, 1542, 1547, 1557, 1562, 1571, 1576, 1585, 1594,
-     1603, 1608, 1617, 1626, 1631
+        0,    0,  775, 1649,   55,   60,   65,   64,  741,  744,
+       60,  743,   56,  744,  748,   93,  749,   57,   75,  731,
+       63,   71,  730,  729,   76,  148,  709,   86, 1649,  185,
+      715,  126, 1649,   88,  219, 1649,  717,  134,   70,   98,
+      724,  728,  711,  709,    0,  141,  150,  701,  121,   59,
+      143,  151,  154,  153,  155,  157,  176,  164,  700,  708,
+      685,  674,  666,  667,  674,  677,  676,  183,  253, 1649,
+     1649,  186,  260,  275,  200, 1649, 1649,  660,  234,  175,
+      203,  309,  343,  677,  377,  235,  216,  218,  411,  445,
+     1649,  674,  219,  662,  479,  659,  328,  217,  658,  233,
+
+      657,  656,  174,  642,  641,  220,  621,  620,  617,  616,
+      615,  237,  623,  595,  600,  586,  583,  594,  571,  576,
+      430,  251,  513,  208,  573,  252,  545,  274,  505,  520,
+      262,  528,  572, 1649,  535,  560,  569,  270,  559,  244,
+      558,  557, 1649,  534,  534,  531,  535,  540,  543,  542,
+      561,  576,  584,  298,  539,  532,  618,  495,  604,  619,
+      625,  517,  252,  640,  646,  276,  505,  489,  482,  511,
+      481,  497,  477, 1649,  661,  667,  682,  301,  499,  498,
+      497,  716,  742,  294,  307, 1649,  768,  472,  702,  728,
+      775,  783,  790,  480,  464,  470,  468,  453, 1649,  449,
+
+      798,  805,  813,  304,  466,  465,  464,  463,  350,  323,
+      382,  847,  311,  881,  915,  941,  967,  993, 1019, 1053,
+      457,  832,  866,  901,  927,  953,  468,  387,  404, 1649,
+      396,  979, 1060, 1068,  307,  400,  380,  376,  370,  347,
+      387, 1649,  391,  392,  425, 1102, 1136,  393,  344, 1115,
+     1170, 1204, 1189,  326, 1211, 1219, 1226,  465, 1234,  388,
+     1649,  336,  335,  451, 1241,  348, 1649, 1649, 1649, 1649,
+     1649, 1649,  493,  395,  466, 1249, 1283,  410,  446, 1269,
+     1284,  288,  660,  301,  283,  298,  293,  265, 1290, 1305,
+     1311, 1326, 1649,  266,  235,  195, 1649, 1649, 1649, 1332,
+
+     1347, 1353,  193,  175,   71, 1368, 1374, 1389,   68, 1649,
+       42, 1395, 1410, 1649, 1649, 1649, 1444, 1449, 1458, 1463,
+     1470, 1476, 1485, 1492, 1501, 1511, 1513, 1520, 1525, 1532,
+     1542, 1549, 1554, 1564, 1569, 1578, 1583, 1592, 1601, 1610,
+     1615, 1624, 1633, 1638
     } ;
 
-static yyconst short int yy_def[336] =
+static yyconst short int yy_def[345] =
     {   0,
-      307,    1,  307,  307,  307,  307,  307,  308,  309,  307,
-      310,  307,  311,  307,  307,  307,  307,  307,  312,  307,
-      313,  313,  307,  307,  307,  307,  307,  308,  307,  314,
-      309,  315,  307,  310,  316,  307,  307,  312,  313,   16,
-      317,  307,  318,  307,   16,  319,  320,  320,  320,  320,
-      320,  320,  320,  320,  320,  320,  320,  320,  320,  307,
-      307,  307,  307,  307,  307,  307,  313,  313,  307,  307,
-      313,  321,  307,  313,  307,  307,  307,  308,  308,  308,
-      308,  314,  309,  309,  310,  310,  310,  310,  316,  307,
-      317,  322,  320,  320,  320,  323,  320,  320,  320,  320,
-
-      320,  320,  320,  320,  320,  320,  320,  320,  320,  320,
-      320,  307,  307,  307,  307,  307,  307,  307,   68,  313,
-       68,  324,  307,  313,  307,  308,   81,   84,  310,   88,
-      325,  307,   94,  320,   94,  320,  320,  320,  320,  320,
-      307,  307,  307,  307,  307,  307,  307,   68,  121,  307,
-      326,  307,  307,  327,  307,   81,   84,   88,  325,  322,
-       94,  135,  320,  320,  307,  307,  307,  307,  307,  307,
-       68,  121,  307,  328,  307,  307,  307,  327,  327,  329,
-      330,  307,  331,  307,   81,   84,   88,   94,  135,  320,
-      307,  307,  307,  307,  307,   68,  121,  307,  332,  307,
-
-      307,  307,  307,  307,  329,  307,  333,  330,  334,  327,
-      327,  327,  327,  327,  331,  307,   81,   84,   88,   94,
-      135,  307,  307,  307,  307,   68,  121,  307,  335,  307,
-      307,  307,  307,  307,  307,  307,  329,  329,  329,  329,
-      333,  330,  330,  330,  330,  334,  214,  307,   81,   84,
-       88,  320,  135,  307,  307,  307,  226,  307,  307,  307,
-      307,  307,  307,  307,  307,  329,  329,  329,  240,  330,
-      330,  330,  245,  214,  307,  320,  307,  307,  307,  307,
-      307,  240,  245,  214,  307,  307,  307,  307,  307,  307,
-      240,  245,  214,  307,  307,  307,  240,  245,  214,  307,
-
-      307,  307,  240,  245,  307,  307,    0,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307
+      316,    1,  316,  316,  316,  316,  316,  317,  318,  316,
+      319,  316,  320,  316,  316,  316,  316,  316,  321,  316,
+      322,  322,  316,  316,  316,  316,  316,  317,  316,  323,
+      318,  324,  316,  319,  325,  316,  316,  321,  322,   16,
+      326,  316,  327,  316,   16,  328,  329,  329,  329,  329,
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  316,
+      316,  316,  316,  316,  316,  316,  316,  322,  322,  316,
+      316,  322,  330,  316,  322,  316,  316,  316,  317,  317,
+      317,  317,  323,  318,  318,  319,  319,  319,  319,  325,
+      316,  326,  331,  329,  329,  329,  332,  329,  329,  329,
+
+      329,  329,  329,  329,  329,  329,  329,  329,  329,  329,
+      329,  329,  316,  316,  316,  316,  316,  316,  316,  316,
+       69,  322,   69,  333,  316,  322,  316,  317,   82,   85,
+      319,   89,  334,  316,   95,  329,   95,  329,  329,  329,
+      329,  329,  316,  316,  316,  316,  316,  316,  316,  316,
+       69,  123,  316,  335,  316,  316,  336,  316,   82,   85,
+       89,  334,  331,   95,  137,  329,  329,  316,  316,  316,
+      316,  316,  316,  316,   69,  123,  316,  337,  316,  316,
+      316,  336,  336,  338,  339,  316,  340,  316,   82,   85,
+       89,   95,  137,  329,  316,  316,  316,  316,  316,  316,
+
+       69,  123,  316,  341,  316,  316,  316,  316,  316,  338,
+      316,  342,  339,  343,  336,  336,  336,  336,  336,  340,
+      316,   82,   85,   89,   95,  137,  316,  316,  316,  316,
+      316,   69,  123,  316,  344,  316,  316,  316,  316,  316,
+      316,  316,  338,  338,  338,  338,  342,  339,  339,  339,
+      339,  343,  219,  316,   82,   85,   89,  329,  137,  316,
+      316,  316,  316,  232,  316,  316,  316,  316,  316,  316,
+      316,  316,  338,  338,  338,  246,  339,  339,  339,  251,
+      219,  316,  329,  316,  316,  316,  316,  316,  316,  246,
+      251,  219,  316,  316,  316,  316,  316,  316,  316,  246,
+
+      251,  219,  316,  316,  316,  246,  251,  219,  316,  316,
+      316,  246,  251,  316,  316,    0,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316
     } ;
 
-static yyconst short int yy_nxt[1699] =
+static yyconst short int yy_nxt[1706] =
     {   0,
         4,    5,    6,    5,    5,    5,    7,    8,    9,   10,
         4,    4,   11,    4,    4,   12,    4,   13,   14,   15,
@@ -213,189 +216,190 @@ static yyconst short int yy_nxt[1699] =
        21,   21,   21,   21,   21,   21,   21,   21,   21,   22,
        21,   21,   21,   23,   24,   21,   25,   25,   25,   25,
        25,   25,   25,   25,   25,   25,   26,   26,   26,   26,
-       26,   29,   29,   37,   61,  306,   70,   25,   25,   25,
-       25,   25,   38,   70,   70,   29,   35,   73,   62,   72,
-       30,   63,  305,   29,   64,   68,   72,   72,   65,   35,
+       26,   29,   29,   37,   61,  315,   71,   25,   25,   25,
+       25,   25,   38,   71,   71,   97,   35,   74,   62,   73,
+       30,   63,  100,   29,   64,   69,   73,   73,   65,   66,
 
-       96,   66,   27,   42,   68,   68,   68,   68,   68,   68,
-       43,   44,   30,   45,  307,   98,   40,   74,   96,   46,
-       97,   47,   48,   48,   49,   50,   51,   48,   52,   53,
+       29,   67,   27,   42,   69,   69,   69,   69,   69,   69,
+       43,   44,   30,   45,   35,  314,  316,   75,   40,   46,
+      311,   47,   48,   48,   49,   50,   51,   48,   52,   53,
        54,   48,   55,   48,   56,   48,   48,   57,   48,   58,
-       59,   48,   48,   48,   48,   48,   84,  302,   48,   26,
-       26,   26,   26,   26,   68,   84,   84,   84,   84,   84,
-       84,   94,   96,   68,   68,   68,   68,   68,   68,   99,
-       94,   94,   94,   94,   94,   94,   96,   96,   96,   96,
-       96,   96,  301,  300,   29,   27,   28,   28,   28,   78,
-      105,  100,   80,  296,   70,  104,  106,  102,   35,   70,
-
-       70,  101,  107,   96,  103,   81,   96,   72,  108,  111,
-       29,   82,   72,   72,   81,   81,   81,   81,   81,   81,
-       34,   34,   34,   85,  121,  109,   96,  124,  110,   30,
-       29,   87,  140,  121,  121,  121,  121,  121,  121,   88,
-       29,   28,   96,   92,   35,   89,   29,  132,   88,   88,
-       88,   88,   88,   88,   67,   67,   67,   67,   67,   30,
-       96,  136,   70,   96,   29,   30,   70,   34,   96,  137,
-      295,  138,  294,  119,  150,   72,   29,   29,   35,   72,
-      154,  152,  119,  119,  119,  119,  119,  119,  122,  139,
-       96,   35,  123,   72,  289,   30,  164,  122,  122,  122,
-
-      122,  122,  122,   79,  126,  126,  126,   79,   96,   29,
-      150,   96,  160,  150,  150,  163,  132,  175,  150,  288,
-      200,  230,  127,  206,  287,  260,  190,  286,   30,  285,
-      206,  127,  127,  127,  127,  127,  127,   28,   28,   28,
-       78,  135,  207,   80,  209,  204,  204,  204,  204,  204,
-      135,  135,  135,  135,  135,  135,   81,  206,  182,  205,
-      150,  280,   82,  206,  206,   81,   81,   81,   81,   81,
-       81,   83,   83,   83,   83,   83,  207,  209,  235,  235,
-      235,  235,  235,  207,  235,  235,  235,  235,  235,  275,
-      128,  236,  206,  265,  264,  206,   32,  236,  206,  128,
-
-      128,  128,  128,  128,  128,   86,  129,  129,  129,   86,
-      206,  207,  209,  277,  207,  263,   29,  262,  261,  266,
-      235,  235,  235,  266,  130,  206,  256,  278,  255,  207,
-       35,  279,  267,  130,  130,  130,  130,  130,  130,   34,
-       34,   34,   85,  148,  207,  120,  120,  120,  120,  120,
-       87,  206,  148,  148,  148,  148,  148,  148,   88,   93,
-       93,   93,   93,   93,   89,  209,  206,   88,   88,   88,
-       88,   88,   88,   93,   93,   93,   93,   93,  254,  248,
-      209,  234,  233,  232,   96,  231,  225,  224,  223,  208,
-      222,   96,  133,  216,  203,  202,  201,  195,   96,  206,
-
-      194,  133,  133,  133,  133,  133,  133,  120,  120,  120,
-      120,  120,  193,  209,  192,  191,   96,  160,  156,  184,
-      177,  176,  170,  169,  168,  167,  149,  156,  156,  156,
-      156,  156,  156,  157,  166,  149,  149,  149,  149,  149,
-      149,  158,  157,  157,  157,  157,  157,  157,  161,  165,
-      158,  158,  158,  158,  158,  158,   96,  161,  161,  161,
-      161,  161,  161,  134,  134,  134,  134,  134,   96,   96,
-       96,  160,  155,  153,  171,  147,  146,  145,  144,  143,
-      142,  141,  162,  171,  171,  171,  171,  171,  171,  172,
-       96,  162,  162,  162,  162,  162,  162,  173,  172,  172,
-
-      172,  172,  172,  172,   96,   96,  173,  173,  173,  173,
-      173,  173,  178,  178,  178,  178,  178,  185,  180,   96,
-       96,   96,   96,  181,   96,  182,  185,  185,  185,  185,
-      185,  185,  186,   96,   96,   96,   96,  183,  187,   92,
-       32,  186,  186,  186,  186,  186,  186,  187,  187,  187,
-      187,  187,  187,  188,  134,  134,  134,  134,  134,  189,
-      125,  118,  188,  188,  188,  188,  188,  188,  189,  189,
-      189,  189,  189,  189,  196,  117,  116,  115,  114,   96,
-      197,  113,  112,  196,  196,  196,  196,  196,  196,  197,
-      197,  197,  197,  197,  197,  198,   96,   96,   40,   46,
-
-       42,   92,   90,   32,  198,  198,  198,  198,  198,  198,
-      178,  178,  178,  178,  178,  217,  180,   77,   76,   75,
-       69,  181,   60,  182,  217,  217,  217,  217,  217,  217,
-       41,   40,   36,   33,   32,  183,  204,  204,  204,  204,
-      204,  218,  307,  307,  307,  307,  307,  307,  307,  182,
-      218,  218,  218,  218,  218,  218,  307,  307,  307,  307,
-      307,  183,  204,  204,  204,  204,  210,  307,  212,  307,
-      307,  307,  307,  212,  212,  213,  307,  307,  307,  307,
-      307,  214,  307,  307,  307,  307,  307,  215,  219,  307,
-      214,  214,  214,  214,  214,  214,  220,  219,  219,  219,
-
-      219,  219,  219,  221,  307,  220,  220,  220,  220,  220,
-      220,  226,  221,  221,  221,  221,  221,  221,  227,  307,
-      226,  226,  226,  226,  226,  226,  228,  227,  227,  227,
-      227,  227,  227,  307,  307,  228,  228,  228,  228,  228,
-      228,  205,  205,  205,  237,  249,  307,  239,  307,  307,
-      307,  307,  307,  307,  249,  249,  249,  249,  249,  249,
-      240,  307,  307,  307,  307,  307,  241,  307,  307,  240,
-      240,  240,  240,  240,  240,  208,  208,  208,  242,  250,
-      307,  307,  307,  307,  307,  307,  244,  307,  250,  250,
-      250,  250,  250,  250,  245,  307,  307,  307,  307,  307,
-
-      246,  307,  307,  245,  245,  245,  245,  245,  245,  204,
-      204,  204,  204,  204,  251,  307,  307,  307,  307,  307,
-      307,  307,  182,  251,  251,  251,  251,  251,  251,  307,
-      307,  307,  307,  307,  183,  204,  204,  204,  204,  204,
-      252,  307,  307,  307,  307,  307,  307,  307,  182,  252,
-      252,  252,  252,  252,  252,  307,  307,  307,  307,  307,
-      183,  204,  204,  204,  204,  204,  253,  307,  307,  307,
-      307,  307,  307,  307,  182,  253,  253,  253,  253,  253,
-      253,  307,  307,  307,  307,  307,  183,  204,  204,  204,
-      204,  204,   71,  307,  307,  307,  307,  307,  307,  307,
-
-      182,   71,   71,   71,   71,   71,   71,  307,  307,  307,
-      307,  307,  183,  210,  210,  210,  210,  210,  307,  307,
-      307,  307,  307,  307,  307,  307,  182,  266,  235,  235,
-      235,  266,  247,  206,  307,  307,  307,  307,  183,  307,
-      267,  247,  247,  247,  247,  247,  247,  204,  204,  204,
-      204,  210,  207,  212,  307,  307,  307,  307,  212,  212,
-      213,  307,  307,  307,  307,  307,  214,  307,  307,  307,
-      307,  307,  215,  257,  307,  214,  214,  214,  214,  214,
-      214,  258,  257,  257,  257,  257,  257,  257,  307,  307,
-      258,  258,  258,  258,  258,  258,  238,  268,  268,  268,
-
-      238,  307,  206,  307,  307,  307,  307,  307,  307,  270,
-      235,  235,  235,  270,  307,  269,  307,  307,  307,  307,
-      206,  207,  271,  307,  269,  269,  269,  269,  269,  269,
-      205,  205,  205,  237,  209,  307,  239,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  240,
-      307,  307,  307,  307,  307,  241,  307,  307,  240,  240,
-      240,  240,  240,  240,  243,  272,  272,  272,  243,  307,
-      307,  307,  307,  307,  307,  206,  307,  307,  307,  307,
-      307,  307,  307,  273,  307,  307,  307,  307,  307,  209,
-      307,  307,  273,  273,  273,  273,  273,  273,  208,  208,
-
-      208,  242,  274,  307,  307,  307,  307,  307,  307,  244,
-      307,  274,  274,  274,  274,  274,  274,  245,  307,  307,
-      307,  307,  307,  246,   28,  307,  245,  245,  245,  245,
-      245,  245,   31,   28,   28,   28,   28,   28,   28,   34,
-      307,   31,   31,   31,   31,   31,   31,  276,   34,   34,
-       34,   34,   34,   34,  281,  307,  276,  276,  276,  276,
-      276,  276,  282,  281,  281,  281,  281,  281,  281,  307,
-      307,  282,  282,  282,  282,  282,  282,  270,  235,  235,
-      235,  270,  283,  307,  307,  307,  307,  307,  206,  307,
-      271,  283,  283,  283,  283,  283,  283,  284,  307,  307,
-
-      307,  307,  209,  290,  307,  307,  284,  284,  284,  284,
-      284,  284,  290,  290,  290,  290,  290,  290,  291,  307,
-      307,  307,  307,  307,  292,  307,  307,  291,  291,  291,
-      291,  291,  291,  292,  292,  292,  292,  292,  292,  293,
-      307,  307,  307,  307,  307,  297,  307,  307,  293,  293,
-      293,  293,  293,  293,  297,  297,  297,  297,  297,  297,
-      298,  307,  307,  307,  307,  307,  299,  307,  307,  298,
-      298,  298,  298,  298,  298,  299,  299,  299,  299,  299,
-      299,  303,  307,  307,  307,  307,  307,  304,  307,  307,
-      303,  303,  303,  303,  303,  303,  304,  304,  304,  304,
-
-      304,  304,  179,  307,  307,  307,  307,  307,  205,  307,
-      307,  179,  179,  179,  179,  179,  179,  205,  205,  205,
-      205,  205,  205,  208,  307,  307,  307,  307,  307,  307,
-      307,  307,  208,  208,  208,  208,  208,  208,   28,  307,
-       28,   28,   28,   28,   28,   28,   28,   31,   31,  307,
-       31,   31,   34,  307,   34,   34,   34,   34,   34,   34,
-       34,   39,  307,  307,   39,   39,   67,   67,   67,   67,
-       67,   67,   67,   71,   71,   71,  307,   71,   71,   79,
-       79,   79,   79,   79,   79,   79,   79,   79,   83,   83,
-       83,   83,   83,   83,   83,   86,   86,   86,   86,   86,
-
-       86,   86,   86,   86,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   48,   48,   93,   93,   93,   93,
-       93,   93,   93,   95,   95,  307,   95,   95,  120,  120,
-      120,  120,  120,  120,  120,  131,  131,  131,  131,  131,
-      131,  131,  131,  131,  131,  134,  134,  134,  134,  134,
-      134,  134,  151,  151,  151,  307,  151,  159,  159,  159,
-      159,  159,  159,  159,  159,  159,  159,  174,  174,  174,
-      307,  174,  179,  179,  179,  307,  179,  179,  179,  179,
-      179,  199,  199,  199,  307,  199,  205,  307,  205,  205,
-      205,  205,  205,  205,  205,  208,  307,  208,  208,  208,
-
-      208,  208,  208,  208,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  229,  229,  229,  307,  229,  238,  238,
-      238,  238,  238,  238,  238,  238,  238,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  259,  259,  259,  307,
-      259,    3,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307
-
+       59,   48,   48,   48,   48,   48,   85,   97,   48,   26,
+       26,   26,   26,   26,   69,   85,   85,   85,   85,   85,
+       85,   95,   99,   69,   69,   69,   69,   69,   69,   97,
+       95,   95,   95,   95,   95,   95,   97,   97,   98,   97,
+       97,   97,   29,   97,  101,   27,   28,   28,   28,   79,
+       97,  106,   81,  112,  102,  105,   71,  103,  107,   71,
+
+       97,   30,   97,  140,  108,   82,  104,  109,  310,   73,
+       29,   83,   73,   71,   82,   82,   82,   82,   82,   82,
+       34,   34,   34,   86,  110,  153,   73,  111,   29,   30,
+       29,   88,  155,  309,   93,  305,   28,   34,  134,   89,
+      126,   29,   35,   97,   35,   90,   97,   29,   89,   89,
+       89,   89,   89,   89,   68,   68,   68,   68,   68,   97,
+       30,   35,  138,   97,   71,  157,   71,  163,  139,  142,
+       97,  134,  141,  121,   29,  304,  167,   73,   73,   73,
+      123,   29,  121,  121,  121,  121,  121,  121,   35,  123,
+      123,  123,  123,  123,  123,  124,   97,  303,  298,  125,
+
+       30,  211,   97,  166,  124,  124,  124,  124,  124,  124,
+       80,  128,  128,  128,   80,  153,   29,  194,  153,  211,
+      212,  153,  179,  211,  153,  205,  297,  296,  236,  129,
+      211,  267,  295,  214,  294,   30,  293,  214,  129,  129,
+      129,  129,  129,  129,   28,   28,   28,   79,  137,  212,
+       81,  209,  209,  209,  209,  209,  211,  137,  137,  137,
+      137,  137,  137,   82,  186,  153,  288,  287,  282,   83,
+      214,  272,   82,   82,   82,   82,   82,   82,   84,   84,
+       84,   84,   84,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  210,  271,  213,  242,  130,  211,  211,
+
+      270,  242,  211,   32,  269,  211,  130,  130,  130,  130,
+      130,  130,   87,  131,  131,  131,   87,  212,  212,  214,
+      284,  212,  211,   29,  268,  263,  273,  241,  241,  241,
+      273,  132,  211,  262,  285,  261,  214,   35,  286,  274,
+      132,  132,  132,  132,  132,  132,   34,   34,   34,   86,
+      151,  212,  122,  122,  122,  122,  122,   88,  211,  151,
+      151,  151,  151,  151,  151,   89,   94,   94,   94,   94,
+       94,   90,  214,  211,   89,   89,   89,   89,   89,   89,
+       94,   94,   94,   94,   94,  260,  254,  240,  239,  238,
+      237,   97,  212,  231,  273,  241,  241,  241,  273,  135,
+
+      211,  230,  229,  228,  227,   97,   97,  274,  135,  135,
+      135,  135,  135,  135,  122,  122,  122,  122,  122,  212,
+      221,  208,  207,  206,  200,  159,  199,  198,  197,  196,
+      195,   97,  163,  152,  159,  159,  159,  159,  159,  159,
+      160,  188,  152,  152,  152,  152,  152,  152,  161,  160,
+      160,  160,  160,  160,  160,  164,  181,  161,  161,  161,
+      161,  161,  161,  180,  164,  164,  164,  164,  164,  164,
+      136,  136,  136,  136,  136,  174,  173,  172,  171,  170,
+      169,  175,  168,   97,   97,   97,   97,  163,  158,  165,
+      175,  175,  175,  175,  175,  175,  176,  156,  165,  165,
+
+      165,  165,  165,  165,  177,  176,  176,  176,  176,  176,
+      176,  150,  149,  177,  177,  177,  177,  177,  177,  182,
+      182,  182,  182,  182,  189,  184,  148,  147,  146,  145,
+      185,  144,  186,  189,  189,  189,  189,  189,  189,  190,
+      143,   97,   97,   97,  187,  191,   97,   97,  190,  190,
+      190,  190,  190,  190,  191,  191,  191,  191,  191,  191,
+      192,  136,  136,  136,  136,  136,  193,   97,   97,  192,
+      192,  192,  192,  192,  192,  193,  193,  193,  193,  193,
+      193,  201,   97,   97,   97,   97,   97,  202,   97,   93,
+      201,  201,  201,  201,  201,  201,  202,  202,  202,  202,
+
+      202,  202,  203,   32,  127,  120,  119,  118,  117,  116,
+      115,  203,  203,  203,  203,  203,  203,  182,  182,  182,
+      182,  182,  222,  184,  114,  113,   97,   97,  185,   40,
+      186,  222,  222,  222,  222,  222,  222,   46,   42,   93,
+       91,   32,  187,  209,  209,  209,  209,  209,  223,  316,
+       78,   77,   76,   70,  316,   60,  186,  223,  223,  223,
+      223,  223,  223,   41,   40,   36,   33,   32,  187,  209,
+      209,  209,  209,  215,  316,  217,  316,  316,  316,  316,
+      217,  217,  218,  316,  316,  316,  316,  316,  219,  316,
+      316,  316,  316,  316,  220,  224,  316,  219,  219,  219,
+
+      219,  219,  219,  225,  224,  224,  224,  224,  224,  224,
+      226,  316,  225,  225,  225,  225,  225,  225,  232,  226,
+      226,  226,  226,  226,  226,  233,  316,  232,  232,  232,
+      232,  232,  232,  234,  233,  233,  233,  233,  233,  233,
+      316,  316,  234,  234,  234,  234,  234,  234,  210,  210,
+      210,  243,  255,  316,  245,  316,  316,  316,  316,  316,
+      316,  255,  255,  255,  255,  255,  255,  246,  316,  316,
+      316,  316,  316,  247,  316,  316,  246,  246,  246,  246,
+      246,  246,  213,  213,  213,  248,  256,  316,  316,  316,
+      316,  316,  316,  250,  316,  256,  256,  256,  256,  256,
+
+      256,  251,  316,  316,  316,  316,  316,  252,  316,  316,
+      251,  251,  251,  251,  251,  251,  209,  209,  209,  209,
+      209,  257,  316,  316,  316,  316,  316,  316,  316,  186,
+      257,  257,  257,  257,  257,  257,  316,  316,  316,  316,
+      316,  187,  209,  209,  209,  209,  209,  258,  316,  316,
+      316,  316,  316,  316,  316,  186,  258,  258,  258,  258,
+      258,  258,  316,  316,  316,  316,  316,  187,  209,  209,
+      209,  209,  209,  259,  316,  316,  316,  316,  316,  316,
+      316,  186,  259,  259,  259,  259,  259,  259,  316,  316,
+      316,  316,  316,  187,  209,  209,  209,  209,  209,   72,
+
+      316,  316,  316,  316,  316,  316,  316,  186,   72,   72,
+       72,   72,   72,   72,  316,  316,  316,  316,  316,  187,
+      215,  215,  215,  215,  215,  316,  316,  316,  316,  316,
+      316,  316,  316,  186,  316,  316,  316,  316,  316,  253,
+      316,  316,  316,  316,  316,  187,  316,  316,  253,  253,
+      253,  253,  253,  253,  209,  209,  209,  209,  215,  316,
+      217,  316,  316,  316,  316,  217,  217,  218,  316,  316,
+      316,  316,  316,  219,  316,  316,  316,  316,  316,  220,
+      264,  316,  219,  219,  219,  219,  219,  219,  265,  264,
+      264,  264,  264,  264,  264,  316,  316,  265,  265,  265,
+
+      265,  265,  265,  244,  275,  275,  275,  244,  316,  211,
+      316,  316,  316,  316,  316,  316,  277,  241,  241,  241,
+      277,  316,  276,  316,  316,  316,  316,  211,  212,  278,
+      316,  276,  276,  276,  276,  276,  276,  210,  210,  210,
+      243,  214,  316,  245,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  246,  316,  316,  316,
+      316,  316,  247,  316,  316,  246,  246,  246,  246,  246,
+      246,  249,  279,  279,  279,  249,  316,  316,  316,  316,
+      316,  316,  211,  316,  316,  316,  316,  316,  316,  316,
+      280,  316,  316,  316,  316,  316,  214,  316,  316,  280,
+
+      280,  280,  280,  280,  280,  213,  213,  213,  248,  281,
+      316,  316,  316,  316,  316,  316,  250,  316,  281,  281,
+      281,  281,  281,  281,  251,  316,  316,  316,  316,  316,
+      252,   28,  316,  251,  251,  251,  251,  251,  251,   31,
+       28,   28,   28,   28,   28,   28,   34,  316,   31,   31,
+       31,   31,   31,   31,  283,   34,   34,   34,   34,   34,
+       34,  289,  316,  283,  283,  283,  283,  283,  283,  290,
+      289,  289,  289,  289,  289,  289,  316,  316,  290,  290,
+      290,  290,  290,  290,  277,  241,  241,  241,  277,  291,
+      316,  316,  316,  316,  316,  211,  316,  278,  291,  291,
+
+      291,  291,  291,  291,  292,  316,  316,  316,  316,  214,
+      299,  316,  316,  292,  292,  292,  292,  292,  292,  299,
+      299,  299,  299,  299,  299,  300,  316,  316,  316,  316,
+      316,  301,  316,  316,  300,  300,  300,  300,  300,  300,
+      301,  301,  301,  301,  301,  301,  302,  316,  316,  316,
+      316,  316,  306,  316,  316,  302,  302,  302,  302,  302,
+      302,  306,  306,  306,  306,  306,  306,  307,  316,  316,
+      316,  316,  316,  308,  316,  316,  307,  307,  307,  307,
+      307,  307,  308,  308,  308,  308,  308,  308,  312,  316,
+      316,  316,  316,  316,  313,  316,  316,  312,  312,  312,
+
+      312,  312,  312,  313,  313,  313,  313,  313,  313,  183,
+      316,  316,  316,  316,  316,  210,  316,  316,  183,  183,
+      183,  183,  183,  183,  210,  210,  210,  210,  210,  210,
+      213,  316,  316,  316,  316,  316,  316,  316,  316,  213,
+      213,  213,  213,  213,  213,   28,  316,   28,   28,   28,
+       28,   28,   28,   28,   31,   31,  316,   31,   31,   34,
+      316,   34,   34,   34,   34,   34,   34,   34,   39,  316,
+      316,   39,   39,   68,   68,   68,   68,   68,   68,   68,
+       72,   72,   72,  316,   72,   72,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   84,   84,   84,   84,   84,
+
+       84,   84,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   92,   92,   92,   92,   92,   92,   92,   92,   92,
+       92,   48,   48,   94,   94,   94,   94,   94,   94,   94,
+       96,   96,  316,   96,   96,  122,  122,  122,  122,  122,
+      122,  122,  133,  133,  133,  133,  133,  133,  133,  133,
+      133,  133,  136,  136,  136,  136,  136,  136,  136,  154,
+      154,  154,  316,  154,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  178,  178,  178,  316,  178,  183,
+      183,  183,  316,  183,  183,  183,  183,  183,  204,  204,
+      204,  316,  204,  210,  316,  210,  210,  210,  210,  210,
+
+      210,  210,  213,  316,  213,  213,  213,  213,  213,  213,
+      213,  216,  216,  216,  216,  216,  216,  216,  216,  216,
+      235,  235,  235,  316,  235,  244,  244,  244,  244,  244,
+      244,  244,  244,  244,  249,  249,  249,  249,  249,  249,
+      249,  249,  249,  266,  266,  266,  316,  266,    3,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+
+      316,  316,  316,  316,  316
     } ;
 
-static yyconst short int yy_chk[1699] =
+static yyconst short int yy_chk[1706] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -404,186 +408,187 @@ static yyconst short int yy_chk[1699] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    5,    5,    5,    5,
         5,    6,    6,    6,    6,    6,    7,    7,    7,    7,
-        7,    8,   11,   13,   18,  302,   21,   25,   25,   25,
-       25,   25,   13,   39,   22,   34,   11,   22,   18,   21,
-        8,   18,  300,   28,   18,   19,   39,   22,   18,   34,
+        7,    8,   11,   13,   18,  311,   21,   25,   25,   25,
+       25,   25,   13,   39,   22,   50,   11,   22,   18,   21,
+        8,   18,   50,   28,   18,   19,   39,   22,   18,   18,
 
-       49,   18,    7,   16,   19,   19,   19,   19,   19,   19,
-       16,   16,   28,   16,   40,   49,   40,   22,   47,   16,
-       47,   16,   16,   16,   16,   16,   16,   16,   16,   16,
+       34,   18,    7,   16,   19,   19,   19,   19,   19,   19,
+       16,   16,   28,   16,   34,  309,   40,   22,   40,   16,
+      305,   16,   16,   16,   16,   16,   16,   16,   16,   16,
        16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   32,  296,   16,   26,
+       16,   16,   16,   16,   16,   16,   32,   49,   16,   26,
        26,   26,   26,   26,   38,   32,   32,   32,   32,   32,
-       32,   46,   50,   38,   38,   38,   38,   38,   38,   50,
-       46,   46,   46,   46,   46,   46,   51,   52,   53,   54,
-       55,   56,  295,  294,   86,   26,   30,   30,   30,   30,
-       55,   51,   30,  288,   67,   54,   56,   52,   86,   71,
-
-       74,   51,   56,   57,   53,   30,   58,   67,   57,   58,
-       79,   30,   71,   74,   30,   30,   30,   30,   30,   30,
-       35,   35,   35,   35,   72,   57,  111,   74,   57,   79,
-       87,   35,  111,   72,   72,   72,   72,   72,   72,   35,
-       80,   78,   97,   92,   87,   35,   78,   92,   35,   35,
-       35,   35,   35,   35,   68,   68,   68,   68,   68,   80,
-       99,   97,  120,  105,  129,   78,   68,   85,  102,   99,
-      287,  102,  286,   68,  122,  120,  126,   85,  129,   68,
-      124,  122,   68,   68,   68,   68,   68,   68,   73,  105,
-      138,   85,   73,  124,  280,  126,  138,   73,   73,   73,
-
-       73,   73,   73,   81,   81,   81,   81,   81,  136,   81,
-      151,  163,  160,  174,  199,  136,  160,  151,  229,  279,
-      174,  199,   81,  180,  278,  229,  163,  277,   81,  275,
-      181,   81,   81,   81,   81,   81,   81,   82,   82,   82,
-       82,   96,  180,   82,  181,  204,  204,  204,  204,  204,
-       96,   96,   96,   96,   96,   96,   82,  205,  204,  237,
-      259,  256,   82,  208,  237,   82,   82,   82,   82,   82,
-       82,   84,   84,   84,   84,   84,  205,  208,  206,  206,
-      206,  206,  206,  237,  235,  235,  235,  235,  235,  248,
-       84,  206,  238,  234,  233,  267,   84,  235,  243,   84,
-
-       84,   84,   84,   84,   84,   88,   88,   88,   88,   88,
-      268,  238,  243,  254,  267,  232,   88,  231,  230,  239,
-      239,  239,  239,  239,   88,  239,  224,  254,  223,  268,
-       88,  254,  239,   88,   88,   88,   88,   88,   88,   89,
-       89,   89,   89,  119,  239,  257,  257,  257,  257,  257,
-       89,  271,  119,  119,  119,  119,  119,  119,   89,  252,
-      252,  252,  252,  252,   89,  271,  272,   89,   89,   89,
-       89,   89,   89,   94,   94,   94,   94,   94,  222,  216,
-      272,  203,  202,  201,  252,  200,  194,  193,  192,  242,
-      191,  190,   94,  184,  177,  176,  175,  169,   94,  242,
-
-      168,   94,   94,   94,   94,   94,   94,  121,  121,  121,
-      121,  121,  167,  242,  166,  165,  164,  159,  127,  155,
-      153,  152,  147,  146,  145,  144,  121,  127,  127,  127,
-      127,  127,  127,  128,  143,  121,  121,  121,  121,  121,
-      121,  130,  128,  128,  128,  128,  128,  128,  133,  142,
-      130,  130,  130,  130,  130,  130,  140,  133,  133,  133,
-      133,  133,  133,  135,  135,  135,  135,  135,  139,  137,
-      134,  131,  125,  123,  148,  118,  117,  116,  115,  114,
-      113,  112,  135,  148,  148,  148,  148,  148,  148,  149,
-      110,  135,  135,  135,  135,  135,  135,  150,  149,  149,
-
-      149,  149,  149,  149,  109,  108,  150,  150,  150,  150,
-      150,  150,  154,  154,  154,  154,  154,  156,  154,  107,
-      106,  104,  103,  154,  101,  154,  156,  156,  156,  156,
-      156,  156,  157,  100,   98,   95,   93,  154,  158,   91,
-       83,  157,  157,  157,  157,  157,  157,  158,  158,  158,
-      158,  158,  158,  161,  276,  276,  276,  276,  276,  162,
-       77,   66,  161,  161,  161,  161,  161,  161,  162,  162,
-      162,  162,  162,  162,  171,   65,   64,   63,   62,  276,
-      172,   61,   60,  171,  171,  171,  171,  171,  171,  172,
-      172,  172,  172,  172,  172,  173,   59,   48,   44,   43,
-
-       42,   41,   37,   31,  173,  173,  173,  173,  173,  173,
-      178,  178,  178,  178,  178,  185,  178,   27,   24,   23,
-       20,  178,   17,  178,  185,  185,  185,  185,  185,  185,
-       15,   14,   12,   10,    9,  178,  179,  179,  179,  179,
-      179,  186,  179,    3,    0,    0,    0,  179,    0,  179,
-      186,  186,  186,  186,  186,  186,    0,    0,    0,    0,
-        0,  179,  183,  183,  183,  183,  183,    0,  183,    0,
-        0,    0,    0,  183,  183,  183,    0,    0,    0,    0,
-        0,  183,    0,    0,    0,    0,    0,  183,  187,    0,
-      183,  183,  183,  183,  183,  183,  188,  187,  187,  187,
-
-      187,  187,  187,  189,    0,  188,  188,  188,  188,  188,
-      188,  196,  189,  189,  189,  189,  189,  189,  197,    0,
-      196,  196,  196,  196,  196,  196,  198,  197,  197,  197,
-      197,  197,  197,    0,    0,  198,  198,  198,  198,  198,
-      198,  207,  207,  207,  207,  217,    0,  207,    0,    0,
-        0,    0,    0,    0,  217,  217,  217,  217,  217,  217,
-      207,    0,    0,    0,    0,    0,  207,    0,    0,  207,
-      207,  207,  207,  207,  207,  209,  209,  209,  209,  218,
-        0,    0,    0,    0,    0,    0,  209,    0,  218,  218,
-      218,  218,  218,  218,  209,    0,    0,    0,    0,    0,
-
-      209,    0,    0,  209,  209,  209,  209,  209,  209,  210,
-      210,  210,  210,  210,  219,  210,    0,    0,    0,    0,
-      210,    0,  210,  219,  219,  219,  219,  219,  219,    0,
-        0,    0,    0,    0,  210,  211,  211,  211,  211,  211,
-      220,  211,    0,    0,    0,    0,  211,    0,  211,  220,
-      220,  220,  220,  220,  220,    0,    0,    0,    0,    0,
-      211,  212,  212,  212,  212,  212,  221,  212,    0,    0,
-        0,    0,  212,    0,  212,  221,  221,  221,  221,  221,
-      221,    0,    0,    0,    0,    0,  212,  213,  213,  213,
-      213,  213,  226,  213,    0,    0,    0,    0,  213,    0,
-
-      213,  226,  226,  226,  226,  226,  226,    0,    0,    0,
-        0,    0,  213,  214,  214,  214,  214,  214,    0,  214,
-        0,    0,    0,    0,  214,    0,  214,  266,  266,  266,
-      266,  266,  214,  266,    0,    0,    0,    0,  214,    0,
-      266,  214,  214,  214,  214,  214,  214,  215,  215,  215,
-      215,  215,  266,  215,    0,    0,    0,    0,  215,  215,
-      215,    0,    0,    0,    0,    0,  215,    0,    0,    0,
-        0,    0,  215,  227,    0,  215,  215,  215,  215,  215,
-      215,  228,  227,  227,  227,  227,  227,  227,    0,    0,
-      228,  228,  228,  228,  228,  228,  240,  240,  240,  240,
-
-      240,    0,  240,    0,    0,    0,    0,    0,    0,  244,
-      244,  244,  244,  244,    0,  240,    0,    0,    0,    0,
-      244,  240,  244,    0,  240,  240,  240,  240,  240,  240,
-      241,  241,  241,  241,  244,    0,  241,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  241,
-        0,    0,    0,    0,    0,  241,    0,    0,  241,  241,
-      241,  241,  241,  241,  245,  245,  245,  245,  245,    0,
-        0,    0,    0,    0,    0,  245,    0,    0,    0,    0,
-        0,    0,    0,  245,    0,    0,    0,    0,    0,  245,
-        0,    0,  245,  245,  245,  245,  245,  245,  246,  246,
-
-      246,  246,  247,    0,    0,    0,    0,    0,    0,  246,
-        0,  247,  247,  247,  247,  247,  247,  246,    0,    0,
-        0,    0,    0,  246,  249,    0,  246,  246,  246,  246,
-      246,  246,  250,  249,  249,  249,  249,  249,  249,  251,
-        0,  250,  250,  250,  250,  250,  250,  253,  251,  251,
-      251,  251,  251,  251,  258,    0,  253,  253,  253,  253,
-      253,  253,  269,  258,  258,  258,  258,  258,  258,    0,
-        0,  269,  269,  269,  269,  269,  269,  270,  270,  270,
-      270,  270,  273,    0,    0,    0,    0,    0,  270,    0,
-      270,  273,  273,  273,  273,  273,  273,  274,    0,    0,
-
-        0,    0,  270,  281,    0,    0,  274,  274,  274,  274,
-      274,  274,  281,  281,  281,  281,  281,  281,  282,    0,
-        0,    0,    0,    0,  283,    0,    0,  282,  282,  282,
-      282,  282,  282,  283,  283,  283,  283,  283,  283,  284,
-        0,    0,    0,    0,    0,  291,    0,    0,  284,  284,
-      284,  284,  284,  284,  291,  291,  291,  291,  291,  291,
-      292,    0,    0,    0,    0,    0,  293,    0,    0,  292,
-      292,  292,  292,  292,  292,  293,  293,  293,  293,  293,
-      293,  297,    0,    0,    0,    0,    0,  298,    0,    0,
-      297,  297,  297,  297,  297,  297,  298,  298,  298,  298,
-
-      298,  298,  299,    0,    0,    0,    0,    0,  303,    0,
-        0,  299,  299,  299,  299,  299,  299,  303,  303,  303,
-      303,  303,  303,  304,    0,    0,    0,    0,    0,    0,
-        0,    0,  304,  304,  304,  304,  304,  304,  308,    0,
-      308,  308,  308,  308,  308,  308,  308,  309,  309,    0,
-      309,  309,  310,    0,  310,  310,  310,  310,  310,  310,
-      310,  311,    0,    0,  311,  311,  312,  312,  312,  312,
-      312,  312,  312,  313,  313,  313,    0,  313,  313,  314,
-      314,  314,  314,  314,  314,  314,  314,  314,  315,  315,
-      315,  315,  315,  315,  315,  316,  316,  316,  316,  316,
-
-      316,  316,  316,  316,  317,  317,  317,  317,  317,  317,
-      317,  317,  317,  317,  318,  318,  319,  319,  319,  319,
-      319,  319,  319,  320,  320,    0,  320,  320,  321,  321,
-      321,  321,  321,  321,  321,  322,  322,  322,  322,  322,
-      322,  322,  322,  322,  322,  323,  323,  323,  323,  323,
-      323,  323,  324,  324,  324,    0,  324,  325,  325,  325,
-      325,  325,  325,  325,  325,  325,  325,  326,  326,  326,
-        0,  326,  327,  327,  327,    0,  327,  327,  327,  327,
-      327,  328,  328,  328,    0,  328,  329,    0,  329,  329,
-      329,  329,  329,  329,  329,  330,    0,  330,  330,  330,
-
-      330,  330,  330,  330,  331,  331,  331,  331,  331,  331,
-      331,  331,  331,  332,  332,  332,    0,  332,  333,  333,
-      333,  333,  333,  333,  333,  333,  333,  334,  334,  334,
-      334,  334,  334,  334,  334,  334,  335,  335,  335,    0,
-      335,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307,  307,  307,
-      307,  307,  307,  307,  307,  307,  307,  307
-
+       32,   46,   49,   38,   38,   38,   38,   38,   38,   51,
+       46,   46,   46,   46,   46,   46,   47,   52,   47,   54,
+       53,   55,   80,   56,   51,   26,   30,   30,   30,   30,
+       58,   55,   30,   58,   51,   54,   68,   52,   56,   72,
+
+      103,   80,   57,  103,   56,   30,   53,   57,  304,   68,
+       81,   30,   72,   75,   30,   30,   30,   30,   30,   30,
+       35,   35,   35,   35,   57,  124,   75,   57,   87,   81,
+       88,   35,  124,  303,   93,  296,   79,   86,   93,   35,
+       75,   79,   87,   98,   88,   35,  106,   86,   35,   35,
+       35,   35,   35,   35,   69,   69,   69,   69,   69,  100,
+       79,   86,   98,  112,  122,  126,   69,  163,  100,  112,
+      140,  163,  106,   69,  131,  295,  140,  122,  126,   69,
+       73,  128,   69,   69,   69,   69,   69,   69,  131,   73,
+       73,   73,   73,   73,   73,   74,  138,  294,  288,   74,
+
+      128,  184,  166,  138,   74,   74,   74,   74,   74,   74,
+       82,   82,   82,   82,   82,  154,   82,  166,  178,  185,
+      184,  204,  154,  213,  235,  178,  287,  286,  204,   82,
+      210,  235,  285,  185,  284,   82,  282,  213,   82,   82,
+       82,   82,   82,   82,   83,   83,   83,   83,   97,  210,
+       83,  209,  209,  209,  209,  209,  249,   97,   97,   97,
+       97,   97,   97,   83,  209,  266,  263,  262,  254,   83,
+      249,  240,   83,   83,   83,   83,   83,   83,   85,   85,
+       85,   85,   85,  211,  211,  211,  211,  211,  241,  241,
+      241,  241,  241,  243,  239,  248,  211,   85,  243,  244,
+
+      238,  241,  274,   85,  237,  248,   85,   85,   85,   85,
+       85,   85,   89,   89,   89,   89,   89,  243,  244,  248,
+      260,  274,  278,   89,  236,  231,  245,  245,  245,  245,
+      245,   89,  245,  229,  260,  228,  278,   89,  260,  245,
+       89,   89,   89,   89,   89,   89,   90,   90,   90,   90,
+      121,  245,  264,  264,  264,  264,  264,   90,  279,  121,
+      121,  121,  121,  121,  121,   90,  258,  258,  258,  258,
+      258,   90,  279,  275,   90,   90,   90,   90,   90,   90,
+       95,   95,   95,   95,   95,  227,  221,  208,  207,  206,
+      205,  258,  275,  200,  273,  273,  273,  273,  273,   95,
+
+      273,  198,  197,  196,  195,   95,  194,  273,   95,   95,
+       95,   95,   95,   95,  123,  123,  123,  123,  123,  273,
+      188,  181,  180,  179,  173,  129,  172,  171,  170,  169,
+      168,  167,  162,  123,  129,  129,  129,  129,  129,  129,
+      130,  158,  123,  123,  123,  123,  123,  123,  132,  130,
+      130,  130,  130,  130,  130,  135,  156,  132,  132,  132,
+      132,  132,  132,  155,  135,  135,  135,  135,  135,  135,
+      137,  137,  137,  137,  137,  150,  149,  148,  147,  146,
+      145,  151,  144,  142,  141,  139,  136,  133,  127,  137,
+      151,  151,  151,  151,  151,  151,  152,  125,  137,  137,
+
+      137,  137,  137,  137,  153,  152,  152,  152,  152,  152,
+      152,  120,  119,  153,  153,  153,  153,  153,  153,  157,
+      157,  157,  157,  157,  159,  157,  118,  117,  116,  115,
+      157,  114,  157,  159,  159,  159,  159,  159,  159,  160,
+      113,  111,  110,  109,  157,  161,  108,  107,  160,  160,
+      160,  160,  160,  160,  161,  161,  161,  161,  161,  161,
+      164,  283,  283,  283,  283,  283,  165,  105,  104,  164,
+      164,  164,  164,  164,  164,  165,  165,  165,  165,  165,
+      165,  175,  102,  101,   99,   96,  283,  176,   94,   92,
+      175,  175,  175,  175,  175,  175,  176,  176,  176,  176,
+
+      176,  176,  177,   84,   78,   67,   66,   65,   64,   63,
+       62,  177,  177,  177,  177,  177,  177,  182,  182,  182,
+      182,  182,  189,  182,   61,   60,   59,   48,  182,   44,
+      182,  189,  189,  189,  189,  189,  189,   43,   42,   41,
+       37,   31,  182,  183,  183,  183,  183,  183,  190,  183,
+       27,   24,   23,   20,  183,   17,  183,  190,  190,  190,
+      190,  190,  190,   15,   14,   12,   10,    9,  183,  187,
+      187,  187,  187,  187,    3,  187,    0,    0,    0,    0,
+      187,  187,  187,    0,    0,    0,    0,    0,  187,    0,
+        0,    0,    0,    0,  187,  191,    0,  187,  187,  187,
+
+      187,  187,  187,  192,  191,  191,  191,  191,  191,  191,
+      193,    0,  192,  192,  192,  192,  192,  192,  201,  193,
+      193,  193,  193,  193,  193,  202,    0,  201,  201,  201,
+      201,  201,  201,  203,  202,  202,  202,  202,  202,  202,
+        0,    0,  203,  203,  203,  203,  203,  203,  212,  212,
+      212,  212,  222,    0,  212,    0,    0,    0,    0,    0,
+        0,  222,  222,  222,  222,  222,  222,  212,    0,    0,
+        0,    0,    0,  212,    0,    0,  212,  212,  212,  212,
+      212,  212,  214,  214,  214,  214,  223,    0,    0,    0,
+        0,    0,    0,  214,    0,  223,  223,  223,  223,  223,
+
+      223,  214,    0,    0,    0,    0,    0,  214,    0,    0,
+      214,  214,  214,  214,  214,  214,  215,  215,  215,  215,
+      215,  224,  215,    0,    0,    0,    0,  215,    0,  215,
+      224,  224,  224,  224,  224,  224,    0,    0,    0,    0,
+        0,  215,  216,  216,  216,  216,  216,  225,  216,    0,
+        0,    0,    0,  216,    0,  216,  225,  225,  225,  225,
+      225,  225,    0,    0,    0,    0,    0,  216,  217,  217,
+      217,  217,  217,  226,  217,    0,    0,    0,    0,  217,
+        0,  217,  226,  226,  226,  226,  226,  226,    0,    0,
+        0,    0,    0,  217,  218,  218,  218,  218,  218,  232,
+
+      218,    0,    0,    0,    0,  218,    0,  218,  232,  232,
+      232,  232,  232,  232,    0,    0,    0,    0,    0,  218,
+      219,  219,  219,  219,  219,    0,  219,    0,    0,    0,
+        0,  219,    0,  219,    0,    0,    0,    0,    0,  219,
+        0,    0,    0,    0,    0,  219,    0,    0,  219,  219,
+      219,  219,  219,  219,  220,  220,  220,  220,  220,    0,
+      220,    0,    0,    0,    0,  220,  220,  220,    0,    0,
+        0,    0,    0,  220,    0,    0,    0,    0,    0,  220,
+      233,    0,  220,  220,  220,  220,  220,  220,  234,  233,
+      233,  233,  233,  233,  233,    0,    0,  234,  234,  234,
+
+      234,  234,  234,  246,  246,  246,  246,  246,    0,  246,
+        0,    0,    0,    0,    0,    0,  250,  250,  250,  250,
+      250,    0,  246,    0,    0,    0,    0,  250,  246,  250,
+        0,  246,  246,  246,  246,  246,  246,  247,  247,  247,
+      247,  250,    0,  247,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  247,    0,    0,    0,
+        0,    0,  247,    0,    0,  247,  247,  247,  247,  247,
+      247,  251,  251,  251,  251,  251,    0,    0,    0,    0,
+        0,    0,  251,    0,    0,    0,    0,    0,    0,    0,
+      251,    0,    0,    0,    0,    0,  251,    0,    0,  251,
+
+      251,  251,  251,  251,  251,  252,  252,  252,  252,  253,
+        0,    0,    0,    0,    0,    0,  252,    0,  253,  253,
+      253,  253,  253,  253,  252,    0,    0,    0,    0,    0,
+      252,  255,    0,  252,  252,  252,  252,  252,  252,  256,
+      255,  255,  255,  255,  255,  255,  257,    0,  256,  256,
+      256,  256,  256,  256,  259,  257,  257,  257,  257,  257,
+      257,  265,    0,  259,  259,  259,  259,  259,  259,  276,
+      265,  265,  265,  265,  265,  265,    0,    0,  276,  276,
+      276,  276,  276,  276,  277,  277,  277,  277,  277,  280,
+        0,    0,    0,    0,    0,  277,    0,  277,  280,  280,
+
+      280,  280,  280,  280,  281,    0,    0,    0,    0,  277,
+      289,    0,    0,  281,  281,  281,  281,  281,  281,  289,
+      289,  289,  289,  289,  289,  290,    0,    0,    0,    0,
+        0,  291,    0,    0,  290,  290,  290,  290,  290,  290,
+      291,  291,  291,  291,  291,  291,  292,    0,    0,    0,
+        0,    0,  300,    0,    0,  292,  292,  292,  292,  292,
+      292,  300,  300,  300,  300,  300,  300,  301,    0,    0,
+        0,    0,    0,  302,    0,    0,  301,  301,  301,  301,
+      301,  301,  302,  302,  302,  302,  302,  302,  306,    0,
+        0,    0,    0,    0,  307,    0,    0,  306,  306,  306,
+
+      306,  306,  306,  307,  307,  307,  307,  307,  307,  308,
+        0,    0,    0,    0,    0,  312,    0,    0,  308,  308,
+      308,  308,  308,  308,  312,  312,  312,  312,  312,  312,
+      313,    0,    0,    0,    0,    0,    0,    0,    0,  313,
+      313,  313,  313,  313,  313,  317,    0,  317,  317,  317,
+      317,  317,  317,  317,  318,  318,    0,  318,  318,  319,
+        0,  319,  319,  319,  319,  319,  319,  319,  320,    0,
+        0,  320,  320,  321,  321,  321,  321,  321,  321,  321,
+      322,  322,  322,    0,  322,  322,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  324,  324,  324,  324,  324,
+
+      324,  324,  325,  325,  325,  325,  325,  325,  325,  325,
+      325,  326,  326,  326,  326,  326,  326,  326,  326,  326,
+      326,  327,  327,  328,  328,  328,  328,  328,  328,  328,
+      329,  329,    0,  329,  329,  330,  330,  330,  330,  330,
+      330,  330,  331,  331,  331,  331,  331,  331,  331,  331,
+      331,  331,  332,  332,  332,  332,  332,  332,  332,  333,
+      333,  333,    0,  333,  334,  334,  334,  334,  334,  334,
+      334,  334,  334,  334,  335,  335,  335,    0,  335,  336,
+      336,  336,    0,  336,  336,  336,  336,  336,  337,  337,
+      337,    0,  337,  338,    0,  338,  338,  338,  338,  338,
+
+      338,  338,  339,    0,  339,  339,  339,  339,  339,  339,
+      339,  340,  340,  340,  340,  340,  340,  340,  340,  340,
+      341,  341,  341,    0,  341,  342,  342,  342,  342,  342,
+      342,  342,  342,  342,  343,  343,  343,  343,  343,  343,
+      343,  343,  343,  344,  344,  344,    0,  344,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+
+      316,  316,  316,  316,  316
     } ;
 
 YY_DECL
@@ -615,13 +620,13 @@ YY_DECL
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 308 )
+				if ( yy_current_state >= 317 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 1642 );
+		while ( yy_base[yy_current_state] != 1649 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -734,122 +739,122 @@ YY_RULE_SETUP
 case 18:
 YY_RULE_SETUP
 #line 48 "tokenizer.flex"
-{yyTok = KHTML_RULE_SYM; return yyTok; }
+{yyTok = NAMESPACE_SYM; return yyTok; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
 #line 49 "tokenizer.flex"
-{yyTok = KHTML_DECLS_SYM; return yyTok; }
+{yyTok = KHTML_RULE_SYM; return yyTok; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
 #line 50 "tokenizer.flex"
-{yyTok = KHTML_VALUE_SYM; return yyTok; }
+{yyTok = KHTML_DECLS_SYM; return yyTok; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 52 "tokenizer.flex"
-{yyTok = IMPORTANT_SYM; return yyTok;}
+#line 51 "tokenizer.flex"
+{yyTok = KHTML_VALUE_SYM; return yyTok; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 54 "tokenizer.flex"
-{yyTok = EMS; return yyTok;}
+#line 53 "tokenizer.flex"
+{yyTok = IMPORTANT_SYM; return yyTok;}
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
 #line 55 "tokenizer.flex"
-{yyTok = QEMS; return yyTok;} /* quirky ems */
+{yyTok = EMS; return yyTok;}
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 56 "tokenizer.flex"
-{yyTok = EXS; return yyTok;}
+{yyTok = QEMS; return yyTok;} /* quirky ems */
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 57 "tokenizer.flex"
-{yyTok = PXS; return yyTok;}
+{yyTok = EXS; return yyTok;}
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 58 "tokenizer.flex"
-{yyTok = CMS; return yyTok;}
+{yyTok = PXS; return yyTok;}
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 59 "tokenizer.flex"
-{yyTok = MMS; return yyTok;}
+{yyTok = CMS; return yyTok;}
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 60 "tokenizer.flex"
-{yyTok = INS; return yyTok;}
+{yyTok = MMS; return yyTok;}
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 61 "tokenizer.flex"
-{yyTok = PTS; return yyTok;}
+{yyTok = INS; return yyTok;}
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 62 "tokenizer.flex"
-{yyTok = PCS; return yyTok;}
+{yyTok = PTS; return yyTok;}
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 63 "tokenizer.flex"
-{yyTok = DEGS; return yyTok;}
+{yyTok = PCS; return yyTok;}
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 64 "tokenizer.flex"
-{yyTok = RADS; return yyTok;}
+{yyTok = DEGS; return yyTok;}
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 65 "tokenizer.flex"
-{yyTok = GRADS; return yyTok;}
+{yyTok = RADS; return yyTok;}
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 66 "tokenizer.flex"
-{yyTok = MSECS; return yyTok;}
+{yyTok = GRADS; return yyTok;}
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 67 "tokenizer.flex"
-{yyTok = SECS; return yyTok;}
+{yyTok = MSECS; return yyTok;}
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 68 "tokenizer.flex"
-{yyTok = HERZ; return yyTok;}
+{yyTok = SECS; return yyTok;}
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 69 "tokenizer.flex"
-{yyTok = KHERZ; return yyTok;}
+{yyTok = HERZ; return yyTok;}
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 70 "tokenizer.flex"
-{yyTok = DIMEN; return yyTok;}
+{yyTok = KHERZ; return yyTok;}
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 71 "tokenizer.flex"
-{yyTok = PERCENTAGE; return yyTok;}
+{yyTok = DIMEN; return yyTok;}
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 72 "tokenizer.flex"
-{yyTok = NUMBER; return yyTok;}
+{yyTok = PERCENTAGE; return yyTok;}
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 74 "tokenizer.flex"
-{yyTok = URI; return yyTok;}
+#line 73 "tokenizer.flex"
+{yyTok = NUMBER; return yyTok;}
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
@@ -859,12 +864,12 @@ YY_RULE_SETUP
 case 43:
 YY_RULE_SETUP
 #line 76 "tokenizer.flex"
-{yyTok = FUNCTION; return yyTok;}
+{yyTok = URI; return yyTok;}
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 78 "tokenizer.flex"
-{yyTok = UNICODERANGE; return yyTok;}
+#line 77 "tokenizer.flex"
+{yyTok = FUNCTION; return yyTok;}
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
@@ -873,15 +878,20 @@ YY_RULE_SETUP
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 81 "tokenizer.flex"
-{yyTok = *yytext; return yyTok;}
+#line 80 "tokenizer.flex"
+{yyTok = UNICODERANGE; return yyTok;}
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 83 "tokenizer.flex"
+#line 82 "tokenizer.flex"
+{yyTok = *yytext; return yyTok;}
+	YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 84 "tokenizer.flex"
 ECHO;
 	YY_BREAK
-#line 1320 "lex.yy.c"
+#line 1330 "lex.yy.c"
 case YY_STATE_EOF(INITIAL):
 case YY_END_OF_BUFFER:
 	yyterminate();
diff --git a/WebCore/khtml/css/tokenizer.flex b/WebCore/khtml/css/tokenizer.flex
index d0631cb..5a20a3d 100644
--- a/WebCore/khtml/css/tokenizer.flex
+++ b/WebCore/khtml/css/tokenizer.flex
@@ -45,6 +45,7 @@ range           \?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??|
 "@media"                {yyTok = MEDIA_SYM; return yyTok;}
 "@font-face"            {yyTok = FONT_FACE_SYM; return yyTok;}
 "@charset"              {yyTok = CHARSET_SYM; return yyTok;}
+"@namespace"            {yyTok = NAMESPACE_SYM; return yyTok; }
 "@-khtml-rule"    {yyTok = KHTML_RULE_SYM; return yyTok; }
 "@-khtml-decls"   {yyTok = KHTML_DECLS_SYM; return yyTok; }
 "@-khtml-value"   {yyTok = KHTML_VALUE_SYM; return yyTok; }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list