diff --git a/Projects/OS2/VACPP40/xerces_validators.icc b/Projects/OS2/VACPP40/xerces_validators.icc
index 490c1002a10618bf77c33bed051f6c75f5cdb282..d03eac18b70dee390ebac7a461c04721dc6c914f 100644
--- a/Projects/OS2/VACPP40/xerces_validators.icc
+++ b/Projects/OS2/VACPP40/xerces_validators.icc
@@ -43,4 +43,5 @@ group xerces_validators =
     BASE_DIR "\\src\\validators\\schema\\ComplexTypeInfo.cpp",
     BASE_DIR "\\src\\validators\\schema\\GeneralAttributeCheck.cpp",
     BASE_DIR "\\src\\validators\\schema\\XercesGroupInfo.cpp",
+    BASE_DIR "\\src\\validators\\schema\\XercesAttGroupInfo.cpp",
     BASE_DIR "\\src\\validators\\schema\\TraverseSchema.cpp"
diff --git a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp
index fe1a96adb112a3f94f11abacfea4805e16d38a9f..072c9edc17e3ad378dbf6e3bd0582c841e0f9c78 100644
--- a/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp
+++ b/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp
@@ -2003,6 +2003,14 @@ SOURCE=..\..\..\..\..\src\validators\schema\TraverseSchema.hpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\..\..\..\src\validators\schema\XercesAttGroupInfo.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\src\validators\schema\XercesAttGroupInfo.hpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\..\..\..\src\validators\schema\XercesGroupInfo.cpp
 # End Source File
 # Begin Source File
diff --git a/src/NLS/EN_US/XMLErrList_EN_US.Xml b/src/NLS/EN_US/XMLErrList_EN_US.Xml
index 294f7fd78cc9cf34972911ca98dd70f6fb516c55..3392bba9bdccf8545e1c1518c7e28bf0680e4f6d 100644
--- a/src/NLS/EN_US/XMLErrList_EN_US.Xml
+++ b/src/NLS/EN_US/XMLErrList_EN_US.Xml
@@ -21,11 +21,11 @@
             <Message Id="NoNameRefAttribute" Text="Attribute must have a name or a ref - attribute declaration ignored"/>
             <Message Id="GlobalNoNameElement" Text="Globally-declared element must have a name - element declaration ignored"/>
             <Message Id="NoNameRefElement" Text="Element must have a name or a ref attribute - element ignored"/>
-            <Message Id="NoNameRefGroup" Text="&lt;group&gt; must have a name or a ref attribute - element ignored"/>
+            <Message Id="NoNameRefGroup" Text="&lt;group&gt; must have a name or a ref attribute - declaration ignored"/>
+            <Message Id="NoNameRefAttGroup" Text="&lt;attributeGroup&gt; must have a name or a ref attribute - declaration ignored"/>
             <Message Id="AnonComplexTypeWithName" Text="Anonymous complexType in element {0} has a name attribute"/>
             <Message Id="AnonSimpleTypeWithName" Text="Anonymous simpleType in element {0} has a name attribute"/>
             <Message Id="InvalidElementContent" Text="The content of an element information item does not match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)"/>
-            <Message Id="InvalidAttributeName" Text="Invalid attribute name: {0} - declaration ignored"/>
             <Message Id="UntypedElement" Text="Untyped element: {0}"/>
             <Message Id="SimpleTypeContentError" Text="Error in content of simpleType"/>
             <Message Id="ExpectedSimpleTypeInList" Text="Expected simpleType in 'list' declaration for {0}"/>
@@ -50,7 +50,6 @@
             <Message Id="BaseTypeNotFound" Text="Base type could not be found: {0}"/>
             <Message Id="NoAttributeInSchema" Text="No attribute '{0}' was defined in schema: {1}"/>
             <Message Id="DatatypeValidatorCreationError" Text="Error creating datatype validator: {0}"/>
-            <Message Id="InvalidComplexTypeName" Text="Error: Invalid complexType name - '{0}' is not a valid NCName"/>
             <Message Id="InvalidChildFollowingSimpleContent" Text="Invalid child following the simpleContent child in the complexType"/>
             <Message Id="InvalidChildFollowingConplexContent" Text="Invalid child following the complexContent child in the complexType"/>
             <Message Id="InvalidComplexTypeBlockValue" Text="The 'block' attribute values of a complexType must be #all | list(restriction,extension); {0} was found"/>
@@ -63,11 +62,9 @@
             <Message Id="AttributeWithTypeAndSimpleType" Text="Attribute declarations may not contain both a type and a simpleType declaration"/>
             <Message Id="AttributeSimpleTypeNotFound" Text="SimpleType ({0}:{1}) for attribute: {2} not found"/>
             <Message Id="ElementWithFixedAndDefault" Text="An element cannot have both 'fixed' and 'default' present at the same time"/>
-            <Message Id="ElementWithNameRef" Text="Element name:{0} has also a ref defined - name ignored"/>
-            <Message Id="GroupWithNameRef" Text="group:'{0}' has also a ref defined - name ignored"/>
+            <Message Id="DeclarationWithNameRef" Text="{0}:'{1}' has also a ref defined - name ignored"/>
             <Message Id="BadAttWithRef" Text="ref cannot appear with any of type, abstract, block, final, nullable, default or fixed"/>
-            <Message Id="InvalidElementName" Text="Invalid element name: {0} - declaration ignored"/>
-            <Message Id="InvalidGroupName" Text="Invalid group name:'{0}' - declaration ignored"/>
+            <Message Id="InvalidDeclarationName" Text="Invalid {0} name:'{1}' - declaration ignored"/>
             <Message Id="GlobalElementWithRef" Text="Globally-declared element {0} cannot have a ref attribute - ref ignored"/>
             <Message Id="ElementWithTypeAndAnonType" Text="Element '{0}' cannot have both a type attribute and a simpleType/complexType type child"/>
             <Message Id="NotSimpleOrMixedElement" Text="Element {0} has a fixed or default value and must have a mixed simple or simple content model"/>
@@ -110,7 +107,7 @@
             <Message Id="NoNameGlobalElement" Text="Global &lt;{0}&gt; must have a name - declaration ignored"/>
             <Message Id="NoCircularDefinition" Text="No circular definitions are allowed: '{0}'"/>
             <Message Id="DuplicateGlobalType" Text="Global {0}:'{1}' declared more than once or also declared as {2}"/>
-            <Message Id="DuplicateGlobalGroup" Text="Global group:'{1}' declared more than once"/>
+            <Message Id="DuplicateGlobalDeclaration" Text="Global {0}:'{1}' declared more than once"/>
             <Message Id="WS_CollapseExpected" Text="Invalid value '{0}' for facet 'whiteSpace'. Value should be 'collapse'."/>
             <Message Id="Import_1_1" Text="The namespace of an &lt;import&gt; element must be different from the targetNamespace of the &lt;import&gt;ing schema"/>
             <Message Id="Import_1_2" Text="If the namespace on an &lt;import&gt; element is not present, the &lt;import&gt;ing schema must have a targetNamespace"/>
@@ -120,15 +117,17 @@
             <Message Id="EmptyComplexRestrictionDerivation" Text="The content of complexType is EMPTY, but base is not empty or does not have emptiable particle."/>
             <Message Id="MixedOrElementOnly" Text="The content type of the base type:'{0}' and derived type:'{1}' must both be mixed or element-only."/>
             <Message Id="InvalidContentRestriction" Text="The content type is not a valid restriction of the content type of the base."/>
-            <Message Id="ForbiddenDerivation" Text="Derivation by extension or restriction is forbiden by either the base type '{0}' or the schema"/>
+            <Message Id="ForbiddenDerivation" Text="Derivation by extension or restriction is forbiden by either the base type '{0}' or the schema"/> 
             <Message Id="AtomicItemType" Text="The {item type definition} must have {variety} of atomic or union (where all member types must be atomic)"/>
             <Message Id="MemberTypeNoUnion" Text="The {member type definitions} must all have {variety} of atomic or list"/>
             <Message Id="GroupContentError" Text="The group:'0' must contain (all | choice | sequence)"/>
+            <Message Id="AttGroupContentError" Text="The attributeGroup:'0' must match (annotation?. ((attribute | attributeGroup)*, anyAttribute?))"/>
             <Message Id="MinMaxOnGroupChild" Text="The child of a model group definition must not specify either the minOccurs or maxOccurs attribute."/>
-            <Message Id="GroupNotFound" Text="The group:'{0}' not found in the schema"/>
+            <Message Id="DeclarationNotFound" Text="The {0} -'{1}:{2}'- not found in the schema"/>
             <Message Id="AllContentLimited" Text="A group whose content is 'all' must only appear as the content type of a complex type definition."/>
             <Message Id="BadMinMaxAllCT" Text="When a model group has {compositor} 'all' which constitutes the {content type} of a complex type, minOccurs=maxOccurs=1"/>
             <Message Id="BadMinMaxAllElem" Text="In an 'all' schema component, the value of minCoccurs/maxOccurs of an element must be '0' or '1'."/>
+            <Message Id="NoCircularAttGroup" Text="Circular attributeGroup reference -{0}- is disallowed outside &lt;redefine&gt;"/>
             <Message Id="DisplayErrorMessage" Text="{0}"/>
         </Error>
         <FatalError>
@@ -300,7 +299,7 @@
             <Message Id="GroupContentRestricted" Text="Error: {0} content must be one of element, group, modelGroupRef. Saw {1}"/>
             <Message Id="UnknownBaseDatatype" Text="Unknown base type {0} for type {1}."/>
             <Message Id="OneOfTypeRefArchRef" Text="Can only have one of type and ref attributes."/>
-            <Message Id="NoContentForRef" Text="Cannot have child content for an element/group declaration that has a ref attribute"/>
+            <Message Id="NoContentForRef" Text="A &lt;{0}&gt; declaration that has a ref attribute, cannot have child content."/>
             <Message Id="IncorrectDefaultType" Text="Incorrect type for {0}'s default value: {1}"/>
             <Message Id="IllegalAttContent" Text="Illegal content {0} in attribute group"/>
             <Message Id="ValueNotInteger" Text="Value of {0} is not an integer."/>
diff --git a/src/framework/XMLErrorCodes.hpp b/src/framework/XMLErrorCodes.hpp
index 998c93a086f3101f8e6843801b145aff225581da..596b84cc0dba52d2957c8cfca618d88b0addc8dc 100644
--- a/src/framework/XMLErrorCodes.hpp
+++ b/src/framework/XMLErrorCodes.hpp
@@ -26,10 +26,10 @@ public :
       , GlobalNoNameElement                = 13
       , NoNameRefElement                   = 14
       , NoNameRefGroup                     = 15
-      , AnonComplexTypeWithName            = 16
-      , AnonSimpleTypeWithName             = 17
-      , InvalidElementContent              = 18
-      , InvalidAttributeName               = 19
+      , NoNameRefAttGroup                  = 16
+      , AnonComplexTypeWithName            = 17
+      , AnonSimpleTypeWithName             = 18
+      , InvalidElementContent              = 19
       , UntypedElement                     = 20
       , SimpleTypeContentError             = 21
       , ExpectedSimpleTypeInList           = 22
@@ -54,214 +54,213 @@ public :
       , BaseTypeNotFound                   = 41
       , NoAttributeInSchema                = 42
       , DatatypeValidatorCreationError     = 43
-      , InvalidComplexTypeName             = 44
-      , InvalidChildFollowingSimpleContent   = 45
-      , InvalidChildFollowingConplexContent   = 46
-      , InvalidComplexTypeBlockValue       = 47
-      , InvalidComplexTypeFinalValue       = 48
-      , AttributeDefaultFixedValue         = 49
-      , NotOptionalDefaultAttValue         = 50
-      , LocalAttributeWithNameRef          = 51
-      , GlobalAttributeWithNameRef         = 52
-      , DuplicateAttribute                 = 53
-      , AttributeWithTypeAndSimpleType     = 54
-      , AttributeSimpleTypeNotFound        = 55
-      , ElementWithFixedAndDefault         = 56
-      , ElementWithNameRef                 = 57
-      , GroupWithNameRef                   = 58
-      , BadAttWithRef                      = 59
-      , InvalidElementName                 = 60
-      , InvalidGroupName                   = 61
-      , GlobalElementWithRef               = 62
-      , ElementWithTypeAndAnonType         = 63
-      , NotSimpleOrMixedElement            = 64
-      , DisallowedSimpleTypeExtension      = 65
-      , InvalidSimpleContentBase           = 66
-      , InvalidComplexTypeBase             = 67
-      , InvalidChildInSimpleContent        = 68
-      , InvalidChildInComplexContent       = 69
-      , AnnotationError                    = 70
-      , DisallowedBaseDerivation           = 71
-      , SubstitutionRepeated               = 72
-      , UnionRepeated                      = 73
-      , ExtensionRepeated                  = 74
-      , ListRepeated                       = 75
-      , RestrictionRepeated                = 76
-      , InvalidBlockValue                  = 77
-      , InvalidFinalValue                  = 78
-      , InvalidSubstitutionGroupElement    = 79
-      , SubstitutionGroupTypeMismatch      = 80
-      , DuplicateElementDeclaration        = 81
-      , InvalidElementBlockValue           = 82
-      , InvalidElementFinalValue           = 83
-      , InvalidAttValue                    = 84
-      , AttributeRefContentError           = 85
-      , DuplicateRefAttribute              = 86
-      , ForbiddenDerivationByRestriction   = 87
-      , ForbiddenDerivationByExtension     = 88
-      , BaseNotComplexType                 = 89
-      , ImportNoSchemaLocation             = 90
-      , ImportNamespaceDifference          = 91
-      , ImportRootError                    = 92
-      , IncludeNoSchemaLocation            = 93
-      , IncludeNamespaceDifference         = 94
-      , OnlyAnnotationExpected             = 95
-      , InvalidAttributeContent            = 96
-      , AttributeRequired                  = 97
-      , AttributeDisallowed                = 98
-      , InvalidMin2MaxOccurs               = 99
-      , AnyAttributeContentError           = 100
-      , NoNameGlobalElement                = 101
-      , NoCircularDefinition               = 102
-      , DuplicateGlobalType                = 103
-      , DuplicateGlobalGroup               = 104
-      , WS_CollapseExpected                = 105
-      , Import_1_1                         = 106
-      , Import_1_2                         = 107
-      , ElemIDValueConstraint              = 108
-      , NoNotationType                     = 109
-      , EmptiableMixedContent              = 110
-      , EmptyComplexRestrictionDerivation   = 111
-      , MixedOrElementOnly                 = 112
-      , InvalidContentRestriction          = 113
-      , ForbiddenDerivation                = 114
-      , AtomicItemType                     = 115
-      , MemberTypeNoUnion                  = 116
-      , GroupContentError                  = 117
-      , MinMaxOnGroupChild                 = 118
-      , GroupNotFound                      = 119
-      , AllContentLimited                  = 120
-      , BadMinMaxAllCT                     = 121
-      , BadMinMaxAllElem                   = 122
-      , DisplayErrorMessage                = 123
-      , E_HighBounds                       = 124
-      , F_LowBounds                        = 125
-      , ExpectedCommentOrCDATA             = 126
-      , ExpectedAttrName                   = 127
-      , ExpectedNotationName               = 128
-      , NoRepInMixed                       = 129
-      , BadDefAttrDecl                     = 130
-      , ExpectedDefAttrDecl                = 131
-      , AttListSyntaxError                 = 132
-      , ExpectedEqSign                     = 133
-      , DupAttrName                        = 134
-      , BadIdForXMLLangAttr                = 135
-      , ExpectedElementName                = 136
-      , MustStartWithXMLDecl               = 137
-      , CommentsMustStartWith              = 138
-      , InvalidDocumentStructure           = 139
-      , ExpectedDeclString                 = 140
-      , BadXMLVersion                      = 141
-      , UnsupportedXMLVersion              = 142
-      , UnterminatedXMLDecl                = 143
-      , BadXMLEncoding                     = 144
-      , BadStandalone                      = 145
-      , UnterminatedComment                = 146
-      , PINameExpected                     = 147
-      , UnterminatedPI                     = 148
-      , InvalidCharacter                   = 149
-      , UnexpectedTextBeforeRoot           = 150
-      , UnterminatedStartTag               = 151
-      , ExpectedAttrValue                  = 152
-      , UnterminatedEndTag                 = 153
-      , ExpectedAttributeType              = 154
-      , ExpectedEndOfTagX                  = 155
-      , ExpectedMarkup                     = 156
-      , NotValidAfterContent               = 157
-      , ExpectedComment                    = 158
-      , ExpectedCommentOrPI                = 159
-      , ExpectedWhitespace                 = 160
-      , NoRootElemInDOCTYPE                = 161
-      , ExpectedQuotedString               = 162
-      , ExpectedPublicId                   = 163
-      , InvalidPublicIdChar                = 164
-      , UnterminatedDOCTYPE                = 165
-      , InvalidCharacterInIntSubset        = 166
-      , ExpectedCDATA                      = 167
-      , InvalidInitialNameChar             = 168
-      , InvalidNameChar                    = 169
-      , UnexpectedWhitespace               = 170
-      , InvalidCharacterInAttrValue        = 171
-      , ExpectedMarkupDecl                 = 172
-      , TextDeclNotLegalHere               = 173
-      , ConditionalSectInIntSubset         = 174
-      , ExpectedPEName                     = 175
-      , UnterminatedEntityDecl             = 176
-      , InvalidCharacterRef                = 177
-      , UnterminatedCharRef                = 178
-      , ExpectedEntityRefName              = 179
-      , EntityNotFound                     = 180
-      , NoUnparsedEntityRefs               = 181
-      , UnterminatedEntityRef              = 182
-      , RecursiveEntity                    = 183
-      , PartialMarkupInEntity              = 184
-      , UnterminatedElementDecl            = 185
-      , ExpectedContentSpecExpr            = 186
-      , ExpectedAsterisk                   = 187
-      , UnterminatedContentModel           = 188
-      , ExpectedSystemId                   = 189
-      , ExpectedSystemOrPublicId           = 190
-      , UnterminatedNotationDecl           = 191
-      , ExpectedSeqChoiceLeaf              = 192
-      , ExpectedChoiceOrCloseParen         = 193
-      , ExpectedSeqOrCloseParen            = 194
-      , ExpectedEnumValue                  = 195
-      , ExpectedEnumSepOrParen             = 196
-      , UnterminatedEntityLiteral          = 197
-      , MoreEndThanStartTags               = 198
-      , ExpectedOpenParen                  = 199
-      , AttrAlreadyUsedInSTag              = 200
-      , BracketInAttrValue                 = 201
-      , Expected2ndSurrogateChar           = 202
-      , ExpectedEndOfConditional           = 203
-      , ExpectedIncOrIgn                   = 204
-      , ExpectedINCLUDEBracket             = 205
-      , ExpectedTextDecl                   = 206
-      , ExpectedXMLDecl                    = 207
-      , UnexpectedEOE                      = 208
-      , PEPropogated                       = 209
-      , ExtraCloseSquare                   = 210
-      , PERefInMarkupInIntSubset           = 211
-      , EntityPropogated                   = 212
-      , ExpectedNumericalCharRef           = 213
-      , ExpectedOpenSquareBracket          = 214
-      , BadSequenceInCharData              = 215
-      , IllegalSequenceInComment           = 216
-      , UnterminatedCDATASection           = 217
-      , ExpectedNDATA                      = 218
-      , NDATANotValidForPE                 = 219
-      , HexRadixMustBeLowerCase            = 220
-      , DeclStringRep                      = 221
-      , DeclStringsInWrongOrder            = 222
-      , NoExtRefsInAttValue                = 223
-      , XMLDeclMustBeLowerCase             = 224
-      , ExpectedEntityValue                = 225
-      , BadDigitForRadix                   = 226
-      , EndedWithTagsOnStack               = 227
-      , AmbiguousContentModel              = 228
-      , NestedCDATA                        = 229
-      , UnknownPrefix                      = 230
-      , PartialTagMarkupError              = 231
-      , EmptyMainEntity                    = 232
-      , CDATAOutsideOfContent              = 233
-      , OnlyCharRefsAllowedHere            = 234
-      , Unexpected2ndSurrogateChar         = 235
-      , NoPIStartsWithXML                  = 236
-      , XMLDeclMustBeFirst                 = 237
-      , XMLVersionRequired                 = 238
-      , StandaloneNotLegal                 = 239
-      , EncodingRequired                   = 240
-      , TooManyColonsInName                = 241
-      , InvalidColonPos                    = 242
-      , ColonNotLegalWithNS                = 243
-      , SysException                       = 244
-      , XMLException                       = 245
-      , UnexpectedEOF                      = 246
-      , UnexpectedError                    = 247
-      , BadSchemaLocation                  = 248
-      , NoGrammarResolver                  = 249
-      , SchemaScanFatalError               = 250
-      , F_HighBounds                       = 251
+      , InvalidChildFollowingSimpleContent   = 44
+      , InvalidChildFollowingConplexContent   = 45
+      , InvalidComplexTypeBlockValue       = 46
+      , InvalidComplexTypeFinalValue       = 47
+      , AttributeDefaultFixedValue         = 48
+      , NotOptionalDefaultAttValue         = 49
+      , LocalAttributeWithNameRef          = 50
+      , GlobalAttributeWithNameRef         = 51
+      , DuplicateAttribute                 = 52
+      , AttributeWithTypeAndSimpleType     = 53
+      , AttributeSimpleTypeNotFound        = 54
+      , ElementWithFixedAndDefault         = 55
+      , DeclarationWithNameRef             = 56
+      , BadAttWithRef                      = 57
+      , InvalidDeclarationName             = 58
+      , GlobalElementWithRef               = 59
+      , ElementWithTypeAndAnonType         = 60
+      , NotSimpleOrMixedElement            = 61
+      , DisallowedSimpleTypeExtension      = 62
+      , InvalidSimpleContentBase           = 63
+      , InvalidComplexTypeBase             = 64
+      , InvalidChildInSimpleContent        = 65
+      , InvalidChildInComplexContent       = 66
+      , AnnotationError                    = 67
+      , DisallowedBaseDerivation           = 68
+      , SubstitutionRepeated               = 69
+      , UnionRepeated                      = 70
+      , ExtensionRepeated                  = 71
+      , ListRepeated                       = 72
+      , RestrictionRepeated                = 73
+      , InvalidBlockValue                  = 74
+      , InvalidFinalValue                  = 75
+      , InvalidSubstitutionGroupElement    = 76
+      , SubstitutionGroupTypeMismatch      = 77
+      , DuplicateElementDeclaration        = 78
+      , InvalidElementBlockValue           = 79
+      , InvalidElementFinalValue           = 80
+      , InvalidAttValue                    = 81
+      , AttributeRefContentError           = 82
+      , DuplicateRefAttribute              = 83
+      , ForbiddenDerivationByRestriction   = 84
+      , ForbiddenDerivationByExtension     = 85
+      , BaseNotComplexType                 = 86
+      , ImportNoSchemaLocation             = 87
+      , ImportNamespaceDifference          = 88
+      , ImportRootError                    = 89
+      , IncludeNoSchemaLocation            = 90
+      , IncludeNamespaceDifference         = 91
+      , OnlyAnnotationExpected             = 92
+      , InvalidAttributeContent            = 93
+      , AttributeRequired                  = 94
+      , AttributeDisallowed                = 95
+      , InvalidMin2MaxOccurs               = 96
+      , AnyAttributeContentError           = 97
+      , NoNameGlobalElement                = 98
+      , NoCircularDefinition               = 99
+      , DuplicateGlobalType                = 100
+      , DuplicateGlobalDeclaration         = 101
+      , WS_CollapseExpected                = 102
+      , Import_1_1                         = 103
+      , Import_1_2                         = 104
+      , ElemIDValueConstraint              = 105
+      , NoNotationType                     = 106
+      , EmptiableMixedContent              = 107
+      , EmptyComplexRestrictionDerivation   = 108
+      , MixedOrElementOnly                 = 109
+      , InvalidContentRestriction          = 110
+      , ForbiddenDerivation                = 111
+      , AtomicItemType                     = 112
+      , MemberTypeNoUnion                  = 113
+      , GroupContentError                  = 114
+      , AttGroupContentError               = 115
+      , MinMaxOnGroupChild                 = 116
+      , DeclarationNotFound                = 117
+      , AllContentLimited                  = 118
+      , BadMinMaxAllCT                     = 119
+      , BadMinMaxAllElem                   = 120
+      , NoCircularAttGroup                 = 121
+      , DisplayErrorMessage                = 122
+      , E_HighBounds                       = 123
+      , F_LowBounds                        = 124
+      , ExpectedCommentOrCDATA             = 125
+      , ExpectedAttrName                   = 126
+      , ExpectedNotationName               = 127
+      , NoRepInMixed                       = 128
+      , BadDefAttrDecl                     = 129
+      , ExpectedDefAttrDecl                = 130
+      , AttListSyntaxError                 = 131
+      , ExpectedEqSign                     = 132
+      , DupAttrName                        = 133
+      , BadIdForXMLLangAttr                = 134
+      , ExpectedElementName                = 135
+      , MustStartWithXMLDecl               = 136
+      , CommentsMustStartWith              = 137
+      , InvalidDocumentStructure           = 138
+      , ExpectedDeclString                 = 139
+      , BadXMLVersion                      = 140
+      , UnsupportedXMLVersion              = 141
+      , UnterminatedXMLDecl                = 142
+      , BadXMLEncoding                     = 143
+      , BadStandalone                      = 144
+      , UnterminatedComment                = 145
+      , PINameExpected                     = 146
+      , UnterminatedPI                     = 147
+      , InvalidCharacter                   = 148
+      , UnexpectedTextBeforeRoot           = 149
+      , UnterminatedStartTag               = 150
+      , ExpectedAttrValue                  = 151
+      , UnterminatedEndTag                 = 152
+      , ExpectedAttributeType              = 153
+      , ExpectedEndOfTagX                  = 154
+      , ExpectedMarkup                     = 155
+      , NotValidAfterContent               = 156
+      , ExpectedComment                    = 157
+      , ExpectedCommentOrPI                = 158
+      , ExpectedWhitespace                 = 159
+      , NoRootElemInDOCTYPE                = 160
+      , ExpectedQuotedString               = 161
+      , ExpectedPublicId                   = 162
+      , InvalidPublicIdChar                = 163
+      , UnterminatedDOCTYPE                = 164
+      , InvalidCharacterInIntSubset        = 165
+      , ExpectedCDATA                      = 166
+      , InvalidInitialNameChar             = 167
+      , InvalidNameChar                    = 168
+      , UnexpectedWhitespace               = 169
+      , InvalidCharacterInAttrValue        = 170
+      , ExpectedMarkupDecl                 = 171
+      , TextDeclNotLegalHere               = 172
+      , ConditionalSectInIntSubset         = 173
+      , ExpectedPEName                     = 174
+      , UnterminatedEntityDecl             = 175
+      , InvalidCharacterRef                = 176
+      , UnterminatedCharRef                = 177
+      , ExpectedEntityRefName              = 178
+      , EntityNotFound                     = 179
+      , NoUnparsedEntityRefs               = 180
+      , UnterminatedEntityRef              = 181
+      , RecursiveEntity                    = 182
+      , PartialMarkupInEntity              = 183
+      , UnterminatedElementDecl            = 184
+      , ExpectedContentSpecExpr            = 185
+      , ExpectedAsterisk                   = 186
+      , UnterminatedContentModel           = 187
+      , ExpectedSystemId                   = 188
+      , ExpectedSystemOrPublicId           = 189
+      , UnterminatedNotationDecl           = 190
+      , ExpectedSeqChoiceLeaf              = 191
+      , ExpectedChoiceOrCloseParen         = 192
+      , ExpectedSeqOrCloseParen            = 193
+      , ExpectedEnumValue                  = 194
+      , ExpectedEnumSepOrParen             = 195
+      , UnterminatedEntityLiteral          = 196
+      , MoreEndThanStartTags               = 197
+      , ExpectedOpenParen                  = 198
+      , AttrAlreadyUsedInSTag              = 199
+      , BracketInAttrValue                 = 200
+      , Expected2ndSurrogateChar           = 201
+      , ExpectedEndOfConditional           = 202
+      , ExpectedIncOrIgn                   = 203
+      , ExpectedINCLUDEBracket             = 204
+      , ExpectedTextDecl                   = 205
+      , ExpectedXMLDecl                    = 206
+      , UnexpectedEOE                      = 207
+      , PEPropogated                       = 208
+      , ExtraCloseSquare                   = 209
+      , PERefInMarkupInIntSubset           = 210
+      , EntityPropogated                   = 211
+      , ExpectedNumericalCharRef           = 212
+      , ExpectedOpenSquareBracket          = 213
+      , BadSequenceInCharData              = 214
+      , IllegalSequenceInComment           = 215
+      , UnterminatedCDATASection           = 216
+      , ExpectedNDATA                      = 217
+      , NDATANotValidForPE                 = 218
+      , HexRadixMustBeLowerCase            = 219
+      , DeclStringRep                      = 220
+      , DeclStringsInWrongOrder            = 221
+      , NoExtRefsInAttValue                = 222
+      , XMLDeclMustBeLowerCase             = 223
+      , ExpectedEntityValue                = 224
+      , BadDigitForRadix                   = 225
+      , EndedWithTagsOnStack               = 226
+      , AmbiguousContentModel              = 227
+      , NestedCDATA                        = 228
+      , UnknownPrefix                      = 229
+      , PartialTagMarkupError              = 230
+      , EmptyMainEntity                    = 231
+      , CDATAOutsideOfContent              = 232
+      , OnlyCharRefsAllowedHere            = 233
+      , Unexpected2ndSurrogateChar         = 234
+      , NoPIStartsWithXML                  = 235
+      , XMLDeclMustBeFirst                 = 236
+      , XMLVersionRequired                 = 237
+      , StandaloneNotLegal                 = 238
+      , EncodingRequired                   = 239
+      , TooManyColonsInName                = 240
+      , InvalidColonPos                    = 241
+      , ColonNotLegalWithNS                = 242
+      , SysException                       = 243
+      , XMLException                       = 244
+      , UnexpectedEOF                      = 245
+      , UnexpectedError                    = 246
+      , BadSchemaLocation                  = 247
+      , NoGrammarResolver                  = 248
+      , SchemaScanFatalError               = 249
+      , F_HighBounds                       = 250
     };
 
     static bool isFatal(const XMLErrs::Codes toCheck)
