var KML_2_1_Module_Factory = function () {
  var KML_2_1 = {
    n: 'KML_2_1',
    dens: 'http:\/\/earth.google.com\/kml\/2.1',
    tis: [{
        ln: 'LookAtType',
        bti: '.ObjectType',
        ps: [{
            n: 'longitude',
            ti: 'Double'
          }, {
            n: 'latitude',
            ti: 'Double'
          }, {
            n: 'altitude',
            ti: 'Double'
          }, {
            n: 'range',
            ti: 'Double'
          }, {
            n: 'tilt',
            ti: 'Double'
          }, {
            n: 'heading',
            ti: 'Double'
          }, {
            n: 'altitudeMode'
          }]
      }, {
        ln: 'StyleSelectorType',
        bti: '.ObjectType'
      }, {
        ln: 'OverlayType',
        bti: '.FeatureType',
        ps: [{
            n: 'color'
          }, {
            n: 'drawOrder',
            ti: 'Int'
          }, {
            n: 'icon',
            en: 'Icon',
            ti: '.LinkType'
          }]
      }, {
        ln: 'FolderType',
        bti: '.ContainerType',
        ps: [{
            n: 'feature',
            mno: 0,
            col: true,
            mx: false,
            dom: false,
            en: 'Feature',
            ti: '.FeatureType',
            t: 'er'
          }]
      }, {
        ln: 'ReplaceType',
        ps: [{
            n: 'feature',
            mx: false,
            dom: false,
            en: 'Feature',
            ti: '.FeatureType',
            t: 'er'
          }]
      }, {
        ln: 'NetworkLinkType',
        bti: '.FeatureType',
        ps: [{
            n: 'refreshVisibility',
            ti: 'Boolean'
          }, {
            n: 'flyToView',
            ti: 'Boolean'
          }, {
            n: 'link',
            rq: true,
            en: 'Link',
            ti: '.LinkType'
          }, {
            n: 'url',
            rq: true,
            en: 'Url',
            ti: '.LinkType'
          }]
      }, {
        ln: 'TimeSpanType',
        bti: '.TimePrimitiveType',
        ps: [{
            n: 'begin'
          }, {
            n: 'end'
          }]
      }, {
        ln: 'OrientationType',
        bti: '.ObjectType',
        ps: [{
            n: 'heading',
            ti: 'Double'
          }, {
            n: 'tilt',
            ti: 'Double'
          }, {
            n: 'roll',
            ti: 'Double'
          }]
      }, {
        ln: 'DocumentType',
        bti: '.ContainerType',
        ps: [{
            n: 'feature',
            mno: 0,
            col: true,
            mx: false,
            dom: false,
            en: 'Feature',
            ti: '.FeatureType',
            t: 'er'
          }]
      }, {
        ln: 'ContainerType',
        bti: '.FeatureType'
      }, {
        ln: 'ScreenOverlayType',
        bti: '.OverlayType',
        ps: [{
            n: 'overlayXY',
            ti: '.Vec2Type'
          }, {
            n: 'screenXY',
            ti: '.Vec2Type'
          }, {
            n: 'rotationXY',
            ti: '.Vec2Type'
          }, {
            n: 'size',
            ti: '.Vec2Type'
          }, {
            n: 'rotation',
            ti: 'Float'
          }]
      }, {
        ln: 'PolygonType',
        bti: '.GeometryType',
        ps: [{
            n: 'extrude',
            ti: 'Boolean'
          }, {
            n: 'tessellate',
            ti: 'Boolean'
          }, {
            n: 'altitudeMode'
          }, {
            n: 'outerBoundaryIs',
            ti: '.BoundaryType'
          }, {
            n: 'innerBoundaryIs',
            mno: 0,
            col: true,
            ti: '.BoundaryType'
          }]
      }, {
        ln: 'LocationType',
        bti: '.ObjectType',
        ps: [{
            n: 'longitude',
            ti: 'Double'
          }, {
            n: 'latitude',
            ti: 'Double'
          }, {
            n: 'altitude',
            ti: 'Double'
          }]
      }, {
        ln: 'StyleMapPairType',
        ps: [{
            n: 'key',
            rq: true
          }, {
            n: 'styleUrl',
            rq: true
          }]
      }, {
        ln: 'PointType',
        bti: '.GeometryType',
        ps: [{
            n: 'extrude',
            ti: 'Boolean'
          }, {
            n: 'tessellate',
            ti: 'Boolean'
          }, {
            n: 'altitudeMode'
          }, {
            n: 'coordinates',
            rq: true,
            ti: {
              t: 'l'
            }
          }]
      }, {
        ln: 'StyleType',
        bti: '.StyleSelectorType',
        ps: [{
            n: 'iconStyle',
            en: 'IconStyle',
            ti: '.IconStyleType'
          }, {
            n: 'labelStyle',
            en: 'LabelStyle',
            ti: '.LabelStyleType'
          }, {
            n: 'lineStyle',
            en: 'LineStyle',
            ti: '.LineStyleType'
          }, {
            n: 'polyStyle',
            en: 'PolyStyle',
            ti: '.PolyStyleType'
          }, {
            n: 'balloonStyle',
            en: 'BalloonStyle',
            ti: '.BalloonStyleType'
          }, {
            n: 'listStyle',
            en: 'ListStyle',
            ti: '.ListStyleType'
          }]
      }, {
        ln: 'CreateType',
        ps: [{
            n: 'folder',
            rq: true,
            en: 'Folder',
            ti: '.FolderType'
          }]
      }, {
        ln: 'MetadataType',
        ps: [{
            n: 'any',
            rq: true,
            mx: false,
            t: 'ae'
          }]
      }, {
        ln: 'FeatureType',
        bti: '.ObjectType',
        ps: [{
            n: 'name'
          }, {
            n: 'visibility',
            ti: 'Boolean'
          }, {
            n: 'open',
            ti: 'Boolean'
          }, {
            n: 'address'
          }, {
            n: 'phoneNumber'
          }, {
            n: 'snippet',
            en: 'Snippet',
            ti: '.SnippetType'
          }, {
            n: 'description'
          }, {
            n: 'lookAt',
            en: 'LookAt',
            ti: '.LookAtType'
          }, {
            n: 'timePrimitive',
            mx: false,
            dom: false,
            en: 'TimePrimitive',
            ti: '.TimePrimitiveType',
            t: 'er'
          }, {
            n: 'styleUrl'
          }, {
            n: 'styleSelector',
            mno: 0,
            col: true,
            mx: false,
            dom: false,
            en: 'StyleSelector',
            ti: '.StyleSelectorType',
            t: 'er'
          }, {
            n: 'region',
            en: 'Region',
            ti: '.RegionType'
          }, {
            n: 'metadata',
            en: 'Metadata',
            ti: '.MetadataType'
          }]
      }, {
        ln: 'KmlType',
        ps: [{
            n: 'networkLinkControl',
            en: 'NetworkLinkControl',
            ti: '.NetworkLinkControlType'
          }, {
            n: 'feature',
            mx: false,
            dom: false,
            en: 'Feature',
            ti: '.FeatureType',
            t: 'er'
          }]
      }, {
        ln: 'MultiGeometryType',
        bti: '.GeometryType',
        ps: [{
            n: 'geometry',
            rq: true,
            col: true,
            mx: false,
            dom: false,
            en: 'Geometry',
            ti: '.GeometryType',
            t: 'er'
          }]
      }, {
        ln: 'DeleteType',
        ps: [{
            n: 'feature',
            mno: 0,
            col: true,
            mx: false,
            dom: false,
            en: 'Feature',
            ti: '.FeatureType',
            t: 'er'
          }]
      }, {
        ln: 'TimePrimitiveType',
        bti: '.ObjectType'
      }, {
        ln: 'ScaleType',
        bti: '.ObjectType',
        ps: [{
            n: 'x',
            ti: 'Double'
          }, {
            n: 'y',
            ti: 'Double'
          }, {
            n: 'z',
            ti: 'Double'
          }]
      }, {
        ln: 'ModelType',
        bti: '.GeometryType',
        ps: [{
            n: 'altitudeMode'
          }, {
            n: 'location',
            en: 'Location',
            ti: '.LocationType'
          }, {
            n: 'orientation',
            en: 'Orientation',
            ti: '.OrientationType'
          }, {
            n: 'scale',
            en: 'Scale',
            ti: '.ScaleType'
          }, {
            n: 'link',
            en: 'Link',
            ti: '.LinkType'
          }]
      }, {
        ln: 'StyleMapType',
        bti: '.StyleSelectorType',
        ps: [{
            n: 'pair',
            rq: true,
            col: true,
            en: 'Pair',
            ti: '.StyleMapPairType'
          }]
      }, {
        ln: 'LabelStyleType',
        bti: '.ColorStyleType',
        ps: [{
            n: 'scale',
            ti: 'Float'
          }]
      }, {
        ln: 'UpdateType',
        ps: [{
            n: 'targetHref',
            rq: true
          }, {
            n: 'createOrDeleteOrChange',
            mno: 0,
            col: true,
            etis: [{
                en: 'Create',
                ti: '.CreateType'
              }, {
                en: 'Delete',
                ti: '.DeleteType'
              }, {
                en: 'Change',
                ti: '.ChangeType'
              }, {
                en: 'Replace',
                ti: '.ReplaceType'
              }],
            t: 'es'
          }]
      }, {
        ln: 'IconStyleIconType',
        bti: '.ObjectType',
        ps: [{
            n: 'href',
            rq: true
          }]
      }, {
        ln: 'SnippetType',
        ps: [{
            n: 'value',
            t: 'v'
          }, {
            n: 'maxLines',
            ti: 'Int',
            an: {
              lp: 'maxLines'
            },
            t: 'a'
          }]
      }, {
        ln: 'PolyStyleType',
        bti: '.ColorStyleType',
        ps: [{
            n: 'fill',
            ti: 'Boolean'
          }, {
            n: 'outline',
            ti: 'Boolean'
          }]
      }, {
        ln: 'LatLonBoxType',
        bti: '.ObjectType',
        ps: [{
            n: 'north',
            ti: 'Double'
          }, {
            n: 'south',
            ti: 'Double'
          }, {
            n: 'east',
            ti: 'Double'
          }, {
            n: 'west',
            ti: 'Double'
          }, {
            n: 'rotation',
            ti: 'Double'
          }]
      }, {
        ln: 'BalloonStyleType',
        bti: '.ObjectType',
        ps: [{
            n: 'color'
          }, {
            n: 'bgColor'
          }, {
            n: 'textColor'
          }, {
            n: 'text'
          }]
      }, {
        ln: 'LineStyleType',
        bti: '.ColorStyleType',
        ps: [{
            n: 'width',
            ti: 'Float'
          }]
      }, {
        ln: 'ChangeType',
        ps: [{
            n: 'objectOrFeatureOrGeometry',
            mno: 0,
            col: true,
            mx: false,
            dom: false,
            etis: [{
                en: 'Feature',
                ti: '.FeatureType'
              }, {
                en: 'StyleSelector',
                ti: '.StyleSelectorType'
              }, {
                en: 'Object',
                ti: '.ObjectType'
              }, {
                en: 'TimePrimitive',
                ti: '.TimePrimitiveType'
              }, {
                en: 'Geometry',
                ti: '.GeometryType'
              }],
            t: 'ers'
          }]
      }, {
        ln: 'LinearRingType',
        bti: '.GeometryType',
        ps: [{
            n: 'extrude',
            ti: 'Boolean'
          }, {
            n: 'tessellate',
            ti: 'Boolean'
          }, {
            n: 'altitudeMode'
          }, {
            n: 'coordinates',
            rq: true,
            ti: {
              t: 'l'
            }
          }]
      }, {
        ln: 'LineStringType',
        bti: '.GeometryType',
        ps: [{
            n: 'extrude',
            ti: 'Boolean'
          }, {
            n: 'tessellate',
            ti: 'Boolean'
          }, {
            n: 'altitudeMode'
          }, {
            n: 'coordinates',
            rq: true,
            ti: {
              t: 'l'
            }
          }]
      }, {
        ln: 'ListStyleType',
        bti: '.ObjectType',
        ps: [{
            n: 'listItemType'
          }, {
            n: 'bgColor'
          }, {
            n: 'itemIcon',
            mno: 0,
            col: true,
            en: 'ItemIcon',
            ti: '.ItemIconType'
          }]
      }, {
        ln: 'GroundOverlayType',
        bti: '.OverlayType',
        ps: [{
            n: 'altitude',
            ti: 'Double'
          }, {
            n: 'altitudeMode'
          }, {
            n: 'latLonBox',
            en: 'LatLonBox',
            ti: '.LatLonBoxType'
          }]
      }, {
        ln: 'IconStyleType',
        bti: '.ColorStyleType',
        ps: [{
            n: 'scale',
            ti: 'Float'
          }, {
            n: 'heading',
            ti: 'Float'
          }, {
            n: 'icon',
            en: 'Icon',
            ti: '.IconStyleIconType'
          }, {
            n: 'hotSpot',
            ti: '.Vec2Type'
          }]
      }, {
        ln: 'RegionType',
        bti: '.ObjectType',
        ps: [{
            n: 'latLonAltBox',
            rq: true,
            en: 'LatLonAltBox',
            ti: '.LatLonAltBoxType'
          }, {
            n: 'lod',
            en: 'Lod',
            ti: '.LodType'
          }]
      }, {
        ln: 'LinkType',
        bti: '.ObjectType',
        ps: [{
            n: 'href'
          }, {
            n: 'refreshMode'
          }, {
            n: 'refreshInterval',
            ti: 'Float'
          }, {
            n: 'viewRefreshMode'
          }, {
            n: 'viewRefreshTime',
            ti: 'Float'
          }, {
            n: 'viewBoundScale',
            ti: 'Float'
          }, {
            n: 'viewFormat'
          }, {
            n: 'httpQuery'
          }]
      }, {
        ln: 'ItemIconType',
        bti: '.ObjectType',
        ps: [{
            n: 'state',
            mno: 0,
            col: true,
            mx: false,
            dom: false,
            ti: {
              t: 'l'
            },
            t: 'er'
          }, {
            n: 'href',
            rq: true
          }]
      }, {
        ln: 'Vec2Type',
        tn: 'vec2Type',
        ps: [{
            n: 'x',
            ti: 'Double',
            an: {
              lp: 'x'
            },
            t: 'a'
          }, {
            n: 'y',
            ti: 'Double',
            an: {
              lp: 'y'
            },
            t: 'a'
          }, {
            n: 'xunits',
            an: {
              lp: 'xunits'
            },
            t: 'a'
          }, {
            n: 'yunits',
            an: {
              lp: 'yunits'
            },
            t: 'a'
          }]
      }, {
        ln: 'NetworkLinkControlType',
        ps: [{
            n: 'minRefreshPeriod',
            ti: 'Float'
          }, {
            n: 'cookie'
          }, {
            n: 'message'
          }, {
            n: 'linkName'
          }, {
            n: 'linkDescription'
          }, {
            n: 'linkSnippet',
            ti: '.SnippetType'
          }, {
            n: 'expires'
          }, {
            n: 'update',
            en: 'Update',
            ti: '.UpdateType'
          }, {
            n: 'lookAt',
            en: 'LookAt',
            ti: '.LookAtType'
          }]
      }, {
        ln: 'LodType',
        bti: '.ObjectType',
        ps: [{
            n: 'minLodPixels',
            ti: 'Float'
          }, {
            n: 'maxLodPixels',
            ti: 'Float'
          }, {
            n: 'minFadeExtent',
            ti: 'Float'
          }, {
            n: 'maxFadeExtent',
            ti: 'Float'
          }]
      }, {
        ln: 'TimeStampType',
        bti: '.TimePrimitiveType',
        ps: [{
            n: 'when',
            rq: true
          }]
      }, {
        ln: 'IconType',
        bti: '.LinkType',
        ps: [{
            n: 'x',
            rq: true,
            ti: 'Int'
          }, {
            n: 'y',
            rq: true,
            ti: 'Int'
          }, {
            n: 'w',
            rq: true,
            ti: 'Int'
          }, {
            n: 'h',
            rq: true,
            ti: 'Int'
          }]
      }, {
        ln: 'LatLonAltBoxType',
        bti: '.LatLonBoxType',
        ps: [{
            n: 'minAltitude',
            ti: 'Double'
          }, {
            n: 'maxAltitude',
            ti: 'Double'
          }, {
            n: 'altitudeMode'
          }]
      }, {
        ln: 'BoundaryType',
        tn: 'boundaryType',
        ps: [{
            n: 'linearRing',
            rq: true,
            en: 'LinearRing',
            ti: '.LinearRingType'
          }]
      }, {
        ln: 'ColorStyleType',
        bti: '.ObjectType',
        ps: [{
            n: 'color'
          }, {
            n: 'colorMode'
          }]
      }, {
        ln: 'GeometryType',
        bti: '.ObjectType'
      }, {
        ln: 'ObjectType',
        ps: [{
            n: 'id',
            ti: 'ID',
            an: {
              lp: 'id'
            },
            t: 'a'
          }, {
            n: 'targetId',
            an: {
              lp: 'targetId'
            },
            t: 'a'
          }]
      }, {
        ln: 'PlacemarkType',
        bti: '.FeatureType',
        ps: [{
            n: 'geometry',
            mx: false,
            dom: false,
            en: 'Geometry',
            ti: '.GeometryType',
            t: 'er'
          }]
      }, {
        t: 'enum',
        ln: 'ItemIconStateEnum',
        vs: ['open', 'closed', 'error', 'fetching0', 'fetching1', 'fetching2']
      }, {
        t: 'enum',
        ln: 'StyleStateEnum',
        vs: ['normal', 'highlight']
      }, {
        t: 'enum',
        ln: 'UnitsEnum',
        vs: ['fraction', 'pixels', 'insetPixels']
      }, {
        t: 'enum',
        ln: 'ColorModeEnum',
        vs: ['normal', 'random']
      }, {
        t: 'enum',
        ln: 'AltitudeModeEnum',
        vs: ['clampToGround', 'relativeToGround', 'absolute']
      }, {
        t: 'enum',
        ln: 'ViewRefreshModeEnum',
        vs: ['never', 'onRequest', 'onStop', 'onRegion']
      }, {
        t: 'enum',
        ln: 'RefreshModeEnum',
        vs: ['onChange', 'onInterval', 'onExpire']
      }, {
        t: 'enum',
        ln: 'ListItemTypeEnum',
        vs: ['radioFolder', 'check', 'checkHideChildren', 'checkOffOnly']
      }],
    eis: [{
        en: 'NetworkLink',
        ti: '.NetworkLinkType',
        sh: 'Feature'
      }, {
        en: 'Feature',
        ti: '.FeatureType'
      }, {
        en: 'LineString',
        ti: '.LineStringType',
        sh: 'Geometry'
      }, {
        en: 'coordinates',
        ti: {
          t: 'l'
        }
      }, {
        en: 'StyleSelector',
        ti: '.StyleSelectorType'
      }, {
        en: 'state',
        ti: {
          t: 'l'
        },
        sc: '.ItemIconType'
      }, {
        en: 'LatLonAltBox',
        ti: '.LatLonAltBoxType'
      }, {
        en: 'BalloonStyle',
        ti: '.BalloonStyleType',
        sh: 'Object'
      }, {
        en: 'Placemark',
        ti: '.PlacemarkType',
        sh: 'Feature'
      }, {
        en: 'ScreenOverlay',
        ti: '.ScreenOverlayType',
        sh: 'Feature'
      }, {
        en: 'LookAt',
        ti: '.LookAtType',
        sh: 'Object'
      }, {
        en: 'Folder',
        ti: '.FolderType',
        sh: 'Feature'
      }, {
        en: 'LineStyle',
        ti: '.LineStyleType',
        sh: 'Object'
      }, {
        en: 'Document',
        ti: '.DocumentType',
        sh: 'Feature'
      }, {
        en: 'styleUrl'
      }, {
        en: 'Scale',
        ti: '.ScaleType',
        sh: 'Object'
      }, {
        en: 'Geometry',
        ti: '.GeometryType'
      }, {
        en: 'StyleMap',
        ti: '.StyleMapType',
        sh: 'StyleSelector'
      }, {
        en: 'TimeSpan',
        ti: '.TimeSpanType',
        sh: 'TimePrimitive'
      }, {
        en: 'Orientation',
        ti: '.OrientationType',
        sh: 'Object'
      }, {
        en: 'LabelStyle',
        ti: '.LabelStyleType',
        sh: 'Object'
      }, {
        en: 'Icon',
        ti: '.LinkType',
        sh: 'Object'
      }, {
        en: 'Lod',
        ti: '.LodType',
        sh: 'Object'
      }, {
        en: 'ListStyle',
        ti: '.ListStyleType',
        sh: 'Object'
      }, {
        en: 'IconStyle',
        ti: '.IconStyleType',
        sh: 'Object'
      }, {
        en: 'kml',
        ti: '.KmlType'
      }, {
        en: 'LinearRing',
        ti: '.LinearRingType',
        sh: 'Geometry'
      }, {
        en: 'Model',
        ti: '.ModelType',
        sh: 'Geometry'
      }, {
        en: 'Point',
        ti: '.PointType',
        sh: 'Geometry'
      }, {
        en: 'GroundOverlay',
        ti: '.GroundOverlayType',
        sh: 'Feature'
      }, {
        en: 'Region',
        ti: '.RegionType',
        sh: 'Object'
      }, {
        en: 'Location',
        ti: '.LocationType',
        sh: 'Object'
      }, {
        en: 'PolyStyle',
        ti: '.PolyStyleType',
        sh: 'Object'
      }, {
        en: 'Style',
        ti: '.StyleType',
        sh: 'StyleSelector'
      }, {
        en: 'TimeStamp',
        ti: '.TimeStampType',
        sh: 'TimePrimitive'
      }, {
        en: 'LatLonBox',
        ti: '.LatLonBoxType',
        sh: 'Object'
      }, {
        en: 'Object',
        ti: '.ObjectType'
      }, {
        en: 'TimePrimitive',
        ti: '.TimePrimitiveType'
      }, {
        en: 'Polygon',
        ti: '.PolygonType',
        sh: 'Geometry'
      }, {
        en: 'Link',
        ti: '.LinkType',
        sh: 'Object'
      }, {
        en: 'MultiGeometry',
        ti: '.MultiGeometryType',
        sh: 'Geometry'
      }]
  };
  return {
    KML_2_1: KML_2_1
  };
};
if (typeof define === 'function' && define.amd) {
  define([], KML_2_1_Module_Factory);
}
else {
  var KML_2_1_Module = KML_2_1_Module_Factory();
  if (typeof module !== 'undefined' && module.exports) {
    module.exports.KML_2_1 = KML_2_1_Module.KML_2_1;
  }
  else {
    var KML_2_1 = KML_2_1_Module.KML_2_1;
  }
}