diff --git a/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp b/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp
index ca376d101fcf0d41b1466f903fde970e138f1570..e3b86cfd7d078aee78d409da8031e991c52f88d7 100644
--- a/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp
+++ b/src/util/MsgLoaders/InMemory/CppErrMsgs_EN_US.hpp
@@ -19,11 +19,11 @@ const XMLCh gXMLErrArray[][128] =
   , { 0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x002D,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
   , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x002D,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
   , { 0x0045,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
-  , { 0x003C,0x0067,0x0072,0x006F,0x0075,0x0070,0x003E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
+  , { 0x003C,0x0067,0x0072,0x006F,0x0075,0x0070,0x003E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
+  , { 0x003C,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x003E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
   , { 0x0041,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 }
   , { 0x0041,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 }
   , { 0x0054,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0066,0x006F,0x0072,0x006D,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0074,0x0065,0x006D,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0028,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x007C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0029,0x003F,0x002C,0x0020,0x0028,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0072,0x0065,0x0066,0x0029,0x002A,0x0029,0x00 }
-  , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x0020,0x007B,0x0030,0x007D,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
   , { 0x0055,0x006E,0x0074,0x0079,0x0070,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x003A,0x0020,0x007B,0x0030,0x007D,0x00 }
   , { 0x0045,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x00 }
   , { 0x0045,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0027,0x006C,0x0069,0x0073,0x0074,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x007B,0x0030,0x007D,0x00 }
@@ -48,7 +48,6 @@ const XMLCh gXMLErrArray[][128] =
   , { 0x0042,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0063,0x006F,0x0075,0x006C,0x0064,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x003A,0x0020,0x007B,0x0030,0x007D,0x00 }
   , { 0x004E,0x006F,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0077,0x0061,0x0073,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x003A,0x0020,0x007B,0x0031,0x007D,0x00 }
   , { 0x0045,0x0072,0x0072,0x006F,0x0072,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0069,0x006E,0x0067,0x0020,0x0064,0x0061,0x0074,0x0061,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x003A,0x0020,0x007B,0x0030,0x007D,0x00 }
-  , { 0x0045,0x0072,0x0072,0x006F,0x0072,0x003A,0x0020,0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x002D,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0043,0x004E,0x0061,0x006D,0x0065,0x00 }
   , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 }
   , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 }
   , { 0x0054,0x0068,0x0065,0x0020,0x0027,0x0062,0x006C,0x006F,0x0063,0x006B,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0023,0x0061,0x006C,0x006C,0x0020,0x007C,0x0020,0x006C,0x0069,0x0073,0x0074,0x0028,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x002C,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0029,0x003B,0x0020,0x007B,0x0030,0x007D,0x0020,0x0077,0x0061,0x0073,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 }
@@ -61,11 +60,9 @@ const XMLCh gXMLErrArray[][128] =
   , { 0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x006D,0x0061,0x0079,0x0020,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0061,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 }
   , { 0x0053,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0028,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0029,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003A,0x0020,0x007B,0x0032,0x007D,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 }
   , { 0x0041,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0066,0x0069,0x0078,0x0065,0x0064,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0027,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 }
-  , { 0x0045,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x007B,0x0030,0x007D,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x002D,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
-  , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x002D,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
+  , { 0x007B,0x0030,0x007D,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x002D,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
   , { 0x0072,0x0065,0x0066,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0061,0x006E,0x0079,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x002C,0x0020,0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x002C,0x0020,0x0062,0x006C,0x006F,0x0063,0x006B,0x002C,0x0020,0x0066,0x0069,0x006E,0x0061,0x006C,0x002C,0x0020,0x006E,0x0075,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x002C,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x006F,0x0072,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x00 }
-  , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x0020,0x007B,0x0030,0x007D,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
-  , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
+  , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x007B,0x0030,0x007D,0x0020,0x006E,0x0061,0x006D,0x0065,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
   , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x002D,0x0020,0x0072,0x0065,0x0066,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
   , { 0x0045,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0061,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x002F,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x00 }
   , { 0x0045,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x006F,0x0072,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 }
@@ -108,7 +105,7 @@ const XMLCh gXMLErrArray[][128] =
   , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x003C,0x007B,0x0030,0x007D,0x003E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x002D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0065,0x0064,0x00 }
   , { 0x004E,0x006F,0x0020,0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x003A,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 }
   , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0063,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x007B,0x0032,0x007D,0x00 }
-  , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0063,0x0065,0x00 }
+  , { 0x0047,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x003A,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0063,0x0065,0x00 }
   , { 0x0049,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0027,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0027,0x002E,0x0020,0x0056,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0068,0x006F,0x0075,0x006C,0x0064,0x0020,0x0062,0x0065,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061,0x0070,0x0073,0x0065,0x0027,0x002E,0x00 }
   , { 0x0054,0x0068,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x003C,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x003E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x004E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x003C,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x003E,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x00 }
   , { 0x0049,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x006E,0x0020,0x0061,0x006E,0x0020,0x003C,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x003E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x002C,0x0020,0x0074,0x0068,0x0065,0x0020,0x003C,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x003E,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x004E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 }
@@ -122,11 +119,13 @@ const XMLCh gXMLErrArray[][128] =
   , { 0x0054,0x0068,0x0065,0x0020,0x007B,0x0069,0x0074,0x0065,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x007D,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x007B,0x0076,0x0061,0x0072,0x0069,0x0065,0x0074,0x0079,0x007D,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x0020,0x006F,0x0072,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0028,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x0029,0x00 }
   , { 0x0054,0x0068,0x0065,0x0020,0x007B,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0073,0x007D,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0061,0x006C,0x006C,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x007B,0x0076,0x0061,0x0072,0x0069,0x0065,0x0074,0x0079,0x007D,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x0020,0x006F,0x0072,0x0020,0x006C,0x0069,0x0073,0x0074,0x00 }
   , { 0x0054,0x0068,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x0030,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0028,0x0061,0x006C,0x006C,0x0020,0x007C,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063,0x0065,0x0020,0x007C,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0029,0x00 }
+  , { 0x0054,0x0068,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x0030,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002E,0x0020,0x0028,0x0028,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x007C,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0029,0x002A,0x002C,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003F,0x0029,0x0029,0x00 }
   , { 0x0054,0x0068,0x0065,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0074,0x0068,0x0065,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x006F,0x0072,0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x002E,0x00 }
-  , { 0x0054,0x0068,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x003A,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x00 }
+  , { 0x0054,0x0068,0x0065,0x0020,0x007B,0x0030,0x007D,0x0020,0x002D,0x0027,0x007B,0x0031,0x007D,0x003A,0x007B,0x0032,0x007D,0x0027,0x002D,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x00 }
   , { 0x0041,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0068,0x006F,0x0073,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x0027,0x0061,0x006C,0x006C,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0061,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x002E,0x00 }
   , { 0x0057,0x0068,0x0065,0x006E,0x0020,0x0061,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0068,0x0061,0x0073,0x0020,0x007B,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x007D,0x0020,0x0027,0x0061,0x006C,0x006C,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0065,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x007B,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x007D,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x002C,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x003D,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x003D,0x0031,0x00 }
   , { 0x0049,0x006E,0x0020,0x0061,0x006E,0x0020,0x0027,0x0061,0x006C,0x006C,0x0027,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x002C,0x0020,0x0074,0x0068,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x006D,0x0069,0x006E,0x0043,0x006F,0x0063,0x0063,0x0075,0x0072,0x0073,0x002F,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0027,0x0030,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0031,0x0027,0x002E,0x00 }
+  , { 0x0043,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x002D,0x007B,0x0030,0x007D,0x002D,0x0020,0x0069,0x0073,0x0020,0x0064,0x0069,0x0073,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x006F,0x0075,0x0074,0x0073,0x0069,0x0064,0x0065,0x0020,0x003C,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x003E,0x00 }
   , { 0x007B,0x0030,0x007D,0x00 }
   , { 0x0045,0x005F,0x0045,0x006E,0x0064,0x00 }
   , { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 }
@@ -258,7 +257,7 @@ const XMLCh gXMLErrArray[][128] =
   , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 }
 
 };
-const unsigned int gXMLErrArraySize = 252;
+const unsigned int gXMLErrArraySize = 251;
 
 const XMLCh gXMLValidityArray[][128] = 
 {
@@ -302,7 +301,7 @@ const XMLCh gXMLValidityArray[][128] =
   , { 0x0045,0x0072,0x0072,0x006F,0x0072,0x003A,0x0020,0x007B,0x0030,0x007D,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x002C,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0047,0x0072,0x006F,0x0075,0x0070,0x0052,0x0065,0x0066,0x002E,0x0020,0x0053,0x0061,0x0077,0x0020,0x007B,0x0031,0x007D,0x00 }
   , { 0x0055,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x007B,0x0030,0x007D,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x007B,0x0031,0x007D,0x002E,0x00 }
   , { 0x0043,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0073,0x002E,0x00 }
-  , { 0x0043,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002F,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 }
+  , { 0x0041,0x0020,0x003C,0x007B,0x0030,0x007D,0x003E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0072,0x0065,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x002C,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x002E,0x00 }
   , { 0x0049,0x006E,0x0063,0x006F,0x0072,0x0072,0x0065,0x0063,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x007B,0x0030,0x007D,0x0027,0x0073,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x003A,0x0020,0x007B,0x0031,0x007D,0x00 }
   , { 0x0049,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 }
   , { 0x0056,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x002E,0x00 }
diff --git a/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg b/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg
index c686b15a007eec3c19e9d8199d557b59f1ca3f3d..b4f99ec71641ab4272ece8e1e972bf7c20606ec0 100644
--- a/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg
+++ b/src/util/MsgLoaders/MsgCatalog/XMLMsgCat_EN_US.Msg
@@ -11,11 +11,11 @@ $set 1
  12  Attribute must have a name or a ref - attribute declaration ignored
  13  Globally-declared element must have a name - element declaration ignored
  14  Element must have a name or a ref attribute - element ignored
- 15  <group> must have a name or a ref attribute - element ignored
- 16  Anonymous complexType in element {0} has a name attribute
- 17  Anonymous simpleType in element {0} has a name attribute
- 18  The content of an element information item does not match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)
- 19  Invalid attribute name: {0} - declaration ignored
+ 15  <group> must have a name or a ref attribute - declaration ignored
+ 16  <attributeGroup> must have a name or a ref attribute - declaration ignored
+ 17  Anonymous complexType in element {0} has a name attribute
+ 18  Anonymous simpleType in element {0} has a name attribute
+ 19  The content of an element information item does not match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)
  20  Untyped element: {0}
  21  Error in content of simpleType
  22  Expected simpleType in 'list' declaration for {0}
@@ -40,211 +40,210 @@ $set 1
  41  Base type could not be found: {0}
  42  No attribute '{0}' was defined in schema: {1}
  43  Error creating datatype validator: {0}
- 44  Error: Invalid complexType name - '{0}' is not a valid NCName
- 45  Invalid child following the simpleContent child in the complexType
- 46  Invalid child following the complexContent child in the complexType
- 47  The 'block' attribute values of a complexType must be #all | list(restriction,extension); {0} was found
- 48  The 'final' attribute values of a complexType must be #all | list(restriction,extension); {0} was found
- 49  An attribute cannot have both 'fixed' and 'default' present at the same time - default used
- 50  If default and use are both present, use must have the value 'optional'.
- 51  Local attribute:{0} has also a ref defined - name ignored
- 52  Global attribute:'{0}' cannot have a ref defined
- 53  Error: Attribute '{0}' declared more than once in the same scope- ignoring
- 54  Attribute declarations may not contain both a type and a simpleType declaration
- 55  SimpleType ({0}:{1}) for attribute: {2} not found
- 56  An element cannot have both 'fixed' and 'default' present at the same time
- 57  Element name:{0} has also a ref defined - name ignored
- 58  group:'{0}' has also a ref defined - name ignored
- 59  ref cannot appear with any of type, abstract, block, final, nullable, default or fixed
- 60  Invalid element name: {0} - declaration ignored
- 61  Invalid group name:'{0}' - declaration ignored
- 62  Globally-declared element {0} cannot have a ref attribute - ref ignored
- 63  Element '{0}' cannot have both a type attribute and a simpleType/complexType type child
- 64  Element {0} has a fixed or default value and must have a mixed simple or simple content model
- 65  The simpleType {0} that {1} uses has a value of 'final' which does not permit extension
- 66  The type '{0}' specified as the base in the simpleContent element must not have complexContent
- 67  The type '{0}' is a simple type. It cannot be used in a derivation by RESTRICTION for a complexType
- 68  Invalid child following the RESTRICTION or EXTENSION element in the simpleContent definition
- 69  Invalid child following the RESTRICTION or EXTENSION element in the complexContent definition
- 70  Annotation can only appear once: type {0}
- 71  The base type {0} does not allow itself to be used as the base for a restriction and/or as a type in a list and/or union
- 72  The value 'substitution' already in the list
- 73  The value 'union' is already in the list
- 74  The value 'extension' is already in the list
- 75  The value 'list' is already in the list
- 76  The value 'restriction' is already in the list
- 77  Invalid block value: {0}
- 78  Invalid final value: {0}
- 79  Element {0} cannot be part of the substitution group headed by {1}
- 80  Element {0} has a type which does not derive from the type of the element at the head of the substitution group
- 81  Duplicate element decl in the same scope: {0}
- 82  The 'block' attribute values of an element must be #all | list(substitution,restriction,extension); {0} was found
- 83  The 'final' attribute values of an element must be #all | list(restriction,extension); {0} was found
- 84  Invalid value '{0}' for attribute: '{1}'.
- 85  Ref is present, and simpleType/form/type found
- 86  Duplicate reference attribute {0}:{1} in complexType
- 87  Derivation by restriction is forbidden by either the base type '{0}' or the schema
- 88  Derivation by extension is forbidden by either the base type '{0}' or the schema
- 89  The base type specified in the complexContent element must be a complexType
- 90  A schemaLocation attribute must be specified on an 'import' element.
- 91  Imported schema '{0}' has a different targetNameSpace '{1}' from what's declared '{2}'
- 92  Could not get the doc root for imported Schema: {0}
- 93  A schemaLocation attribute must be specified on an 'include' element.
- 94  Included schema '{0}' has a different targetNameSpace '{1}'
- 95  At most one <annotation> element is expected in the content.
- 96  The 'atribute' content must be (annotation?, simpleType?); '{0}' encountered
- 97  Attribute '{0}' must appear in {1} {2} declarations
- 98  Attribute '{0}' cannot appear in {1} {2} declarations
- 99  Value of minOccurs '{0}' must not be greater than value of maxOccurs '{1}'
-100  'anyAttribute' elements can contain at most one 'annotation' element in their children
-101  Global <{0}> must have a name - declaration ignored
-102  No circular definitions are allowed: '{0}'
-103  Global {0}:'{1}' declared more than once or also declared as {2}
-104  Global group:'{1}' declared more than once
-105  Invalid value '{0}' for facet 'whiteSpace'. Value should be 'collapse'.
-106  The namespace of an <import> element must be different from the targetNamespace of the <import>ing schema
-107  If the namespace on an <import> element is not present, the <import>ing schema must have a targetNamespace
-108  Element '{0}' must not have a value constraint:'{1}' as its type is derived from ID
-109  It is an error for NOTATION to be used directly in a schema in element/attribute '{0}'
-110  For element '{0}', the {content type} is mixed, then the {content type}'s particle must be emptiable
-111  The content of complexType is EMPTY, but base is not empty or does not have emptiable particle.
-112  The content type of the base type:'{0}' and derived type:'{1}' must both be mixed or element-only.
-113  The content type is not a valid restriction of the content type of the base.
-114  Derivation by extension or restriction is forbiden by either the base type '{0}' or the schema
-115  The {item type definition} must have {variety} of atomic or union (where all member types must be atomic)
-116  The {member type definitions} must all have {variety} of atomic or list
-117  The group:'0' must contain (all | choice | sequence)
-118  The child of a model group definition must not specify either the minOccurs or maxOccurs attribute.
-119  The group:'{0}' not found in the schema
-120  A group whose content is 'all' must only appear as the content type of a complex type definition.
-121  When a model group has {compositor} 'all' which constitutes the {content type} of a complex type, minOccurs=maxOccurs=1
-122  In an 'all' schema component, the value of minCoccurs/maxOccurs of an element must be '0' or '1'.
-123  {0}
-126  Expected comment or CDATA
-127  Expected an attribute name
-128  Expected a notation name
-129  Repetition of individual elements is not legal for mixed content models
-130  Bad default attribute declaration
-131  Expected default attribute declaration, assuming #IMPLIED 
-132  Attribute list syntax error
-133  Expected equal sign
-134  Duplication attribute name
-135  Bad ID, '{0}', for xml:lang attribute
-136  Expected an element name
-137  Must start with an XMLDecl
-138  Comments must start with <!--
-139  Invalid document structure
-140  Expected a 'version=', 'encoding=', or 'standalone='
-141  Bad XML version string
-142  Unsupported XML version, '{0}'
-143  Unterminated XML decl
-144  Bad XML encoding declaration, '{0}'
-145  Bad standalone declaration
-146  Unterminated comment
-147  Processing instruction name expected
-148  Unterminated processing instruction
-149  Invalid character (Unicode: 0x{0})
-150  Unexpected text before root element
-151  Unterminated start tag, '{0}'
-152  Expected an attribute value
-153  Unterminated end tag
-154  Expected type (CDATA, ID, NMTOKEN, ..), for attribute '{0}' of element '{1}'
-155  Expected end of tag '{0}'
-156  Expected tag name, comment, PI, or other markup
-157  Not valid after content
-158  Expected comment
-159  Expected comment or processing instruction
-160  Expected whitespace
-161  No root element in DOCTYPE
-162  Expected quoted string
-163  Expected public id
-164  Invalid character in public id (Unicode: 0x{0})
-165  Unterminated DOCTYPE declaration
-166  Invalid character in internal subset (Unicode: 0x{0})
-167  Expected CDATA section
-168  Invalid initial name character
-169  Invalid name character
-170  Unexpected whitespace
-171  Invalid character in attribute value (Unicode: 0x{0})
-172  Expected a markup declaration
-173  Text declaration not legal here
-174  Conditional section in internal subset
-175  Expected parameter entity name
-176  Unterminated entity declaration, '{0}'
-177  Invalid character reference
-178  Unterminated character reference
-179  Expected entity name for reference
-180  Entity '{0}' was not found
-181  Unparsed entitty references, '{0}', not valid here
-182  Unterminated entity reference
-183  Recursive entity expansion
-184  Partial markup in entity value
-185  Unterminated element declaration, '{0}'
-186  Expected content specification expression for element '{0}'
-187  Expected asterisk
-188  Unterminated Content model
-189  Expected system id
-190  Expected system or public id
-191  Unterminated notation declaration
-192  Expected ',', '|', or ')' characters
-193  Expected '|' or ')' characters
-194  Expected ',' or ')' characters or close parenthesis in content model of element '{0}'
-195  Expected enumeration value for attribute '{0}'
-196  Expected | enumeration separator, or closing paren
-197  Unterminated entity literal
-198  There are more end tags than start tags
-199  Expected an open parenthesis
-200  The attribute '{0}' is already used in element '{1}'
-201  A '<' character cannot be used in attribute '{0}', except through &lt;
-202  A leading surrogate character was not followed by a legal second character
-203  Expected ']]>' to end a conditional section
-204  Expected INCLUDE or IGNORE here
-205  Expected [ to follow INCLUDE or IGNORE
-206  Expected a TextDecl here: <?xml ....
-207  Expected a XMLDecl here: <?xml ....
-208  Unexpected end of entity {0}
-209  A PE propogated out of the int/ext subset, discarding extra text
-210  An extra ] character was found an ignored
-211  PE refs are not allowed inside markup in the internal subset
-212  An entity propogated out of the content section into Miscellaneous
-213  Expected &# to be followed by a numeric character value
-214  Expected an open bracket ('[') here
-215  The sequence ']]>' is not allowed in character data
-216  Illegal sequence '--' in comment
-217  Unterminated CDATA section
-218  Expected NDATA
-219  NDATA is not legal for parameter entities
-220  Hex radix character refs must use 'x', not 'X'
-221  '{0}' has already been set. Ignoring redundant setting
-222  The XMLDecl strings must be in the order: version, encoding, standalone
-223  External entities cannot be referred to from attribute values
-224  The XML or Text decl must start with '<?xml ', not '<?XML '
-225  Expected a literal entity value or PUBLIC/SYSTEM id
-226  '{0}' is not a valid digit for the indicated radix
-227  The input ended before all started tags were ended. Last tag started was '{0}'
-228  The content model for element '{0}' is ambiguous
-229  Nested CDATA sections are not allowed
-230  The prefix '{0}' has not been mapped to any URI
-231  The start and the end tag were in the different entities
-232  The main XML document cannot be empty
-233  CDATA is not allowed outside the root element
-234  Only numeric character entities or special character entities are legal here
-235  Got an unexpected trailing surrogate character
-236  No processing instruction starts with 'xml'
-237  The XML or Text declaration must start at line/column 1/1
-238  The 'version=' string is required in an XMLDecl
-239  The 'standalone=' string is only allowed in the main XML entity
-240  The 'encoding=' string is required in an Text Decl
-241  When namespaces are enabled, a name can have only one colon character
-242  When namespaces are enabled, the colon cannot be the first or last character
-243  Colons are not allowed in this name when namespaces are enabled
-244  A system exception occured during processing
-245  An exception occured! Type:{0}, Message:{1}
-246  Unexpected end of file exception. Message: {0}
-247  UnexpectedError
-248  The schemaLocation attribute does not contain pairs of values.
-249  Internal error: don't have a GrammarResolver for TraverseSchema
-250  Fatal error encountered during schema scan
+ 44  Invalid child following the simpleContent child in the complexType
+ 45  Invalid child following the complexContent child in the complexType
+ 46  The 'block' attribute values of a complexType must be #all | list(restriction,extension); {0} was found
+ 47  The 'final' attribute values of a complexType must be #all | list(restriction,extension); {0} was found
+ 48  An attribute cannot have both 'fixed' and 'default' present at the same time - default used
+ 49  If default and use are both present, use must have the value 'optional'.
+ 50  Local attribute:{0} has also a ref defined - name ignored
+ 51  Global attribute:'{0}' cannot have a ref defined
+ 52  Error: Attribute '{0}' declared more than once in the same scope- ignoring
+ 53  Attribute declarations may not contain both a type and a simpleType declaration
+ 54  SimpleType ({0}:{1}) for attribute: {2} not found
+ 55  An element cannot have both 'fixed' and 'default' present at the same time
+ 56  {0}:'{1}' has also a ref defined - name ignored
+ 57  ref cannot appear with any of type, abstract, block, final, nullable, default or fixed
+ 58  Invalid {0} name:'{1}' - declaration ignored
+ 59  Globally-declared element {0} cannot have a ref attribute - ref ignored
+ 60  Element '{0}' cannot have both a type attribute and a simpleType/complexType type child
+ 61  Element {0} has a fixed or default value and must have a mixed simple or simple content model
+ 62  The simpleType {0} that {1} uses has a value of 'final' which does not permit extension
+ 63  The type '{0}' specified as the base in the simpleContent element must not have complexContent
+ 64  The type '{0}' is a simple type. It cannot be used in a derivation by RESTRICTION for a complexType
+ 65  Invalid child following the RESTRICTION or EXTENSION element in the simpleContent definition
+ 66  Invalid child following the RESTRICTION or EXTENSION element in the complexContent definition
+ 67  Annotation can only appear once: type {0}
+ 68  The base type {0} does not allow itself to be used as the base for a restriction and/or as a type in a list and/or union
+ 69  The value 'substitution' already in the list
+ 70  The value 'union' is already in the list
+ 71  The value 'extension' is already in the list
+ 72  The value 'list' is already in the list
+ 73  The value 'restriction' is already in the list
+ 74  Invalid block value: {0}
+ 75  Invalid final value: {0}
+ 76  Element {0} cannot be part of the substitution group headed by {1}
+ 77  Element {0} has a type which does not derive from the type of the element at the head of the substitution group
+ 78  Duplicate element decl in the same scope: {0}
+ 79  The 'block' attribute values of an element must be #all | list(substitution,restriction,extension); {0} was found
+ 80  The 'final' attribute values of an element must be #all | list(restriction,extension); {0} was found
+ 81  Invalid value '{0}' for attribute: '{1}'.
+ 82  Ref is present, and simpleType/form/type found
+ 83  Duplicate reference attribute {0}:{1} in complexType
+ 84  Derivation by restriction is forbidden by either the base type '{0}' or the schema
+ 85  Derivation by extension is forbidden by either the base type '{0}' or the schema
+ 86  The base type specified in the complexContent element must be a complexType
+ 87  A schemaLocation attribute must be specified on an 'import' element.
+ 88  Imported schema '{0}' has a different targetNameSpace '{1}' from what's declared '{2}'
+ 89  Could not get the doc root for imported Schema: {0}
+ 90  A schemaLocation attribute must be specified on an 'include' element.
+ 91  Included schema '{0}' has a different targetNameSpace '{1}'
+ 92  At most one <annotation> element is expected in the content.
+ 93  The 'atribute' content must be (annotation?, simpleType?); '{0}' encountered
+ 94  Attribute '{0}' must appear in {1} {2} declarations
+ 95  Attribute '{0}' cannot appear in {1} {2} declarations
+ 96  Value of minOccurs '{0}' must not be greater than value of maxOccurs '{1}'
+ 97  'anyAttribute' elements can contain at most one 'annotation' element in their children
+ 98  Global <{0}> must have a name - declaration ignored
+ 99  No circular definitions are allowed: '{0}'
+100  Global {0}:'{1}' declared more than once or also declared as {2}
+101  Global {0}:'{1}' declared more than once
+102  Invalid value '{0}' for facet 'whiteSpace'. Value should be 'collapse'.
+103  The namespace of an <import> element must be different from the targetNamespace of the <import>ing schema
+104  If the namespace on an <import> element is not present, the <import>ing schema must have a targetNamespace
+105  Element '{0}' must not have a value constraint:'{1}' as its type is derived from ID
+106  It is an error for NOTATION to be used directly in a schema in element/attribute '{0}'
+107  For element '{0}', the {content type} is mixed, then the {content type}'s particle must be emptiable
+108  The content of complexType is EMPTY, but base is not empty or does not have emptiable particle.
+109  The content type of the base type:'{0}' and derived type:'{1}' must both be mixed or element-only.
+110  The content type is not a valid restriction of the content type of the base.
+111  Derivation by extension or restriction is forbiden by either the base type '{0}' or the schema
+112  The {item type definition} must have {variety} of atomic or union (where all member types must be atomic)
+113  The {member type definitions} must all have {variety} of atomic or list
+114  The group:'0' must contain (all | choice | sequence)
+115  The attributeGroup:'0' must match (annotation?. ((attribute | attributeGroup)*, anyAttribute?))
+116  The child of a model group definition must not specify either the minOccurs or maxOccurs attribute.
+117  The {0} -'{1}:{2}'- not found in the schema
+118  A group whose content is 'all' must only appear as the content type of a complex type definition.
+119  When a model group has {compositor} 'all' which constitutes the {content type} of a complex type, minOccurs=maxOccurs=1
+120  In an 'all' schema component, the value of minCoccurs/maxOccurs of an element must be '0' or '1'.
+121  Circular attributeGroup reference -{0}- is disallowed outside <redefine>
+122  {0}
+125  Expected comment or CDATA
+126  Expected an attribute name
+127  Expected a notation name
+128  Repetition of individual elements is not legal for mixed content models
+129  Bad default attribute declaration
+130  Expected default attribute declaration, assuming #IMPLIED 
+131  Attribute list syntax error
+132  Expected equal sign
+133  Duplication attribute name
+134  Bad ID, '{0}', for xml:lang attribute
+135  Expected an element name
+136  Must start with an XMLDecl
+137  Comments must start with <!--
+138  Invalid document structure
+139  Expected a 'version=', 'encoding=', or 'standalone='
+140  Bad XML version string
+141  Unsupported XML version, '{0}'
+142  Unterminated XML decl
+143  Bad XML encoding declaration, '{0}'
+144  Bad standalone declaration
+145  Unterminated comment
+146  Processing instruction name expected
+147  Unterminated processing instruction
+148  Invalid character (Unicode: 0x{0})
+149  Unexpected text before root element
+150  Unterminated start tag, '{0}'
+151  Expected an attribute value
+152  Unterminated end tag
+153  Expected type (CDATA, ID, NMTOKEN, ..), for attribute '{0}' of element '{1}'
+154  Expected end of tag '{0}'
+155  Expected tag name, comment, PI, or other markup
+156  Not valid after content
+157  Expected comment
+158  Expected comment or processing instruction
+159  Expected whitespace
+160  No root element in DOCTYPE
+161  Expected quoted string
+162  Expected public id
+163  Invalid character in public id (Unicode: 0x{0})
+164  Unterminated DOCTYPE declaration
+165  Invalid character in internal subset (Unicode: 0x{0})
+166  Expected CDATA section
+167  Invalid initial name character
+168  Invalid name character
+169  Unexpected whitespace
+170  Invalid character in attribute value (Unicode: 0x{0})
+171  Expected a markup declaration
+172  Text declaration not legal here
+173  Conditional section in internal subset
+174  Expected parameter entity name
+175  Unterminated entity declaration, '{0}'
+176  Invalid character reference
+177  Unterminated character reference
+178  Expected entity name for reference
+179  Entity '{0}' was not found
+180  Unparsed entitty references, '{0}', not valid here
+181  Unterminated entity reference
+182  Recursive entity expansion
+183  Partial markup in entity value
+184  Unterminated element declaration, '{0}'
+185  Expected content specification expression for element '{0}'
+186  Expected asterisk
+187  Unterminated Content model
+188  Expected system id
+189  Expected system or public id
+190  Unterminated notation declaration
+191  Expected ',', '|', or ')' characters
+192  Expected '|' or ')' characters
+193  Expected ',' or ')' characters or close parenthesis in content model of element '{0}'
+194  Expected enumeration value for attribute '{0}'
+195  Expected | enumeration separator, or closing paren
+196  Unterminated entity literal
+197  There are more end tags than start tags
+198  Expected an open parenthesis
+199  The attribute '{0}' is already used in element '{1}'
+200  A '<' character cannot be used in attribute '{0}', except through &lt;
+201  A leading surrogate character was not followed by a legal second character
+202  Expected ']]>' to end a conditional section
+203  Expected INCLUDE or IGNORE here
+204  Expected [ to follow INCLUDE or IGNORE
+205  Expected a TextDecl here: <?xml ....
+206  Expected a XMLDecl here: <?xml ....
+207  Unexpected end of entity {0}
+208  A PE propogated out of the int/ext subset, discarding extra text
+209  An extra ] character was found an ignored
+210  PE refs are not allowed inside markup in the internal subset
+211  An entity propogated out of the content section into Miscellaneous
+212  Expected &# to be followed by a numeric character value
+213  Expected an open bracket ('[') here
+214  The sequence ']]>' is not allowed in character data
+215  Illegal sequence '--' in comment
+216  Unterminated CDATA section
+217  Expected NDATA
+218  NDATA is not legal for parameter entities
+219  Hex radix character refs must use 'x', not 'X'
+220  '{0}' has already been set. Ignoring redundant setting
+221  The XMLDecl strings must be in the order: version, encoding, standalone
+222  External entities cannot be referred to from attribute values
+223  The XML or Text decl must start with '<?xml ', not '<?XML '
+224  Expected a literal entity value or PUBLIC/SYSTEM id
+225  '{0}' is not a valid digit for the indicated radix
+226  The input ended before all started tags were ended. Last tag started was '{0}'
+227  The content model for element '{0}' is ambiguous
+228  Nested CDATA sections are not allowed
+229  The prefix '{0}' has not been mapped to any URI
+230  The start and the end tag were in the different entities
+231  The main XML document cannot be empty
+232  CDATA is not allowed outside the root element
+233  Only numeric character entities or special character entities are legal here
+234  Got an unexpected trailing surrogate character
+235  No processing instruction starts with 'xml'
+236  The XML or Text declaration must start at line/column 1/1
+237  The 'version=' string is required in an XMLDecl
+238  The 'standalone=' string is only allowed in the main XML entity
+239  The 'encoding=' string is required in an Text Decl
+240  When namespaces are enabled, a name can have only one colon character
+241  When namespaces are enabled, the colon cannot be the first or last character
+242  Colons are not allowed in this name when namespaces are enabled
+243  A system exception occured during processing
+244  An exception occured! Type:{0}, Message:{1}
+245  Unexpected end of file exception. Message: {0}
+246  UnexpectedError
+247  The schemaLocation attribute does not contain pairs of values.
+248  Internal error: don't have a GrammarResolver for TraverseSchema
+249  Fatal error encountered during schema scan
 
 
 $set 2
@@ -287,7 +286,7 @@ $set 2
  38  Error: {0} content must be one of element, group, modelGroupRef. Saw {1}
  39  Unknown base type {0} for type {1}.
  40  Can only have one of type and ref attributes.
- 41  Cannot have child content for an element/group declaration that has a ref attribute
+ 41  A <{0}> declaration that has a ref attribute, cannot have child content.
  42  Incorrect type for {0}'s default value: {1}
  43  Illegal content {0} in attribute group
  44  Value of {0} is not an integer.
diff --git a/src/util/Platforms/Win32/Version.rc b/src/util/Platforms/Win32/Version.rc
index 481ce9b7948d991c5ec5eb04a33fb2d26d8d2edb..7b8008349ff1a2640c6dbf667497b8d6c652ee22 100644
--- a/src/util/Platforms/Win32/Version.rc
+++ b/src/util/Platforms/Win32/Version.rc
@@ -99,8 +99,6 @@ END
 
 
 
-
-
 // ----------------------------------------------------------------
 //  This file was generated from the XML error message source.
 //  so do not edit this file directly!!
@@ -119,11 +117,11 @@ BEGIN
     12                L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x002D\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
     13                L"\x0047\x006C\x006F\x0062\x0061\x006C\x006C\x0079\x002D\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x002D\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
     14                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    15                L"\x003C\x0067\x0072\x006F\x0075\x0070\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    16                L"\x0041\x006E\x006F\x006E\x0079\x006D\x006F\x0075\x0073\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00"
-    17                L"\x0041\x006E\x006F\x006E\x0079\x006D\x006F\x0075\x0073\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00"
-    18                L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0066\x006F\x0072\x006D\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0074\x0065\x006D\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x006D\x0061\x0074\x0063\x0068\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002C\x0020\x0028\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x007C\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0029\x003F\x002C\x0020\x0028\x0075\x006E\x0069\x0071\x0075\x0065\x0020\x007C\x0020\x006B\x0065\x0079\x0020\x007C\x0020\x006B\x0065\x0079\x0072\x0065\x0066\x0029\x002A\x0029\x00"
-    19                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x003A\x0020\x007B\x0030\x007D\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
+    15                L"\x003C\x0067\x0072\x006F\x0075\x0070\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
+    16                L"\x003C\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0047\x0072\x006F\x0075\x0070\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
+    17                L"\x0041\x006E\x006F\x006E\x0079\x006D\x006F\x0075\x0073\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00"
+    18                L"\x0041\x006E\x006F\x006E\x0079\x006D\x006F\x0075\x0073\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00"
+    19                L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0066\x006F\x0072\x006D\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0074\x0065\x006D\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x006D\x0061\x0074\x0063\x0068\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002C\x0020\x0028\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x007C\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0029\x003F\x002C\x0020\x0028\x0075\x006E\x0069\x0071\x0075\x0065\x0020\x007C\x0020\x006B\x0065\x0079\x0020\x007C\x0020\x006B\x0065\x0079\x0072\x0065\x0066\x0029\x002A\x0029\x00"
     20                L"\x0055\x006E\x0074\x0079\x0070\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x003A\x0020\x007B\x0030\x007D\x00"
     21                L"\x0045\x0072\x0072\x006F\x0072\x0020\x0069\x006E\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x00"
     22                L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0027\x006C\x0069\x0073\x0074\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0066\x006F\x0072\x0020\x007B\x0030\x007D\x00"
@@ -148,211 +146,210 @@ BEGIN
     41                L"\x0042\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0063\x006F\x0075\x006C\x0064\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0066\x006F\x0075\x006E\x0064\x003A\x0020\x007B\x0030\x007D\x00"
     42                L"\x004E\x006F\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0077\x0061\x0073\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x0069\x006E\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x003A\x0020\x007B\x0031\x007D\x00"
     43                L"\x0045\x0072\x0072\x006F\x0072\x0020\x0063\x0072\x0065\x0061\x0074\x0069\x006E\x0067\x0020\x0064\x0061\x0074\x0061\x0074\x0079\x0070\x0065\x0020\x0076\x0061\x006C\x0069\x0064\x0061\x0074\x006F\x0072\x003A\x0020\x007B\x0030\x007D\x00"
-    44                L"\x0045\x0072\x0072\x006F\x0072\x003A\x0020\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006E\x0061\x006D\x0065\x0020\x002D\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x004E\x0043\x004E\x0061\x006D\x0065\x00"
-    45                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
-    46                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
-    47                L"\x0054\x0068\x0065\x0020\x0027\x0062\x006C\x006F\x0063\x006B\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00"
-    48                L"\x0054\x0068\x0065\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00"
-    49                L"\x0041\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0027\x0066\x0069\x0078\x0065\x0064\x0027\x0020\x0061\x006E\x0064\x0020\x0027\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0027\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0074\x0069\x006D\x0065\x0020\x002D\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0075\x0073\x0065\x0064\x00"
-    50                L"\x0049\x0066\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x006E\x0064\x0020\x0075\x0073\x0065\x0020\x0061\x0072\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0075\x0073\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0074\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x006F\x0070\x0074\x0069\x006F\x006E\x0061\x006C\x0027\x002E\x00"
-    51                L"\x004C\x006F\x0063\x0061\x006C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    52                L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x00"
-    53                L"\x0045\x0072\x0072\x006F\x0072\x003A\x0020\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0073\x0063\x006F\x0070\x0065\x002D\x0020\x0069\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x00"
-    54                L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x0020\x006D\x0061\x0079\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0062\x006F\x0074\x0068\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x006E\x0064\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
-    55                L"\x0053\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0028\x007B\x0030\x007D\x003A\x007B\x0031\x007D\x0029\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0020\x007B\x0032\x007D\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00"
-    56                L"\x0041\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0027\x0066\x0069\x0078\x0065\x0064\x0027\x0020\x0061\x006E\x0064\x0020\x0027\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0027\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0074\x0069\x006D\x0065\x00"
-    57                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x003A\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    58                L"\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    59                L"\x0072\x0065\x0066\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0079\x0020\x006F\x0066\x0020\x0074\x0079\x0070\x0065\x002C\x0020\x0061\x0062\x0073\x0074\x0072\x0061\x0063\x0074\x002C\x0020\x0062\x006C\x006F\x0063\x006B\x002C\x0020\x0066\x0069\x006E\x0061\x006C\x002C\x0020\x006E\x0075\x006C\x006C\x0061\x0062\x006C\x0065\x002C\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x006F\x0072\x0020\x0066\x0069\x0078\x0065\x0064\x00"
-    60                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x003A\x0020\x007B\x0030\x007D\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    61                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x006E\x0061\x006D\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    62                L"\x0047\x006C\x006F\x0062\x0061\x006C\x006C\x0079\x002D\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0072\x0065\x0066\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    63                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0061\x006E\x0064\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x002F\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x00"
-    64                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0066\x0069\x0078\x0065\x0064\x0020\x006F\x0072\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0061\x006E\x0064\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x006F\x0072\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00"
-    65                L"\x0054\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0074\x0068\x0061\x0074\x0020\x007B\x0031\x007D\x0020\x0075\x0073\x0065\x0073\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0070\x0065\x0072\x006D\x0069\x0074\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x00"
-    66                L"\x0054\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x00"
-    67                L"\x0054\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x0074\x0079\x0070\x0065\x002E\x0020\x0049\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0020\x0064\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x0066\x006F\x0072\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
-    68                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x006F\x0072\x0020\x0045\x0058\x0054\x0045\x004E\x0053\x0049\x004F\x004E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x00"
-    69                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x006F\x0072\x0020\x0045\x0058\x0054\x0045\x004E\x0053\x0049\x004F\x004E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x00"
-    70                L"\x0041\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0063\x0061\x006E\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x006F\x006E\x0063\x0065\x003A\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x00"
-    71                L"\x0054\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0020\x0069\x0074\x0073\x0065\x006C\x0066\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0061\x006E\x0064\x002F\x006F\x0072\x0020\x0061\x0073\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0061\x0020\x006C\x0069\x0073\x0074\x0020\x0061\x006E\x0064\x002F\x006F\x0072\x0020\x0075\x006E\x0069\x006F\x006E\x00"
-    72                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0027\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
-    73                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0075\x006E\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
-    74                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
-    75                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x006C\x0069\x0073\x0074\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
-    76                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
-    77                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0062\x006C\x006F\x0063\x006B\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0030\x007D\x00"
-    78                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0066\x0069\x006E\x0061\x006C\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0030\x007D\x00"
-    79                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0070\x0061\x0072\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0068\x0065\x0061\x0064\x0065\x0064\x0020\x0062\x0079\x0020\x007B\x0031\x007D\x00"
-    80                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0020\x0066\x0072\x006F\x006D\x0020\x0074\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0068\x0065\x0061\x0064\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0020\x0067\x0072\x006F\x0075\x0070\x00"
-    81                L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0065\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0073\x0063\x006F\x0070\x0065\x003A\x0020\x007B\x0030\x007D\x00"
-    82                L"\x0054\x0068\x0065\x0020\x0027\x0062\x006C\x006F\x0063\x006B\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x002C\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00"
-    83                L"\x0054\x0068\x0065\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00"
-    84                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0020\x0027\x007B\x0031\x007D\x0027\x002E\x00"
-    85                L"\x0052\x0065\x0066\x0020\x0069\x0073\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0061\x006E\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x002F\x0066\x006F\x0072\x006D\x002F\x0074\x0079\x0070\x0065\x0020\x0066\x006F\x0075\x006E\x0064\x00"
-    86                L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x007B\x0030\x007D\x003A\x007B\x0031\x007D\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
-    87                L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
-    88                L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
-    89                L"\x0054\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
-    90                L"\x0041\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x0027\x0069\x006D\x0070\x006F\x0072\x0074\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002E\x00"
-    91                L"\x0049\x006D\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0053\x0070\x0061\x0063\x0065\x0020\x0027\x007B\x0031\x007D\x0027\x0020\x0066\x0072\x006F\x006D\x0020\x0077\x0068\x0061\x0074\x0027\x0073\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0027\x007B\x0032\x007D\x0027\x00"
-    92                L"\x0043\x006F\x0075\x006C\x0064\x0020\x006E\x006F\x0074\x0020\x0067\x0065\x0074\x0020\x0074\x0068\x0065\x0020\x0064\x006F\x0063\x0020\x0072\x006F\x006F\x0074\x0020\x0066\x006F\x0072\x0020\x0069\x006D\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0053\x0063\x0068\x0065\x006D\x0061\x003A\x0020\x007B\x0030\x007D\x00"
-    93                L"\x0041\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x0027\x0069\x006E\x0063\x006C\x0075\x0064\x0065\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002E\x00"
-    94                L"\x0049\x006E\x0063\x006C\x0075\x0064\x0065\x0064\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0053\x0070\x0061\x0063\x0065\x0020\x0027\x007B\x0031\x007D\x0027\x00"
-    95                L"\x0041\x0074\x0020\x006D\x006F\x0073\x0074\x0020\x006F\x006E\x0065\x0020\x003C\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x002E\x00"
-    96                L"\x0054\x0068\x0065\x0020\x0027\x0061\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0027\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002C\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x003F\x0029\x003B\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0065\x006E\x0063\x006F\x0075\x006E\x0074\x0065\x0072\x0065\x0064\x00"
-    97                L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x007B\x0031\x007D\x0020\x007B\x0032\x007D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x00"
-    98                L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x007B\x0031\x007D\x0020\x007B\x0032\x007D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x00"
-    99                L"\x0056\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0067\x0072\x0065\x0061\x0074\x0065\x0072\x0020\x0074\x0068\x0061\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0027\x007B\x0031\x007D\x0027\x00"
-    100               L"\x0027\x0061\x006E\x0079\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0063\x0061\x006E\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0061\x0074\x0020\x006D\x006F\x0073\x0074\x0020\x006F\x006E\x0065\x0020\x0027\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0069\x0072\x0020\x0063\x0068\x0069\x006C\x0064\x0072\x0065\x006E\x00"
-    101               L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x003C\x007B\x0030\x007D\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    102               L"\x004E\x006F\x0020\x0063\x0069\x0072\x0063\x0075\x006C\x0061\x0072\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x003A\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    103               L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x007B\x0030\x007D\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x0020\x006F\x0072\x0020\x0061\x006C\x0073\x006F\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0061\x0073\x0020\x007B\x0032\x007D\x00"
-    104               L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x00"
-    105               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0066\x006F\x0072\x0020\x0066\x0061\x0063\x0065\x0074\x0020\x0027\x0077\x0068\x0069\x0074\x0065\x0053\x0070\x0061\x0063\x0065\x0027\x002E\x0020\x0056\x0061\x006C\x0075\x0065\x0020\x0073\x0068\x006F\x0075\x006C\x0064\x0020\x0062\x0065\x0020\x0027\x0063\x006F\x006C\x006C\x0061\x0070\x0073\x0065\x0027\x002E\x00"
-    106               L"\x0054\x0068\x0065\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0066\x0072\x006F\x006D\x0020\x0074\x0068\x0065\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
-    107               L"\x0049\x0066\x0020\x0074\x0068\x0065\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0074\x0068\x0065\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x00"
-    108               L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0063\x006F\x006E\x0073\x0074\x0072\x0061\x0069\x006E\x0074\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0061\x0073\x0020\x0069\x0074\x0073\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0064\x0020\x0066\x0072\x006F\x006D\x0020\x0049\x0044\x00"
-    109               L"\x0049\x0074\x0020\x0069\x0073\x0020\x0061\x006E\x0020\x0065\x0072\x0072\x006F\x0072\x0020\x0066\x006F\x0072\x0020\x004E\x004F\x0054\x0041\x0054\x0049\x004F\x004E\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0064\x0069\x0072\x0065\x0063\x0074\x006C\x0079\x0020\x0069\x006E\x0020\x0061\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002F\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    110               L"\x0046\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0020\x0069\x0073\x0020\x006D\x0069\x0078\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x006E\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0027\x0073\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0069\x0061\x0062\x006C\x0065\x00"
-    111               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x0045\x004D\x0050\x0054\x0059\x002C\x0020\x0062\x0075\x0074\x0020\x0062\x0061\x0073\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0065\x006D\x0070\x0074\x0079\x0020\x006F\x0072\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0065\x006D\x0070\x0074\x0069\x0061\x0062\x006C\x0065\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x002E\x00"
-    112               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0061\x006E\x0064\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x006F\x0074\x0068\x0020\x0062\x0065\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002D\x006F\x006E\x006C\x0079\x002E\x00"
-    113               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x002E\x00"
-    114               L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0020\x006F\x0072\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
-    115               L"\x0054\x0068\x0065\x0020\x007B\x0069\x0074\x0065\x006D\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x007D\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x007B\x0076\x0061\x0072\x0069\x0065\x0074\x0079\x007D\x0020\x006F\x0066\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0020\x006F\x0072\x0020\x0075\x006E\x0069\x006F\x006E\x0020\x0028\x0077\x0068\x0065\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x006D\x0065\x006D\x0062\x0065\x0072\x0020\x0074\x0079\x0070\x0065\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0029\x00"
-    116               L"\x0054\x0068\x0065\x0020\x007B\x006D\x0065\x006D\x0062\x0065\x0072\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0073\x007D\x0020\x006D\x0075\x0073\x0074\x0020\x0061\x006C\x006C\x0020\x0068\x0061\x0076\x0065\x0020\x007B\x0076\x0061\x0072\x0069\x0065\x0074\x0079\x007D\x0020\x006F\x0066\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0020\x006F\x0072\x0020\x006C\x0069\x0073\x0074\x00"
-    117               L"\x0054\x0068\x0065\x0020\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x0030\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0028\x0061\x006C\x006C\x0020\x007C\x0020\x0063\x0068\x006F\x0069\x0063\x0065\x0020\x007C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0029\x00"
-    118               L"\x0054\x0068\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x006F\x0066\x0020\x0061\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x006F\x0072\x0020\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x002E\x00"
-    119               L"\x0054\x0068\x0065\x0020\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
-    120               L"\x0041\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0077\x0068\x006F\x0073\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x002E\x00"
-    121               L"\x0057\x0068\x0065\x006E\x0020\x0061\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0068\x0061\x0073\x0020\x007B\x0063\x006F\x006D\x0070\x006F\x0073\x0069\x0074\x006F\x0072\x007D\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0063\x006F\x006E\x0073\x0074\x0069\x0074\x0075\x0074\x0065\x0073\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0020\x0074\x0079\x0070\x0065\x002C\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x003D\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x003D\x0031\x00"
-    122               L"\x0049\x006E\x0020\x0061\x006E\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0063\x006F\x006D\x0070\x006F\x006E\x0065\x006E\x0074\x002C\x0020\x0074\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0069\x006E\x0043\x006F\x0063\x0063\x0075\x0072\x0073\x002F\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0027\x0030\x0027\x0020\x006F\x0072\x0020\x0027\x0031\x0027\x002E\x00"
-    123               L"\x007B\x0030\x007D\x00"
-    126               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0043\x0044\x0041\x0054\x0041\x00"
-    127               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00"
-    128               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x00"
-    129               L"\x0052\x0065\x0070\x0065\x0074\x0069\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0069\x006E\x0064\x0069\x0076\x0069\x0064\x0075\x0061\x006C\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0073\x00"
-    130               L"\x0042\x0061\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
-    131               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0061\x0073\x0073\x0075\x006D\x0069\x006E\x0067\x0020\x0023\x0049\x004D\x0050\x004C\x0049\x0045\x0044\x0020\x00"
-    132               L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006C\x0069\x0073\x0074\x0020\x0073\x0079\x006E\x0074\x0061\x0078\x0020\x0065\x0072\x0072\x006F\x0072\x00"
-    133               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x0071\x0075\x0061\x006C\x0020\x0073\x0069\x0067\x006E\x00"
-    134               L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00"
-    135               L"\x0042\x0061\x0064\x0020\x0049\x0044\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0066\x006F\x0072\x0020\x0078\x006D\x006C\x003A\x006C\x0061\x006E\x0067\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00"
-    136               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x00"
-    137               L"\x004D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00"
-    138               L"\x0043\x006F\x006D\x006D\x0065\x006E\x0074\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x003C\x0021\x002D\x002D\x00"
-    139               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0073\x0074\x0072\x0075\x0063\x0074\x0075\x0072\x0065\x00"
-    140               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x002C\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x00"
-    141               L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00"
-    142               L"\x0055\x006E\x0073\x0075\x0070\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    143               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0064\x0065\x0063\x006C\x00"
-    144               L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    145               L"\x0042\x0061\x0064\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
-    146               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
-    147               L"\x0050\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x00"
-    148               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00"
-    149               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
-    150               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0065\x0078\x0074\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00"
-    151               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    152               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x00"
-    153               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x00"
-    154               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x0020\x0028\x0043\x0044\x0041\x0054\x0041\x002C\x0020\x0049\x0044\x002C\x0020\x004E\x004D\x0054\x004F\x004B\x0045\x004E\x002C\x0020\x002E\x002E\x0029\x002C\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00"
-    155               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0074\x0061\x0067\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    156               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0020\x006E\x0061\x006D\x0065\x002C\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x002C\x0020\x0050\x0049\x002C\x0020\x006F\x0072\x0020\x006F\x0074\x0068\x0065\x0072\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x00"
-    157               L"\x004E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0061\x0066\x0074\x0065\x0072\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x00"
-    158               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
-    159               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00"
-    160               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00"
-    161               L"\x004E\x006F\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x00"
-    162               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0071\x0075\x006F\x0074\x0065\x0064\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00"
-    163               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00"
-    164               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
-    165               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
-    166               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
-    167               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
-    168               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0069\x006E\x0069\x0074\x0069\x0061\x006C\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
-    169               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
-    170               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00"
-    171               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
-    172               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
-    173               L"\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00"
-    174               L"\x0043\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00"
-    175               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x00"
-    176               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    177               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
-    178               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
-    179               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x0020\x0066\x006F\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
-    180               L"\x0045\x006E\x0074\x0069\x0074\x0079\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00"
-    181               L"\x0055\x006E\x0070\x0061\x0072\x0073\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0073\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0068\x0065\x0072\x0065\x00"
-    182               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
-    183               L"\x0052\x0065\x0063\x0075\x0072\x0073\x0069\x0076\x0065\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0065\x0078\x0070\x0061\x006E\x0073\x0069\x006F\x006E\x00"
-    184               L"\x0050\x0061\x0072\x0074\x0069\x0061\x006C\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x00"
-    185               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    186               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0065\x0078\x0070\x0072\x0065\x0073\x0073\x0069\x006F\x006E\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    187               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0073\x0074\x0065\x0072\x0069\x0073\x006B\x00"
-    188               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00"
-    189               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0069\x0064\x00"
-    190               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x006F\x0072\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00"
-    191               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
-    192               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x002C\x0020\x0027\x007C\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00"
-    193               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x007C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00"
-    194               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0065\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x0020\x0069\x006E\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    195               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    196               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x007C\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0073\x0065\x0070\x0061\x0072\x0061\x0074\x006F\x0072\x002C\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0069\x006E\x0067\x0020\x0070\x0061\x0072\x0065\x006E\x00"
-    197               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x00"
-    198               L"\x0054\x0068\x0065\x0072\x0065\x0020\x0061\x0072\x0065\x0020\x006D\x006F\x0072\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0074\x0068\x0061\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x0073\x00"
-    199               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x00"
-    200               L"\x0054\x0068\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00"
-    201               L"\x0041\x0020\x0027\x003C\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0020\x0074\x0068\x0072\x006F\x0075\x0067\x0068\x0020\x0026\x006C\x0074\x003B\x00"
-    202               L"\x0041\x0020\x006C\x0065\x0061\x0064\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0063\x006F\x006E\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
-    203               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0074\x006F\x0020\x0065\x006E\x0064\x0020\x0061\x0020\x0063\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
-    204               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x0020\x0068\x0065\x0072\x0065\x00"
-    205               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x005B\x0020\x0074\x006F\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x00"
-    206               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0054\x0065\x0078\x0074\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00"
-    207               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00"
-    208               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x007B\x0030\x007D\x00"
-    209               L"\x0041\x0020\x0050\x0045\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x002F\x0065\x0078\x0074\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x002C\x0020\x0064\x0069\x0073\x0063\x0061\x0072\x0064\x0069\x006E\x0067\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x0074\x0065\x0078\x0074\x00"
-    210               L"\x0041\x006E\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x005D\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0061\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
-    211               L"\x0050\x0045\x0020\x0072\x0065\x0066\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0073\x0069\x0064\x0065\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00"
-    212               L"\x0041\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0074\x006F\x0020\x004D\x0069\x0073\x0063\x0065\x006C\x006C\x0061\x006E\x0065\x006F\x0075\x0073\x00"
-    213               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0026\x0023\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0076\x0061\x006C\x0075\x0065\x00"
-    214               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0062\x0072\x0061\x0063\x006B\x0065\x0074\x0020\x0028\x0027\x005B\x0027\x0029\x0020\x0068\x0065\x0072\x0065\x00"
-    215               L"\x0054\x0068\x0065\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0064\x0061\x0074\x0061\x00"
-    216               L"\x0049\x006C\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x002D\x002D\x0027\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
-    217               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
-    218               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x004E\x0044\x0041\x0054\x0041\x00"
-    219               L"\x004E\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00"
-    220               L"\x0048\x0065\x0078\x0020\x0072\x0061\x0064\x0069\x0078\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0075\x0073\x0065\x0020\x0027\x0078\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x0058\x0027\x00"
-    221               L"\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0062\x0065\x0065\x006E\x0020\x0073\x0065\x0074\x002E\x0020\x0049\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x0020\x0072\x0065\x0064\x0075\x006E\x0064\x0061\x006E\x0074\x0020\x0073\x0065\x0074\x0074\x0069\x006E\x0067\x00"
-    222               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006F\x0072\x0064\x0065\x0072\x003A\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x002C\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x00"
-    223               L"\x0045\x0078\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0072\x0065\x0064\x0020\x0074\x006F\x0020\x0066\x0072\x006F\x006D\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x00"
-    224               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x003C\x003F\x0078\x006D\x006C\x0020\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x003C\x003F\x0058\x004D\x004C\x0020\x0027\x00"
-    225               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0072\x0020\x0050\x0055\x0042\x004C\x0049\x0043\x002F\x0053\x0059\x0053\x0054\x0045\x004D\x0020\x0069\x0064\x00"
-    226               L"\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x0069\x0067\x0069\x0074\x0020\x0066\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0064\x0069\x0063\x0061\x0074\x0065\x0064\x0020\x0072\x0061\x0064\x0069\x0078\x00"
-    227               L"\x0054\x0068\x0065\x0020\x0069\x006E\x0070\x0075\x0074\x0020\x0065\x006E\x0064\x0065\x0064\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0077\x0065\x0072\x0065\x0020\x0065\x006E\x0064\x0065\x0064\x002E\x0020\x004C\x0061\x0073\x0074\x0020\x0074\x0061\x0067\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0077\x0061\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x00"
-    228               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006D\x0062\x0069\x0067\x0075\x006F\x0075\x0073\x00"
-    229               L"\x004E\x0065\x0073\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x00"
-    230               L"\x0054\x0068\x0065\x0020\x0070\x0072\x0065\x0066\x0069\x0078\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0065\x006E\x0020\x006D\x0061\x0070\x0070\x0065\x0064\x0020\x0074\x006F\x0020\x0061\x006E\x0079\x0020\x0055\x0052\x0049\x00"
-    231               L"\x0054\x0068\x0065\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x006E\x0064\x0020\x0074\x0068\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0020\x0077\x0065\x0072\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00"
-    232               L"\x0054\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0079\x00"
-    233               L"\x0043\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x006F\x0075\x0074\x0073\x0069\x0064\x0065\x0020\x0074\x0068\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00"
-    234               L"\x004F\x006E\x006C\x0079\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x006F\x0072\x0020\x0073\x0070\x0065\x0063\x0069\x0061\x006C\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00"
-    235               L"\x0047\x006F\x0074\x0020\x0061\x006E\x0020\x0075\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0072\x0061\x0069\x006C\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
-    236               L"\x004E\x006F\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0073\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x0078\x006D\x006C\x0027\x00"
-    237               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x0074\x0020\x006C\x0069\x006E\x0065\x002F\x0063\x006F\x006C\x0075\x006D\x006E\x0020\x0031\x002F\x0031\x00"
-    238               L"\x0054\x0068\x0065\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00"
-    239               L"\x0054\x0068\x0065\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x00"
-    240               L"\x0054\x0068\x0065\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0054\x0065\x0078\x0074\x0020\x0044\x0065\x0063\x006C\x00"
-    241               L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0061\x006E\x0020\x0068\x0061\x0076\x0065\x0020\x006F\x006E\x006C\x0079\x0020\x006F\x006E\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
-    242               L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0074\x0068\x0065\x0020\x0066\x0069\x0072\x0073\x0074\x0020\x006F\x0072\x0020\x006C\x0061\x0073\x0074\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
-    243               L"\x0043\x006F\x006C\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0069\x0073\x0020\x006E\x0061\x006D\x0065\x0020\x0077\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x00"
-    244               L"\x0041\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x00"
-    245               L"\x0041\x006E\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0021\x0020\x0054\x0079\x0070\x0065\x003A\x007B\x0030\x007D\x002C\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x007B\x0031\x007D\x00"
-    246               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0066\x0069\x006C\x0065\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x002E\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x0020\x007B\x0030\x007D\x00"
-    247               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0045\x0072\x0072\x006F\x0072\x00"
-    248               L"\x0054\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0070\x0061\x0069\x0072\x0073\x0020\x006F\x0066\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x002E\x00"
-    249               L"\x0049\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x003A\x0020\x0064\x006F\x006E\x0027\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0047\x0072\x0061\x006D\x006D\x0061\x0072\x0052\x0065\x0073\x006F\x006C\x0076\x0065\x0072\x0020\x0066\x006F\x0072\x0020\x0054\x0072\x0061\x0076\x0065\x0072\x0073\x0065\x0053\x0063\x0068\x0065\x006D\x0061\x00"
-    250               L"\x0046\x0061\x0074\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x0020\x0065\x006E\x0063\x006F\x0075\x006E\x0074\x0065\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0073\x0063\x0061\x006E\x00"
+    44                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
+    45                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
+    46                L"\x0054\x0068\x0065\x0020\x0027\x0062\x006C\x006F\x0063\x006B\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00"
+    47                L"\x0054\x0068\x0065\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00"
+    48                L"\x0041\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0027\x0066\x0069\x0078\x0065\x0064\x0027\x0020\x0061\x006E\x0064\x0020\x0027\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0027\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0074\x0069\x006D\x0065\x0020\x002D\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0075\x0073\x0065\x0064\x00"
+    49                L"\x0049\x0066\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x006E\x0064\x0020\x0075\x0073\x0065\x0020\x0061\x0072\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0075\x0073\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0074\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x006F\x0070\x0074\x0069\x006F\x006E\x0061\x006C\x0027\x002E\x00"
+    50                L"\x004C\x006F\x0063\x0061\x006C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
+    51                L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x00"
+    52                L"\x0045\x0072\x0072\x006F\x0072\x003A\x0020\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0073\x0063\x006F\x0070\x0065\x002D\x0020\x0069\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x00"
+    53                L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x0020\x006D\x0061\x0079\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0062\x006F\x0074\x0068\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x006E\x0064\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
+    54                L"\x0053\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x0028\x007B\x0030\x007D\x003A\x007B\x0031\x007D\x0029\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0020\x007B\x0032\x007D\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00"
+    55                L"\x0041\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0027\x0066\x0069\x0078\x0065\x0064\x0027\x0020\x0061\x006E\x0064\x0020\x0027\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0027\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0074\x0069\x006D\x0065\x00"
+    56                L"\x007B\x0030\x007D\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0073\x006F\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0064\x0065\x0066\x0069\x006E\x0065\x0064\x0020\x002D\x0020\x006E\x0061\x006D\x0065\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
+    57                L"\x0072\x0065\x0066\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0079\x0020\x006F\x0066\x0020\x0074\x0079\x0070\x0065\x002C\x0020\x0061\x0062\x0073\x0074\x0072\x0061\x0063\x0074\x002C\x0020\x0062\x006C\x006F\x0063\x006B\x002C\x0020\x0066\x0069\x006E\x0061\x006C\x002C\x0020\x006E\x0075\x006C\x006C\x0061\x0062\x006C\x0065\x002C\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x006F\x0072\x0020\x0066\x0069\x0078\x0065\x0064\x00"
+    58                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x007B\x0030\x007D\x0020\x006E\x0061\x006D\x0065\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
+    59                L"\x0047\x006C\x006F\x0062\x0061\x006C\x006C\x0079\x002D\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x002D\x0020\x0072\x0065\x0066\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
+    60                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0062\x006F\x0074\x0068\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0061\x006E\x0064\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x002F\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x00"
+    61                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0066\x0069\x0078\x0065\x0064\x0020\x006F\x0072\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0061\x006E\x0064\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x006F\x0072\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00"
+    62                L"\x0054\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0074\x0068\x0061\x0074\x0020\x007B\x0031\x007D\x0020\x0075\x0073\x0065\x0073\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0070\x0065\x0072\x006D\x0069\x0074\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x00"
+    63                L"\x0054\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x00"
+    64                L"\x0054\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0020\x0074\x0079\x0070\x0065\x002E\x0020\x0049\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0020\x0064\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x0066\x006F\x0072\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
+    65                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x006F\x0072\x0020\x0045\x0058\x0054\x0045\x004E\x0053\x0049\x004F\x004E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x00"
+    66                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0069\x006E\x0067\x0020\x0074\x0068\x0065\x0020\x0052\x0045\x0053\x0054\x0052\x0049\x0043\x0054\x0049\x004F\x004E\x0020\x006F\x0072\x0020\x0045\x0058\x0054\x0045\x004E\x0053\x0049\x004F\x004E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x00"
+    67                L"\x0041\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0063\x0061\x006E\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x006F\x006E\x0063\x0065\x003A\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x00"
+    68                L"\x0054\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0020\x0069\x0074\x0073\x0065\x006C\x0066\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0061\x006E\x0064\x002F\x006F\x0072\x0020\x0061\x0073\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x006E\x0020\x0061\x0020\x006C\x0069\x0073\x0074\x0020\x0061\x006E\x0064\x002F\x006F\x0072\x0020\x0075\x006E\x0069\x006F\x006E\x00"
+    69                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0027\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
+    70                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0075\x006E\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
+    71                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
+    72                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x006C\x0069\x0073\x0074\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
+    73                L"\x0054\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006C\x0069\x0073\x0074\x00"
+    74                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0062\x006C\x006F\x0063\x006B\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0030\x007D\x00"
+    75                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0066\x0069\x006E\x0061\x006C\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0030\x007D\x00"
+    76                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0070\x0061\x0072\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0068\x0065\x0061\x0064\x0065\x0064\x0020\x0062\x0079\x0020\x007B\x0031\x007D\x00"
+    77                L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0074\x0079\x0070\x0065\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0020\x0066\x0072\x006F\x006D\x0020\x0074\x0068\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0061\x0074\x0020\x0074\x0068\x0065\x0020\x0068\x0065\x0061\x0064\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x0020\x0067\x0072\x006F\x0075\x0070\x00"
+    78                L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0065\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0061\x006D\x0065\x0020\x0073\x0063\x006F\x0070\x0065\x003A\x0020\x007B\x0030\x007D\x00"
+    79                L"\x0054\x0068\x0065\x0020\x0027\x0062\x006C\x006F\x0063\x006B\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0073\x0075\x0062\x0073\x0074\x0069\x0074\x0075\x0074\x0069\x006F\x006E\x002C\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00"
+    80                L"\x0054\x0068\x0065\x0020\x0027\x0066\x0069\x006E\x0061\x006C\x0027\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0023\x0061\x006C\x006C\x0020\x007C\x0020\x006C\x0069\x0073\x0074\x0028\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x002C\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0029\x003B\x0020\x007B\x0030\x007D\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x00"
+    81                L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003A\x0020\x0027\x007B\x0031\x007D\x0027\x002E\x00"
+    82                L"\x0052\x0065\x0066\x0020\x0069\x0073\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0061\x006E\x0064\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x002F\x0066\x006F\x0072\x006D\x002F\x0074\x0079\x0070\x0065\x0020\x0066\x006F\x0075\x006E\x0064\x00"
+    83                L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x007B\x0030\x007D\x003A\x007B\x0031\x007D\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
+    84                L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
+    85                L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
+    86                L"\x0054\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x00"
+    87                L"\x0041\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x0027\x0069\x006D\x0070\x006F\x0072\x0074\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002E\x00"
+    88                L"\x0049\x006D\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0053\x0070\x0061\x0063\x0065\x0020\x0027\x007B\x0031\x007D\x0027\x0020\x0066\x0072\x006F\x006D\x0020\x0077\x0068\x0061\x0074\x0027\x0073\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0027\x007B\x0032\x007D\x0027\x00"
+    89                L"\x0043\x006F\x0075\x006C\x0064\x0020\x006E\x006F\x0074\x0020\x0067\x0065\x0074\x0020\x0074\x0068\x0065\x0020\x0064\x006F\x0063\x0020\x0072\x006F\x006F\x0074\x0020\x0066\x006F\x0072\x0020\x0069\x006D\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0053\x0063\x0068\x0065\x006D\x0061\x003A\x0020\x007B\x0030\x007D\x00"
+    90                L"\x0041\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0065\x0064\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x0027\x0069\x006E\x0063\x006C\x0075\x0064\x0065\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002E\x00"
+    91                L"\x0049\x006E\x0063\x006C\x0075\x0064\x0065\x0064\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0053\x0070\x0061\x0063\x0065\x0020\x0027\x007B\x0031\x007D\x0027\x00"
+    92                L"\x0041\x0074\x0020\x006D\x006F\x0073\x0074\x0020\x006F\x006E\x0065\x0020\x003C\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x002E\x00"
+    93                L"\x0054\x0068\x0065\x0020\x0027\x0061\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0027\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002C\x0020\x0073\x0069\x006D\x0070\x006C\x0065\x0054\x0079\x0070\x0065\x003F\x0029\x003B\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0065\x006E\x0063\x006F\x0075\x006E\x0074\x0065\x0072\x0065\x0064\x00"
+    94                L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x007B\x0031\x007D\x0020\x007B\x0032\x007D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x00"
+    95                L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0069\x006E\x0020\x007B\x0031\x007D\x0020\x007B\x0032\x007D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0073\x00"
+    96                L"\x0056\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0067\x0072\x0065\x0061\x0074\x0065\x0072\x0020\x0074\x0068\x0061\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0027\x007B\x0031\x007D\x0027\x00"
+    97                L"\x0027\x0061\x006E\x0079\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0063\x0061\x006E\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0061\x0074\x0020\x006D\x006F\x0073\x0074\x0020\x006F\x006E\x0065\x0020\x0027\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0027\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0069\x0072\x0020\x0063\x0068\x0069\x006C\x0064\x0072\x0065\x006E\x00"
+    98                L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x003C\x007B\x0030\x007D\x003E\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x002D\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
+    99                L"\x004E\x006F\x0020\x0063\x0069\x0072\x0063\x0075\x006C\x0061\x0072\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x003A\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    100               L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x007B\x0030\x007D\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x0020\x006F\x0072\x0020\x0061\x006C\x0073\x006F\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x0061\x0073\x0020\x007B\x0032\x007D\x00"
+    101               L"\x0047\x006C\x006F\x0062\x0061\x006C\x0020\x007B\x0030\x007D\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0065\x0064\x0020\x006D\x006F\x0072\x0065\x0020\x0074\x0068\x0061\x006E\x0020\x006F\x006E\x0063\x0065\x00"
+    102               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0066\x006F\x0072\x0020\x0066\x0061\x0063\x0065\x0074\x0020\x0027\x0077\x0068\x0069\x0074\x0065\x0053\x0070\x0061\x0063\x0065\x0027\x002E\x0020\x0056\x0061\x006C\x0075\x0065\x0020\x0073\x0068\x006F\x0075\x006C\x0064\x0020\x0062\x0065\x0020\x0027\x0063\x006F\x006C\x006C\x0061\x0070\x0073\x0065\x0027\x002E\x00"
+    103               L"\x0054\x0068\x0065\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0066\x0072\x006F\x006D\x0020\x0074\x0068\x0065\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
+    104               L"\x0049\x0066\x0020\x0074\x0068\x0065\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0020\x006F\x006E\x0020\x0061\x006E\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0070\x0072\x0065\x0073\x0065\x006E\x0074\x002C\x0020\x0074\x0068\x0065\x0020\x003C\x0069\x006D\x0070\x006F\x0072\x0074\x003E\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0074\x0061\x0072\x0067\x0065\x0074\x004E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x00"
+    105               L"\x0045\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0063\x006F\x006E\x0073\x0074\x0072\x0061\x0069\x006E\x0074\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x0061\x0073\x0020\x0069\x0074\x0073\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0064\x0020\x0066\x0072\x006F\x006D\x0020\x0049\x0044\x00"
+    106               L"\x0049\x0074\x0020\x0069\x0073\x0020\x0061\x006E\x0020\x0065\x0072\x0072\x006F\x0072\x0020\x0066\x006F\x0072\x0020\x004E\x004F\x0054\x0041\x0054\x0049\x004F\x004E\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0064\x0069\x0072\x0065\x0063\x0074\x006C\x0079\x0020\x0069\x006E\x0020\x0061\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002F\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    107               L"\x0046\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0020\x0069\x0073\x0020\x006D\x0069\x0078\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x006E\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0027\x0073\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0069\x0061\x0062\x006C\x0065\x00"
+    108               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006F\x0066\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0054\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x0045\x004D\x0050\x0054\x0059\x002C\x0020\x0062\x0075\x0074\x0020\x0062\x0061\x0073\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0065\x006D\x0070\x0074\x0079\x0020\x006F\x0072\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0065\x006D\x0070\x0074\x0069\x0061\x0062\x006C\x0065\x0020\x0070\x0061\x0072\x0074\x0069\x0063\x006C\x0065\x002E\x00"
+    109               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x003A\x0027\x007B\x0030\x007D\x0027\x0020\x0061\x006E\x0064\x0020\x0064\x0065\x0072\x0069\x0076\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x003A\x0027\x007B\x0031\x007D\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x006F\x0074\x0068\x0020\x0062\x0065\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002D\x006F\x006E\x006C\x0079\x002E\x00"
+    110               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x002E\x00"
+    111               L"\x0044\x0065\x0072\x0069\x0076\x0061\x0074\x0069\x006F\x006E\x0020\x0062\x0079\x0020\x0065\x0078\x0074\x0065\x006E\x0073\x0069\x006F\x006E\x0020\x006F\x0072\x0020\x0072\x0065\x0073\x0074\x0072\x0069\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x0073\x0020\x0066\x006F\x0072\x0062\x0069\x0064\x0065\x006E\x0020\x0062\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
+    112               L"\x0054\x0068\x0065\x0020\x007B\x0069\x0074\x0065\x006D\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x007D\x0020\x006D\x0075\x0073\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x007B\x0076\x0061\x0072\x0069\x0065\x0074\x0079\x007D\x0020\x006F\x0066\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0020\x006F\x0072\x0020\x0075\x006E\x0069\x006F\x006E\x0020\x0028\x0077\x0068\x0065\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x006D\x0065\x006D\x0062\x0065\x0072\x0020\x0074\x0079\x0070\x0065\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0029\x00"
+    113               L"\x0054\x0068\x0065\x0020\x007B\x006D\x0065\x006D\x0062\x0065\x0072\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0073\x007D\x0020\x006D\x0075\x0073\x0074\x0020\x0061\x006C\x006C\x0020\x0068\x0061\x0076\x0065\x0020\x007B\x0076\x0061\x0072\x0069\x0065\x0074\x0079\x007D\x0020\x006F\x0066\x0020\x0061\x0074\x006F\x006D\x0069\x0063\x0020\x006F\x0072\x0020\x006C\x0069\x0073\x0074\x00"
+    114               L"\x0054\x0068\x0065\x0020\x0067\x0072\x006F\x0075\x0070\x003A\x0027\x0030\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0028\x0061\x006C\x006C\x0020\x007C\x0020\x0063\x0068\x006F\x0069\x0063\x0065\x0020\x007C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0029\x00"
+    115               L"\x0054\x0068\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0047\x0072\x006F\x0075\x0070\x003A\x0027\x0030\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006D\x0061\x0074\x0063\x0068\x0020\x0028\x0061\x006E\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x003F\x002E\x0020\x0028\x0028\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x007C\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0047\x0072\x006F\x0075\x0070\x0029\x002A\x002C\x0020\x0061\x006E\x0079\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x003F\x0029\x0029\x00"
+    116               L"\x0054\x0068\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x006F\x0066\x0020\x0061\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x006E\x006F\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0079\x0020\x0065\x0069\x0074\x0068\x0065\x0072\x0020\x0074\x0068\x0065\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x006F\x0072\x0020\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x002E\x00"
+    117               L"\x0054\x0068\x0065\x0020\x007B\x0030\x007D\x0020\x002D\x0027\x007B\x0031\x007D\x003A\x007B\x0032\x007D\x0027\x002D\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x00"
+    118               L"\x0041\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0077\x0068\x006F\x0073\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0069\x0073\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x006D\x0075\x0073\x0074\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x0070\x0070\x0065\x0061\x0072\x0020\x0061\x0073\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0020\x0074\x0079\x0070\x0065\x0020\x0064\x0065\x0066\x0069\x006E\x0069\x0074\x0069\x006F\x006E\x002E\x00"
+    119               L"\x0057\x0068\x0065\x006E\x0020\x0061\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0067\x0072\x006F\x0075\x0070\x0020\x0068\x0061\x0073\x0020\x007B\x0063\x006F\x006D\x0070\x006F\x0073\x0069\x0074\x006F\x0072\x007D\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x0077\x0068\x0069\x0063\x0068\x0020\x0063\x006F\x006E\x0073\x0074\x0069\x0074\x0075\x0074\x0065\x0073\x0020\x0074\x0068\x0065\x0020\x007B\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0074\x0079\x0070\x0065\x007D\x0020\x006F\x0066\x0020\x0061\x0020\x0063\x006F\x006D\x0070\x006C\x0065\x0078\x0020\x0074\x0079\x0070\x0065\x002C\x0020\x006D\x0069\x006E\x004F\x0063\x0063\x0075\x0072\x0073\x003D\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x003D\x0031\x00"
+    120               L"\x0049\x006E\x0020\x0061\x006E\x0020\x0027\x0061\x006C\x006C\x0027\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0063\x006F\x006D\x0070\x006F\x006E\x0065\x006E\x0074\x002C\x0020\x0074\x0068\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x006D\x0069\x006E\x0043\x006F\x0063\x0063\x0075\x0072\x0073\x002F\x006D\x0061\x0078\x004F\x0063\x0063\x0075\x0072\x0073\x0020\x006F\x0066\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0027\x0030\x0027\x0020\x006F\x0072\x0020\x0027\x0031\x0027\x002E\x00"
+    121               L"\x0043\x0069\x0072\x0063\x0075\x006C\x0061\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0047\x0072\x006F\x0075\x0070\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0020\x002D\x007B\x0030\x007D\x002D\x0020\x0069\x0073\x0020\x0064\x0069\x0073\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x006F\x0075\x0074\x0073\x0069\x0064\x0065\x0020\x003C\x0072\x0065\x0064\x0065\x0066\x0069\x006E\x0065\x003E\x00"
+    122               L"\x007B\x0030\x007D\x00"
+    125               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0043\x0044\x0041\x0054\x0041\x00"
+    126               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00"
+    127               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x00"
+    128               L"\x0052\x0065\x0070\x0065\x0074\x0069\x0074\x0069\x006F\x006E\x0020\x006F\x0066\x0020\x0069\x006E\x0064\x0069\x0076\x0069\x0064\x0075\x0061\x006C\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0073\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x006D\x0069\x0078\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0073\x00"
+    129               L"\x0042\x0061\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
+    130               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0061\x0073\x0073\x0075\x006D\x0069\x006E\x0067\x0020\x0023\x0049\x004D\x0050\x004C\x0049\x0045\x0044\x0020\x00"
+    131               L"\x0041\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006C\x0069\x0073\x0074\x0020\x0073\x0079\x006E\x0074\x0061\x0078\x0020\x0065\x0072\x0072\x006F\x0072\x00"
+    132               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x0071\x0075\x0061\x006C\x0020\x0073\x0069\x0067\x006E\x00"
+    133               L"\x0044\x0075\x0070\x006C\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x006E\x0061\x006D\x0065\x00"
+    134               L"\x0042\x0061\x0064\x0020\x0049\x0044\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0066\x006F\x0072\x0020\x0078\x006D\x006C\x003A\x006C\x0061\x006E\x0067\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00"
+    135               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x006E\x0061\x006D\x0065\x00"
+    136               L"\x004D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00"
+    137               L"\x0043\x006F\x006D\x006D\x0065\x006E\x0074\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x003C\x0021\x002D\x002D\x00"
+    138               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0073\x0074\x0072\x0075\x0063\x0074\x0075\x0072\x0065\x00"
+    139               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x002C\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x00"
+    140               L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00"
+    141               L"\x0055\x006E\x0073\x0075\x0070\x0070\x006F\x0072\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    142               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0058\x004D\x004C\x0020\x0064\x0065\x0063\x006C\x00"
+    143               L"\x0042\x0061\x0064\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    144               L"\x0042\x0061\x0064\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
+    145               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
+    146               L"\x0050\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x006E\x0061\x006D\x0065\x0020\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x00"
+    147               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00"
+    148               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
+    149               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0065\x0078\x0074\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00"
+    150               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    151               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x00"
+    152               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x00"
+    153               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0079\x0070\x0065\x0020\x0028\x0043\x0044\x0041\x0054\x0041\x002C\x0020\x0049\x0044\x002C\x0020\x004E\x004D\x0054\x004F\x004B\x0045\x004E\x002C\x0020\x002E\x002E\x0029\x002C\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00"
+    154               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0074\x0061\x0067\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    155               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0020\x006E\x0061\x006D\x0065\x002C\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x002C\x0020\x0050\x0049\x002C\x0020\x006F\x0072\x0020\x006F\x0074\x0068\x0065\x0072\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x00"
+    156               L"\x004E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0061\x0066\x0074\x0065\x0072\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x00"
+    157               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
+    158               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x0020\x006F\x0072\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x00"
+    159               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00"
+    160               L"\x004E\x006F\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0069\x006E\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x00"
+    161               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0071\x0075\x006F\x0074\x0065\x0064\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x00"
+    162               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00"
+    163               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
+    164               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0044\x004F\x0043\x0054\x0059\x0050\x0045\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
+    165               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
+    166               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
+    167               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0069\x006E\x0069\x0074\x0069\x0061\x006C\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
+    168               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
+    169               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0077\x0068\x0069\x0074\x0065\x0073\x0070\x0061\x0063\x0065\x00"
+    170               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0028\x0055\x006E\x0069\x0063\x006F\x0064\x0065\x003A\x0020\x0030\x0078\x007B\x0030\x007D\x0029\x00"
+    171               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
+    172               L"\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00"
+    173               L"\x0043\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00"
+    174               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x00"
+    175               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    176               L"\x0049\x006E\x0076\x0061\x006C\x0069\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
+    177               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
+    178               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006E\x0061\x006D\x0065\x0020\x0066\x006F\x0072\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
+    179               L"\x0045\x006E\x0074\x0069\x0074\x0079\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x0075\x006E\x0064\x00"
+    180               L"\x0055\x006E\x0070\x0061\x0072\x0073\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x0073\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0068\x0065\x0072\x0065\x00"
+    181               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0072\x0065\x0066\x0065\x0072\x0065\x006E\x0063\x0065\x00"
+    182               L"\x0052\x0065\x0063\x0075\x0072\x0073\x0069\x0076\x0065\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0065\x0078\x0070\x0061\x006E\x0073\x0069\x006F\x006E\x00"
+    183               L"\x0050\x0061\x0072\x0074\x0069\x0061\x006C\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x00"
+    184               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x002C\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    185               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0070\x0065\x0063\x0069\x0066\x0069\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0065\x0078\x0070\x0072\x0065\x0073\x0073\x0069\x006F\x006E\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    186               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0073\x0074\x0065\x0072\x0069\x0073\x006B\x00"
+    187               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x00"
+    188               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0069\x0064\x00"
+    189               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x006F\x0072\x0020\x0070\x0075\x0062\x006C\x0069\x0063\x0020\x0069\x0064\x00"
+    190               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x006E\x006F\x0074\x0061\x0074\x0069\x006F\x006E\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x00"
+    191               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x002C\x0020\x0027\x007C\x0027\x002C\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00"
+    192               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x007C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x00"
+    193               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x002C\x0027\x0020\x006F\x0072\x0020\x0027\x0029\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0073\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0065\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x0020\x0069\x006E\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    194               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x0066\x006F\x0072\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    195               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x007C\x0020\x0065\x006E\x0075\x006D\x0065\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0073\x0065\x0070\x0061\x0072\x0061\x0074\x006F\x0072\x002C\x0020\x006F\x0072\x0020\x0063\x006C\x006F\x0073\x0069\x006E\x0067\x0020\x0070\x0061\x0072\x0065\x006E\x00"
+    196               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x00"
+    197               L"\x0054\x0068\x0065\x0072\x0065\x0020\x0061\x0072\x0065\x0020\x006D\x006F\x0072\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0074\x0068\x0061\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0074\x0061\x0067\x0073\x00"
+    198               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0070\x0061\x0072\x0065\x006E\x0074\x0068\x0065\x0073\x0069\x0073\x00"
+    199               L"\x0054\x0068\x0065\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0031\x007D\x0027\x00"
+    200               L"\x0041\x0020\x0027\x003C\x0027\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0075\x0073\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0027\x007B\x0030\x007D\x0027\x002C\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0020\x0074\x0068\x0072\x006F\x0075\x0067\x0068\x0020\x0026\x006C\x0074\x003B\x00"
+    201               L"\x0041\x0020\x006C\x0065\x0061\x0064\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0063\x006F\x006E\x0064\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
+    202               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0074\x006F\x0020\x0065\x006E\x0064\x0020\x0061\x0020\x0063\x006F\x006E\x0064\x0069\x0074\x0069\x006F\x006E\x0061\x006C\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
+    203               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x0020\x0068\x0065\x0072\x0065\x00"
+    204               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x005B\x0020\x0074\x006F\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0020\x0049\x004E\x0043\x004C\x0055\x0044\x0045\x0020\x006F\x0072\x0020\x0049\x0047\x004E\x004F\x0052\x0045\x00"
+    205               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0054\x0065\x0078\x0074\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00"
+    206               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0068\x0065\x0072\x0065\x003A\x0020\x003C\x003F\x0078\x006D\x006C\x0020\x002E\x002E\x002E\x002E\x00"
+    207               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x007B\x0030\x007D\x00"
+    208               L"\x0041\x0020\x0050\x0045\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x002F\x0065\x0078\x0074\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x002C\x0020\x0064\x0069\x0073\x0063\x0061\x0072\x0064\x0069\x006E\x0067\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x0074\x0065\x0078\x0074\x00"
+    209               L"\x0041\x006E\x0020\x0065\x0078\x0074\x0072\x0061\x0020\x005D\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0077\x0061\x0073\x0020\x0066\x006F\x0075\x006E\x0064\x0020\x0061\x006E\x0020\x0069\x0067\x006E\x006F\x0072\x0065\x0064\x00"
+    210               L"\x0050\x0045\x0020\x0072\x0065\x0066\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0073\x0069\x0064\x0065\x0020\x006D\x0061\x0072\x006B\x0075\x0070\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0073\x0075\x0062\x0073\x0065\x0074\x00"
+    211               L"\x0041\x006E\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0070\x0072\x006F\x0070\x006F\x0067\x0061\x0074\x0065\x0064\x0020\x006F\x0075\x0074\x0020\x006F\x0066\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0020\x0069\x006E\x0074\x006F\x0020\x004D\x0069\x0073\x0063\x0065\x006C\x006C\x0061\x006E\x0065\x006F\x0075\x0073\x00"
+    212               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0026\x0023\x0020\x0074\x006F\x0020\x0062\x0065\x0020\x0066\x006F\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0062\x0079\x0020\x0061\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0076\x0061\x006C\x0075\x0065\x00"
+    213               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x006E\x0020\x006F\x0070\x0065\x006E\x0020\x0062\x0072\x0061\x0063\x006B\x0065\x0074\x0020\x0028\x0027\x005B\x0027\x0029\x0020\x0068\x0065\x0072\x0065\x00"
+    214               L"\x0054\x0068\x0065\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x005D\x005D\x003E\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0064\x0061\x0074\x0061\x00"
+    215               L"\x0049\x006C\x006C\x0065\x0067\x0061\x006C\x0020\x0073\x0065\x0071\x0075\x0065\x006E\x0063\x0065\x0020\x0027\x002D\x002D\x0027\x0020\x0069\x006E\x0020\x0063\x006F\x006D\x006D\x0065\x006E\x0074\x00"
+    216               L"\x0055\x006E\x0074\x0065\x0072\x006D\x0069\x006E\x0061\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x00"
+    217               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x004E\x0044\x0041\x0054\x0041\x00"
+    218               L"\x004E\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0066\x006F\x0072\x0020\x0070\x0061\x0072\x0061\x006D\x0065\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00"
+    219               L"\x0048\x0065\x0078\x0020\x0072\x0061\x0064\x0069\x0078\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0072\x0065\x0066\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0075\x0073\x0065\x0020\x0027\x0078\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x0058\x0027\x00"
+    220               L"\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x0061\x006C\x0072\x0065\x0061\x0064\x0079\x0020\x0062\x0065\x0065\x006E\x0020\x0073\x0065\x0074\x002E\x0020\x0049\x0067\x006E\x006F\x0072\x0069\x006E\x0067\x0020\x0072\x0065\x0064\x0075\x006E\x0064\x0061\x006E\x0074\x0020\x0073\x0065\x0074\x0074\x0069\x006E\x0067\x00"
+    221               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0073\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006F\x0072\x0064\x0065\x0072\x003A\x0020\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x002C\x0020\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x002C\x0020\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x00"
+    222               L"\x0045\x0078\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0072\x0065\x0066\x0065\x0072\x0072\x0065\x0064\x0020\x0074\x006F\x0020\x0066\x0072\x006F\x006D\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x00"
+    223               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x003C\x003F\x0078\x006D\x006C\x0020\x0027\x002C\x0020\x006E\x006F\x0074\x0020\x0027\x003C\x003F\x0058\x004D\x004C\x0020\x0027\x00"
+    224               L"\x0045\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0061\x0020\x006C\x0069\x0074\x0065\x0072\x0061\x006C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x0020\x0076\x0061\x006C\x0075\x0065\x0020\x006F\x0072\x0020\x0050\x0055\x0042\x004C\x0049\x0043\x002F\x0053\x0059\x0053\x0054\x0045\x004D\x0020\x0069\x0064\x00"
+    225               L"\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x0020\x0076\x0061\x006C\x0069\x0064\x0020\x0064\x0069\x0067\x0069\x0074\x0020\x0066\x006F\x0072\x0020\x0074\x0068\x0065\x0020\x0069\x006E\x0064\x0069\x0063\x0061\x0074\x0065\x0064\x0020\x0072\x0061\x0064\x0069\x0078\x00"
+    226               L"\x0054\x0068\x0065\x0020\x0069\x006E\x0070\x0075\x0074\x0020\x0065\x006E\x0064\x0065\x0064\x0020\x0062\x0065\x0066\x006F\x0072\x0065\x0020\x0061\x006C\x006C\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0074\x0061\x0067\x0073\x0020\x0077\x0065\x0072\x0065\x0020\x0065\x006E\x0064\x0065\x0064\x002E\x0020\x004C\x0061\x0073\x0074\x0020\x0074\x0061\x0067\x0020\x0073\x0074\x0061\x0072\x0074\x0065\x0064\x0020\x0077\x0061\x0073\x0020\x0027\x007B\x0030\x007D\x0027\x00"
+    227               L"\x0054\x0068\x0065\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x006F\x0064\x0065\x006C\x0020\x0066\x006F\x0072\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0069\x0073\x0020\x0061\x006D\x0062\x0069\x0067\x0075\x006F\x0075\x0073\x00"
+    228               L"\x004E\x0065\x0073\x0074\x0065\x0064\x0020\x0043\x0044\x0041\x0054\x0041\x0020\x0073\x0065\x0063\x0074\x0069\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x00"
+    229               L"\x0054\x0068\x0065\x0020\x0070\x0072\x0065\x0066\x0069\x0078\x0020\x0027\x007B\x0030\x007D\x0027\x0020\x0068\x0061\x0073\x0020\x006E\x006F\x0074\x0020\x0062\x0065\x0065\x006E\x0020\x006D\x0061\x0070\x0070\x0065\x0064\x0020\x0074\x006F\x0020\x0061\x006E\x0079\x0020\x0055\x0052\x0049\x00"
+    230               L"\x0054\x0068\x0065\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x006E\x0064\x0020\x0074\x0068\x0065\x0020\x0065\x006E\x0064\x0020\x0074\x0061\x0067\x0020\x0077\x0065\x0072\x0065\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x0064\x0069\x0066\x0066\x0065\x0072\x0065\x006E\x0074\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x00"
+    231               L"\x0054\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0064\x006F\x0063\x0075\x006D\x0065\x006E\x0074\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0065\x006D\x0070\x0074\x0079\x00"
+    232               L"\x0043\x0044\x0041\x0054\x0041\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x006F\x0075\x0074\x0073\x0069\x0064\x0065\x0020\x0074\x0068\x0065\x0020\x0072\x006F\x006F\x0074\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x00"
+    233               L"\x004F\x006E\x006C\x0079\x0020\x006E\x0075\x006D\x0065\x0072\x0069\x0063\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x006F\x0072\x0020\x0073\x0070\x0065\x0063\x0069\x0061\x006C\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x0020\x0065\x006E\x0074\x0069\x0074\x0069\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x006C\x0065\x0067\x0061\x006C\x0020\x0068\x0065\x0072\x0065\x00"
+    234               L"\x0047\x006F\x0074\x0020\x0061\x006E\x0020\x0075\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0074\x0072\x0061\x0069\x006C\x0069\x006E\x0067\x0020\x0073\x0075\x0072\x0072\x006F\x0067\x0061\x0074\x0065\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
+    235               L"\x004E\x006F\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x0020\x0069\x006E\x0073\x0074\x0072\x0075\x0063\x0074\x0069\x006F\x006E\x0020\x0073\x0074\x0061\x0072\x0074\x0073\x0020\x0077\x0069\x0074\x0068\x0020\x0027\x0078\x006D\x006C\x0027\x00"
+    236               L"\x0054\x0068\x0065\x0020\x0058\x004D\x004C\x0020\x006F\x0072\x0020\x0054\x0065\x0078\x0074\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x006D\x0075\x0073\x0074\x0020\x0073\x0074\x0061\x0072\x0074\x0020\x0061\x0074\x0020\x006C\x0069\x006E\x0065\x002F\x0063\x006F\x006C\x0075\x006D\x006E\x0020\x0031\x002F\x0031\x00"
+    237               L"\x0054\x0068\x0065\x0020\x0027\x0076\x0065\x0072\x0073\x0069\x006F\x006E\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0058\x004D\x004C\x0044\x0065\x0063\x006C\x00"
+    238               L"\x0054\x0068\x0065\x0020\x0027\x0073\x0074\x0061\x006E\x0064\x0061\x006C\x006F\x006E\x0065\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x006F\x006E\x006C\x0079\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0065\x0020\x006D\x0061\x0069\x006E\x0020\x0058\x004D\x004C\x0020\x0065\x006E\x0074\x0069\x0074\x0079\x00"
+    239               L"\x0054\x0068\x0065\x0020\x0027\x0065\x006E\x0063\x006F\x0064\x0069\x006E\x0067\x003D\x0027\x0020\x0073\x0074\x0072\x0069\x006E\x0067\x0020\x0069\x0073\x0020\x0072\x0065\x0071\x0075\x0069\x0072\x0065\x0064\x0020\x0069\x006E\x0020\x0061\x006E\x0020\x0054\x0065\x0078\x0074\x0020\x0044\x0065\x0063\x006C\x00"
+    240               L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0061\x0020\x006E\x0061\x006D\x0065\x0020\x0063\x0061\x006E\x0020\x0068\x0061\x0076\x0065\x0020\x006F\x006E\x006C\x0079\x0020\x006F\x006E\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
+    241               L"\x0057\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x002C\x0020\x0074\x0068\x0065\x0020\x0063\x006F\x006C\x006F\x006E\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0062\x0065\x0020\x0074\x0068\x0065\x0020\x0066\x0069\x0072\x0073\x0074\x0020\x006F\x0072\x0020\x006C\x0061\x0073\x0074\x0020\x0063\x0068\x0061\x0072\x0061\x0063\x0074\x0065\x0072\x00"
+    242               L"\x0043\x006F\x006C\x006F\x006E\x0073\x0020\x0061\x0072\x0065\x0020\x006E\x006F\x0074\x0020\x0061\x006C\x006C\x006F\x0077\x0065\x0064\x0020\x0069\x006E\x0020\x0074\x0068\x0069\x0073\x0020\x006E\x0061\x006D\x0065\x0020\x0077\x0068\x0065\x006E\x0020\x006E\x0061\x006D\x0065\x0073\x0070\x0061\x0063\x0065\x0073\x0020\x0061\x0072\x0065\x0020\x0065\x006E\x0061\x0062\x006C\x0065\x0064\x00"
+    243               L"\x0041\x0020\x0073\x0079\x0073\x0074\x0065\x006D\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0070\x0072\x006F\x0063\x0065\x0073\x0073\x0069\x006E\x0067\x00"
+    244               L"\x0041\x006E\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x0020\x006F\x0063\x0063\x0075\x0072\x0065\x0064\x0021\x0020\x0054\x0079\x0070\x0065\x003A\x007B\x0030\x007D\x002C\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x007B\x0031\x007D\x00"
+    245               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0020\x0065\x006E\x0064\x0020\x006F\x0066\x0020\x0066\x0069\x006C\x0065\x0020\x0065\x0078\x0063\x0065\x0070\x0074\x0069\x006F\x006E\x002E\x0020\x004D\x0065\x0073\x0073\x0061\x0067\x0065\x003A\x0020\x007B\x0030\x007D\x00"
+    246               L"\x0055\x006E\x0065\x0078\x0070\x0065\x0063\x0074\x0065\x0064\x0045\x0072\x0072\x006F\x0072\x00"
+    247               L"\x0054\x0068\x0065\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x004C\x006F\x0063\x0061\x0074\x0069\x006F\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0064\x006F\x0065\x0073\x0020\x006E\x006F\x0074\x0020\x0063\x006F\x006E\x0074\x0061\x0069\x006E\x0020\x0070\x0061\x0069\x0072\x0073\x0020\x006F\x0066\x0020\x0076\x0061\x006C\x0075\x0065\x0073\x002E\x00"
+    248               L"\x0049\x006E\x0074\x0065\x0072\x006E\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x003A\x0020\x0064\x006F\x006E\x0027\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0061\x0020\x0047\x0072\x0061\x006D\x006D\x0061\x0072\x0052\x0065\x0073\x006F\x006C\x0076\x0065\x0072\x0020\x0066\x006F\x0072\x0020\x0054\x0072\x0061\x0076\x0065\x0072\x0073\x0065\x0053\x0063\x0068\x0065\x006D\x0061\x00"
+    249               L"\x0046\x0061\x0074\x0061\x006C\x0020\x0065\x0072\x0072\x006F\x0072\x0020\x0065\x006E\x0063\x006F\x0075\x006E\x0074\x0065\x0072\x0065\x0064\x0020\x0064\x0075\x0072\x0069\x006E\x0067\x0020\x0073\x0063\x0068\x0065\x006D\x0061\x0020\x0073\x0063\x0061\x006E\x00"
 END
 STRINGTABLE DISCARDABLE
 BEGIN
@@ -395,7 +392,7 @@ BEGIN
     16422             L"\x0045\x0072\x0072\x006F\x0072\x003A\x0020\x007B\x0030\x007D\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x006D\x0075\x0073\x0074\x0020\x0062\x0065\x0020\x006F\x006E\x0065\x0020\x006F\x0066\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002C\x0020\x0067\x0072\x006F\x0075\x0070\x002C\x0020\x006D\x006F\x0064\x0065\x006C\x0047\x0072\x006F\x0075\x0070\x0052\x0065\x0066\x002E\x0020\x0053\x0061\x0077\x0020\x007B\x0031\x007D\x00"
     16423             L"\x0055\x006E\x006B\x006E\x006F\x0077\x006E\x0020\x0062\x0061\x0073\x0065\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0030\x007D\x0020\x0066\x006F\x0072\x0020\x0074\x0079\x0070\x0065\x0020\x007B\x0031\x007D\x002E\x00"
     16424             L"\x0043\x0061\x006E\x0020\x006F\x006E\x006C\x0079\x0020\x0068\x0061\x0076\x0065\x0020\x006F\x006E\x0065\x0020\x006F\x0066\x0020\x0074\x0079\x0070\x0065\x0020\x0061\x006E\x0064\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0073\x002E\x00"
-    16425             L"\x0043\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x0066\x006F\x0072\x0020\x0061\x006E\x0020\x0065\x006C\x0065\x006D\x0065\x006E\x0074\x002F\x0067\x0072\x006F\x0075\x0070\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0074\x0068\x0061\x0074\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x00"
+    16425             L"\x0041\x0020\x003C\x007B\x0030\x007D\x003E\x0020\x0064\x0065\x0063\x006C\x0061\x0072\x0061\x0074\x0069\x006F\x006E\x0020\x0074\x0068\x0061\x0074\x0020\x0068\x0061\x0073\x0020\x0061\x0020\x0072\x0065\x0066\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x002C\x0020\x0063\x0061\x006E\x006E\x006F\x0074\x0020\x0068\x0061\x0076\x0065\x0020\x0063\x0068\x0069\x006C\x0064\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x002E\x00"
     16426             L"\x0049\x006E\x0063\x006F\x0072\x0072\x0065\x0063\x0074\x0020\x0074\x0079\x0070\x0065\x0020\x0066\x006F\x0072\x0020\x007B\x0030\x007D\x0027\x0073\x0020\x0064\x0065\x0066\x0061\x0075\x006C\x0074\x0020\x0076\x0061\x006C\x0075\x0065\x003A\x0020\x007B\x0031\x007D\x00"
     16427             L"\x0049\x006C\x006C\x0065\x0067\x0061\x006C\x0020\x0063\x006F\x006E\x0074\x0065\x006E\x0074\x0020\x007B\x0030\x007D\x0020\x0069\x006E\x0020\x0061\x0074\x0074\x0072\x0069\x0062\x0075\x0074\x0065\x0020\x0067\x0072\x006F\x0075\x0070\x00"
     16428             L"\x0056\x0061\x006C\x0075\x0065\x0020\x006F\x0066\x0020\x007B\x0030\x007D\x0020\x0069\x0073\x0020\x006E\x006F\x0074\x0020\x0061\x006E\x0020\x0069\x006E\x0074\x0065\x0067\x0065\x0072\x002E\x00"
@@ -694,6 +691,7 @@ BEGIN
 END
 
 
+
 #endif    // English (U.S.) resources
 /////////////////////////////////////////////////////////////////////////////
 
diff --git a/src/validators/schema/Makefile.in b/src/validators/schema/Makefile.in
index d559f277e4de86f896c41627dfcadd8bfd083337..8caf67d4245db4bbf8365d36b30e3db7be7a4fcb 100644
--- a/src/validators/schema/Makefile.in
+++ b/src/validators/schema/Makefile.in
@@ -55,6 +55,9 @@
 #
 #
 # $Log$
+# Revision 1.15  2001/07/31 15:26:54  knoaman
+# Added support for <attributeGroup>.
+#
 # Revision 1.14  2001/07/24 20:13:30  knoaman
 # Added support for <group> + extra constraint checking for complexType
 #
@@ -135,6 +138,7 @@ VALIDATORS_SCHEMA_CPP_PUBHEADERS = \
 	SchemaInfo.hpp \
 	GeneralAttributeCheck.hpp \
 	XercesGroupInfo.hpp \
+	XercesAttGroupInfo.hpp \
 	TraverseSchema.hpp
 
 VALIDATORS_SCHEMA_CPP_PRIVHEADERS =
@@ -155,6 +159,7 @@ VALIDATORS_SCHEMA_CPP_OBJECTS = \
 	SchemaInfo.$(TO) \
 	GeneralAttributeCheck.$(TO) \
 	XercesGroupInfo.$(TO) \
+	XercesAttGroupInfo.$(TO) \
 	TraverseSchema.$(TO)
 
 all::	includes $(VALIDATORS_SCHEMA_CPP_OBJECTS)
diff --git a/src/validators/schema/NamespaceScope.cpp b/src/validators/schema/NamespaceScope.cpp
index 6cc4a719a30f890a6c7576e7995c27b0978bc8e5..8b07a37dd3b779c2494ddf88df170e3e0d7b3fb9 100644
--- a/src/validators/schema/NamespaceScope.cpp
+++ b/src/validators/schema/NamespaceScope.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.3  2001/07/31 15:26:54  knoaman
+ * Added support for <attributeGroup>.
+ *
  * Revision 1.2  2001/05/11 13:27:33  tng
  * Copyright update.
  *
@@ -178,9 +181,9 @@ void NamespaceScope::addPrefix(const XMLCh* const prefixToAdd,
     curRow->fMapCount++;
 }
 
-
 unsigned int
-NamespaceScope::getNamespaceForPrefix(const XMLCh* const prefixToMap) const {
+NamespaceScope::getNamespaceForPrefix(const XMLCh* const prefixToMap,
+                                      const int depthLevel) const {
 
     //
     //  Map the prefix to its unique id, from the prefix string pool. If its
@@ -196,7 +199,7 @@ NamespaceScope::getNamespaceForPrefix(const XMLCh* const prefixToMap) const {
     //  Start at the stack top and work backwards until we come to some
     //  element that mapped this prefix.
     //
-    int startAt = (int)(fStackTop - 1);
+    int startAt = depthLevel;
     for (int index = startAt; index >= 0; index--)
     {
         // Get a convenience pointer to the current element
diff --git a/src/validators/schema/NamespaceScope.hpp b/src/validators/schema/NamespaceScope.hpp
index 0d1f99633c960dccdc301921a775630b38d249ad..dbb3bacde465e629abd7e204f3dbf6106ef848a7 100644
--- a/src/validators/schema/NamespaceScope.hpp
+++ b/src/validators/schema/NamespaceScope.hpp
@@ -122,6 +122,8 @@ public :
                    const unsigned int uriId);
 
     unsigned int getNamespaceForPrefix(const XMLCh* const prefixToMap) const;
+    unsigned int getNamespaceForPrefix(const XMLCh* const prefixToMap,
+                                       int depthLevel) const;
 
 
     // -----------------------------------------------------------------------
@@ -173,6 +175,15 @@ private :
 };
 
 
+// ---------------------------------------------------------------------------
+//  NamespaceScope: Stack access
+// ---------------------------------------------------------------------------
+inline unsigned int
+NamespaceScope::getNamespaceForPrefix(const XMLCh* const prefixToMap) const {
+
+    return getNamespaceForPrefix(prefixToMap, (int)(fStackTop - 1));
+}
+
 // ---------------------------------------------------------------------------
 //  NamespaceScope: Miscellaneous methods
 // ---------------------------------------------------------------------------
diff --git a/src/validators/schema/SchemaAttDef.cpp b/src/validators/schema/SchemaAttDef.cpp
index 4d18756fc32381bc8494bca0638fd6583781ae14..d4887c90eb74a45ab21646d661c56c3e54ff89b0 100644
--- a/src/validators/schema/SchemaAttDef.cpp
+++ b/src/validators/schema/SchemaAttDef.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.3  2001/07/31 15:26:54  knoaman
+ * Added support for <attributeGroup>.
+ *
  * Revision 1.2  2001/05/11 13:27:33  tng
  * Copyright update.
  *
@@ -115,6 +118,19 @@ SchemaAttDef::SchemaAttDef( const XMLCh* const                     prefix
     fAttName = new QName(prefix, localPart, uriId);
 }
 
+SchemaAttDef::SchemaAttDef(const SchemaAttDef* other) :
+
+    XMLAttDef(other->getValue(), other->getType(),
+              other->getDefaultType(), other->getEnumeration())
+    , fElemId(XMLElementDecl::fgInvalidElemId)
+    , fAttName(0)
+    , fDatatypeValidator(other->getDatatypeValidator())
+{
+    QName* otherName = other->getAttName();
+    fAttName = new QName(otherName->getPrefix(), 
+                         otherName->getLocalPart(), otherName->getURI());
+}
+
 SchemaAttDef::~SchemaAttDef()
 {
    delete fAttName;
diff --git a/src/validators/schema/SchemaAttDef.hpp b/src/validators/schema/SchemaAttDef.hpp
index f27a4ee89b10171369a89b6a39d43b92f4236ace..3f4a57d2139f23ca68cc2ca9be2fe63f3955e16b 100644
--- a/src/validators/schema/SchemaAttDef.hpp
+++ b/src/validators/schema/SchemaAttDef.hpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.4  2001/07/31 15:26:54  knoaman
+ * Added support for <attributeGroup>.
+ *
  * Revision 1.3  2001/05/11 17:17:41  tng
  * Schema: DatatypeValidator fixes.  By Pei Yong Zhang.
  *
@@ -106,6 +109,10 @@ public :
         , const XMLAttDef::DefAttTypes           defType
         , const XMLCh* const                     enumValues = 0
     );
+    SchemaAttDef
+    (
+          const SchemaAttDef*                   other
+    );
     ~SchemaAttDef();
 
     // -----------------------------------------------------------------------
diff --git a/src/validators/schema/SchemaGrammar.cpp b/src/validators/schema/SchemaGrammar.cpp
index a7aed2ec9510c943791c58fd2d867d7244954dd0..4dcf04018c2e4caa29226f3d7451e2f4fcd9bc15 100644
--- a/src/validators/schema/SchemaGrammar.cpp
+++ b/src/validators/schema/SchemaGrammar.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.6  2001/07/31 15:27:10  knoaman
+ * Added support for <attributeGroup>.
+ *
  * Revision 1.5  2001/07/24 18:33:46  knoaman
  * Added support for <group> + extra constraint checking for complexType
  *
@@ -82,24 +85,25 @@
 #include <validators/schema/NamespaceScope.hpp>
 #include <validators/schema/ComplexTypeInfo.hpp>
 #include <validators/schema/SchemaSymbols.hpp>
+#include <validators/schema/XercesGroupInfo.hpp>
+#include <validators/schema/XercesAttGroupInfo.hpp>
 
 
 // ---------------------------------------------------------------------------
 //  SchemaGrammar: Constructors and Destructor
 // ---------------------------------------------------------------------------
 SchemaGrammar::SchemaGrammar() :
-    fElementDefaultQualified(false)
-    , fAttributeDefaultQualified(false)
+    fTargetNamespace(0)
     , fElemDeclPool(0)
     , fGroupElemDeclPool(0)
     , fNotationDeclPool(0)
-    , fTargetNamespace(0)
     , fAttributeDeclRegistry(0)
     , fComplexTypeRegistry(0)
+    , fGroupInfoRegistry(0)
+    , fAttGroupInfoRegistry(0)
     , fDatatypeRegistry(0)
     , fNamespaceScope(0)
     , fValidSubstitutionGroups(0)
-    , fGlobalGroups(0)
 {
     //
     //  Init all the pool members.
@@ -127,14 +131,13 @@ SchemaGrammar::~SchemaGrammar()
     delete fTargetNamespace;
     delete fAttributeDeclRegistry;
     delete fComplexTypeRegistry;
-    delete fGlobalGroups;
+    delete fGroupInfoRegistry;
+    delete fAttGroupInfoRegistry;
     delete fNamespaceScope;
     delete fValidSubstitutionGroups;
 }
 
-// -----------------------------------------------------------------------
-//  Virutal methods
-// -----------------------------------------------------------------------
+
 // -----------------------------------------------------------------------
 //  Virtual methods
 // -----------------------------------------------------------------------
@@ -177,21 +180,6 @@ void SchemaGrammar::reset()
     fNotationDeclPool->removeAll();
 }
 
-DOM_Element SchemaGrammar::getGroupElement(const XMLCh* const name) {
-
-    if (fGlobalGroups) {
 
-        unsigned int groupSize = fGlobalGroups->size();
 
-        for (unsigned int i=0; i< groupSize; i++) {
 
-            DOM_Element elem = fGlobalGroups->elementAt(i);
-
-            if (elem.getAttribute(SchemaSymbols::fgATT_NAME).equals(name)) {
-                return elem;
-            }
-        }
-    }
-
-    return DOM_Element();
-}
diff --git a/src/validators/schema/SchemaGrammar.hpp b/src/validators/schema/SchemaGrammar.hpp
index d44c828f9aa0fa749a5ae0b4c5d3b0838935a06a..3139b1ac4df8d876cc0809b2501cd0e22654bf0a 100644
--- a/src/validators/schema/SchemaGrammar.hpp
+++ b/src/validators/schema/SchemaGrammar.hpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.8  2001/07/31 15:27:10  knoaman
+ * Added support for <attributeGroup>.
+ *
  * Revision 1.7  2001/07/24 18:33:46  knoaman
  * Added support for <group> + extra constraint checking for complexType
  *
@@ -85,7 +88,6 @@
 #if !defined(SCHEMAGRAMMAR_HPP)
 #define SCHEMAGRAMMAR_HPP
 
-#include <dom/DOM_Element.hpp>
 #include <framework/XMLNotationDecl.hpp>
 #include <util/RefHash3KeysIdPool.hpp>
 #include <util/NameIdPool.hpp>
@@ -109,6 +111,8 @@
 class DatatypeValidatorFactory;
 class ComplexTypeInfo;
 class NamespaceScope;
+class XercesGroupInfo;
+class XercesAttGroupInfo;
 
 // ---------------------------------------------------------------------------
 //  typedef declaration
@@ -200,28 +204,26 @@ public:
     // -----------------------------------------------------------------------
     //  Getter methods
     // -----------------------------------------------------------------------
-    bool getElementDefaultQualified() const;
-    bool getAttributeDefaultQualified() const;
     RefHash3KeysIdPoolEnumerator<SchemaElementDecl> getElemEnumerator() const;
     RefHashTableOf<XMLAttDef>* getAttributeDeclRegistry() const;
     RefHashTableOf<ComplexTypeInfo>* getComplexTypeRegistry() const;
+    RefHashTableOf<XercesGroupInfo>* getGroupInfoRegistry() const;
+    RefHashTableOf<XercesAttGroupInfo>* getAttGroupInfoRegistry() const;
     DatatypeValidatorFactory* getDatatypeRegistry() const;
     NamespaceScope* getNamespaceScope() const;
     RefHash2KeysTableOf<ElemVector>* getValidSubstitutionGroups() const;
-    DOM_Element getGroupElement(const XMLCh* const name);
 
     // -----------------------------------------------------------------------
     //  Setter methods
     // -----------------------------------------------------------------------
-    void setElementDefaultQualified(const bool toSet);
-    void setAttributeDefaultQualified(const bool toSet);
     void setTargetNamespace(const XMLCh* const targetNamespace);
     void setAttributeDeclRegistry(RefHashTableOf<XMLAttDef>* const attReg);
     void setComplexTypeRegistry(RefHashTableOf<ComplexTypeInfo>* const other);
+    void setGroupInfoRegistry(RefHashTableOf<XercesGroupInfo>* const other);
+    void setAttGroupInfoRegistry(RefHashTableOf<XercesAttGroupInfo>* const other);
     void setDatatypeRegistry(DatatypeValidatorFactory* const dvRegistry);
     void setNamespaceScope(NamespaceScope* const nsScope);
     void setValidSubstitutionGroups(RefHash2KeysTableOf<ElemVector>* const);
-    void addGlobalGroup(const DOM_Element& groupElem);
 
     // -----------------------------------------------------------------------
     //  Helper methods
@@ -231,8 +233,6 @@ public:
         XMLElementDecl* const elemDecl
     )   const;
 
-    void releaseGroupElement(unsigned int index);
-
 private:
 
     // -----------------------------------------------------------------------
@@ -262,6 +262,12 @@ private:
     //  fComplexTypeRegistry
     //      Stores complexType declaration info
     //
+    //  fGroupInfoRegistry
+    //      Stores global <group> declaration info
+    //
+    //  fAttGroupInfoRegistry
+    //      Stores global <attributeGroup> declaration info
+    //
     //  fDatatypeRegistry
     //      Datatype validator factory
     //
@@ -271,34 +277,23 @@ private:
     //  fValidSubstitutionGroups
     //      Valid list of elements that can substitute a given element
     // -----------------------------------------------------------------------
-    bool                                   fElementDefaultQualified;
-    bool                                   fAttributeDefaultQualified;
+    XMLCh*                                 fTargetNamespace;
     RefHash3KeysIdPool<SchemaElementDecl>* fElemDeclPool;
     RefHash3KeysIdPool<SchemaElementDecl>* fGroupElemDeclPool;
     NameIdPool<XMLNotationDecl>*           fNotationDeclPool;
-    XMLCh*                                 fTargetNamespace;
     RefHashTableOf<XMLAttDef>*             fAttributeDeclRegistry;
     RefHashTableOf<ComplexTypeInfo>*       fComplexTypeRegistry;
+    RefHashTableOf<XercesGroupInfo>*       fGroupInfoRegistry;
+    RefHashTableOf<XercesAttGroupInfo>*    fAttGroupInfoRegistry;
     DatatypeValidatorFactory*              fDatatypeRegistry;
     NamespaceScope*                        fNamespaceScope;
     RefHash2KeysTableOf<ElemVector>*       fValidSubstitutionGroups;
-    ValueVectorOf<DOM_Element>*            fGlobalGroups;
 };
 
 
 // ---------------------------------------------------------------------------
 //  SchemaGrammar: Getter methods
 // ---------------------------------------------------------------------------
-inline bool SchemaGrammar::getElementDefaultQualified() const {
-
-    return fElementDefaultQualified;
-}
-
-inline bool SchemaGrammar::getAttributeDefaultQualified() const {
-
-    return fAttributeDefaultQualified;
-}
-
 inline RefHash3KeysIdPoolEnumerator<SchemaElementDecl>
 SchemaGrammar::getElemEnumerator() const
 {
@@ -316,6 +311,18 @@ SchemaGrammar::getComplexTypeRegistry() const {
     return fComplexTypeRegistry;
 }
 
+inline RefHashTableOf<XercesGroupInfo>*
+SchemaGrammar::getGroupInfoRegistry() const {
+
+    return fGroupInfoRegistry;
+}
+
+inline RefHashTableOf<XercesAttGroupInfo>*
+SchemaGrammar::getAttGroupInfoRegistry() const {
+
+    return fAttGroupInfoRegistry;
+}
+
 inline DatatypeValidatorFactory* SchemaGrammar::getDatatypeRegistry() const {
 
     return fDatatypeRegistry;
@@ -335,16 +342,6 @@ SchemaGrammar::getValidSubstitutionGroups() const {
 // -----------------------------------------------------------------------
 //  Setter methods
 // -----------------------------------------------------------------------
-inline void SchemaGrammar::setElementDefaultQualified(const bool toSet) {
-
-    fElementDefaultQualified = toSet;
-}
-
-inline void SchemaGrammar::setAttributeDefaultQualified(const bool toSet) {
-
-    fAttributeDefaultQualified = toSet;
-}
-
 inline void SchemaGrammar::setTargetNamespace(const XMLCh* const targetNamespace) {
     fTargetNamespace = XMLString::replicate(targetNamespace);
 }
@@ -361,6 +358,18 @@ SchemaGrammar::setComplexTypeRegistry(RefHashTableOf<ComplexTypeInfo>* const oth
     fComplexTypeRegistry = other;
 }
 
+inline void
+SchemaGrammar::setGroupInfoRegistry(RefHashTableOf<XercesGroupInfo>* const other) {
+
+    fGroupInfoRegistry = other;
+}
+
+inline void
+SchemaGrammar::setAttGroupInfoRegistry(RefHashTableOf<XercesAttGroupInfo>* const other) {
+
+    fAttGroupInfoRegistry = other;
+}
+
 inline void
 SchemaGrammar::setDatatypeRegistry(DatatypeValidatorFactory* const dvRegistry) {
 
@@ -378,28 +387,6 @@ SchemaGrammar::setValidSubstitutionGroups(RefHash2KeysTableOf<ElemVector>* const
     fValidSubstitutionGroups = other;
 }
 
-inline void
-SchemaGrammar::addGlobalGroup(const DOM_Element& groupElem) {
-
-    if (!fGlobalGroups) {
-        fGlobalGroups = new ValueVectorOf<DOM_Element>(8);
-    }
-
-    fGlobalGroups->addElement(groupElem);
-}
-
-
-// ---------------------------------------------------------------------------
-//  SchemaGrammar: Helper methods
-// ---------------------------------------------------------------------------
-inline void SchemaGrammar::releaseGroupElement(unsigned int index) {
-
-    if (!fGlobalGroups || index < 0 || fGlobalGroups->size() <= index) {
-        return;
-    }
-
-    fGlobalGroups->setElementAt(DOM_Element(), index);
-}
 
 // ---------------------------------------------------------------------------
 //  SchemaGrammar: Virtual methods
diff --git a/src/validators/schema/SchemaInfo.cpp b/src/validators/schema/SchemaInfo.cpp
index 5154be12a8f652f544aae5874ef261fd29724324..c8ca516260208c861ddd104913f006c4ed621991 100644
--- a/src/validators/schema/SchemaInfo.cpp
+++ b/src/validators/schema/SchemaInfo.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.4  2001/07/31 15:26:54  knoaman
+ * Added support for <attributeGroup>.
+ *
  * Revision 1.3  2001/07/09 14:29:43  knoaman
  * Fixes for import/include declarations
  *
@@ -81,6 +84,7 @@ SchemaInfo::SchemaInfo(const bool elemDefaultQualified,
                        const bool attrDefaultQualified,
                        const int blockDefault,
                        const int finalDefault,
+                       const unsigned int namespaceScopeLevel,
                        XMLCh* const schemaURL,
                        const DOM_Element& root,
                        SchemaInfo* const nextRoot,
@@ -89,6 +93,7 @@ SchemaInfo::SchemaInfo(const bool elemDefaultQualified,
     , fAttributeDefaultQualified(attrDefaultQualified)
     , fBlockDefault(blockDefault)
     , fFinalDefault(finalDefault)
+    , fNamespaceScopeLevel(namespaceScopeLevel)
     , fCurrentSchemaURL(XMLString::replicate(schemaURL))
     , fSchemaRootElement(root)
     , fNext(nextRoot)
diff --git a/src/validators/schema/SchemaInfo.hpp b/src/validators/schema/SchemaInfo.hpp
index 2a566dfd22f9b6e6eea29a727ed928a0122ca024..5bfe6ea7499155cb4694a8d8af4f314b7d3645ab 100644
--- a/src/validators/schema/SchemaInfo.hpp
+++ b/src/validators/schema/SchemaInfo.hpp
@@ -89,6 +89,7 @@ public:
                const bool attrDefaultQualified,
                const int blockDefault,
                const int finalDefault,
+               const unsigned int namespaceScopeLevel,
                XMLCh* const schemaURL,
                const DOM_Element& root,
                SchemaInfo* const nextRoot,
@@ -99,19 +100,20 @@ public:
 	// -----------------------------------------------------------------------
     //  Getter methods
     // -----------------------------------------------------------------------
-    SchemaInfo* getNext() const;
-    SchemaInfo* getPrev() const;
-    XMLCh*      getCurrentSchemaURL() const;
-    DOM_Element getRoot() const;
-    int         getBlockDefault() const;
-    int         getFinalDefault() const;
-    bool        isElementDefaultQualified() const;
-    bool        isAttributeDefaultQualified() const;
+    SchemaInfo*  getNext() const;
+    SchemaInfo*  getPrev() const;
+    XMLCh*       getCurrentSchemaURL() const;
+    DOM_Element  getRoot() const;
+    int          getBlockDefault() const;
+    int          getFinalDefault() const;
+    unsigned int getNamespaceScopeLevel() const;
+    bool         isElementDefaultQualified() const;
+    bool         isAttributeDefaultQualified() const;
 
 	// -----------------------------------------------------------------------
     //  Setter methods
     // -----------------------------------------------------------------------
-    void setNext(SchemaInfo* const nextInfo);
+    void setNext(SchemaInfo* const nextInfo);    
 
 private:
     // -----------------------------------------------------------------------
@@ -121,6 +123,7 @@ private:
     bool               fAttributeDefaultQualified;
     int                fBlockDefault;
     int                fFinalDefault;
+    unsigned int       fNamespaceScopeLevel;
     XMLCh*             fCurrentSchemaURL;
     DOM_Element        fSchemaRootElement;
     SchemaInfo*        fNext;
@@ -151,6 +154,10 @@ inline int SchemaInfo::getFinalDefault() const {
     return fFinalDefault;
 }
 
+inline unsigned int SchemaInfo::getNamespaceScopeLevel() const {
+    return fNamespaceScopeLevel;
+}
+
 inline XMLCh* SchemaInfo::getCurrentSchemaURL() const {
 
     return fCurrentSchemaURL;
diff --git a/src/validators/schema/TraverseSchema.cpp b/src/validators/schema/TraverseSchema.cpp
index d6787a1cf845bf4b6aa21ca8013a8307ba1e4819..a5ee2a7d5fa6d7e622dd5a459cbf29e234f3c9bd 100644
--- a/src/validators/schema/TraverseSchema.cpp
+++ b/src/validators/schema/TraverseSchema.cpp
@@ -96,6 +96,7 @@
 #include <validators/datatype/InvalidDatatypeFacetException.hpp>
 #include <validators/schema/GeneralAttributeCheck.hpp>
 #include <validators/schema/XercesGroupInfo.hpp>
+#include <validators/schema/XercesAttGroupInfo.hpp>
 
 // ---------------------------------------------------------------------------
 //  TraverseSchema: Local declaration
@@ -181,13 +182,13 @@ TraverseSchema::TraverseSchema( const DOM_Element&                 schemaRoot
     , fFinalDefault(0)
     , fBlockDefault(0)
     , fScopeCount(0)
+    , fCurrentNamespaceLevel(0)
     , fSchemaRootElement(schemaRoot)
     , fTargetNSURIString(0)
     , fCurrentSchemaURL(XMLString::replicate(schemaURL))
     , fDatatypeRegistry(0)
     , fGrammarResolver(grammarResolver)
     , fSchemaGrammar(schemaGrammar)
-    , fRefSchemaGrammar(0)
     , fEntityResolver(entityResolver)
     , fErrorHandler(errorHandler)
     , fURIStringPool(uriStringPool)
@@ -197,9 +198,11 @@ TraverseSchema::TraverseSchema( const DOM_Element&                 schemaRoot
     , fAttributeDeclRegistry(0)
     , fComplexTypeRegistry(0)
     , fGroupRegistry(0)
+    , fAttGroupRegistry(0)
     , fSchemaInfoRoot(0)
     , fCurrentSchemaInfo(0)
     , fCurrentGroupInfo(0)
+    , fCurrentAttGroupInfo(0)
     , fCurrentComplexType(0)
     , fImportLocations(importLocations)
     , fIncludeLocations(0)
@@ -208,6 +211,7 @@ TraverseSchema::TraverseSchema( const DOM_Element&                 schemaRoot
     , fAttributeCheck(0)
     , fGlobalTypes(0)
     , fGlobalGroups(0)
+    , fGlobalAttGroups(0)
     , fSubstitutionGroups(0)
     , fValidSubstitutionGroups(0)
     , fRefElements(0)
@@ -245,7 +249,7 @@ void TraverseSchema::doTraverseSchema() {
     }
 
     unsigned int schemaURLId = fURIStringPool->addOrFind(fCurrentSchemaURL);
-    fImportLocations->addElement(schemaURLId);
+    fImportLocations->addElement(schemaURLId);    
 
     if (fSchemaRootElement.isNull()) {
         // REVISIT: Anything to do?
@@ -258,11 +262,11 @@ void TraverseSchema::doTraverseSchema() {
     fCurrentTypeNameStack = new ValueVectorOf<unsigned int>(8);
     fCurrentGroupStack = new ValueVectorOf<unsigned int>(8);
     fGlobalTypes = new RefHash2KeysTableOf<XMLCh>(29, false);
-    fGlobalGroups = new RefHash2KeysTableOf<XMLCh>(29, false);
+    fGlobalGroups = new RefHash2KeysTableOf<XMLCh>(13, false);
+    fGlobalAttGroups = new RefHash2KeysTableOf<XMLCh>(13, false);
     fSubstitutionGroups = new RefHash2KeysTableOf<SchemaElementDecl>(29, false);
     fRefElements = new RefVectorOf<SchemaElementDecl>(32, false);
     fRefElemScope = new ValueVectorOf<int>(32);
-    fGroupRegistry = new RefHashTableOf<XercesGroupInfo>(29);
 
     //Make sure namespace binding is defaulted
     DOMString rootPrefix = fSchemaRootElement.getPrefix();
@@ -300,8 +304,8 @@ void TraverseSchema::doTraverseSchema() {
     }
     else{
 
-        // for complex type registry, attribute decl registry and
-        // namespace mapping, needs to check whether the passed in
+        // for complex type registry, attribute decl registry , group/attGroup
+        // and namespace mapping, needs to check whether the passed in
         // Grammar was a newly instantiated one.
         fComplexTypeRegistry = fSchemaGrammar->getComplexTypeRegistry();
 
@@ -311,6 +315,22 @@ void TraverseSchema::doTraverseSchema() {
             fSchemaGrammar->setComplexTypeRegistry(fComplexTypeRegistry);
         }
 
+        fGroupRegistry = fSchemaGrammar->getGroupInfoRegistry();
+
+        if (fGroupRegistry == 0 ) {
+
+            fGroupRegistry = new RefHashTableOf<XercesGroupInfo>(13);
+            fSchemaGrammar->setGroupInfoRegistry(fGroupRegistry);
+        }
+
+        fAttGroupRegistry = fSchemaGrammar->getAttGroupInfoRegistry();
+
+        if (fAttGroupRegistry == 0 ) {
+
+            fAttGroupRegistry = new RefHashTableOf<XercesAttGroupInfo>(13);
+            fSchemaGrammar->setAttGroupInfoRegistry(fAttGroupRegistry);
+        }
+
         fAttributeDeclRegistry = fSchemaGrammar->getAttributeDeclRegistry();
 
         if (fAttributeDeclRegistry == 0) {
@@ -325,7 +345,7 @@ void TraverseSchema::doTraverseSchema() {
 
             fNamespaceScope = new NamespaceScope();
             fNamespaceScope->reset(fURIStringPool->addOrFind(XMLUni::fgZeroLenString));
-            fNamespaceScope->increaseDepth();
+            fCurrentNamespaceLevel = fNamespaceScope->increaseDepth();
             fSchemaGrammar->setNamespaceScope(fNamespaceScope);
         }
 
@@ -350,7 +370,7 @@ void TraverseSchema::doTraverseSchema() {
 
     // Handle identity constraints
     // TO DO
-
+    
     // Element consistency checks - substitution groups
     checkRefElementConsistency();
 }
@@ -371,9 +391,6 @@ void TraverseSchema::traverseSchemaHeader() {
     fAttributeDefaultQualified =
         fSchemaRootElement.getAttribute(SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT).equals(SchemaSymbols::fgATTVAL_QUALIFIED);
 
-    fSchemaGrammar->setElementDefaultQualified(fElementDefaultQualified);
-    fSchemaGrammar->setAttributeDefaultQualified(fAttributeDefaultQualified);
-
     // Get finalDefault/blockDefault values
     const XMLCh* defaultVal = getElementAttValue(fSchemaRootElement,
                                           SchemaSymbols::fgATT_BLOCKDEFAULT);
@@ -381,8 +398,6 @@ void TraverseSchema::traverseSchemaHeader() {
                                           SchemaSymbols::fgATT_FINALDEFAULT);
     fBlockDefault = parseBlockSet(defaultVal, ES_Block);
     fFinalDefault = parseFinalSet(finalVal, ECS_Final);
-
-//    fCurrentScope = Grammar::TOP_LEVEL_SCOPE;
 }
 
 
@@ -496,6 +511,7 @@ void TraverseSchema::traverseInclude(const DOM_Element& elem) {
                                        fAttributeDefaultQualified,
                                        fBlockDefault,
                                        fFinalDefault,
+                                       0,
                                        fCurrentSchemaURL,
                                        fSchemaRootElement,
                                        0, 0);
@@ -505,6 +521,7 @@ void TraverseSchema::traverseInclude(const DOM_Element& elem) {
                 // --------------------------------------------------------
                 // Update schema information with included schema
                 // --------------------------------------------------------
+                unsigned int namespaceLevel = fNamespaceScope->increaseDepth();
                 fSchemaRootElement = root;
                 setCurrentSchemaURL(includeURL);
                 traverseSchemaHeader();
@@ -515,6 +532,7 @@ void TraverseSchema::traverseInclude(const DOM_Element& elem) {
                                    fAttributeDefaultQualified,
                                    fBlockDefault,
                                    fFinalDefault,
+                                   namespaceLevel,
                                    fCurrentSchemaURL,
                                    fSchemaRootElement,
                                    fCurrentSchemaInfo->getNext(),
@@ -742,7 +760,7 @@ TraverseSchema::traverseChoiceSequence(const DOM_Element& elem,
 
                 if (hasAllContent(contentSpecNode)) {
 
-                    reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AllContentLimited);
+                    reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AllContentLimited);                    
                     continue;
                 }
             }
@@ -786,7 +804,7 @@ TraverseSchema::traverseChoiceSequence(const DOM_Element& elem,
 
         if (left == 0) {
             left = expandedSpecNode;
-            toAdoptLeft = adoptSpecNode;
+            toAdoptLeft = adoptSpecNode; 
         }
         else if (right == 0) {
             right = expandedSpecNode;
@@ -959,7 +977,8 @@ int TraverseSchema::traverseComplexTypeDecl(const DOM_Element& elem) {
     if (!XMLString::isValidNCName(name)) {
 
         //REVISIT - Should we return or continue and save type with wrong name?
-        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidComplexTypeName, name);
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName,
+                          SchemaSymbols::fgELT_COMPLEXTYPE, name);
         return -1;
     }
 
@@ -1003,12 +1022,7 @@ int TraverseSchema::traverseComplexTypeDecl(const DOM_Element& elem) {
     // ------------------------------------------------------------------
     // Register the type first, so that in case of a recursive element type
     // declaration, we can retrieve the complexType info (though the rest of
-    // complex type information has not been added).
-    RefHashTableOf<ComplexTypeInfo>* complexTypeRegistry =
-        (topLevel || !fRefSchemaGrammar) ? fComplexTypeRegistry
-                                         : fRefSchemaGrammar->getComplexTypeRegistry();
-
-    complexTypeRegistry->put((void*) fStringPool.getValueForId(typeNameIndex),
+    fComplexTypeRegistry->put((void*) fStringPool.getValueForId(typeNameIndex),
                               typeInfo);
     typeInfo->setTypeName(fullName);
     typeInfo->setScopeDefined(fCurrentScope);
@@ -1062,7 +1076,7 @@ int TraverseSchema::traverseComplexTypeDecl(const DOM_Element& elem) {
             }
         }
     }
-    catch(...) {
+    catch(TraverseSchema::ExceptionCodes) {
         defaultComplexTypeInfo(typeInfo);
     }
 
@@ -1151,7 +1165,8 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem,
     if (nameEmpty || (!refEmpty && !topLevel)) {
 
         if (!nameEmpty) {
-            reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupWithNameRef, name);
+            reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationWithNameRef,
+                              SchemaSymbols::fgELT_GROUP, name);
         }
 
         return processGroupRef(elem, ref, toAdoptSpecNode);
@@ -1162,7 +1177,8 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem,
     // ------------------------------------------------------------------
     // name must be a valid NCName
     if (!XMLString::isValidNCName(name)) {
-        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidGroupName, name);
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName,
+                          SchemaSymbols::fgELT_GROUP, name);
         return 0;
     }
 
@@ -1170,6 +1186,7 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem,
     fBuffer.append(chComma);
     fBuffer.append(name);
 
+    int saveScope = fCurrentScope;
     unsigned int fullNameIndex = fStringPool.addOrFind(fBuffer.getRawBuffer());
     const XMLCh* fullName = fStringPool.getValueForId(fullNameIndex);
     ContentSpecNode* specNode = 0;
@@ -1178,13 +1195,18 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem,
 
     fCurrentGroupStack->addElement(fullNameIndex);
     fCurrentGroupInfo = groupInfo;
+
+    if (!saveGroupInfo && !fCurrentComplexType) {
+        fCurrentScope = fScopeCount++;
+    }
+
     fCurrentGroupInfo->setScope(fCurrentScope);
 
     if (content == 0) {
         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupContentError, name);
     }
     else {
-
+        
         if (elem.getAttributeNode(SchemaSymbols::fgATT_MINOCCURS) != 0
             || elem.getAttributeNode(SchemaSymbols::fgATT_MAXOCCURS) != 0) {
             reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::MinMaxOnGroupChild);
@@ -1226,13 +1248,14 @@ TraverseSchema::traverseGroupDecl(const DOM_Element& elem,
     fCurrentGroupInfo->setContentSpec(specNode);
     fGroupRegistry->put((void*) fullName, fCurrentGroupInfo);
     fCurrentGroupInfo = saveGroupInfo;
+    fCurrentScope = saveScope;
 
     return groupInfo;
 }
 
 XercesGroupInfo*
 TraverseSchema::traverseGroupDeclNS(const XMLCh* const uriStr,
-                                    const XMLCh* const groupName,
+                                    const XMLCh* const name,
                                     bool& toAdoptSpecNode) {
 
     // ------------------------------------------------------------------
@@ -1246,61 +1269,86 @@ TraverseSchema::traverseGroupDeclNS(const XMLCh* const uriStr,
         return 0;
     }
 
-    // ------------------------------------------------------------------
-    // Save current grammar
-    // ------------------------------------------------------------------
-    bool                             saveElemDefaultQualified = fElementDefaultQualified;
-    bool                             saveAttrDefaultQualified = fAttributeDefaultQualified;
-    int                              saveTargetNSURI = fTargetNSURI;
-    SchemaGrammar*                   saveSchemaGrammar = fSchemaGrammar;
-    SchemaGrammar*                   saveRefSchemaGrammar = fRefSchemaGrammar;
-    NamespaceScope*                  saveNamespaceScope = fNamespaceScope;
-    RefHashTableOf<XMLAttDef>*       saveAttDeclRegistry = fAttributeDeclRegistry;
-    RefHashTableOf<ComplexTypeInfo>* saveComplexTypeRegistry = fComplexTypeRegistry;
-    XMLCh* saveTargetNSURIString  = fTargetNSURIString;
-    ArrayJanitor<XMLCh> janNSURIStr(saveTargetNSURIString);
+    fBuffer.set(uriStr);
+    fBuffer.append(chComma);
+    fBuffer.append(name);
 
-    // ------------------------------------------------------------------
-    // Switch grammar info
-    // ------------------------------------------------------------------
-    if (!fRefSchemaGrammar) {
-        fRefSchemaGrammar = fSchemaGrammar;
+    XercesGroupInfo* groupInfo = aGrammar->getGroupInfoRegistry()->get(fBuffer.getRawBuffer());
+
+    if (!groupInfo) {
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound,
+                          SchemaSymbols::fgELT_GROUP, uriStr, name);
+    }
+    else {
+        toAdoptSpecNode = false;
     }
 
-    fSchemaGrammar = aGrammar;
-    fElementDefaultQualified = aGrammar->getElementDefaultQualified();
-    fAttributeDefaultQualified = aGrammar->getAttributeDefaultQualified();
-    fNamespaceScope = aGrammar->getNamespaceScope();
-    fAttributeDeclRegistry = aGrammar->getAttributeDeclRegistry();
-    fComplexTypeRegistry = aGrammar->getComplexTypeRegistry();
-    fTargetNSURIString = XMLString::replicate(aGrammar->getTargetNamespace());
-    fTargetNSURI = fURIStringPool->addOrFind(fTargetNSURIString);
+    return groupInfo;
+}
 
-    // ------------------------------------------------------------------
-    // Get element info
-    // ------------------------------------------------------------------
-    DOM_Element elem = aGrammar->getGroupElement(groupName);
 
-    if (elem == 0) {
+/**
+  * Traverse attributeGroup Declaration.
+  *
+  * <attributeGroup
+  *         id = ID
+  *         name = NCName
+  *         ref = QName>
+  *   Content: (annotation? , (attribute|attributeGroup)*, anyAttribute?)
+  * <attributeGroup/>
+  *
+  */
+XercesAttGroupInfo*
+TraverseSchema::traverseAttributeGroupDecl(const DOM_Element& elem,
+                                           ComplexTypeInfo* const typeInfo) {
+
+    bool         topLevel = isTopLevelComponent(elem);
+    const XMLCh* name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME);
+    const XMLCh* ref = getElementAttValue(elem, SchemaSymbols::fgATT_REF);
+    bool         nameEmpty = (XMLString::stringLen(name) == 0) ? true : false;
+    bool         refEmpty = (XMLString::stringLen(ref) == 0) ? true : false;
+
+    if (nameEmpty && topLevel) {
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoNameGlobalElement,
+			SchemaSymbols::fgELT_ATTRIBUTEGROUP);
+        return 0;
+    }
+
+    if (nameEmpty && refEmpty) {
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefAttGroup);
         return 0;
     }
 
     // ------------------------------------------------------------------
-    // Create group info
+    // Check attributes
     // ------------------------------------------------------------------
-    fBuffer.set(uriStr);
-    fBuffer.append(chComma);
-    fBuffer.append(groupName);
+    unsigned short scope = (topLevel) ? GeneralAttributeCheck::GlobalContext
+                                      : GeneralAttributeCheck::LocalContext;
+    fAttributeCheck->checkAttributes(elem, scope, this);
 
-    unsigned int fullNameIndex = fStringPool.addOrFind(fBuffer.getRawBuffer());
-    const XMLCh* fullName = fStringPool.getValueForId(fullNameIndex);
-    ContentSpecNode* specNode = 0;
-    XercesGroupInfo* saveGroupInfo = fCurrentGroupInfo;
-    XercesGroupInfo* groupInfo = new XercesGroupInfo();
+    // ------------------------------------------------------------------
+    // Handle "ref="
+    // ------------------------------------------------------------------
+    if (nameEmpty || (!refEmpty && !topLevel)) {
+
+        if (!nameEmpty) {
+            reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationWithNameRef,
+                              SchemaSymbols::fgELT_ATTRIBUTEGROUP, name);
+        }
+
+        return processAttributeGroupRef(elem, ref, typeInfo);
+    }
 
-    fCurrentGroupStack->addElement(fullNameIndex);
-    fCurrentGroupInfo = groupInfo;
-    fCurrentGroupInfo->setScope(fCurrentScope);
+
+    // ------------------------------------------------------------------
+    // Handle "name="
+    // ------------------------------------------------------------------
+    // name must be a valid NCName
+    if (!XMLString::isValidNCName(name)) {
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName,
+                          SchemaSymbols::fgELT_ATTRIBUTEGROUP, name);
+        return 0;
+    }
 
     // ------------------------------------------------------------------
     // Check for annotations
@@ -1308,69 +1356,79 @@ TraverseSchema::traverseGroupDeclNS(const XMLCh* const uriStr,
     DOM_Element content = checkContent(elem, XUtil::getFirstChildElement(elem),
                                        true);
 
-    if (content == 0) {
-        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupContentError, groupName);
-    }
-    else {
+    // ------------------------------------------------------------------
+    // Process contents of global attributeGroups
+    // ------------------------------------------------------------------
+    XercesAttGroupInfo* saveAttGroupInfo = fCurrentAttGroupInfo;
+    XercesAttGroupInfo* attGroupInfo = new XercesAttGroupInfo();
 
-        if (elem.getAttributeNode(SchemaSymbols::fgATT_MINOCCURS) != 0
-            || elem.getAttributeNode(SchemaSymbols::fgATT_MAXOCCURS) != 0) {
-            reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::MinMaxOnGroupChild);
-        }
+    fAttGroupRegistry->put((void*) name, attGroupInfo);
+    fCurrentAttGroupInfo = attGroupInfo;
 
-        bool illegalChild = false;
-        bool adoptSpecNode = true;
-        DOMString childName = content.getLocalName();
+    for (; content !=0; content = XUtil::getNextSiblingElement(content)) {
 
-        if (childName.equals(SchemaSymbols::fgELT_SEQUENCE)) {
-            specNode = traverseChoiceSequence(content, ContentSpecNode::Sequence, adoptSpecNode);
+        if (content.getLocalName().equals(SchemaSymbols::fgELT_ATTRIBUTE)) {
+            traverseAttributeDecl(content, typeInfo);
         }
-        else if (childName.equals(SchemaSymbols::fgELT_CHOICE)) {
-            specNode = traverseChoiceSequence(content, ContentSpecNode::Choice, adoptSpecNode);
-        }
-        else if (childName.equals(SchemaSymbols::fgELT_ALL)) {
-            // TO DO
+        else if (content.getLocalName().equals(SchemaSymbols::fgELT_ATTRIBUTEGROUP)) {
+            traverseAttributeGroupDecl(content, typeInfo);
         }
         else {
-            illegalChild = true;
+            break;
         }
+    }
 
-        if (illegalChild || XUtil::getNextSiblingElement(content) != 0) {
-            reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupContentError, groupName);
-        }
+    if (content != 0) {
 
-        toAdoptSpecNode = adoptSpecNode;
-    }
+        if (content.getLocalName().equals(SchemaSymbols::fgELT_ANYATTRIBUTE)) {
+
+            SchemaAttDef* anyAtt = traverseAnyAttribute(content);
+
+            if (anyAtt) {
+                fCurrentAttGroupInfo->addAnyAttDef(anyAtt);
+            }
 
+            if (XUtil::getNextSiblingElement(content) != 0) {
+                reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AttGroupContentError, name);
+            }
+        }
+        else {
+            reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AttGroupContentError, name);
+        }
+    }
 
     // ------------------------------------------------------------------
-    // Restore grammar info
+    // Restore old attGroupInfo
     // ------------------------------------------------------------------
-    delete [] fTargetNSURIString;
-    fElementDefaultQualified = saveElemDefaultQualified;
-    fAttributeDefaultQualified = saveAttrDefaultQualified;
-    fTargetNSURI = saveTargetNSURI;
-    fSchemaGrammar = saveSchemaGrammar;
-    fRefSchemaGrammar = saveRefSchemaGrammar;
-    fNamespaceScope = saveNamespaceScope;
-    fAttributeDeclRegistry = saveAttDeclRegistry;
-    fComplexTypeRegistry = saveComplexTypeRegistry;
-    fTargetNSURIString = janNSURIStr.release();
+    fCurrentAttGroupInfo = saveAttGroupInfo;
+
+    return attGroupInfo;
+}
+
+
+XercesAttGroupInfo*
+TraverseSchema::traverseAttributeGroupDeclNS(const XMLCh* const uriStr,
+                                             const XMLCh* const name) {
 
     // ------------------------------------------------------------------
-    // Set groupInfo and pop group name from stack
+    // Get grammar information
     // ------------------------------------------------------------------
-    unsigned int stackSize = fCurrentGroupStack->size();
+    SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(uriStr);
 
-    if (stackSize != 0) {
-        fCurrentGroupStack->removeElementAt(stackSize - 1);
+    if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) {
+
+        reportSchemaError(XMLUni::fgValidityDomain, XMLValid::GrammarNotFound, uriStr);
+        return 0;
     }
 
-    fCurrentGroupInfo->setContentSpec(specNode);
-    fGroupRegistry->put((void*) fullName, fCurrentGroupInfo);
-    fCurrentGroupInfo = saveGroupInfo;
+    XercesAttGroupInfo* attGroupInfo = aGrammar->getAttGroupInfoRegistry()->get(name);
 
-    return groupInfo;
+    if (!attGroupInfo) {
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound,
+                          SchemaSymbols::fgELT_ATTRIBUTEGROUP, uriStr, name);
+    }
+
+    return attGroupInfo;
 }
 
 
@@ -1623,6 +1681,11 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem,
     bool           nameEmpty = (XMLString::stringLen(name) == 0) ? true : false;
     bool           refEmpty = (XMLString::stringLen(ref) == 0) ? true : false;
 
+    if (nameEmpty && refEmpty) {
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefAttribute);
+        return;
+    }
+
     if (topLevel) {
 
         if (nameEmpty) {
@@ -1636,10 +1699,11 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem,
             }
         }
     }
-
-    if (nameEmpty && refEmpty) {
-        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefAttribute);
-        return;
+    else {
+        if (!typeInfo && !fCurrentAttGroupInfo) {
+            // Nothing to do - where to save that attribute info?
+            return;
+        }
     }
 
     // ------------------------------------------------------------------
@@ -1685,7 +1749,7 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem,
     if (!XMLString::isValidNCName(name)
         || XMLString::compareString(name, XMLUni::fgXMLNSString) == 0) {
 
-        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidAttributeName, name);
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_ATTRIBUTE, name);
         return;
     }
 
@@ -1709,7 +1773,12 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem,
             return;
         }
     }
-    else if (typeInfo != 0 && typeInfo->getAttDef(name, uriIndex) != 0) {
+    else if (typeInfo && typeInfo->getAttDef(name, uriIndex) != 0) {
+
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, name);
+        return;
+    }
+    else if (fCurrentAttGroupInfo && fCurrentAttGroupInfo->containsAttribute(name, uriIndex)) {
 
         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, name);
         return;
@@ -1923,8 +1992,19 @@ void TraverseSchema::traverseAttributeDecl(const DOM_Element& elem,
     if (topLevel) {
         fAttributeDeclRegistry->put((void*) name, attDef);
     }
-    else if (typeInfo != 0) {
-        typeInfo->addAttDef(attDef);
+    else {
+	
+        bool toClone = false;		
+
+        if (typeInfo) {
+
+            toClone = true;
+            typeInfo->addAttDef(attDef);
+        }
+
+        if (fCurrentAttGroupInfo) {
+            fCurrentAttGroupInfo->addAttDef(attDef, toClone);
+        }
     }
 }
 
@@ -1990,7 +2070,8 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) {
     if (nameEmpty || (!refEmpty && !topLevel)) {
 
         if (!nameEmpty) {
-            reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::ElementWithNameRef, name);
+            reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationWithNameRef,
+                              SchemaSymbols::fgELT_ELEMENT, name);
         }
 
         if (!isValidRefDeclaration(elem)) {
@@ -2002,7 +2083,8 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) {
 
     // Name is notEmpty
     if (!XMLString::isValidNCName(name)) {
-        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidElementName, name);
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName,
+                          SchemaSymbols::fgELT_ELEMENT, name);
         return 0;
     }
 
@@ -2039,14 +2121,9 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) {
 
     if (!isDuplicate) {
 
-        if (topLevel || !fRefSchemaGrammar) {
-            fSchemaGrammar->putElemDecl(elemDecl);
-        }
-        else {
-            fRefSchemaGrammar->putElemDecl(elemDecl);
-        }
+        fSchemaGrammar->putElemDecl(elemDecl);
 
-        if (fCurrentGroupInfo &&
+        if (fCurrentGroupInfo && 
             elemDecl->getEnclosingScope() == fCurrentGroupInfo->getScope()) {
             fCurrentGroupInfo->addElement(elemDecl);
         }
@@ -2159,10 +2236,10 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) {
 
         SchemaElementDecl* subsElemDecl =
                     getSubstituteGroupElemDecl(subsGroupName, noErrorFound);
-
+        
         if (subsElemDecl != 0) {
 
-            // An element cannot substitute itself
+            // An element cannot substitute itself 
             if (subsElemDecl == elemDecl) {
                 // REVISIT - add proper error message
 
@@ -2187,7 +2264,7 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) {
                     fBuffer.append(chComma);
                     fBuffer.append(localPart);
 
-                    if (!isDuplicate) {
+                    if (!isDuplicate) {                  
 
                         XMLCh* elemBaseName = elemDecl->getBaseName();
                         XMLCh* subsElemBaseName = subsElemDecl->getBaseName();
@@ -2196,7 +2273,7 @@ QName* TraverseSchema::traverseElementDecl(const DOM_Element& elem) {
 
                         elemDecl->setSubstitutionGroupName(fBuffer.getRawBuffer());
                         fSubstitutionGroups->put((void*) elemBaseName, elemURI, subsElemDecl);
-                        RefVectorOf<SchemaElementDecl>* subsElements =
+                        RefVectorOf<SchemaElementDecl>* subsElements = 
                            fValidSubstitutionGroups->get(subsElemBaseName, subsElemURI);
 
                         if (!subsElements) {
@@ -2782,7 +2859,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
     if (simpleContent == 0) {
 
         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::EmptySimpleTypeContent);
-        throw 0;
+        throw TraverseSchema::InvalidComplexTypeInfo;
     }
 
     fAttributeCheck->checkAttributes(simpleContent, scope, this);
@@ -2800,7 +2877,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
     }
     else {
         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidSimpleContent);
-        throw 0;
+        throw TraverseSchema::InvalidComplexTypeInfo;
     }
 
     // -----------------------------------------------------------------------
@@ -2812,7 +2889,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
     if (XMLString::stringLen(baseName) == 0) {
 
         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::UnspecifiedBase);
-        throw 0;
+        throw TraverseSchema::InvalidComplexTypeInfo;
     }
 
     const XMLCh* prefix = getPrefix(baseName);
@@ -2827,7 +2904,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
 
             reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DisallowedSimpleTypeExtension,
                               baseName, typeName);
-            throw 0;
+            throw TraverseSchema::InvalidComplexTypeInfo;
         }
 
         typeInfo->setBaseComplexTypeInfo(0);
@@ -2845,12 +2922,12 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
 
         if (baseTypeInfo->getContentType() != SchemaElementDecl::Simple) {
             reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidSimpleContentBase, baseName);
-            throw 0;
+            throw TraverseSchema::InvalidComplexTypeInfo;
         }
 
         if ((baseTypeInfo->getFinalSet() & typeInfo->getDerivedBy()) != 0) {
             reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::ForbiddenDerivation, baseName);
-            throw 0;
+            throw TraverseSchema::InvalidComplexTypeInfo;
         }
     }
 
@@ -2867,7 +2944,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
         if (typeInfo->getBaseDatatypeValidator() != 0) {
 
             reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidComplexTypeBase, baseName);
-            throw 0;
+            throw TraverseSchema::InvalidComplexTypeInfo;
         }
         else {
            typeInfo->setBaseDatatypeValidator(baseTypeInfo->getDatatypeValidator());
@@ -2886,7 +2963,7 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
 
                 if (simpleTypeNameIndex !=-1) {
 
-                    DatatypeValidator* simpleTypeDV =
+                    DatatypeValidator* simpleTypeDV = 
                         fDatatypeRegistry->getDatatypeValidator(fStringPool.getValueForId(simpleTypeNameIndex));
 
                     // Check that the simpleType validator is validly derived
@@ -2896,14 +2973,14 @@ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName,
                     if (baseDV  && !baseDV->isSubstitutableBy(simpleTypeDV)) {
 
                         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidContentRestriction);
-                        throw 0;
+                        throw TraverseSchema::InvalidComplexTypeInfo;
                     }
 
                     typeInfo->setBaseDatatypeValidator(simpleTypeDV);
                     content = XUtil::getNextSiblingElement(content);
                 }
                 else {
-                    throw 0;
+                    throw TraverseSchema::InvalidComplexTypeInfo;
                 }
             }
 
@@ -3138,7 +3215,7 @@ void TraverseSchema::traverseComplexContentDecl(const XMLCh* const typeName,
 
     // If there are no children, return
     if (complexContent == 0) {
-       throw 0;
+       throw TraverseSchema::InvalidComplexTypeInfo;
     }
 
     // -----------------------------------------------------------------------
@@ -3155,7 +3232,7 @@ void TraverseSchema::traverseComplexContentDecl(const XMLCh* const typeName,
     else {
 
         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::InvalidComplexContent);
-        throw 0;
+        throw TraverseSchema::InvalidComplexTypeInfo;
     }
 
     // -----------------------------------------------------------------------
@@ -3167,7 +3244,7 @@ void TraverseSchema::traverseComplexContentDecl(const XMLCh* const typeName,
     if (XMLString::stringLen(baseName) == 0) {
 
         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::UnspecifiedBase);
-        throw 0;
+        throw TraverseSchema::InvalidComplexTypeInfo;
     }
 
     const XMLCh* prefix = getPrefix(baseName);
@@ -3187,7 +3264,7 @@ void TraverseSchema::traverseComplexContentDecl(const XMLCh* const typeName,
 
             reportSchemaError(XMLUni::fgXMLErrDomain,
                               XMLErrs::BaseNotComplexType);
-            throw 0;
+            throw TraverseSchema::InvalidComplexTypeInfo;
         }
     }
 
@@ -3284,9 +3361,8 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOM_Element& elem) {
 
         attType = XMLAttDef::Any_List;
 
-        // Will be using '|' as a separator to construct enumeration string.
-        // When the data is retrieved, a XMLStringTokenizer construction with
-        // a delimeter string of "|" sould be used.
+        // Will be using ' ' as a separator to construct enumeration string.
+        // When the data is retrieved, a tokenization needs to take place
         while (tokenizer.hasMoreTokens()) {
 
             const XMLCh* token = tokenizer.nextToken();
@@ -3303,7 +3379,7 @@ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOM_Element& elem) {
                 fBuffer.append(token);
             }
 
-            separator = chPipe;
+            separator = chSpace;
         }
     }
 
@@ -3371,32 +3447,8 @@ void TraverseSchema::retrieveNamespaceMapping() {
     }
 }
 
-
-
-void TraverseSchema::extractTopLevel3Components(const DOM_Element& rootElem) {
-
-    for (DOM_Element child = XUtil::getFirstChildElement(rootElem);
-	     child != 0;
-		 child = XUtil::getNextSiblingElement(child)) {
-
-        DOMString name = child.getLocalName();
-        const XMLCh* typeName = getElementAttValue(child, SchemaSymbols::fgATT_NAME);
-
-        if (name.equals(SchemaSymbols::fgELT_GROUP)) {
-
-            if (fSchemaGrammar->getGroupElement(typeName) == 0) {
-                fSchemaGrammar->addGlobalGroup(child);
-            }
-        }
-    }
-}
-
-
 void TraverseSchema::processChildren(const DOM_Element& root) {
 
-    // extract global components and store them in the grammar
-    extractTopLevel3Components(root);
-
     // process <redefine>, <include> and <import> info items.
     DOM_Element child = XUtil::getFirstChildElement(root);
 
@@ -3408,10 +3460,7 @@ void TraverseSchema::processChildren(const DOM_Element& root) {
             traverseAnnotationDecl(child);
         }
         else if (name.equals(SchemaSymbols::fgELT_INCLUDE)) {
-
-            fNamespaceScope->increaseDepth();
             traverseInclude(child);
-            fNamespaceScope->decreaseDepth();
         }
         else if (name.equals(SchemaSymbols::fgELT_IMPORT)) {
             traverseImport(child);
@@ -3471,6 +3520,18 @@ void TraverseSchema::processChildren(const DOM_Element& root) {
         }
         else if (name.equals(SchemaSymbols::fgELT_ATTRIBUTEGROUP)) {
 
+            if (XMLString::stringLen(typeName)) {
+                if (fGlobalAttGroups->containsKey(typeName, fTargetNSURI)) {
+                    reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalDeclaration,
+                                      SchemaSymbols::fgELT_ATTRIBUTEGROUP, typeName);
+                    continue;
+                }
+                else {
+                    fGlobalAttGroups->put((void*) typeName, fTargetNSURI, 0);
+                }
+            }
+
+            traverseAttributeGroupDecl(child, 0);
         }
         else if (name.equals(SchemaSymbols::fgELT_ATTRIBUTE ) ) {
             traverseAttributeDecl( child, 0);
@@ -3479,14 +3540,17 @@ void TraverseSchema::processChildren(const DOM_Element& root) {
 
             if (XMLString::stringLen(typeName)) {
                 if (fGlobalGroups->containsKey(typeName, fTargetNSURI)) {
-                    reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalType,
-                                      SchemaSymbols::fgELT_GROUP, typeName, SchemaSymbols::fgELT_COMPLEXTYPE);
+                    reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalDeclaration,
+                                      SchemaSymbols::fgELT_GROUP, typeName);
                     continue;
                 }
                 else {
                     fGlobalGroups->put((void*) typeName, fTargetNSURI, 0);
                 }
             }
+
+            bool toAdoptSpecNode = true;
+            traverseGroupDecl(child, toAdoptSpecNode);
         }
         else if (name.equals(SchemaSymbols::fgELT_NOTATION)) {
             traverseNotationDecl(child); //TO DO
@@ -3682,7 +3746,7 @@ TraverseSchema::getTopLevelComponentByName(const XMLCh* const compCategory,
 
 const XMLCh* TraverseSchema::resolvePrefixToURI(const XMLCh* const prefix) {
 
-    int nameSpaceIndex = fNamespaceScope->getNamespaceForPrefix(prefix);
+    int nameSpaceIndex = fNamespaceScope->getNamespaceForPrefix(prefix, fCurrentNamespaceLevel);
     const XMLCh* uriStr = fURIStringPool->getValueForId(nameSpaceIndex);
 
     if (uriStr == 0) {
@@ -3721,7 +3785,7 @@ QName* TraverseSchema::processElementDeclRef(const DOM_Element& elem,
                                        true);
 
     if (content != 0) {
-        reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef);
+        reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef, SchemaSymbols::fgELT_ELEMENT);
     }
 
     const XMLCh* prefix = getPrefix(refName);
@@ -3790,7 +3854,7 @@ int TraverseSchema::parseBlockSet(const XMLCh* const blockStr,
     int blockSet = 0;
 
     if (!XMLString::compareString(blockStr, SchemaSymbols::fgATTVAL_POUNDALL)) {
-
+        
         blockSet = SchemaSymbols::EXTENSION + SchemaSymbols::RESTRICTION;
 		
 		if (blockType == ES_Block) {
@@ -4327,28 +4391,34 @@ void TraverseSchema::processAttributeDeclRef(const DOM_Element& elem,
         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::AttributeRefContentError);
     }
 
-    // REVISIT - attributeGroup case
-    if (typeInfo == 0) {
+    if (!typeInfo && !fCurrentAttGroupInfo) {
         return;
     }
 
     const XMLCh* prefix = getPrefix(refName);
     const XMLCh* localPart = getLocalPart(refName);
     const XMLCh* uriStr = resolvePrefixToURI(prefix);
+    unsigned int attURI = fURIStringPool->addOrFind(uriStr);
 
-    if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) {
+    // Check for duplicate references
+    if (typeInfo && typeInfo->getAttDef(localPart, attURI)) {
 
-        addAttributeDeclFromAnotherSchema(localPart, uriStr, typeInfo);
+        reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateRefAttribute, uriStr, localPart);
         return;
     }
-
-    // Check for duplicate references
-    if (typeInfo->getAttDef(localPart,fURIStringPool->addOrFind(uriStr)) != 0) {
+    else if (fCurrentAttGroupInfo && fCurrentAttGroupInfo->containsAttribute(localPart, attURI)) {
 
         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateRefAttribute, uriStr, localPart);
         return;
     }
 
+    // check for different namespace
+    if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) {
+
+        addAttributeDeclFromAnotherSchema(localPart, uriStr, typeInfo);
+        return;
+    }
+
     // if Global attribute registry does not contain the ref attribute, get
     // the referred attribute declaration and traverse it.
     if (fAttributeDeclRegistry->containsKey(localPart) == false) {
@@ -4400,7 +4470,17 @@ void TraverseSchema::processAttributeDeclRef(const DOM_Element& elem,
         }
     }
 
-    typeInfo->addAttDef(attDef);
+    bool toClone = false;
+
+    if (typeInfo) {
+
+        toClone = true;
+        typeInfo->addAttDef(attDef);
+    }
+
+    if (fCurrentAttGroupInfo) {
+        fCurrentAttGroupInfo->addAttDef(attDef, toClone);
+    }
 }
 
 
@@ -4412,7 +4492,7 @@ TraverseSchema::expandContentModel(ContentSpecNode* const specNode,
 
     unsigned int minOccurs = 0;
     unsigned int maxOccurs = 0;
-    const XMLCh* minOccursStr =
+    const XMLCh* minOccursStr = 
         getElementAttValue(elem, SchemaSymbols::fgATT_MINOCCURS, true);
     const XMLCh* maxOccursStr =
         getElementAttValue(elem, SchemaSymbols::fgATT_MAXOCCURS, true);
@@ -4462,7 +4542,7 @@ TraverseSchema::expandContentModel(ContentSpecNode* const specNode,
     bool isAllElement = (allContextFlag == All_Element);
     bool isAllGroup = (allContextFlag == All_Group);
     bool isGroupRefAll = (allContextFlag == Group_Ref_With_All);
-
+    
     if (isAllElement || isAllGroup || isGroupRefAll) {
 
         if (maxOccurs != 1
@@ -4490,7 +4570,7 @@ TraverseSchema::expandContentModel(ContentSpecNode* const specNode,
     if (minOccurs == 1 && maxOccurs == 1) {
     }
     else if (minOccurs == 0 && maxOccurs == 1) {
-
+        
         retNode = new ContentSpecNode(ContentSpecNode::ZeroOrOne,
                                       retNode, 0, toAdoptSpecNode);
     }
@@ -4580,7 +4660,7 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName,
     bool             adoptSpecNode = true;
     ComplexTypeInfo* baseTypeInfo = typeInfo->getBaseComplexTypeInfo();
 
-    if (baseTypeInfo) {
+    if (baseTypeInfo) {       
 
         if (typeInfo->getDerivedBy() == SchemaSymbols::RESTRICTION) {
 
@@ -4591,7 +4671,7 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName,
 
                 reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::ForbiddenDerivationByRestriction,
                                   baseLocalPart);
-                throw 0;
+                throw TraverseSchema::InvalidComplexTypeInfo;
             }
         }
         else {
@@ -4602,18 +4682,18 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName,
             if((baseTypeInfo->getFinalSet() & typeDerivedBy) != 0) {
 
                 reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::ForbiddenDerivationByExtension, baseLocalPart);
-                throw 0; // REVISIT - should we continue
+                throw TraverseSchema::InvalidComplexTypeInfo; // REVISIT - should we continue
             }
 
             // Check for derivation valid (extension) - 1.4.2.2
             int baseContentType = baseTypeInfo->getContentType();
 
             if (baseContentType != SchemaElementDecl::Empty) {
-                if ((isMixed && baseContentType == SchemaElementDecl::Children)
+                if ((isMixed && baseContentType == SchemaElementDecl::Children) 
                     || (!isMixed && baseContentType == SchemaElementDecl::Mixed)) {
 
                     reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::MixedOrElementOnly, baseLocalPart, typeName);
-                    throw 0; //REVISIT - should we continue
+                    throw TraverseSchema::InvalidComplexTypeInfo; //REVISIT - should we continue
                 }
             }
 
@@ -4632,14 +4712,14 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName,
 
         if (childName.equals(SchemaSymbols::fgELT_GROUP)) {
 
-            bool             adoptSpecNode = true;
+            bool             adoptSpecNode = true;    
             XercesGroupInfo* grpInfo = traverseGroupDecl(childElem, adoptSpecNode);
 
             if (grpInfo) {
 
                 tmpSpecNode = grpInfo->getContentSpec();
                 int contentContext = hasAllContent(specNode) ? Group_Ref_With_All : Not_All_Context;
-                specNode = expandContentModel(specNode, childElem,
+                specNode = expandContentModel(tmpSpecNode, childElem,
                                               contentContext, adoptSpecNode);
             }
 
@@ -4728,9 +4808,9 @@ void TraverseSchema::processComplexContent(const XMLCh* const typeName,
             // the whole schema.
         }
         else {
-
+            
             // Compose the final content model by concatenating the base and
-            // the current in sequence
+            // the current in sequence            
             if (!specNode) {
 
                 typeInfo->setContentSpec(baseSpecNode);
@@ -4811,7 +4891,7 @@ void TraverseSchema::processBaseTypeInfo(const XMLCh* const baseName,
             if (baseDTValidator == 0) {
 
                 reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, uriStr, localPart);
-                throw 0;
+                throw TraverseSchema::InvalidComplexTypeInfo;
             }
         }
     }
@@ -4834,7 +4914,7 @@ void TraverseSchema::processBaseTypeInfo(const XMLCh* const baseName,
             locationsContain(fCurrentTypeNameStack, fStringPool.addOrFind(fullBaseName))) {
 
             reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoCircularDefinition, fullBaseName);
-            throw 0;
+            throw TraverseSchema::InvalidComplexTypeInfo;
         }
 
         // if not found, 2 possibilities:
@@ -4869,13 +4949,13 @@ void TraverseSchema::processBaseTypeInfo(const XMLCh* const baseName,
                         if (baseDTValidator == 0)  {
 
                             reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, uriStr, localPart, uriStr);
-                            throw 0;
+                            throw TraverseSchema::InvalidComplexTypeInfo;
                         }
                     }
                     else {
 
                         reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::BaseTypeNotFound, baseName);
-                        throw 0;
+                        throw TraverseSchema::InvalidComplexTypeInfo;
                     }
                 }
             }
@@ -4934,6 +5014,7 @@ void TraverseSchema::processAttributes(const DOM_Element& attElem,
     DOM_Element child = attElem;
     SchemaAttDef* attWildCard = 0;
     Janitor<SchemaAttDef> janAttWildCard(0);
+    XercesAttGroupInfo* attGroupInfo = 0;
 
     for (; child != 0; child = XUtil::getNextSiblingElement(child)) {
 
@@ -4943,7 +5024,7 @@ void TraverseSchema::processAttributes(const DOM_Element& attElem,
             traverseAttributeDecl(child, typeInfo);
         }
         else if (childName.equals(SchemaSymbols::fgELT_ATTRIBUTEGROUP)) {
-            // TO DO
+            attGroupInfo = traverseAttributeGroupDecl(child, typeInfo);
         }
         else if (childName.equals(SchemaSymbols::fgELT_ANYATTRIBUTE) ) {
             attWildCard = traverseAnyAttribute(child);
@@ -4967,7 +5048,6 @@ void TraverseSchema::processAttributes(const DOM_Element& attElem,
     else {
     }
 
-
     // -------------------------------------------------------------
     // merge in base type's attribute decls
     // -------------------------------------------------------------
@@ -5078,7 +5158,7 @@ TraverseSchema::addAttributeDeclFromAnotherSchema(const XMLCh* const name,
         return -1;
     }
 
-    if (typeInfo!= 0) {
+    if (typeInfo || fCurrentAttGroupInfo) {
 
         QName* attName = tempAtt->getAttName();
 
@@ -5097,7 +5177,18 @@ TraverseSchema::addAttributeDeclFromAnotherSchema(const XMLCh* const name,
                                                 tempAtt->getEnumeration());
 
         newAtt->setDatatypeValidator(tempAtt->getDatatypeValidator());
-        typeInfo->addAttDef(newAtt);
+
+        bool toClone = false;
+
+        if (typeInfo) {
+
+            toClone = true;
+            typeInfo->addAttDef(newAtt);
+        }
+
+        if (fCurrentGroupInfo) {
+            fCurrentAttGroupInfo->addAttDef(newAtt, toClone);
+        }
     }
 
     return 0;
@@ -5160,9 +5251,8 @@ void TraverseSchema::restoreSchemaInfo() {
     fAttributeDefaultQualified = fCurrentSchemaInfo->isAttributeDefaultQualified();
     fBlockDefault = fCurrentSchemaInfo->getBlockDefault();
     fFinalDefault = fCurrentSchemaInfo->getFinalDefault();
+    fCurrentNamespaceLevel = fCurrentSchemaInfo->getNamespaceScopeLevel();
     fSchemaRootElement = fCurrentSchemaInfo->getRoot();
-    fSchemaGrammar->setElementDefaultQualified(fElementDefaultQualified);
-    fSchemaGrammar->setAttributeDefaultQualified(fAttributeDefaultQualified);
 }
 
 
@@ -5253,7 +5343,7 @@ int TraverseSchema::getMaxTotalRange(const ContentSpecNode* const specNode) {
                 max = maxSecond;
             }
             else {
-                if (nodeType == ContentSpecNode::Choice) {
+                if (nodeType == ContentSpecNode::Choice) {                
                     max = (max > maxSecond) ? max : maxSecond;
                 }
                 else {
@@ -5271,10 +5361,10 @@ void TraverseSchema::checkFixedFacet(const DOM_Element& elem,
                                      const DatatypeValidator* const baseDV,
                                      unsigned int& flags)
 {
-    const XMLCh* fixedFacet =
+    const XMLCh* fixedFacet = 
                     getElementAttValue(elem, SchemaSymbols::fgATT_FIXED);
 
-    if (fixedFacet &&
+    if (fixedFacet && 
         (!XMLString::compareString(fixedFacet, SchemaSymbols::fgATTVAL_TRUE)
          || !XMLString::compareString(fixedFacet, fgValueOne))) {
 
@@ -5316,8 +5406,8 @@ void TraverseSchema::checkRefElementConsistency() {
     for (unsigned int i=0; i < refElemSize; i++) {
 
         int elemScope = fRefElemScope->elementAt(i);
-        SchemaElementDecl* elem = fRefElements->elementAt(i);
-        RefVectorOf<SchemaElementDecl>* subsElements =
+        SchemaElementDecl* elem = fRefElements->elementAt(i);     
+        RefVectorOf<SchemaElementDecl>* subsElements = 
             fValidSubstitutionGroups->get(elem->getBaseName(), elem->getURI());
 
         if (subsElements) {
@@ -5330,7 +5420,7 @@ void TraverseSchema::checkRefElementConsistency() {
                 SchemaElementDecl* sameScopeElem = (SchemaElementDecl*)
                     fSchemaGrammar->getElemDecl(subsElem->getURI(), subsElemName, 0, elemScope);
 
-                if (sameScopeElem
+                if (sameScopeElem 
                     && (subsElem->getComplexTypeInfo() != sameScopeElem->getComplexTypeInfo()
                         || subsElem->getDatatypeValidator() != sameScopeElem->getDatatypeValidator())) {
                     reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateElementDeclaration, subsElemName);
@@ -5421,7 +5511,7 @@ XercesGroupInfo* TraverseSchema::processGroupRef(const DOM_Element& elem,
                                                  bool& toAdoptSpecNode) {
 
     if (XUtil::getFirstChildElement(elem) != 0) {
-        reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef);
+        reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef, SchemaSymbols::fgELT_GROUP);
     }
 
     const XMLCh* prefix = getPrefix(refName);
@@ -5440,94 +5530,110 @@ XercesGroupInfo* TraverseSchema::processGroupRef(const DOM_Element& elem,
         return 0;
     }
 
-    XercesGroupInfo* groupInfo = fGroupRegistry->get(fBuffer.getRawBuffer());
-
-    if (groupInfo) {
-
-        toAdoptSpecNode = false;
+    XercesGroupInfo* groupInfo = 0;
 
-        // create element declarations in complexType
-        if (groupInfo->getScope() != fCurrentScope) {
-            createGroupElements(groupInfo, fSchemaGrammar);
-        }
+    //if from another schema
+    if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) {
+        groupInfo = traverseGroupDeclNS(uriStr, localPart, toAdoptSpecNode);
     }
     else {
 
-        //if from another schema
-        if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) {
-            groupInfo = traverseGroupDeclNS(uriStr, localPart, toAdoptSpecNode);
-        }
-        else {
+        groupInfo = fGroupRegistry->get(localPart);
+
+        if (!groupInfo) {
 
-            DOM_Element groupElem =
+            DOM_Element groupElem = 
                 getTopLevelComponentByName(SchemaSymbols::fgELT_GROUP, localPart);
 
             if (groupElem != 0) {
+
                 groupInfo = traverseGroupDecl(groupElem, toAdoptSpecNode);
+
+                if (groupInfo && fCurrentGroupInfo
+                    && groupInfo->getScope() == fCurrentGroupInfo->getScope()) {
+                    copyGroupElements(groupInfo, fCurrentGroupInfo, 0);
+                }
+
+                return groupInfo;
             }
             else {
-                reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::GroupNotFound, localPart);
+                reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound,
+                                  SchemaSymbols::fgELT_GROUP, uriStr, localPart);
             }
         }
+        else {
+            toAdoptSpecNode = false;
+        }
     }
 
-    // copy ref'd group elements
-    if (fCurrentGroupInfo
-        && groupInfo->getScope() == fCurrentGroupInfo->getScope()) {
-        copyGroupElements(fCurrentGroupInfo, groupInfo);
+    if (groupInfo) {
+        copyGroupElements(groupInfo, fCurrentGroupInfo, fCurrentComplexType);
     }
 
     return groupInfo;
 }
 
-void TraverseSchema::createGroupElements(XercesGroupInfo* const groupInfo,
-                                         const SchemaGrammar* const schemaGrammar) {
 
-    unsigned int elemCount = groupInfo->elementCount();
+XercesAttGroupInfo*
+TraverseSchema::processAttributeGroupRef(const DOM_Element& elem,
+                                         const XMLCh* const refName,
+                                         ComplexTypeInfo* const typeInfo) {
 
-    if (elemCount) {
+    if (XUtil::getFirstChildElement(elem) != 0) {
+        reportSchemaError(XMLUni::fgValidityDomain, XMLValid::NoContentForRef, SchemaSymbols::fgELT_ATTRIBUTEGROUP);
+    }
 
-        int schemaURI = fURIStringPool->addOrFind(SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
-        int emptyURI = fURIStringPool->addOrFind(XMLUni::fgZeroLenString);
+    const               XMLCh* prefix = getPrefix(refName);
+    const               XMLCh* localPart = getLocalPart(refName);
+    const               XMLCh* uriStr = resolvePrefixToURI(prefix);
+    XercesAttGroupInfo* attGroupInfo = 0;
 
-        for (unsigned int i=0; i < elemCount; i++) {
+    if (XMLString::compareString(uriStr, fTargetNSURIString) != 0) {
+         attGroupInfo = traverseAttributeGroupDeclNS(uriStr, localPart);
+    }
+    else {
 
-            const SchemaGrammar*     aGrammar = schemaGrammar;
-            SchemaElementDecl* elemDecl = groupInfo->elementAt(i);
-            int                elemURI = elemDecl->getURI();
+        // circular check
+        DOM_Node parentElem = elem.getParentNode();
+ 
+        if (parentElem.getLocalName().equals(SchemaSymbols::fgELT_ATTRIBUTEGROUP)
+            && ((DOM_Element&) parentElem).getAttribute(SchemaSymbols::fgATT_NAME).equals(localPart)
+            && !(parentElem.getParentNode().getLocalName().equals(SchemaSymbols::fgELT_REDEFINE))) {
 
-            if (elemURI != fTargetNSURI && elemURI != schemaURI && elemURI != emptyURI) {
+            reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::NoCircularAttGroup);
+            return 0;
+        }
 
-                Grammar* aGrammar =
-                    fGrammarResolver->getGrammar(fURIStringPool->getValueForId(elemURI));
+        attGroupInfo = fAttGroupRegistry->get(localPart);
 
-                if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) {
-                    continue; // REVISIT - error message
-                }
-            }
+        if (!attGroupInfo) {
 
-            const XMLCh*             localPart = elemDecl->getBaseName();
-            const SchemaElementDecl* other = (SchemaElementDecl*)
-                aGrammar->getElemDecl(elemURI, localPart, 0, fCurrentScope);
+            // traverse top level attributeGroup - if found
+            DOM_Element attGroupElem = 
+                getTopLevelComponentByName(SchemaSymbols::fgELT_ATTRIBUTEGROUP, localPart);
 
-            if (other) {
+            if (attGroupElem != 0) {
 
-                if (elemDecl->getComplexTypeInfo() != other->getComplexTypeInfo()
-                   || elemDecl->getDatatypeValidator() != other->getDatatypeValidator()) {
-                   reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateElementDeclaration, localPart);
+                attGroupInfo = traverseAttributeGroupDecl(attGroupElem, typeInfo);
+
+                if (attGroupInfo && fCurrentAttGroupInfo) {
+                    copyAttGroupAttributes(attGroupInfo, fCurrentAttGroupInfo, 0);
                 }
+
+                return attGroupInfo;
             }
             else {
-
-                int elemScope = elemDecl->getEnclosingScope();
-
-                fCurrentComplexType->addElement(elemDecl);
-                elemDecl->setEnclosingScope(fCurrentScope);
-                ((SchemaGrammar*) aGrammar)->putGroupElemDecl(elemDecl);
-                elemDecl->setEnclosingScope(elemScope);
-			}
+                reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound,
+                                  SchemaSymbols::fgELT_ATTRIBUTEGROUP, uriStr, localPart);
+            }
         }
     }
+
+    if (attGroupInfo) {
+        copyAttGroupAttributes(attGroupInfo, fCurrentAttGroupInfo, typeInfo);
+    }
+
+    return attGroupInfo;
 }
 
 bool TraverseSchema::hasAllContent(const ContentSpecNode* const specNode) {
@@ -5558,7 +5664,7 @@ void TraverseSchema::processElements(ComplexTypeInfo* const baseTypeInfo,
         int emptyURI = fURIStringPool->addOrFind(XMLUni::fgZeroLenString);
 
         for (unsigned int i=0; i < elemCount; i++) {
-
+ 
             SchemaGrammar*     aGrammar = fSchemaGrammar;
             SchemaElementDecl* elemDecl = baseTypeInfo->elementAt(i);
 
@@ -5590,7 +5696,7 @@ void TraverseSchema::processElements(ComplexTypeInfo* const baseTypeInfo,
                 }
             }
             else {
-
+            
                 int elemScope = elemDecl->getEnclosingScope();
 
                 newTypeInfo->addElement(elemDecl);
@@ -5603,19 +5709,100 @@ void TraverseSchema::processElements(ComplexTypeInfo* const baseTypeInfo,
 }
 
 
-void TraverseSchema::copyGroupElements(XercesGroupInfo* const toGroup,
-                                       XercesGroupInfo* const fromGroup) {
+void TraverseSchema::copyGroupElements(XercesGroupInfo* const fromGroup,
+                                       XercesGroupInfo* const toGroup,
+                                       ComplexTypeInfo* const typeInfo) {
+
+    unsigned int elemCount = fromGroup->elementCount();
+    int newScope = (typeInfo) ? typeInfo->getScopeDefined() : 0;
 
-    if (toGroup && fromGroup) {
+    for (unsigned int i = 0; i < elemCount; i++) {
 
-        unsigned int fromSize = fromGroup->elementCount();
+        SchemaElementDecl*       elemDecl = fromGroup->elementAt(i);
 
-        for (unsigned int i=0; i< fromSize; i++) {
-            toGroup->addElement(fromGroup->elementAt(i));
+        if (typeInfo) {
+            int                      elemURI = elemDecl->getURI();
+            const XMLCh*             localPart = elemDecl->getBaseName();
+            const SchemaElementDecl* other = (SchemaElementDecl*)
+                    fSchemaGrammar->getElemDecl(elemURI, localPart, 0, fCurrentScope);
+
+            if (other) {
+
+                if (elemDecl->getComplexTypeInfo() != other->getComplexTypeInfo()
+                    || elemDecl->getDatatypeValidator() != other->getDatatypeValidator()) {
+                   reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateElementDeclaration, localPart);
+                }
+
+                continue;
+            }
+            
+            int elemScope = elemDecl->getEnclosingScope();
+
+            elemDecl->setEnclosingScope(newScope);
+            typeInfo->addElement(elemDecl);                
+            fSchemaGrammar->putGroupElemDecl(elemDecl);
+            elemDecl->setEnclosingScope(elemScope);
+
+            if (toGroup) {
+                toGroup->addElement(elemDecl);
+            }
+        }
+        else {
+            if (!toGroup->containsElement(elemDecl)) {
+                toGroup->addElement(elemDecl);
+            }
+        }
+    }
+}
+
+void TraverseSchema::copyAttGroupAttributes(XercesAttGroupInfo* const fromAttGroup,
+                                            XercesAttGroupInfo* const toAttGroup,
+                                            ComplexTypeInfo* const typeInfo) {
+
+    unsigned int attCount = fromAttGroup->attributeCount();
+
+    for (unsigned int i=0; i < attCount; i++) {
+
+        SchemaAttDef* attDef = fromAttGroup->attributeAt(i);
+        QName* attName = attDef->getAttName();
+        const XMLCh* localPart = attName->getLocalPart();
+
+        if (typeInfo) {
+
+            if (typeInfo->getAttDef(localPart, attName->getURI())) {
+
+                reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, localPart);
+                continue;
+            }
+
+            typeInfo->addAttDef(new SchemaAttDef(attDef));
+
+            if (toAttGroup) {
+                toAttGroup->addAttDef(attDef, true);
+            }
+        }
+        else {
+
+            if (toAttGroup->containsAttribute(localPart, attName->getURI())) {
+
+                reportSchemaError(XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, localPart);
+                continue;
+            }
+
+            toAttGroup->addAttDef(attDef, true);
+        }        
+    }
+
+    if (toAttGroup) {
+        unsigned int anyAttCount = fromAttGroup->anyAttributeCount();
+
+        for (unsigned int j=0; j < anyAttCount; j++) {
+            toAttGroup->addAnyAttDef(fromAttGroup->anyAttributeAt(j), true);
         }
     }
 }
 
+
 // ---------------------------------------------------------------------------
 //  TraverseSchema: Error reporting methods
 // ---------------------------------------------------------------------------
@@ -5660,10 +5847,10 @@ void TraverseSchema::cleanUp() {
     delete fCurrentGroupStack;
     delete fGlobalTypes;
     delete fGlobalGroups;
+    delete fGlobalAttGroups;
     delete fSubstitutionGroups;
     delete fRefElements;
     delete fRefElemScope;
-    delete fGroupRegistry;
 
     if (fAdoptImportLocations) {
         delete fImportLocations;
diff --git a/src/validators/schema/TraverseSchema.hpp b/src/validators/schema/TraverseSchema.hpp
index 63782a464a663596207df1cea36fc8dc58b40a1d..fecd45935c8d2b29dcd546890e0bd83da48b5ebd 100644
--- a/src/validators/schema/TraverseSchema.hpp
+++ b/src/validators/schema/TraverseSchema.hpp
@@ -98,6 +98,7 @@ class InputSource;
 class ErrorHandler;
 class GeneralAttributeCheck;
 class XercesGroupInfo;
+class XercesAttGroupInfo;
 
 
 class VALIDATORS_EXPORT TraverseSchema
@@ -145,50 +146,54 @@ private:
     /**
       * Traverse the Schema DOM tree
       */
-    void             doTraverseSchema();
-    void             traverseSchemaHeader();
-    void             traverseAnnotationDecl(const DOM_Element& childElem);
-    void             traverseInclude(const DOM_Element& childElem);
-    void             traverseImport(const DOM_Element& childElem);
-    void             traverseRedefine(const DOM_Element& childElem);
-    void             traverseAttributeDecl(const DOM_Element& childElem,
-                                           ComplexTypeInfo* const typeInfo);
-    void             traverseSimpleContentDecl(const XMLCh* const typeName,
-                                               const DOM_Element& contentDecl,
-                                               ComplexTypeInfo* const typeInfo);
-    void             traverseComplexContentDecl(const XMLCh* const typeName,
-                                               const DOM_Element& contentDecl,
-                                               ComplexTypeInfo* const typeInfo,
-                                               const bool isMixed);
-    int              traverseSimpleTypeDecl(const DOM_Element& childElem,
-                                            int baseRefContext = SchemaSymbols::EMPTY_SET);
-    int              traverseComplexTypeDecl(const DOM_Element& childElem);
-    int              traverseByList(const DOM_Element& rootElem,
-                                    const DOM_Element& contentElem,
-                                    const int typeNameIndex,
-                                    const int finalSet);
-    int              traverseByRestriction(const DOM_Element& rootElem,
-                                           const DOM_Element& contentElem,
-                                           const int typeNameIndex,
-                                           const int finalSet);
-    int              traverseByUnion(const DOM_Element& rootElem,
-                                     const DOM_Element& contentElem,
-                                     const int typeNameIndex,
-                                     const int finalSet,
-                                     int baseRefContext);
-    QName*           traverseElementDecl(const DOM_Element& childElem);
-    XMLCh*           traverseNotationDecl(const DOM_Element& childElem);
-    ContentSpecNode* traverseChoiceSequence(const DOM_Element& elemDecl,
-                                            const int modelGroupType,
-                                            bool& toAdoptSpecNode);
-    ContentSpecNode* traverseAny(const DOM_Element& anyDecl);
-    ContentSpecNode* traverseAll(const DOM_Element& allElem);
-    XercesGroupInfo* traverseGroupDecl(const DOM_Element& childElem,
+    void                doTraverseSchema();
+    void                traverseSchemaHeader();
+    void                traverseAnnotationDecl(const DOM_Element& childElem);
+    void                traverseInclude(const DOM_Element& childElem);
+    void                traverseImport(const DOM_Element& childElem);
+    void                traverseRedefine(const DOM_Element& childElem);
+    void                traverseAttributeDecl(const DOM_Element& childElem,
+                                              ComplexTypeInfo* const typeInfo);
+    void                traverseSimpleContentDecl(const XMLCh* const typeName,
+                                                  const DOM_Element& contentDecl,
+                                                  ComplexTypeInfo* const typeInfo);
+    void                traverseComplexContentDecl(const XMLCh* const typeName,
+                                                  const DOM_Element& contentDecl,
+                                                  ComplexTypeInfo* const typeInfo,
+                                                  const bool isMixed);
+    int                 traverseSimpleTypeDecl(const DOM_Element& childElem,
+                                               int baseRefContext = SchemaSymbols::EMPTY_SET);
+    int                 traverseComplexTypeDecl(const DOM_Element& childElem);
+    int                 traverseByList(const DOM_Element& rootElem,
+                                       const DOM_Element& contentElem,
+                                       const int typeNameIndex,
+                                       const int finalSet);
+    int                 traverseByRestriction(const DOM_Element& rootElem,
+                                              const DOM_Element& contentElem,
+                                              const int typeNameIndex,
+                                              const int finalSet);
+    int                 traverseByUnion(const DOM_Element& rootElem,
+                                        const DOM_Element& contentElem,
+                                        const int typeNameIndex,
+                                        const int finalSet,
+                                        int baseRefContext);
+    QName*              traverseElementDecl(const DOM_Element& childElem);
+    XMLCh*              traverseNotationDecl(const DOM_Element& childElem);
+    ContentSpecNode*    traverseChoiceSequence(const DOM_Element& elemDecl,
+                                               const int modelGroupType,
+                                               bool& toAdoptSpecNode);
+    ContentSpecNode*    traverseAny(const DOM_Element& anyDecl);
+    ContentSpecNode*    traverseAll(const DOM_Element& allElem);
+    XercesGroupInfo*    traverseGroupDecl(const DOM_Element& childElem,
                                        bool& toAdoptSpecNode);
-    XercesGroupInfo* traverseGroupDeclNS(const XMLCh* const uriStr,
-                                         const XMLCh* const groupName,
-                                         bool& toAdoptSpecNode);
-    SchemaAttDef*    traverseAnyAttribute(const DOM_Element& elem);
+    XercesGroupInfo*    traverseGroupDeclNS(const XMLCh* const uriStr,
+                                            const XMLCh* const groupName,
+                                            bool& toAdoptSpecNode);
+    XercesAttGroupInfo* traverseAttributeGroupDecl(const DOM_Element& elem,
+                                                    ComplexTypeInfo* const typeInfo);
+    XercesAttGroupInfo* traverseAttributeGroupDeclNS(const XMLCh* const uriStr,
+                                                      const XMLCh* const attGroupName);
+    SchemaAttDef*       traverseAnyAttribute(const DOM_Element& elem);
 
     // -----------------------------------------------------------------------
     //  Error Reporting methods
@@ -209,12 +214,6 @@ private:
       */
     void retrieveNamespaceMapping();
 
-    /**
-      * Extract all top-level attribute, attributeGroup, and group Decls and 
-      * put them in the 3 hash tables in the SchemaGrammar.
-      */
-    void extractTopLevel3Components(const DOM_Element& rootElem);
-
     /**
       * Loop through the children, and traverse the corresponding schema type
       * type declaration (simpleType, complexType, import, ....)
@@ -333,6 +332,13 @@ private:
                                      const XMLCh* const refName,
                                      bool& toAdoptScpecNode);
 
+    /**
+      * Process a 'ref' on a attributeGroup
+      */
+    XercesAttGroupInfo* processAttributeGroupRef(const DOM_Element& elem,
+                                                 const XMLCh* const refName,
+                                                 ComplexTypeInfo* const typeInfo);
+
     /**
       * Parse block & final items
       */
@@ -513,16 +519,19 @@ private:
     void checkEnumerationRequiredNotation(const XMLCh* const name,
                                           const XMLCh* const typeStr);
 
-    void createGroupElements(XercesGroupInfo* const groupInfo,
-                             const SchemaGrammar* const schemaGrammar);
-
     bool hasAllContent(const ContentSpecNode* const specNode);
 
     void processElements(ComplexTypeInfo* const baseTypeInfo,
                          ComplexTypeInfo* const newTypeInfo);
 
-    void copyGroupElements(XercesGroupInfo* const toGroup,
-                           XercesGroupInfo* const fromGroup);
+    void copyGroupElements(XercesGroupInfo* const fromGroup,
+                           XercesGroupInfo* const toGroup,
+                           ComplexTypeInfo* const typeInfo);
+
+    void copyAttGroupAttributes(XercesAttGroupInfo* const fromAttGroup,
+                                XercesAttGroupInfo* const toAttGroup,
+                                ComplexTypeInfo* const typeInfo);
+
 
     // -----------------------------------------------------------------------
     //  Private constants
@@ -535,6 +544,12 @@ private:
         , ECS_Final
     };
 
+    enum ExceptionCodes
+    {
+        NoException = 0,
+        InvalidComplexTypeInfo = 1
+    };
+
     // Flags indicate any special restrictions on minOccurs and maxOccurs
     // relating to "all".
     //    Not_All_Context    - not processing an <all>
@@ -552,49 +567,52 @@ private:
     // -----------------------------------------------------------------------
     //  Private data members
     // -----------------------------------------------------------------------
-    bool                             fElementDefaultQualified;
-    bool                             fAttributeDefaultQualified;
-    bool                             fAdoptImportLocations;
-    int                              fTargetNSURI;
-    int                              fCurrentScope;
-    int                              fSimpleTypeAnonCount;
-    int                              fComplexTypeAnonCount;
-    int                              fFinalDefault;
-    int                              fBlockDefault;
-    int                              fScopeCount;
-    DOM_Element                      fSchemaRootElement;
-    XMLCh*                           fTargetNSURIString;
-    XMLCh*                           fCurrentSchemaURL;
-    DatatypeValidatorFactory*        fDatatypeRegistry;
-    GrammarResolver*                 fGrammarResolver;
-    SchemaGrammar*                   fSchemaGrammar;
-    SchemaGrammar*                   fRefSchemaGrammar;
-    EntityResolver*                  fEntityResolver;
-    ErrorHandler*                    fErrorHandler;
-    XMLStringPool*                   fURIStringPool;
-    XMLBuffer                        fBuffer;
-    XMLValidator*                    fValidator;
-    XMLScanner*                      fScanner;
-    NamespaceScope*                  fNamespaceScope;
-    RefHashTableOf<XMLAttDef>*       fAttributeDeclRegistry;
-    RefHashTableOf<ComplexTypeInfo>* fComplexTypeRegistry;
-    RefHashTableOf<XercesGroupInfo>* fGroupRegistry;
-    SchemaInfo*                      fSchemaInfoRoot;
-    SchemaInfo*                      fCurrentSchemaInfo;
-    XercesGroupInfo*                 fCurrentGroupInfo;
-    ComplexTypeInfo*                 fCurrentComplexType;
-    ValueVectorOf<unsigned int>*     fImportLocations;
-    ValueVectorOf<unsigned int>*     fIncludeLocations;
-    ValueVectorOf<unsigned int>*     fCurrentTypeNameStack;
-    ValueVectorOf<unsigned int>*     fCurrentGroupStack;
-    GeneralAttributeCheck*           fAttributeCheck;
-    RefHash2KeysTableOf<XMLCh>*      fGlobalTypes;
-    RefHash2KeysTableOf<XMLCh>*      fGlobalGroups;
+    bool                                    fElementDefaultQualified;
+    bool                                    fAttributeDefaultQualified;
+    bool                                    fAdoptImportLocations;
+    int                                     fTargetNSURI;
+    int                                     fCurrentScope;
+    int                                     fSimpleTypeAnonCount;
+    int                                     fComplexTypeAnonCount;
+    int                                     fFinalDefault;
+    int                                     fBlockDefault;
+    int                                     fScopeCount;
+    unsigned int                            fCurrentNamespaceLevel;
+    DOM_Element                             fSchemaRootElement;
+    XMLCh*                                  fTargetNSURIString;
+    XMLCh*                                  fCurrentSchemaURL;
+    DatatypeValidatorFactory*               fDatatypeRegistry;
+    GrammarResolver*                        fGrammarResolver;
+    SchemaGrammar*                          fSchemaGrammar;
+    EntityResolver*                         fEntityResolver;
+    ErrorHandler*                           fErrorHandler;
+    XMLStringPool*                          fURIStringPool;
+    XMLBuffer                               fBuffer;
+    XMLValidator*                           fValidator;
+    XMLScanner*                             fScanner;
+    NamespaceScope*                         fNamespaceScope;
+    RefHashTableOf<XMLAttDef>*              fAttributeDeclRegistry;
+    RefHashTableOf<ComplexTypeInfo>*        fComplexTypeRegistry;
+    RefHashTableOf<XercesGroupInfo>*        fGroupRegistry;
+    RefHashTableOf<XercesAttGroupInfo>*     fAttGroupRegistry;
+    SchemaInfo*                             fSchemaInfoRoot;
+    SchemaInfo*                             fCurrentSchemaInfo;
+    XercesGroupInfo*                        fCurrentGroupInfo;
+    XercesAttGroupInfo*                     fCurrentAttGroupInfo;
+    ComplexTypeInfo*                        fCurrentComplexType;
+    ValueVectorOf<unsigned int>*            fImportLocations;
+    ValueVectorOf<unsigned int>*            fIncludeLocations;
+    ValueVectorOf<unsigned int>*            fCurrentTypeNameStack;
+    ValueVectorOf<unsigned int>*            fCurrentGroupStack;
+    GeneralAttributeCheck*                  fAttributeCheck;
+    RefHash2KeysTableOf<XMLCh>*             fGlobalTypes;
+    RefHash2KeysTableOf<XMLCh>*             fGlobalGroups;
+    RefHash2KeysTableOf<XMLCh>*             fGlobalAttGroups;
     RefHash2KeysTableOf<SchemaElementDecl>* fSubstitutionGroups;
-    RefHash2KeysTableOf<ElemVector>* fValidSubstitutionGroups;
-    RefVectorOf<SchemaElementDecl>*  fRefElements;
-    ValueVectorOf<int>*              fRefElemScope;
-    static XMLStringPool             fStringPool;
+    RefHash2KeysTableOf<ElemVector>*        fValidSubstitutionGroups;
+    RefVectorOf<SchemaElementDecl>*         fRefElements;
+    ValueVectorOf<int>*                     fRefElemScope;
+    static XMLStringPool                    fStringPool;
 
     friend class GeneralAttributeCheck;
 };
@@ -759,6 +777,7 @@ inline int TraverseSchema::resetCurrentTypeNameStack(const int value) {
     return value;
 }
 
+
 #endif
 
 /**
diff --git a/src/validators/schema/XercesAttGroupInfo.cpp b/src/validators/schema/XercesAttGroupInfo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..197f309ff3374bc371965ae5bf59f7bff70129d0
--- /dev/null
+++ b/src/validators/schema/XercesAttGroupInfo.cpp
@@ -0,0 +1,118 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xerces" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written
+ *    permission, please contact apache\@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation, and was
+ * originally based on software copyright (c) 1999, International
+ * Business Machines, Inc., http://www.ibm.com .  For more information
+ * on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+/*
+ * $Log$
+ * Revision 1.1  2001/07/31 15:26:54  knoaman
+ * Added support for <attributeGroup>.
+ *
+ * Revision 1.1  2001/07/24 18:33:46  knoaman
+ * Added support for <group> + extra constraint checking for complexType
+ *
+ */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <validators/schema/XercesAttGroupInfo.hpp>
+#include <util/QName.hpp>
+
+// ---------------------------------------------------------------------------
+//  XercesAttGroupInfo: Constructors and Destructor
+// ---------------------------------------------------------------------------
+XercesAttGroupInfo::XercesAttGroupInfo()
+    : fAttributes(0)
+    , fAnyAttributes(0)
+{
+
+}
+
+
+XercesAttGroupInfo::~XercesAttGroupInfo()
+{
+    delete fAttributes;
+    delete fAnyAttributes;
+}
+
+bool XercesAttGroupInfo::containsAttribute(const XMLCh* const name,
+                                           const unsigned int uri) {
+
+    if (fAttributes) {
+
+        unsigned int attCount = fAttributes->size();
+
+        if (attCount) {
+
+            for (unsigned int i=0; i < attCount; i++) {
+
+                QName* attName = fAttributes->elementAt(i)->getAttName();
+
+                if (attName->getURI() == uri &&
+                    !XMLString::compareString(attName->getLocalPart(),name)) {
+                    return true;
+                }
+            }
+        }
+    }
+
+    return false;
+}
+
+/**
+  * End of file XercesGroupInfo.cpp
+  */
+
+
diff --git a/src/validators/schema/XercesAttGroupInfo.hpp b/src/validators/schema/XercesAttGroupInfo.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..f4c81b0f9f47e31942c7b3974760c11aa9a225e2
--- /dev/null
+++ b/src/validators/schema/XercesAttGroupInfo.hpp
@@ -0,0 +1,222 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xerces" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written
+ *    permission, please contact apache\@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation, and was
+ * originally based on software copyright (c) 2001, International
+ * Business Machines, Inc., http://www.ibm.com .  For more information
+ * on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+/*
+ * $Id$
+ */
+
+#if !defined(XERCESATTGROUPINFO_HPP)
+#define XERCESATTGROUPINFO_HPP
+
+
+/**
+  * The class act as a place holder to store attributeGroup information.
+  *
+  * The class is intended for internal use.
+  */
+
+// ---------------------------------------------------------------------------
+//  Includes
+// ---------------------------------------------------------------------------
+#include <util/RefVectorOf.hpp>
+#include <validators/schema/SchemaAttDef.hpp>
+
+
+
+class VALIDATORS_EXPORT XercesAttGroupInfo
+{
+public:
+    // -----------------------------------------------------------------------
+    //  Public Constructors/Destructor
+    // -----------------------------------------------------------------------
+    XercesAttGroupInfo();
+	~XercesAttGroupInfo();
+
+	// -----------------------------------------------------------------------
+    //  Getter methods
+    // -----------------------------------------------------------------------
+    unsigned int        attributeCount() const;
+    unsigned int        anyAttributeCount() const; 
+    SchemaAttDef*       attributeAt(const unsigned int index);
+    const SchemaAttDef* attributeAt(const unsigned int index) const;
+    SchemaAttDef*       anyAttributeAt(const unsigned int index);
+    const SchemaAttDef* anyAttributeAt(const unsigned int index) const;
+    
+	// -----------------------------------------------------------------------
+    //  Setter methods
+    // -----------------------------------------------------------------------
+    void addAttDef(SchemaAttDef* const toAdd, const bool toClone = false);
+    void addAnyAttDef(SchemaAttDef* const toAdd, const bool toClone = false);
+
+	// -----------------------------------------------------------------------
+    //  Query methods
+    // -----------------------------------------------------------------------
+    bool containsAttribute(const XMLCh* const name, const unsigned int uri);
+
+private:
+    // -----------------------------------------------------------------------
+    //  Unimplemented contstructors and operators
+    // -----------------------------------------------------------------------
+    XercesAttGroupInfo(const XercesAttGroupInfo& elemInfo);
+    XercesAttGroupInfo& operator= (const XercesAttGroupInfo& other);
+
+    // -----------------------------------------------------------------------
+    //  Private data members
+    // -----------------------------------------------------------------------
+    RefVectorOf<SchemaAttDef>* fAttributes;
+    RefVectorOf<SchemaAttDef>* fAnyAttributes;
+};
+
+// ---------------------------------------------------------------------------
+//  XercesAttGroupInfo: Getter methods
+// ---------------------------------------------------------------------------
+inline unsigned int XercesAttGroupInfo::attributeCount() const {
+
+    if (fAttributes) {
+        return fAttributes->size();
+    }
+
+    return 0;
+}
+
+inline unsigned int XercesAttGroupInfo::anyAttributeCount() const {
+
+    if (fAnyAttributes) {
+        return fAnyAttributes->size();
+    }
+
+    return 0;
+}
+
+inline SchemaAttDef*
+XercesAttGroupInfo::attributeAt(const unsigned int index) {
+
+    if (fAttributes) {
+        return fAttributes->elementAt(index);
+    }
+
+    return 0;
+}
+
+inline const SchemaAttDef* 
+XercesAttGroupInfo::attributeAt(const unsigned int index) const {
+
+    if (fAttributes) {
+        return fAttributes->elementAt(index);
+    }
+
+    return 0;
+}
+
+inline SchemaAttDef*
+XercesAttGroupInfo::anyAttributeAt(const unsigned int index) {
+
+    if (fAnyAttributes) {
+        return fAnyAttributes->elementAt(index);
+    }
+
+    return 0;
+}
+
+inline const SchemaAttDef* 
+XercesAttGroupInfo::anyAttributeAt(const unsigned int index) const {
+
+    if (fAnyAttributes) {
+        return fAnyAttributes->elementAt(index);
+    }
+
+    return 0;
+}
+
+// ---------------------------------------------------------------------------
+//  XercesAttGroupInfo: Setter methods
+// ---------------------------------------------------------------------------
+inline void XercesAttGroupInfo::addAttDef(SchemaAttDef* const toAdd,
+                                             const bool toClone) {
+
+    if (!fAttributes) {
+        fAttributes = new RefVectorOf<SchemaAttDef>(4);
+    }
+
+    if (toClone) {
+        fAttributes->addElement(new SchemaAttDef(toAdd));
+    }
+    else {
+        fAttributes->addElement(toAdd);
+    }
+}
+
+inline void XercesAttGroupInfo::addAnyAttDef(SchemaAttDef* const toAdd,
+                                                const bool toClone) {
+
+    if (!fAnyAttributes) {   
+        fAnyAttributes = new RefVectorOf<SchemaAttDef>(2);
+    }
+
+    if (toClone) {
+        fAnyAttributes->addElement(new SchemaAttDef(toAdd));
+    }
+    else {
+        fAnyAttributes->addElement(toAdd);
+    }
+}
+
+#endif
+
+/**
+  * End of file XercesGroupInfo.hpp
+  */
+
diff --git a/src/validators/schema/XercesGroupInfo.hpp b/src/validators/schema/XercesGroupInfo.hpp
index 519863b9b8f5255eac467a8501fd0b8ae5d227e9..c03df9079680c6389d887d6452895d28dfc6e68e 100644
--- a/src/validators/schema/XercesGroupInfo.hpp
+++ b/src/validators/schema/XercesGroupInfo.hpp
@@ -108,6 +108,11 @@ public:
     void setAdoptContentSpec(const bool toAdopt);
     void addElement(SchemaElementDecl* const toAdd);
 
+	// -----------------------------------------------------------------------
+    //  Query methods
+    // -----------------------------------------------------------------------
+    bool containsElement(const SchemaElementDecl* const elem);
+
 private:
     // -----------------------------------------------------------------------
     //  Unimplemented contstructors and operators
@@ -171,6 +176,23 @@ inline void XercesGroupInfo::addElement(SchemaElementDecl* const elem) {
     fElements->addElement(elem);
 }
 
+
+// ---------------------------------------------------------------------------
+//  XercesGroupInfo: Query methods
+// ---------------------------------------------------------------------------}
+inline bool XercesGroupInfo::containsElement(const SchemaElementDecl* const elem) {
+
+    unsigned int elemSize = fElements->size();
+
+    for (unsigned int i=0; i < elemSize; i++) {
+        if (fElements->elementAt(i) == elem) {
+            return true;
+        }
+    }
+
+    return false;
+}
+
 #endif
 
 /**